在通信协议的开发维护过程中,会遇到需要在日志打印收到数据包或者发出数据包的内容的情况,写好这部分的代码不仅可以便于程序员排查错误,也可以使打印时对用户信息脱敏,满足运营商对用户信息保密的需求。
以下代码是为对MSRP数据包(RFC4975)进行打印而写。
在家即兴所写,用VS2017编译。
代码里有两种打印方式(printmode )。1. 忽略打印 2。脱敏打印
忽略打印是将数据包头和尾的重要部分打印出来,中间测试排查错误不需要看的包体内容省略。
脱敏打印则将数据包里有关用户信息的内容替换成长度恒定的随机字符串,当然,这里可以改为某正式HASH算法。(数据脱敏——什么是数据脱敏http://blog.youkuaiyun.com/huyuyang6688/article/details/77689459)
Log Print Operaton.c
// 1file operation.cpp: 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#define srcpath "E:\\CCODE\\TEST1\\MSRP packet\\msrp CPIM.txt"
#define dstpath "E:\\CCODE\\TEST1\\dest file.txt"
#define logpath "E:\\CCODE\\TEST1\\log.txt"
int main()
{
FILE *fp_srcfile;
FILE *fp_dstfile;
struct stat lstat;
errno_t err;
int srcsize;
int readsize;
char szName[MAX_NAME];
char logbody[MAX_LOG];
//用文件句柄打开需要做字符串替换处理的源文件
strcpy_s(szName, MAX_NAME, srcpath);
stat(szName, &lstat);
srcsize = lstat.st_size;//获取源文件的大小
err = fopen_s(&fp_srcfile,szName,"r+");
if (0 != err)
{
snprintf(logbody, MAX_LOG, "line:[%d] Open file failed ,errno is : [%d]. \r\n", __LINE__, err);
write_log_file((char*)logpath, logbody, strlen(logbody));
}
else
{
snprintf(logbody, MAX_LOG, "line:[%d] Open file [%s] succ.", __LINE__, srcpath);
write_log_file((char*)logpath, logbody, strlen(logbody));
}
//用文件句柄读取需要做字符串替换处理的源文件内容,并放置于before_process_content[MAX_UNIT]中
char before_process_content[MAX_UNIT] = { 0 };
char after_process_content[MAX_UNIT] = { 0 };
readsize= fread(before_process_content, 1, srcsize, fp_srcfile);
if (0 == readsize)
{
snprintf(logbody, MAX_LOG, "Read file failed ,errno is : [%d]. \r\n", err);
write_log_file((char*)logpath, logbody, strlen(logbody));
}
else
{
snprintf(logbody, 128, "line:[%d] Read file [%s] succ.", __LINE__, srcpath);
write_log_file((char*)logpath, logbody, strlen(logbody));
}
printf("content of source file is : [%s]", before_process_content);
//文件句柄用完后需要关闭并置NULL
if (fp_srcfile != NULL)
{
// fclose(fp_srcfile);
fp_srcfile = NULL;
}
//处理文件内容,将before_process_content处理成after_process_content
if (0 != contentprocess(before_process_content, srcsize, after_process_content))
{
snprintf(logbody, MAX_LOG, "line:[%d] Content process failed!", __LINE__);
write_log_file((char*)logpath, logbody, strlen(logbody));
return -1;
}
else
{
snprintf(logbody, MAX_LOG, "line:[%d] Content process succ! ", __LINE__);
write_log_file((char*)logpath, logbody, strlen(logbody));
}
//处理后的文件内容写入目标文件中
memset(szName, 0, sizeof(szName));
strcpy_s(szName, MAX_NAME, dstpath);
//用文件句柄打开需要储存字符串替换处理后结果的文件
err = fopen_s(&fp_dstfile, szName, "at+");
if (0 != err)
{
snprintf(logbody, MAX_LOG, "line:[%d] Open file failed ,errno is : [%d]", __LINE__, err);
write_log_file((char*)logpath, logbody, strlen(logbody));
}
else
{
snprintf(logbody, MAX_LOG, "line:[%d] Open file [%s]succ.", __LINE__, dstpath);
write_log_file((char*)logpath, logbody, strlen(logbody));
}
if (fp_dstfile != NULL)
{
//用文件句柄将替换后的内容写入文件
err = fwrite(after_process_content, strlen(after_process_content), 1, fp_dstfile);
if (1!=err)
{
snprintf(logbody, MAX_LOG,"line:[%d] Write file to[%s] failed ,errno is : [%d]. ", __LINE__, dstpath, err);
write_log_file((char*)logpath, logbody, strlen(logbody));
}
else
{
snprintf(logbody, MAX_LOG, "line:[%d] Wtite file to [%s] succ.\n", __LINE__, dstpath);
write_log_file((char*)logpath, logbody, strlen(logbody));
}
//文件句柄用完后需要关闭并置NULL
fclose(fp_dstfile);
fp_dstfile = NULL;
}
return 0;
}
//获取此刻时间用于日志打印
void get_local_time(char* buffer)
{
struct tm rawtime;
time_t time_seconds = time(0);
localtime_s(&rawtime, &time_seconds);
snprintf(buffer, 100, "%04d-%02d-%02d %02d:%02d:%02d",
(rawtime.tm_year + 1900), rawtime.tm_mon, rawtime.tm_mday,
rawtime.tm_hour, rawtime.tm_min, rawtime.tm_sec);
}
// 写日志文件
int write_log_file(char* filename, char* buffer, int buf_size)
{
FILE *fp_log;
errno_t err;
char logcontent[MAX_LOG];
//获取日志打印时间
char now[64] = { 0 };
get_local_time(now);
//将日志所有内容写入logcontent,以备打印到日志文件中
snprintf(logcontent, MAX_LOG, "time:%s %s\n", now, buffer);
//调用文件句柄fp_log打开日志文件logpath
err = fopen_s(&fp_log, (char*)filename, "at+");
if (0 != err)
{
printf("Open log file failed ,errno is : [%d]", err);
return -1;
}
if (fp_log != NULL)
{
//调用文件句柄将日志内容logcontent打印到日志文件中
err = fwrite(logcontent, strlen(logcontent) + 1, 1, fp_log);
//文件句柄用完后需要关闭并置NULL
fclose(fp_log);
fp_log = NULL;
}
else
return -1;
return 0;
}
int contentprocess(char* inbuffer, int size, char* outbuffer)
{
char logbody[MAX_LOG];
// 0 表示普通打印,将协议包头尾打印,中间省略。1表示掩敏打印,将特征信息用固定长度随机字符串代替。
int printmode = 0;
switch (printmode)
{
case 0:// 0 表示普通打印输出,在测试软件流程时不需要判断所有内容,只要将协议包头尾打印,中间省略
# define MAXLOGLINESIZE 1024
# define FIRSTHALFPARTDATA 824
# define SHOW_LINE "\r\n\r\n......omit......\r\n\r\n"
# define LASTHALFPARTDATA 120 //数据的最后一行小于此长度
int num = 0;
//第一部分,写入数据包的长度信息
snprintf(outbuffer,MAX_UNIT,"Packet Data Size:%d\r\n",size);
num += strlen(outbuffer);
if (size >= MAXLOGLINESIZE)//长度大于MAXLOGLINESIZE时打印需要忽略中间部分次要内容
{
int i;
char* pbegin;
//第二部分,把数据包的前FIRSTHALFPARTDATA个字符写入
for (i = 0; i <= FIRSTHALFPARTDATA; i++)
{
int c = inbuffer[i];
if (c == '\0') break;
if ((c >= 32 && c <= 126) || c == '\r' || c == '\n') //可打印字符,加回车换行
{
outbuffer[num + i] = inbuffer[i];
}
else
break;
}
num += i;
outbuffer[num] = 0;
strcat_s(outbuffer,MAXLOGLINESIZE,SHOW_LINE);
num += strlen(SHOW_LINE);
outbuffer[num] = 0;
pbegin = (char *)inbuffer + strlen(inbuffer) - 1;
//第四部分,将最后一行写入
for (i = 0; i <= LASTHALFPARTDATA; i++) //tail
{
int c = pbegin[0];
if ((c >= 32 && c <= 126) || c == '\0') //可打印字符,结尾可能有0
{
pbegin--;
continue;
}
else {
pbegin++;
break;
}
}
strcat_s(outbuffer,size,pbegin);
num += i;
outbuffer[num] = 0;
snprintf(logbody, MAX_LOG, "line:[%d]contentprocess procedure,Omit part,packet size[%d] larger than MAXLOGLINESIZE[%d]", __LINE__,size,MAXLOGLINESIZE);
write_log_file((char*)logpath, logbody, strlen(logbody));
}
else//长度小于MAXLOGLINESIZE时全部打印
{
for (int i = 0; i <= size; i++)
{
int c = inbuffer[i];
if (c == '\0') break;
if ((c >= 32 && c <= 126) || c == '\r' || c == '\n') //可打印字符,加回车换行
{
outbuffer[i] = inbuffer[i];
}
}
snprintf(logbody, MAX_LOG, "line:[%d]contentprocess procedure,print all,packet size[%d] less than MAXLOGLINESIZE[%d]", __LINE__, size, MAXLOGLINESIZE);
write_log_file((char*)logpath, logbody, strlen(logbody));
}
break;
case 1://1表示掩敏打印,将特征信息用固定长度随机字符串代替。因为掩敏处理后包长度已经很短呢,所以全打印
int count = 0;
char* p;
char* p1;
char* p2;
char To_path_IP[30] = { 0 };
char From_path_IP[30] = { 0 };
char CPIM_From_UsrName[30] = { 0 };
char CPIM_To_UsrName[30] = { 0 };
char List_Tel_Num[30] = { 0 };
char Content[12500] = { 0 };
memcpy(outbuffer, inbuffer, strlen(inbuffer));
//搜索"To-Path:"这一行的IP地址并脱敏
p = strstr(outbuffer, "To-Path:");
if (p)
{
p = strstr(p, "//");
if (p)
{
while (' ' == *(p + 1))p++;
p += 2;
p1 = strstr(p, ":");
if (p1)
{
while (' ' == *(p1 - 1))p1--;
if (p1 - p < 20)
{
memcpy(To_path_IP, p, p1 - p);
snprintf(logbody, MAX_LOG, "line:[%d]contentprocess procedure,find To_path_IP:[%s]", __LINE__, To_path_IP);
write_log_file((char*)logpath, logbody, strlen(logbody));
HashMake(To_path_IP);
str_replace(p, p1 - p, To_path_IP);
}
else
printf("To-Path find err");
}
}
}
//搜索"From-Path:"这一行的IP地址并脱敏
p = strstr(outbuffer, "From-Path:");
if (p)
{
p = strstr(p, "//");
if (p)
{
while (' ' == *(p + 1))p++;
p += 2;
p1 = strstr(p, ":");
if (p1)
{
while (' ' == *(p1 - 1))p1--;
if (p1 - p < 20)
{
memcpy(From_path_IP, p, p1 - p);
snprintf(logbody, MAX_LOG, "line:[%d]contentprocess procedure,find From_path_IP:[%s]", __LINE__, From_path_IP);
write_log_file((char*)logpath, logbody, strlen(logbody));
HashMake(From_path_IP);
str_replace(p, p1 - p, From_path_IP);
}
else
printf("find From-Path err");
}
}
}
//搜索"From:"这一行的用户名并脱敏
p = strstr(outbuffer, "From:");
if (p)
{
p += 5;
p = strstr(p, ":");
if (p)
{
while (' ' == *(p + 1))p++;
p++;
p1 = strstr(p, "@");
if (p1)
{
while (' ' == *(p1 - 1))p1--;
if (p1 - p < 30)
{
memcpy(CPIM_From_UsrName, p, p1 - p);
snprintf(logbody, MAX_LOG, "line:[%d]contentprocess procedure,find CPIM_From_UsrName:[%s]", __LINE__, CPIM_From_UsrName);
write_log_file((char*)logpath, logbody, strlen(logbody));
HashMake(CPIM_From_UsrName);
str_replace(p, p1 - p, CPIM_From_UsrName);
}
else
printf("find From: err");
}
}
}
//搜索"To:"这一行的用户名并脱敏
p = strstr(outbuffer, "To:");
if (p)
{
p += 3;
p = strstr(p, ":");
if (p)
{
while (' ' == *(p + 1))p++;
p++;
p1 = strstr(p, "@");
if (p1)
{
while (' ' == *(p1 - 1))p1--;
if (p1 - p < 30)
{
memcpy(CPIM_To_UsrName, p, p1 - p);
snprintf(logbody, MAX_LOG, "line:[%d]contentprocess procedure,find CPIM_To_UsrName:[%s]", __LINE__, CPIM_To_UsrName);
write_log_file((char*)logpath, logbody, strlen(logbody));
HashMake(CPIM_To_UsrName);
str_replace(p, p1 - p, CPIM_To_UsrName);
}
else
printf("find TO: err");
}
}
}
//搜索<list>和</list>之间用户群发的手机号并脱敏
p = strstr(outbuffer, "<list>");
p2 = strstr(outbuffer, "</list>");
if ((NULL != p) && (NULL != p2))
{
while ((p = strstr(p, "tel:")) && (p < p2))
{
count++;
p = p + 4;
while (' ' == *(p + 1))p++;
p1 = p;
do
{
p1++;
} while (*p1 > 42 && *p1 < 58);
if (p1)
{
if (p1 - p < 30)
{
memcpy(List_Tel_Num, p, p1 - p);
snprintf(logbody, MAX_LOG, "line:[%d]contentprocess procedure,find List_Tel_Num:[%s].ListSeq:%d", __LINE__, List_Tel_Num, count);
write_log_file((char*)logpath, logbody, strlen(logbody));
HashMake(List_Tel_Num);
str_replace(p, p1 - p, List_Tel_Num);
}
else
printf("find list content err");
}
}
}
//搜索MSRP包包体内容并脱敏
p = strstr(outbuffer, "-------");
if ((NULL != p) && (p2 = strstr(outbuffer, "Content")))
{
p1 = p - 2;
do
{
p--;
} while (0 != strncmp(p, "Content", 7));
p = strstr(p, "\n");
if (p)
{
p = p + 1;
while (' ' == *(p + 1))p++;
}
if (NULL != p&&NULL != p1)
{
snprintf(logbody, MAX_LOG, "line:[%d]contentprocess procedure,find Content.", __LINE__);
write_log_file((char*)logpath, logbody, strlen(logbody));
memcpy(Content, p, p1 - p);
HashMake(Content);
str_replace(p, p1 - p, Content);
}
}
break;
}
return 0;
}
int HashMake(char* Info)
{
int i, randno;
char stardsting[63] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
for (i = 0; i < 10; i++)
{
randno = rand() % 62;
Info[i] = stardsting[randno]; //生成要求范围内的随机数。
}
Info[i] = 0;
return 1;
}
void str_replace(char * cp, int length_of_srcstr, char * dst_str)
{
int length_of_dststr;
char * tmp;
length_of_dststr = strlen(dst_str);
//若被替换字符串的长度大于替换字符串的长度,在替换操作里源文件内容部分需要整体往前移动
if (length_of_dststr< length_of_srcstr)
{
tmp = cp + length_of_srcstr;
while (*tmp)
{
*(tmp - (length_of_srcstr - length_of_dststr)) = *tmp; //整体向前移动两个字符串的差值位,这样为字符替换留恰好的空间
tmp++;
}
*(tmp - (length_of_srcstr - length_of_dststr)) = *tmp; //把末尾的 '\0' 也要移动
}
else
//若被替换字符串的长度小于替换字符串的长度,在替换操作里源文件内容部分需要整体往后移动
if (length_of_dststr> length_of_srcstr)
{
tmp = cp;
while (*tmp) tmp++;
while (tmp >= cp + length_of_srcstr)
{
*(tmp + (length_of_dststr - length_of_srcstr)) = *tmp;//整体向后移动两个字符串的差值位,这样为字符替换留恰好的空间
tmp--;
}
}
//在之前移动产生的位置里填上替换字符
memcpy(cp, dst_str, length_of_dststr);
}
stdafx.h
// stdafx.h : 标准系统包含文件的包含文件,
// 或是经常使用但不常更改的
// 特定于项目的包含文件
//
#pragma once
#include "targetver.h"
#include <stdio.h>
#include <tchar.h>
#include<string.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<time.h>
#define MAX_LOG 256
#define MAX_NAME 128
#define MAX_UNIT 12000
int write_log_file(char* filename, char* buffer, int buf_size);
int contentprocess(char* inbuffer, int size, char* outbuffer);
void str_replace(char * cp, int length_of_srcstr, char * dst_str);
int HashMake(char* instr);
test1: msrp CPIM包,打印模式0
test packet "msrp CPIM":
MSRP dp20yef02212a03AJW116111C SEND
To-Path: msrp://10.46.181.23:5881/10018014016032217540500123;tcp
From-Path: msrp://10.46.181.23:10064/100E01f3;tcp
Message-ID: 12299053
Byte-Range: 1-10238/10238
Content-Type: message/CPIM
From: <sip:anonymous@anonymous.invalid>
To: <sip:anonymous@anonymous.invalid>
DateTime: 2017-07-20T11:21:47.300+8:00
NS: imdn <urn:ietf:params:imdn>
imdn.Message-ID: MsgA1vfjqULAA
imdn.Disposition-Notification: positive-delivery, display
Content-Type: text/plain;charset="UTF-8"
Content-Length: 9927
Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(a
-------dp20yef02212a03AJW116111C$
packet "msrp CPIM" print content:
Packet Data Size:10508
MSRP dp20yef02212a03AJW116111C SEND
To-Path: msrp://10.46.181.23:5881/10018014016032217540500123;tcp
From-Path: msrp://10.46.181.23:10064/100E01f3;tcp
Message-ID: 12299053
Byte-Range: 1-10238/10238
Content-Type: message/CPIM
From: <sip:anonymous@anonymous.invalid>
To: <sip:anonymous@anonymous.invalid>
DateTime: 2017-07-20T11:21:47.300+8:00
NS: imdn <urn:ietf:params:imdn>
imdn.Message-ID: MsgA1vfjqULAA
imdn.Disposition-Notification: positive-delivery, display
Content-Type: text/plain;charset="UTF-8"
Content-Length: 9927
Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcont
......omit......
-------dp20yef02212a03AJW116111C$
LOG:
time:2018-01-10 18:20:46 line:[33] Open file [E:\CCODE\TEST1\MSRP packet\msrp CPIM.txt] succ.
time:2018-01-10 18:20:46 line:[49] Read file [E:\CCODE\TEST1\MSRP packet\msrp CPIM.txt] succ.
time:2018-01-10 18:20:46 line:[223]contentprocess procedure,Omit part,packet size[10508] larger than MAXLOGLINESIZE[1024]
time:2018-01-10 18:20:46 line:[70] Content process succ!
time:2018-01-10 18:20:46 line:[88] Open file [E:\CCODE\TEST1\dest file.txt]succ.
time:2018-01-10 18:20:46 line:[103] Wtite file to [E:\CCODE\TEST1\dest file.txt] succ.
test2: msrp CPIM list包,打印模式0
test packet "msrp CPIM list":
MSRP l03D1P1J00Wvi10c0672Ej11G SEND
To-Path: msrp://127.0.0.1:5881/10018014016032217540500123;tcp
From-Path: msrp://127.0.0.1:10064/100E01f3;tcp
Message-ID: 12299053
Byte-Range: 1-1789/1789
Content-Type: multipart/mixed;boundary=Boundary
--Boundary
Content-Type:application/resource-lists+xml
Content-Disposition:recipient-list
Content-Length:499
<?xml version="1.0" encoding="UTF-8"?>
<resource-lists xmlns="urn:ietf:params:xml:ns:resource-lists"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:cp="urn:ietf:params:xml:ns:capacity">
<list>
<entry uri="tel:+8645083887027" cp:capacity="to"/>
<entry uri="tel:+8612384477897" cp:capacity="to"/>
<entry uri="tel:+8644652774929" cp:capacity="to"/>
<entry uri="tel:+8644182866137" cp:capacity="to"/>
<entry uri="tel:+8669147849766" cp:capacity="to"/>
</list>
</resource-lists>
--Boundary
Content-Type:message/CPIM
Content-Length:1111
From: <sip:anonymous@anonymous.invalid>
To: <sip:anonymous@anonymous.invalid>
DateTime: 2016-03-22T09:24:01.156+08:00
NS: imdn <urn:ietf:params:imdn>
imdn.Message-ID: imdn.Message-ID: MsgA1vfjqULAA
imdn.Disposition-Notification: positive-delivery, display
Content-Type: text/plain;charset="UTF-8"
Content-Length: 766
********
package zte.com.rcs.core;
import gov.nist.javax.sip.header.HeaderFactoryExt;
import gov.nist.javax.sip.header.HeaderFactoryImpl;
import gov.nist.javax.sip.header.extensions.SessionExpiresHeader;
import gov.nist.javax.sip.header.ims.PAssertedIdentityHeader;
import gov.nist.javax.sip.header.ims.PChargingVectorHeader;
import gov.nist.javax.sip.header.ims.PPreferredServiceHeader;
import gov.nist.javax.sip.message.SIPMessage;
import gov.nist.javax.sip.message.SIPRequest;
import gov.nist.javax.sip.stack.Base64Coder;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
--Boundary--
-------l03D1P1J00Wvi10c0672Ej11G$
packet "msrp CPIM list" print content:
Packet Data Size:2070
MSRP l03D1P1J00Wvi10c0672Ej11G SEND
To-Path: msrp://127.0.0.1:5881/10018014016032217540500123;tcp
From-Path: msrp://127.0.0.1:10064/100E01f3;tcp
Message-ID: 12299053
Byte-Range: 1-1789/1789
Content-Type: multipart/mixed;boundary=Boundary
--Boundary
Content-Type:application/resource-lists+xml
Content-Disposition:recipient-list
Content-Length:499
<?xml version="1.0" encoding="UTF-8"?>
<resource-lists xmlns="urn:ietf:params:xml:ns:resource-lists"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:cp="urn:ietf:params:xml:ns:capacity">
<list>
<entry uri="tel:+8645083887027" cp:capacity="to"/>
<entry uri="tel:+8612384477897" cp:capacity="to"/>
<entry uri="tel:+8644652774929" cp:capacity="to"/>
<entry uri="tel:+8644182866137" cp:capacity="to"/>
<entry uri="tel:+8669147849766" cp:capacity="to"/>
</list>
</resou
......omit......
-------l03D1P1J00Wvi10c0672Ej11G$
LOG:
time:2018-01-10 18:17:16 line:[33] Open file [E:\CCODE\TEST1\MSRP packet\msrp CPIM list.txt] succ.
time:2018-01-10 18:17:16 line:[49] Read file [E:\CCODE\TEST1\MSRP packet\msrp CPIM list.txt] succ.
time:2018-01-10 18:17:16 line:[223]contentprocess procedure,Omit part,packet size[2070] larger than MAXLOGLINESIZE[1024]
time:2018-01-10 18:17:16 line:[70] Content process succ!
time:2018-01-10 18:17:16 line:[88] Open file [E:\CCODE\TEST1\dest file.txt]succ.
time:2018-01-10 18:17:16 line:[103] Wtite file to [E:\CCODE\TEST1\dest file.txt] succ.
test3: msrp CPIM包,打印模式1
test packet "msrp CPIM":
MSRP dp20yef02212a03AJW116111C SEND
To-Path: msrp://10.46.181.23:5881/10018014016032217540500123;tcp
From-Path: msrp://10.46.181.23:10064/100E01f3;tcp
Message-ID: 12299053
Byte-Range: 1-10238/10238
Content-Type: message/CPIM
From: <sip:anonymous@anonymous.invalid>
To: <sip:anonymous@anonymous.invalid>
DateTime: 2017-07-20T11:21:47.300+8:00
NS: imdn <urn:ietf:params:imdn>
imdn.Message-ID: MsgA1vfjqULAA
imdn.Disposition-Notification: positive-delivery, display
Content-Type: text/plain;charset="UTF-8"
Content-Length: 9927
Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(abcdef_cc)3Ktestcontent(a
-------dp20yef02212a03AJW116111C$
packet "msrp CPIM " print content:
MSRP dp20yef02212a03AJW116111C SEND
To-Path: msrp://P1kAlMiG2K:5881/10018014016032217540500123;tcp
From-Path: msrp://b7FzP5tM1Q:10064/100E01f3;tcp
Message-ID: 12299053
Byte-Range: 1-10238/10238
Content-Type: message/CPIM
From: <sip:BI6DSS92c3@anonymous.invalid>
To: <sip:1Apgjk9lVK@anonymous.invalid>
DateTime: 2017-07-20T11:21:47.300+8:00
NS: imdn <urn:ietf:params:imdn>
imdn.Message-ID: MsgA1vfjqULAA
imdn.Disposition-Notification: positive-delivery, display
Content-Type: text/plain;charset="UTF-8"
Content-Length: 9927
7dmpdonxRW
-------dp20yef02212a03AJW116111C$
LOG:
time:2018-01-10 18:06:20 line:[33] Open file [E:\CCODE\TEST1\MSRP packet\msrp CPIM.txt] succ.
time:2018-01-10 18:06:20 line:[49] Read file [E:\CCODE\TEST1\MSRP packet\msrp CPIM.txt] succ.
time:2018-01-10 18:06:20 line:[270]contentprocess procedure,find To_path_IP:[10.46.181.23]
time:2018-01-10 18:06:20 line:[298]contentprocess procedure,find From_path_IP:[10.46.181.23]
time:2018-01-10 18:06:20 line:[327]contentprocess procedure,find CPIM_From_UsrName:[anonymous]
time:2018-01-10 18:06:20 line:[356]contentprocess procedure,find CPIM_To_UsrName:[anonymous]
time:2018-01-10 18:06:20 line:[422]contentprocess procedure,find Content.
time:2018-01-10 18:06:20 line:[70] Content process succ!
time:2018-01-10 18:06:20 line:[88] Open file [E:\CCODE\TEST1\dest file.txt]succ.
time:2018-01-10 18:06:20 line:[103] Wtite file to [E:\CCODE\TEST1\dest file.txt] succ.
test4: msrp CPIM list包,打印模式1
test packet "msrp CPIM list":
MSRP l03D1P1J00Wvi10c0672Ej11G SEND
To-Path: msrp://127.0.0.1:5881/10018014016032217540500123;tcp
From-Path: msrp://127.0.0.1:10064/100E01f3;tcp
Message-ID: 12299053
Byte-Range: 1-1789/1789
Content-Type: multipart/mixed;boundary=Boundary
--Boundary
Content-Type:application/resource-lists+xml
Content-Disposition:recipient-list
Content-Length:499
<?xml version="1.0" encoding="UTF-8"?>
<resource-lists xmlns="urn:ietf:params:xml:ns:resource-lists"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:cp="urn:ietf:params:xml:ns:capacity">
<list>
<entry uri="tel:+8645083887027" cp:capacity="to"/>
<entry uri="tel:+8612384477897" cp:capacity="to"/>
<entry uri="tel:+8644652774929" cp:capacity="to"/>
<entry uri="tel:+8644182866137" cp:capacity="to"/>
<entry uri="tel:+8669147849766" cp:capacity="to"/>
</list>
</resource-lists>
--Boundary
Content-Type:message/CPIM
Content-Length:1111
From: <sip:anonymous@anonymous.invalid>
To: <sip:anonymous@anonymous.invalid>
DateTime: 2016-03-22T09:24:01.156+08:00
NS: imdn <urn:ietf:params:imdn>
imdn.Message-ID: imdn.Message-ID: MsgA1vfjqULAA
imdn.Disposition-Notification: positive-delivery, display
Content-Type: text/plain;charset="UTF-8"
Content-Length: 766
********
package zte.com.rcs.core;
import gov.nist.javax.sip.header.HeaderFactoryExt;
import gov.nist.javax.sip.header.HeaderFactoryImpl;
import gov.nist.javax.sip.header.extensions.SessionExpiresHeader;
import gov.nist.javax.sip.header.ims.PAssertedIdentityHeader;
import gov.nist.javax.sip.header.ims.PChargingVectorHeader;
import gov.nist.javax.sip.header.ims.PPreferredServiceHeader;
import gov.nist.javax.sip.message.SIPMessage;
import gov.nist.javax.sip.message.SIPRequest;
import gov.nist.javax.sip.stack.Base64Coder;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
--Boundary--
-------l03D1P1J00Wvi10c0672Ej11G$
packet "msrp CPIM list" print content:
MSRP l03D1P1J00Wvi10c0672Ej11G SEND
To-Path: msrp://P1kAlMiG2K:5881/10018014016032217540500123;tcp
From-Path: msrp://b7FzP5tM1Q:10064/100E01f3;tcp
Message-ID: 12299053
Byte-Range: 1-1789/1789
Content-Type: multipart/mixed;boundary=Boundary
--Boundary
Content-Type:application/resource-lists+xml
Content-Disposition:recipient-list
Content-Length:499
<?xml version="1.0" encoding="UTF-8"?>
<resource-lists xmlns="urn:ietf:params:xml:ns:resource-lists"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:cp="urn:ietf:params:xml:ns:capacity">
<list>
<entry uri="tel:7dmpdonxRW" cp:capacity="to"/>
<entry uri="tel:d2YvlzRhbI" cp:capacity="to"/>
<entry uri="tel:O74SOKYoSs" cp:capacity="to"/>
<entry uri="tel:Q7sHeKcNBo" cp:capacity="to"/>
<entry uri="tel:LLC0G8g8Ru" cp:capacity="to"/>
</list>
</resource-lists>
--Boundary
Content-Type:message/CPIM
Content-Length:1111
From: <sip:BI6DSS92c3@anonymous.invalid>
To: <sip:1Apgjk9lVK@anonymous.invalid>
DateTime: 2016-03-22T09:24:01.156+08:00
NS: imdn <urn:ietf:params:imdn>
imdn.Message-ID: imdn.Message-ID: MsgA1vfjqULAA
imdn.Disposition-Notification: positive-delivery, display
Content-Type: text/plain;charset="UTF-8"
Content-Length: 766
snmNty8KZX
-------l03D1P1J00Wvi10c0672Ej11G$
LOG:
time:2018-01-10 18:11:06 line:[33] Open file [E:\CCODE\TEST1\MSRP packet\msrp CPIM list.txt] succ.
time:2018-01-10 18:11:06 line:[49] Read file [E:\CCODE\TEST1\MSRP packet\msrp CPIM list.txt] succ.
time:2018-01-10 18:11:06 line:[270]contentprocess procedure,find To_path_IP:[127.0.0.1]
time:2018-01-10 18:11:06 line:[298]contentprocess procedure,find From_path_IP:[127.0.0.1]
time:2018-01-10 18:11:06 line:[327]contentprocess procedure,find CPIM_From_UsrName:[anonymous]
time:2018-01-10 18:11:06 line:[356]contentprocess procedure,find CPIM_To_UsrName:[anonymous]
time:2018-01-10 18:11:06 line:[390]contentprocess procedure,find List_Tel_Num:[+8645083887027].ListSeq:1
time:2018-01-10 18:11:06 line:[390]contentprocess procedure,find List_Tel_Num:[+8612384477897].ListSeq:2
time:2018-01-10 18:11:06 line:[390]contentprocess procedure,find List_Tel_Num:[+8644652774929].ListSeq:3
time:2018-01-10 18:11:06 line:[390]contentprocess procedure,find List_Tel_Num:[+8644182866137].ListSeq:4
time:2018-01-10 18:11:06 line:[390]contentprocess procedure,find List_Tel_Num:[+8669147849766].ListSeq:5
time:2018-01-10 18:11:06 line:[422]contentprocess procedure,find Content.
time:2018-01-10 18:11:06 line:[70] Content process succ!
time:2018-01-10 18:11:06 line:[88] Open file [E:\CCODE\TEST1\dest file.txt]succ.
time:2018-01-10 18:11:06 line:[103] Wtite file to [E:\CCODE\TEST1\dest file.txt] succ.