--- src/main/java/com/munjaon/client/server/packet/KakaoMessage.java
+++ src/main/java/com/munjaon/client/server/packet/KakaoMessage.java
... | ... | @@ -155,4 +155,19 @@ |
| 155 | 155 |
|
| 156 | 156 |
return fileBuffer; |
| 157 | 157 |
} |
| 158 |
+ |
|
| 159 |
+ public static ByteBuffer makeJsonHeaderForDeliver(String path, String fileName) throws UnsupportedEncodingException {
|
|
| 160 |
+ if (path == null || fileName == null) {
|
|
| 161 |
+ return null; |
|
| 162 |
+ } |
|
| 163 |
+ File file = new File(path + fileName); |
|
| 164 |
+ if (file.exists() == false) {
|
|
| 165 |
+ return null; |
|
| 166 |
+ } |
|
| 167 |
+ ByteBuffer fileHeadBuffer = ByteBuffer.allocate(MmsMessage.DELIVER_MMS_FILENAME_LENGTH + MmsMessage.DELIVER_MMS_FILESIZE_LENGTH); |
|
| 168 |
+ fileHeadBuffer.put(DELIVER_JSON_FILENAME_POSITION, fileName.getBytes(Packet.AGENT_CHARACTER_SET)); |
|
| 169 |
+ fileHeadBuffer.put(DELIVER_JSON_FILESIZE_POSITION, String.valueOf(file.length()).getBytes(Packet.AGENT_CHARACTER_SET)); |
|
| 170 |
+ |
|
| 171 |
+ return fileHeadBuffer; |
|
| 172 |
+ } |
|
| 158 | 173 |
} |
--- src/main/java/com/munjaon/client/server/service/CollectClientService.java
+++ src/main/java/com/munjaon/client/server/service/CollectClientService.java
... | ... | @@ -4,7 +4,6 @@ |
| 4 | 4 |
import com.munjaon.client.server.config.ErrorCode; |
| 5 | 5 |
import com.munjaon.client.server.packet.*; |
| 6 | 6 |
import com.munjaon.client.service.DatabaseTypeWorker; |
| 7 |
-import com.munjaon.client.util.ByteUtil; |
|
| 8 | 7 |
import com.munjaon.client.util.MessageCheckUtil; |
| 9 | 8 |
import com.munjaon.client.util.MessageUtil; |
| 10 | 9 |
import org.json.simple.JSONObject; |
... | ... | @@ -417,20 +416,19 @@ |
| 417 | 416 |
saveLog("[MESSAGE SEND] [... ...]");
|
| 418 | 417 |
saveLog("[MESSAGE DATA : " + data.toString() + "]");
|
| 419 | 418 |
|
| 420 |
- int mmsBufferLength = sendBuffer.capacity(); |
|
| 421 | 419 |
socketChannel.write(sendBuffer); |
| 422 | 420 |
|
| 423 | 421 |
if (file01HeadBuffer != null) {
|
| 424 | 422 |
socketChannel.write(file01HeadBuffer); |
| 425 |
- mmsImageSend(path + data.getFilename01()); |
|
| 423 |
+ uploadFileSend(path + data.getFilename01()); |
|
| 426 | 424 |
} |
| 427 | 425 |
if (file02HeadBuffer != null) {
|
| 428 | 426 |
socketChannel.write(file02HeadBuffer); |
| 429 |
- mmsImageSend(path + data.getFilename02()); |
|
| 427 |
+ uploadFileSend(path + data.getFilename02()); |
|
| 430 | 428 |
} |
| 431 | 429 |
if (file03HeadBuffer != null) {
|
| 432 | 430 |
socketChannel.write(file03HeadBuffer); |
| 433 |
- mmsImageSend(path + data.getFilename03()); |
|
| 431 |
+ uploadFileSend(path + data.getFilename03()); |
|
| 434 | 432 |
} |
| 435 | 433 |
|
| 436 | 434 |
long MSG_SEND_TIME = System.currentTimeMillis(); |
... | ... | @@ -460,9 +458,9 @@ |
| 460 | 458 |
} |
| 461 | 459 |
} |
| 462 | 460 |
|
| 463 |
- private void mmsImageSend(String imagePath) throws IOException {
|
|
| 461 |
+ private void uploadFileSend(String filePath) throws IOException {
|
|
| 464 | 462 |
ByteBuffer buff = ByteBuffer.allocate(1024); |
| 465 |
- Path src = Paths.get(imagePath); |
|
| 463 |
+ Path src = Paths.get(filePath); |
|
| 466 | 464 |
|
| 467 | 465 |
try (FileChannel rc = FileChannel.open(src, StandardOpenOption.READ)) {
|
| 468 | 466 |
int num; |
... | ... | @@ -646,6 +644,83 @@ |
| 646 | 644 |
/* 정상인 경우 메시지 전송 */ |
| 647 | 645 |
ByteBuffer sendBuffer = ByteBuffer.allocate(Header.HEADER_LENGTH + KakaoMessage.DELIVER_KAKAO_BODY_LENGTH); |
| 648 | 646 |
ByteBuffer recvBuffer = ByteBuffer.allocate(Header.HEADER_LENGTH + KakaoMessage.DELIVER_KAKAO_ACK_BODY_LENGTH); |
| 647 |
+ |
|
| 648 |
+ Header.putHeader(sendBuffer, Header.COMMAND_DELIVER, KakaoMessage.DELIVER_KAKAO_BODY_LENGTH); |
|
| 649 |
+ KakaoMessage.makeDataForDeliver(sendBuffer, data); |
|
| 650 |
+ saveLog("[MESSAGE SEND] [... ...]");
|
|
| 651 |
+ saveLog("[MESSAGE DATA : " + data.toString() + "]");
|
|
| 652 |
+ |
|
| 653 |
+ socketChannel.write(sendBuffer); |
|
| 654 |
+ |
|
| 655 |
+ /* 파일 전송 */ |
|
| 656 |
+ ByteBuffer fileHeadBuffer = KakaoMessage.makeJsonHeaderForDeliver(path, data.getKakaoJsonFile()); |
|
| 657 |
+ socketChannel.write(fileHeadBuffer); |
|
| 658 |
+ uploadFileSend(path + data.getKakaoJsonFile()); |
|
| 659 |
+ |
|
| 660 |
+ long MSG_SEND_TIME = System.currentTimeMillis(); |
|
| 661 |
+ while (true) {
|
|
| 662 |
+ if (System.currentTimeMillis() - MSG_SEND_TIME >= Packet.LIMIT_PACKET_SEND_TIMEOUT) {
|
|
| 663 |
+ saveLog("[messageSendTimeOut : Expired ... ... ... ... ... ... ...]");
|
|
| 664 |
+ throw new Exception("messageSendTimeOut : Expired ... ... ... ... ... ... ...");
|
|
| 665 |
+ } |
|
| 666 |
+ int recvCount = socketChannel.read(recvBuffer); |
|
| 667 |
+ if (recvCount == -1) {
|
|
| 668 |
+ saveLog("[MESSAGE SEND] [FAIL] [SOCKET IS CLOSED]");
|
|
| 669 |
+ throw new Exception("DELIVER ERROR");
|
|
| 670 |
+ } else if (recvCount > 0) {
|
|
| 671 |
+ setDeliverMsgId(data.getMsgId()); |
|
| 672 |
+// worker.updateToDeliver(data.getMsgId()); |
|
| 673 |
+ saveLog("[MESSAGE SEND] [SUCCESS]");
|
|
| 674 |
+ lastPacketSendTime = System.currentTimeMillis(); |
|
| 675 |
+ break; |
|
| 676 |
+ } |
|
| 677 |
+ } |
|
| 678 |
+ } catch (Exception e) {
|
|
| 679 |
+ saveSystemLog("ERROR [" + e.getMessage() + "]");
|
|
| 680 |
+ saveSystemLog("ERROR DETAIL");
|
|
| 681 |
+ saveSystemLog(e.toString()); |
|
| 682 |
+ throw new Exception(e); |
|
| 683 |
+ } |
|
| 684 |
+ } |
|
| 685 |
+ |
|
| 686 |
+ private void katMessageService_bak(MunjaonMsg data) throws Exception {
|
|
| 687 |
+ try {
|
|
| 688 |
+ /* 이미지 경로 디폴트 경로 사용 여부 */ |
|
| 689 |
+ String defaultYn = getProp("KAKAO", "DEFAULT_PATH_YN");
|
|
| 690 |
+ /* Kakao Json 저장 경로 */ |
|
| 691 |
+ String path = null; |
|
| 692 |
+ if ("Y".equals(defaultYn)) {
|
|
| 693 |
+ path = System.getProperty("ROOTPATH") + File.separator + "kakaofile" + File.separator;
|
|
| 694 |
+ } else {
|
|
| 695 |
+ path = getProp("KAKAO", "FILEPATH") + File.separator;
|
|
| 696 |
+ } |
|
| 697 |
+ /* 공통 메시지 유효성 체크 */ |
|
| 698 |
+ int checkCommonCode = MessageCheckUtil.validateMessageForCommon(data); |
|
| 699 |
+ int checkMsgCode = MessageCheckUtil.validateMessageForKakao(data); |
|
| 700 |
+ int checkFileCode = MessageCheckUtil.validateJsonFile(path, data.getKakaoJsonFile()); |
|
| 701 |
+ |
|
| 702 |
+ if (checkCommonCode != ErrorCode.OK.getCode() || checkMsgCode != ErrorCode.OK.getCode() || checkFileCode != ErrorCode.OK.getCode()) {
|
|
| 703 |
+ saveLog("[MESSAGE FILTER] [COMMON_CODE : " + checkCommonCode + "] [MSG_CODE : " + checkMsgCode + "] [JSON_FILE_CODE : " + checkFileCode + "]");
|
|
| 704 |
+ saveLog("[MESSAGE DATA : " + data.toString() + "]");
|
|
| 705 |
+ /* 전송처리 */ |
|
| 706 |
+ worker.updateToDeliver(data.getMsgId()); |
|
| 707 |
+ /* 실패처리 */ |
|
| 708 |
+ MunjaonMsg errorMsg = null; |
|
| 709 |
+ if (checkCommonCode != ErrorCode.OK.getCode()) {
|
|
| 710 |
+ errorMsg = MessageCheckUtil.setReportMessage(data.getMsgId(), "00", String.valueOf(checkCommonCode), MessageUtil.getTime(), "ETC"); |
|
| 711 |
+ }else if (checkMsgCode != ErrorCode.OK.getCode()) {
|
|
| 712 |
+ errorMsg = MessageCheckUtil.setReportMessage(data.getMsgId(), "00", String.valueOf(checkMsgCode), MessageUtil.getTime(), "ETC"); |
|
| 713 |
+ } else {
|
|
| 714 |
+ errorMsg = MessageCheckUtil.setReportMessage(data.getMsgId(), "00", String.valueOf(checkFileCode), MessageUtil.getTime(), "ETC"); |
|
| 715 |
+ } |
|
| 716 |
+ worker.updateToReport(errorMsg); |
|
| 717 |
+ /* 처리완료 */ |
|
| 718 |
+ return; |
|
| 719 |
+ } |
|
| 720 |
+ |
|
| 721 |
+ /* 정상인 경우 메시지 전송 */ |
|
| 722 |
+ ByteBuffer sendBuffer = ByteBuffer.allocate(Header.HEADER_LENGTH + KakaoMessage.DELIVER_KAKAO_BODY_LENGTH); |
|
| 723 |
+ ByteBuffer recvBuffer = ByteBuffer.allocate(Header.HEADER_LENGTH + KakaoMessage.DELIVER_KAKAO_ACK_BODY_LENGTH); |
|
| 649 | 724 |
/* File check */ |
| 650 | 725 |
ByteBuffer fileBuffer = KakaoMessage.makeJsonForDeliver(path, data.getKakaoJsonFile()); |
| 651 | 726 |
|
... | ... | @@ -722,6 +797,82 @@ |
| 722 | 797 |
/* 정상인 경우 메시지 전송 */ |
| 723 | 798 |
ByteBuffer sendBuffer = ByteBuffer.allocate(Header.HEADER_LENGTH + KakaoMessage.DELIVER_KAKAO_BODY_LENGTH); |
| 724 | 799 |
ByteBuffer recvBuffer = ByteBuffer.allocate(Header.HEADER_LENGTH + KakaoMessage.DELIVER_KAKAO_ACK_BODY_LENGTH); |
| 800 |
+ |
|
| 801 |
+ Header.putHeader(sendBuffer, Header.COMMAND_DELIVER, KakaoMessage.DELIVER_KAKAO_BODY_LENGTH); |
|
| 802 |
+ KakaoMessage.makeDataForDeliver(sendBuffer, data); |
|
| 803 |
+ saveLog("[MESSAGE SEND] [... ...]");
|
|
| 804 |
+ saveLog("[MESSAGE DATA : " + data.toString() + "]");
|
|
| 805 |
+ |
|
| 806 |
+ socketChannel.write(sendBuffer); |
|
| 807 |
+ |
|
| 808 |
+ /* 파일 전송 */ |
|
| 809 |
+ ByteBuffer fileHeadBuffer = KakaoMessage.makeJsonHeaderForDeliver(path, data.getKakaoJsonFile()); |
|
| 810 |
+ socketChannel.write(fileHeadBuffer); |
|
| 811 |
+ uploadFileSend(path + data.getKakaoJsonFile()); |
|
| 812 |
+ |
|
| 813 |
+ long MSG_SEND_TIME = System.currentTimeMillis(); |
|
| 814 |
+ while (true) {
|
|
| 815 |
+ if (System.currentTimeMillis() - MSG_SEND_TIME >= Packet.LIMIT_PACKET_SEND_TIMEOUT) {
|
|
| 816 |
+ saveLog("[messageSendTimeOut : Expired ... ... ... ... ... ... ...]");
|
|
| 817 |
+ throw new Exception("messageSendTimeOut : Expired ... ... ... ... ... ... ...");
|
|
| 818 |
+ } |
|
| 819 |
+ int recvCount = socketChannel.read(recvBuffer); |
|
| 820 |
+ if (recvCount == -1) {
|
|
| 821 |
+ saveLog("[MESSAGE SEND] [FAIL] [SOCKET IS CLOSED]");
|
|
| 822 |
+ throw new Exception("DELIVER ERROR");
|
|
| 823 |
+ } else if (recvCount > 0) {
|
|
| 824 |
+ setDeliverMsgId(data.getMsgId()); |
|
| 825 |
+// worker.updateToDeliver(data.getMsgId()); |
|
| 826 |
+ saveLog("[MESSAGE SEND] [SUCCESS]");
|
|
| 827 |
+ lastPacketSendTime = System.currentTimeMillis(); |
|
| 828 |
+ break; |
|
| 829 |
+ } |
|
| 830 |
+ } |
|
| 831 |
+ } catch (Exception e) {
|
|
| 832 |
+ saveSystemLog("ERROR [" + e.getMessage() + "]");
|
|
| 833 |
+ saveSystemLog("ERROR DETAIL");
|
|
| 834 |
+ saveSystemLog(e.toString()); |
|
| 835 |
+ throw new Exception(e); |
|
| 836 |
+ } |
|
| 837 |
+ } |
|
| 838 |
+ |
|
| 839 |
+ private void kftMessageService_bak(MunjaonMsg data) throws Exception {
|
|
| 840 |
+ try {
|
|
| 841 |
+ /* 이미지 경로 디폴트 경로 사용 여부 */ |
|
| 842 |
+ String defaultYn = getProp("KAKAO", "DEFAULT_PATH_YN");
|
|
| 843 |
+ /* Kakao Json 저장 경로 */ |
|
| 844 |
+ String path = null; |
|
| 845 |
+ if ("Y".equals(defaultYn)) {
|
|
| 846 |
+ path = System.getProperty("ROOTPATH") + File.separator + "kakaofile" + File.separator;
|
|
| 847 |
+ } else {
|
|
| 848 |
+ path = getProp("KAKAO", "FILEPATH") + File.separator;
|
|
| 849 |
+ } |
|
| 850 |
+ /* 공통 메시지 유효성 체크 */ |
|
| 851 |
+ int checkCommonCode = MessageCheckUtil.validateMessageForCommon(data); |
|
| 852 |
+ int checkMsgCode = MessageCheckUtil.validateMessageForKakao(data); |
|
| 853 |
+ int checkFileCode = MessageCheckUtil.validateJsonFile(path, data.getKakaoJsonFile()); |
|
| 854 |
+ if (checkCommonCode != ErrorCode.OK.getCode() || checkMsgCode != ErrorCode.OK.getCode() || checkFileCode != ErrorCode.OK.getCode()) {
|
|
| 855 |
+ saveLog("[MESSAGE FILTER] [COMMON_CODE : " + checkCommonCode + "] [MSG_CODE : " + checkMsgCode + "] [JSON_FILE_CODE : " + checkFileCode + "]");
|
|
| 856 |
+ saveLog("[MESSAGE DATA : " + data.toString() + "]");
|
|
| 857 |
+ /* 전송처리 */ |
|
| 858 |
+ worker.updateToDeliver(data.getMsgId()); |
|
| 859 |
+ /* 실패처리 */ |
|
| 860 |
+ MunjaonMsg errorMsg = null; |
|
| 861 |
+ if (checkCommonCode != ErrorCode.OK.getCode()) {
|
|
| 862 |
+ errorMsg = MessageCheckUtil.setReportMessage(data.getMsgId(), "00", String.valueOf(checkCommonCode), MessageUtil.getTime(), "ETC"); |
|
| 863 |
+ }else if (checkMsgCode != ErrorCode.OK.getCode()) {
|
|
| 864 |
+ errorMsg = MessageCheckUtil.setReportMessage(data.getMsgId(), "00", String.valueOf(checkMsgCode), MessageUtil.getTime(), "ETC"); |
|
| 865 |
+ } else {
|
|
| 866 |
+ errorMsg = MessageCheckUtil.setReportMessage(data.getMsgId(), "00", String.valueOf(checkFileCode), MessageUtil.getTime(), "ETC"); |
|
| 867 |
+ } |
|
| 868 |
+ worker.updateToReport(errorMsg); |
|
| 869 |
+ /* 처리완료 */ |
|
| 870 |
+ return; |
|
| 871 |
+ } |
|
| 872 |
+ |
|
| 873 |
+ /* 정상인 경우 메시지 전송 */ |
|
| 874 |
+ ByteBuffer sendBuffer = ByteBuffer.allocate(Header.HEADER_LENGTH + KakaoMessage.DELIVER_KAKAO_BODY_LENGTH); |
|
| 875 |
+ ByteBuffer recvBuffer = ByteBuffer.allocate(Header.HEADER_LENGTH + KakaoMessage.DELIVER_KAKAO_ACK_BODY_LENGTH); |
|
| 725 | 876 |
/* File check */ |
| 726 | 877 |
ByteBuffer fileBuffer = KakaoMessage.makeJsonForDeliver(path, data.getKakaoJsonFile()); |
| 727 | 878 |
|
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?