(Japanese)
----------------------------------------------------------------------
        IP Messenger ʐMvgRdl(htg9Łj      1996/02/21
                                                    Modify 2003/01/14

                                                           H.Shirouzu
                                               shirouzu@h.email.ne.jp
----------------------------------------------------------------------

Tv
	TCP/UDP Port gpAbZ[WMT[rXł


	TCP/IP g OS ̎ނ₢܂B̂lbg[N
	iюw̃lbg[NjŁAIȃoFł܂B
	bZ[WM̂̂́AIPڑĂSoɑ΂s܂B

ڍ
	TCP/UDP |[g(default:2425)gpāAȉ̕@ŏ܂B
	ibZ[WM:UDPAt@CM:TCP gpj

  1.R}h

     1) R}h (commandԍ(32bit)̂A8bit)

	IPMSG_NOOPERATION	
	IPMSG_BR_ENTRY		T[rXɃGgiNBroadcastj
	IPMSG_BR_EXIT		T[rX甲iIBroadcastj
	IPMSG_ANSENTRY		GgFƂʒm
	IPMSG_BR_ABSENCE	s݃[hύX

	IPMSG_BR_ISGETLIST	zXgXgo\o̒T
	IPMSG_OKGETLIST		zXgXgo\ʒm
	IPMSG_GETLIST		zXgXgov
	IPMSG_ANSLIST		zXgXgo

	IPMSG_SENDMSG		bZ[W̑M
	IPMSG_RECVMSG		bZ[W̎MmF

	IPMSG_READMSG		̊Jʒm
	IPMSG_DELMSG		jʒm
	IPMSG_ANSREADMSG	̊JmFi8 łǉj

	IPMSG_GETFILEDATA	Ytt@CviTCP Ŏgpj
	IPMSG_RELEASEFILES	Ytt@Cj
	IPMSG_GETDIRFILES	YtKwt@Cv

	IPMSG_GETINFO		IPMSGo[W擾
	IPMSG_SENDINFO		IPMSGo[W񉞓

	IPMSG_GETABSENCEINFO	sݒʒm擾
	IPMSG_SENDABSENCEINFO	sݒʒm

	IPMSG_GETPUBKEY		RSA J擾
	IPMSG_ANSPUBKEY		RSA J

     2) IvVtO (commandԍ(32bit)̂A24bit)

	IPMSG_ABSENCEOPT	s݃[hioFnR}hŎgpj
	IPMSG_SERVEROPT		T[o[i\j
	IPMSG_DIALUPOPT		oFñR}hʂɑԂ

	IPMSG_SENDCHECKOPT	M`FbN
	IPMSG_SECRETOPT		
	IPMSG_READCHECKOPT	mFi8 łǉj
	IPMSG_PASSWORDOPT	O
	IPMSG_BROADCASTOPT	u[hLXgij
	IPMSG_MULTICASTOPT	}`LXgiIj
	IPMSG_NEWMUTIOPT	j[o[W}`LXgi\j
	IPMSG_AUTORETOPT	is|h~pj
	IPMSG_NOLOGOPT		OɎcȂiƂ𐄏j
	IPMSG_NOADDLISTOPT	BR_ENTRYĂȂꎞoʒm

	IPMSG_FILEATTACHOPT	t@CYt
	IPMSG_ENCRYPTOPT	Í

	IPMSG_NOPOPUPOPT	igpȂȂ܂j
	IPMSG_RETRYOPT		đtOiHOSTLIST 擾Ɏgpj

     3) ÍgptO (gɑgݍ킹 hex \Ŏgp)

	IPMSG_RSA_512
	IPMSG_RSA_1024
	IPMSG_RSA_2048
	IPMSG_RC2_40
	IPMSG_RC2_128
	IPMSG_RC2_256
	IPMSG_BLOWFISH_128
	IPMSG_BLOWFISH_256
	IPMSG_SIGN_MD5

     4) Ytt@Cgpt@Cށifileattr8bitj

	IPMSG_FILE_REGULAR
	IPMSG_FILE_DIR
	IPMSG_FILE_RETPARENT
	IPMSG_FILE_SYMLINK
	IPMSG_FILE_CDEV
	IPMSG_FILE_BDEV
	IPMSG_FILE_FIFO
	IPMSG_FILE_RESFORK

     5) Ytt@Cgpt@Cifileattr24bitj

	IPMSG_FILE_RONLYOPT
	IPMSG_FILE_HIDDENOPT
	IPMSG_FILE_EXHIDDENOPT
	IPMSG_FILE_ARCHIVEOPT
	IPMSG_FILE_SYSTEMOPT

     6) Ytt@Cgpgt@C

	IPMSG_FILE_UID
	IPMSG_FILE_USERNAME
	IPMSG_FILE_GID
	IPMSG_FILE_GROUPNAME
	IPMSG_FILE_PERM
	IPMSG_FILE_MAJORNO
	IPMSG_FILE_MINORNO
	IPMSG_FILE_CTIME
	IPMSG_FILE_MTIME
	IPMSG_FILE_ATIME
	IPMSG_FILE_CREATETIME

	IPMSG_FILE_CREATOR
	IPMSG_FILE_FILETYPE
	IPMSG_FILE_FINDERINFO

	IPMSG_FILE_ACL
	IPMSG_FILE_ALIASFNAME
	IPMSG_FILE_UNICODEFNAME


  2.R}htH[}bgiׂĕƂĕ\j

     1) R}hitH[}bgo[W1j

	Ver(1) : Packetԍ : User : Host : Commandԍ : ǉ

     2) ݂̃R}htH[}bgɂ郁bZ[W̑M

	"1:100:shirouzu:jupiter:32:Hello"


  3.R}hTv

     1) oF

	NɁAIPMSG_BR_ENTRY R}hu[hLXgAł
	オĂ郁oɁAVKQm点܂B

	̃u[hLXgɂAłɗオĂ郁óA
	̑M惊XgɐVKQȍǉ܂BɁA
	IPMSG_ANSENTRY R}h̐VKQoɑ΂AԐM܂B

	VKQóA IPMSG_ANSENTRY M邱ƂɂA
	łɗオĂSȍ𓾂邱Ƃł܂B
	AIPpPbgȂ́ASẴo
	M惊XgێłƂ킯łB

	s݃[hjbNl[̕ύXȂǂAoSɒʒmɂ́A
	IPMSG_BR_ABSENCE u[hLXg܂BiIPMSG_BR_ENTRY 
	ႢA󂯎o IPMSG_ANSENTRY Ԃ܂j

	IPMSG_BR_ENTRY, IPMSG_ANSENTRY, IPMSG_BR_ABSENCE R}hł́A
	s݃[hɂ킹 IPMSG_ABSENCEOPT 𗧂ĂāAR}h̒ǉ
	ɂ̓jbNl[܂B܂A_CAAbv[UȂǁA
	lbg[Nw̃u[hLXg͂ȂóAɁA
	IPMSG_DIALUPOPT 𗧂Ă܂B̃IvVĂ郁o
	́AoFñR}hʂɑo܂B

	iO[vgɂājIPMSG_BR_ENTRY, IPMSG_BR_ABSENCE 
	QR}hɂāA]̃R}htH[}bgɑ(
	'\0')O[v邱ƂɂāȀ(ݒ)
	O[v`邱Ƃł܂B

     2) bZ[WM

	bZ[WMɂ IPMSG_SENDMSG gpAgɃbZ[W
	{̂܂BḾAIPMSG_SENDCHECKOPT Ăꍇ
	ɌAIPMSG_RECVMSG Ԃ܂Bgɂ͌̃pPbgԍ
	܂B

	u[hLXgɂ郁bZ[WḾAIPMSG_BOADCASTOPT 
	Ă IPMSG_SENDMSG gp܂BisݒʒmȂǁjo
	pPbgɂ́As|h~̂ IPMSG_AUTORETOPT 
	܂Bǂ炩̃IvVĂpPbgɂ́AmF
	opPbgԂ܂B

	őoɂ́AIPMSG_SECRETOPT 𗧂ĂpPbg𑗏o
	B̏ꍇAM͊J IPMSG_READMSG 𑗏o܂B
	gɂ͌̃pPbgԍ܂B

	iǉꂽAIPMSG_NOADDLISTOPT ɂāj
	̑M惊XgɍڂĂȂzXg IPMSG_SENDMSG
	pPbgɂ́A
	E M IPMSG_BR_ENTRY 𑗐MāAzXg݊mFs
	E ڎ̑M惊Xgɉ
	̂ꂩ̏sƂɂAGg[npPbg肱
	tH[l܂BAGg[s
	PbZ[WM̏ꍇ́A͖]܂Ȃł̂ŁA
	̏ꍇ͎MzXgɂ̂悤ȃtH[ȂƂ𐄏
	邽߁AIPMSG_SENDMSG  IPMSG_NOADDLISTOPT tO𗧂Ă܂B

	i8łŒǉꂽAIPMSG_READCHECKOPT ɂāj
	IPMSG_READMSG ɁAIPMSG_READCHECKOPT ĂꍇAxA
	IPMSG_SENDMSG ɂ IPMSG_SENDCHECKOPT ̂悤ɏ܂B
	AԐMɂ́AIPMSG_RECVMSG ł͂ȂAIPMSG_ANSREADMSG
	gp܂B

     3) bZ[WM|Ígi9łŒǉj

	J(RSA)Ƌʌ(RC2/Blowfish)gݍ킹Ď܂B
	iÍ֘Ågׂ͂āAhex tH[}bgŕ\܂j

	iJ擾j܂M IPMSG_GETPUBKEY 𑗐M܂B
	 IPMSG_ANSPUBKEY 󂯎邱ƂɂA葤 RSA J
	𓾂܂BIPMSG_GETPUBKEY/IPMSG_ANSPUBKEY ƂɁAg̍ŏ
	ɎzXg̈ÍΉ\́iIPMSG_RSA_1024 jtO OR 
	\l܂B
	ɁAIPMSG_ANSPUBKEY ł':'ŁAJ EE-NNNNNN
	iE=wAN=@jƂ`܂BE  N ̊Ԃɂ '-' 
	āA؂ɂ܂B
	ȂAQxڈȍ~̑Mɂ́AJшÍΉ\͂L
	邱ƂɂÃV[PXȗ邱Ƃł܂B

	ibZ[WÍjḾA҂ŃT|[gĂ鋤ʌ
	ނIŃZbVpʌA̋ʌpĖ{
	Í܂Bɂ̋ʌ𑊎葤JňÍ܂B

	iÍbZ[WMjIPMSG_SENDMSG  IPMSG_ENCRYPTOPT 
	𗧂ĂāAg̍ŏɁAÍɎgpJ/ʌ
	̑gݍ킹 OR ŕ\lA':'͂ŌJ
	ÍʌA':'͂ŋʌňÍ
	{܂B҂ IPMSG_SIGN_XXX T|[gĂ
	ꍇ́A':'͂ŏ𑱂܂B

	ȂAGR[hEpfBOɂẮARSA  PKCS#1
	ECBARC2/blowfish ʌ PKCS#5 CBC gp܂B
	܂AEntry npPbgɂ IPMSG_ENCRYPTOPT 𗧂āAÍ@\
	T|[g\ł邱Ƃ\܂B

     4) t@CYtgi9łŒǉj

	t@CYti_E[hjʒmɂ́AIPMSG_SENDMSG
	 IPMSG_FILEATTACHOPT 𗧂ĂbZ[W𑗐M܂B
	̍ہAʏior ÍjbZ[WɑāA'\0'͂ŁA
	Yti_E[hjt@C񋓂܂B

	fileID:filename:size:mtime:fileattr[:extend-attr=val1
	[,val2...][:extend-attr2=...]]:\a:fileID...
	(ȂAsize, mtime, fileattr  hex ŕ\܂B
	 filename':'ꍇA"::"ŃGXP[v܂)

	MYtt@C_E[hꍇAMUDP|[g
	ƓԍTCP|[gɑ΂āAIPMSG_GETFILEDATA R}hg
	Ag packetID:fileID:offset āAf[^Mv
	pPbgo܂Biׂhexj
	Yt̃NGXgMāAMv𐳂ƔF߂ƁA
	̒ʐMHɊYt@C̃f[^𗬂܂itH[}bgȂj

	MKwYtt@C_E[hꍇ́AR}h
	 IPMSG_GETDIRFILES gAg packetID:fileID 
	f[^MvpPbgo܂Biׂhexj

	f[^ḾAȉ̃tH[}bgŊKwf[^𗬂܂B
	header-size:filename:file-size:fileattr[:extend-attr=val1
	[,val2...][:extend-attr2=...]]:contents-data
	headersize:filename...
	ifilename  contetns-data ȊOׂ͂ hexj

	header-size  header-size ̐擪 contents-data ̒O
	':'܂ł̃TCY킵܂Bextend-attr ͏ȗ
	݉\ȊgŁA'='őΉf[^l܂B

	fileattr  IPMSG_FILE_DIR ̏ꍇAIɂ̃fBNg
	ԂƂ݂ȂāA㑱̃t@C񂪑܂B

	fileattr  IPMSG_FILE_RETPARENT ̏ꍇAefBNgɖ
	邱Ƃ\At@C͏"."łB̂Ƃ̑ĺA
	efBNgɖ߂ÓA݃fBNg̏\܂B

	M͓YtfBNĝJnAŌɓYtfBNg
	ɖ߂ IPMSG_FILE_RETPARENT 𑗐MďI`܂B

	ȂAEntry npPbg IPMSG_FILEATTACHOPT 𗧂āAt@C
	YtT|[g\ł邱Ƃ\܂B

     5) ̑̃R}h

	̃õo[W擾ɂ́AIPMSG_GETINFO R}h
	𑗂܂BM͊gɃo[W̕ݒ肵
	IPMSG_SENDINFO 𑗂Ԃ܂B

	s݃[ho̕sݒʒm擾ɂ́AIPMSG_GETABSENCEINFO
	R}h𑗂܂BḾAs݃[hȂsݒʒmݒ
	AIPMSG_SENDABSENCEINFO 𑗂Ԃ܂Bs݃[hłȂ
	ꍇAKȕi"Not absence mode"Ȃǁj𑗂Ԃ܂B

     6) mFEgC

	莞ԈȓɊmFpPbgiIPMSG_SENDMSG ɑ΂A
	IPMSG_RECVMSG Ȃǁj󂯎ȂꍇÃpPbg
	đo܂BgC̉񐔁EԊuɂẮAˑłB


  4. ̑

     1) sɂ

	obZ[W̉śAUNIX`ɓꂵ܂('0x0a')B
	KvɉāAϊsĂB

     2) f~^

	f~^':'gĂ֌WA[UAzXg̈ɂ́A
	':'܂ޖÓAg܂BAzXg':'܂ł
	ꍇA̕(Ƃ';')ȂǂɒuĎgpĂB
	ƂɕKvƂ͎v܂񂪁AR΁AGXP[
	vV[PXłlƎv܂B

     3) R[h

	R[h́ASJIS ̎gpz肵Ă܂B


  5. A

	E-Mail shirouzu@h.email.ne.jp ܂ŁB


L
	R}hR[h́Aipmsg.hQƂĂ()
	݁AClient/Server Ȃǂ\ɂ protocol v2 łB
	iƂAv1 gĂ΂肢܂...j
	ӌEĂ܂A񂹂B

