o2onłRelease NotesȂ

݂ł邱:
	EpuEUɓǂݍݗpPROXYƂĐݒ肵AMdatLbV
	EChatpm[hĂĐݒ肷ChatpP2Plbg[N`A
		݂ȂŁuʂہvuKbvȂǂ̉byނƂłB
	Ehttp://127.0.0.1:50000/ɃANZXĉ邱Ƃł邩Ȃ

܂łȂ:
	Edat̋L

Variables:
Global
	o2on version: <!--$ver$-->
	Chat active connections: <!--$chat_connections$-->
	Chat all nodes: <!--$chat_nodes$-->
	/chat
		Chat messages: <!--$chat_messages$-->
		/chat/res.html
			Chat name: <!--$chat_name$-->
			Chat time: <!--$chat_time$-->
			Chat message: <!--$chat_msg$-->

Known Bugs:
	Ȃ񂩏Ix
	P2PChat
		EɐڑĂ܂
		Em[h񐶐Ȃ񂩂
	P2P(datL)

Done:
	EzlibXV
	EfasthashCu̓AZułg悤
	Echunked encoding ̂Ƃgzip𓀂ɎsĂ܂̂C(1ByteĂ)
	ENodeInfo͐ڑJndecPriorityAڑincPriority
	E8MB𓀂𒆎~
	Em[h10080ɈkȁH
	EMethod: \bh\r\nContent-Length: \r\n\r\nXML𓊂悤ɕύX

ToDo:
Temp
proxy̓Tj^CYȂdoeȊOŔߎSȂƂ?

Eapplication/xhtml+xml

EChatProcessor̕ςȃC^[tF[Xc

Edebug.cpp, .h 
EOSłȂdtor
ERXgN^Ăяo T hoge = geho; ɓ

EL[m[hoĒǉ

wiki̓L[𓊂ɂ炩猟ɍs
EɂȂ؂ĐڑDxŒ

EgɂȂȂX}[gȕ@l

EN͑Sm[h firewalledBO̐ڑoiK firewalled = false 

m[h\B(o2onm[h)

class Key {
	string guid;
	unsigned long addr;
	unsigned short port;
	bool firewalled;// ftHgfalse
	//ȉȗ
};


ELbVێĂL[͊em[h addr=127.0.0.1, port=port ƂĕێĂB
EL[Ɏ firewalled ǂɋB

EB(nodeB)L[(key)ĂƂA
	if (key.addr == 127.0.0.1) {
		key.addr = nodeB.addr;
		// port ̂܂
		key.firewalled = nodeB.firewalled;
	} else {
		// addr, port ̂܂
		key.firewalled = false;
	}
	keys.insert(key);

EB(nodeB)ɃL[(key)𓊂ƂA
	if (key.addr != nodeB.addr) {
		Key tmp = key;
		if (tmp.firewalled || rand() % 100 == 0) {
			tmp.addr = 127.0.0.1;
			tmp.port = myPort;
		}
		sendkey(tmp);
	} else {
		// Ȃ
	}


//fobO[hȊO127.0.0.1ɌqȂ悤ɂ
proxyȊOthreadIDLEŎsIvV
EKl܂œL[܂ȂƂ͖ƂA
	ۂɃLbVƂɂăL[Xg̏ꍇ̓L[폜Ƃ(IPUL[΍)A
	w肵Mm[h玩NGm[hĂƂc
EꍇɂĂKeepAliveɑΉȂƁcB

EchatGUI
EFirewalled o@\
Eprotocol version ďꍇɂĂ͐ؒf
Em[hDSAĂāAʂ̃L[Ƃ͕ʂɏtL[𓊂悤ɂB
	炩ߐMm[hȂm[hݒ肵ĂāAL[ɗD揇ʂƂc
	L[sxɓǂݑւĂ

EIDTj^CYĂȂɂ(ID͂܂ĂȂ)
EGUIׂĎ̂ăuEU瑀삵
EIPportႢ̃m[hʂ̂̂ƂĔFH()
EHEAD𓊂ƂAccept-Encoding: gzip͂炢Ȃ炵

	P2P(dat)
		E302ԂŎ擾bł
		EƂAL[Ɏ|H
		EHEADȂsizelastModifiedėjŁH
			{Xŋc_WJƎvB܂Ƃ܂܂ő҂܂(ͥ)
				c_ĖC܂
	Proxy
		EsɉX|XԂ
		ELbVblowfishňÍ
	P2PChat
		EID𓱓BDSAȂ񂩂̌J(1)𓊂ĂĂŏƂŎH
		EIDwNG@\BNGɂꂽ炻ID͔̔jlbg[NɂȂB
			ڑ̃m[h̔ȏォNGvĂ玩IDNGɂ肷B
			NG͓`dčslbg[Nr炵Ŕr\H
			͌JςĈlŕlxr炳Ƃ
			(r炵𕡐ێĂȂƓełȂ̂ŎɌE)
			(ƘAr炵l邪c)
		E`bgݒ(|[gԍAm[hǉ)_CAOʂɕt
		El遨ŕ(IRC݂ȁH)
		EID
	P2Pwiki
		EƂʔ(^\tg̃pk킨܂Ȃɂrrdrftgyӂlp;@:)
		E̓eĂj
		Er炵ȂťÂe𗬂ĂĂwikił͍ŐV̕\Ȃok?
		E܂Ƃ߃TCgȂ񂩂Ɏg񂶂ȂƖϑz
		EwikiɊǗ
		Ewikiguid͌fingerprintg
		Etimeׂ͂UTC
		E1000post, 512KBŐ
		Ê̂ł
			<wiki>
				<fingerprint or guid></fingerprint or guid>
				<key>DSA public key...</key>
				<lastmodified>lastmodified...</lastmodified>
				<msgs>
					<signed sign="DSA sign...">
						<time>time of admin update</time>
						<msg page="hoge/geho" time="time...">......</msg>
						...
					</signed>
					<nonsigned>
						<msg page="hoge/geho" time="time...">......</msg>
						...
					</nonsigned>
				</msgs>
			</wiki>
		EhandshakeɎԂ𓊂܂ɂĂؒf

Release Notes:
2004-10-24 ver. 0.13a
	E<script type="text/JavaScript" src="script.js" charset="UTF-8"/>
		IEFĂȂ̂ő΍
	Esubstr̎gԈĂIEchat𓊍ełȂ̂C

2004-10-24 ver. 0.13
	EPOSTăuEUchat{e\

2004-10-21 ver. 0.12
	E3chatm[h𓊂悤
	EIɗ̂C
	Ehttp://127.0.0.1:50000/̂ق͖HDǂݍނ̂ł͂ȂɃLbV悤ɂB
		LbVNAƂhttp://127.0.0.1:50000/reloadɃANZXB
	EchatuEU{\
	ESetProcessWorkingSetSize͂Ă݂肵

2004-10-14 ver. 0.11
	EChatm[hۑȂoOC
	ERpC
		VS.net 2002 and VCTK2003 ver.1.01
		STLport-4.6.2
		boost-1.31.0 with regex patch
		ɕύX(XP SP2 SDKĂ낢Ă݂ǃRpCʂȂȂ()ɖ߂B
		̖cŃ\[Xincludê߂Ɂc)
	EHttpT[o`[jOBabł߂ăptH[}XAbvmF(Ӗ̂H)
	E炪ǉ socket.h  socket.cpp CC̃CZXɂĂ݂ǁÂȂc
		(GPLᖳ\tgɂg悤Ɂc)

2004-10-11 ver. 0.10
	ELbV폜̗O߂܂悤ɂ
	E\Pbg
	EKhttp server(http://127.0.0.1:50000/Ƃc)

2004-09-23 ver. 0.03
	EڑɎs\PbgꂸɎcoOC

2004-09-23 ver. 0.02
	EproxyŃt@COɍ폜ėĂ̂C
	EchatconnectmubLO(socket͌ŏ܂socket++gāc)

2004-09-14 ver. 0.01
	Exyzzy2ch-modedatLbVȂ̂C
	EchatɃm[hGR[h{^ݒu

2004-09-11
	EChat|[gEm[hnbV̊mFAVm[h̒ǉȒPɂł悤ɂ

2004-09-10 F99a.q8oVE
	chat.cpp:	Class P2PServent(Ԃ肪͕s) 쐬 chat.cpp 
				m[hڑ肩炤悤ɂ(̂Ƃ낱炩͑Ȃ)
					m[h鎞ɓXML
						<?xml version="1.0" encoding="Shift_JIS"?>
						<o2on service="chat" type="nodes">
							<node>Íꂽm[h</node>
							<node>V</node>
							V
						</o2on>

2004-09-08 F99a.q8oVE
	MSXMLXbhŊJĂȂ̂C
	bufferXMLl܂oOC

2004-09-07 F99a.q8oVE
	Chat() (dlwikiɏƂȂƂ܂ȁc)
		chatnode.txtɏĂm[hɐڑɍs(m[ȟ`P2PŎgĂ̂Ɠ)
		gp|[g̓ftHg7744
		@(ini "chat_port=|[g" ̂悤Ɏw肵Ă邱ƂŕύX)
		ڑ10ɂȂ܂ŊOɌqɍs(̂Ƃ듯m[hɉ{qĂ܂)
		O̍őڑ15
		Timẻ̃JbRɕ\鐔l̓bZ[WeĂ瓞B܂łɂ
		bZ[W͌ݐڑׂ̂Ẵm[hɌTTL_ɐݒ肵ē
		󂯎͏߂ĎMbZ[Wł邩GUIDŊmFAʂɕ\B
		@āATTL1炵ݐڑĂ邷ׂẴm[hɓB(TTL0ɂȂƔj)
		bZ[W𓊍e{l͂񓊂ċAĂ̂\A
		@TTL炵܂(߂ĎM̂)(v)
		20bԉMĂȂꍇnoop𓊂A30bԉMĂȂꍇ͐ؒf
		(ȂI())鎞ɓXML
			<?xml version="1.0" encoding="Shift_JIS"?>
			<o2on service="system" type="handshake">
				<protocol name="o2on" ver="0.1"/>
				<client name="o2on" ver="0.1"/>
				<nodeinfo myport="̃|[g"
					yourip="IPAddress(gpȂ̂ōׂƂ͖)"/>
			</o2on>
		bZ[W鎞ɓXML
			<?xml version="1.0" encoding="Shift_JIS"?>
			<o2on service="chat" type="message">
				<name>O</name>
				<message>bZ[W</message>
				<time>bZ[We҂̓elocaltime(sec)</time>
				<guid>XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX̌`GUID</guid>
				<id>reserved</id>
				<sign>reserved</sign>
				<ttl>Time To Live</ttl>
			</o2on>
		noopXML
			<?xml version="1.0" encoding="Shift_JIS"?>
			<o2on service="system" type="noop"></o2on>
		</o2on>tȂ͎MȂ̂ŔĂقc
		@(XML̒8KB𒴂ؒfƂȂc)
		GUI肱܂ĂȂ͎̂dlłc
		Ădlׂ͂Ďb̕ł

	inǐ`ƕς
		NďIiniGfB^ŊJĂ݂Əڍׂ͕Ǝv܂BBB
		[o2on]ȉV`ł

2004-08-24 F99a.q8oVE
	proxy.cpp (proxy_thread):	chunkedőĂf[^̏ɃoO
								Ă܂̂C

2004-08-22 F99a.q8oVE
	proxy.cpp (proxy_thread):	datt@CȊOȂ烁ɓǂݍ܂Ȃ悤
								(chunked͗O)
	socket.cpp (Socket):		portԂbindɎs悤ɕύX

2004-08-20 F99a.q8oVE
	o2on.exe.manifest:		New Visual Stylep
	socket.cpp:				New K\Pbgbp[NX
	socket.h:				New
	proxy.h:				New
	main.h:					New
	p2p.h:					New
	main.cpp (init_app):	Visual StyleΉpC
			 (end_app):		, etc...
	p2p.cpp:				Socket Classgď
	proxy.cpp:				Socket ClassgďB
							LbVɏonbVSHA-1ɕύXB
							L[ǉύXB

2004-08-09 F99a.q8oVE
	* proxy.cpp (proxy_thread):	LbVjoBjĂ폜
								NGXgwb_ Connection: close t

2004-08-08 F99a.q8oVE
	* proxy.cpp (proxy_thread):	ƃXe[^XR[h悤ɂ
								MD5LbVɏނ悤ɂ

2004-07-31a F99a.q8oVE
	* proxy.cpp (proxy_thread): debugpMessageBoxcĂ̂
								lastModified̎̓LbVȂ悤

2004-07-31 F99a.q8oVE
	* proxy.cpp (proxy_thread): subject.txt擾ɗ̂}uB
								subject.txtɑ΂鏈RgAEgB
								datt@C̃LbV쐬悤
	* main.cpp (main_window_proc): explorerƂɃ^XNgC畜A

Jul 18, 2004
	P2P|[gւ̑zOڑɂobt@I[o[΍
	GR[hchunkedȃf[^Mɗ悤ɂȂĂ܂Ă̂C

Jul 17, 2004
	ׂȃoOƂ
	ȂƂȂ boost::lexical_cast gĂ݂

Jul 15, 2004
	ŏŃ^XNgCɓ
	̑STLPortDebug[hłRpCʂ悤C

// ȉ

#if 0
/if datt@CȂ
	L[
	/if LbVǂݍݐ
		/if LbV Force Reload Flag ĂȂ
			P2PŎ擾s(bŃ^CAEg)
		/back
	/else
		P2PŎ擾s(bŃ^CAEg)
	/back
	IɌĎs
	/if P2PŎ擾
		/if IŎ擾
			A
			200nԂ
		/else
			/if 416 request range not satisfied
				Force Reload Flag 𗧂Ă
				416Ԃ
			/else
				200nԂ
			/back
		/back
	/else
		ĨX|X̂܂ܕԂ
		_EXgɃL[o^
	/back
	NCAgɃX|X
	/if 200nԂꍇ
		nbVvZ
		LbVt@C쐬
		L[ǉ or XV
	/back
/back
#endif

// template <typename T, std::size_t N> std::size_t arraynum( T (&)[N] ){ return N; }

==== VS.net 2002 and VCTK2003 ver.1.01 ============================
VS.netVCToolkit㏑Ă
Plathome SDKpathĂ

==== STLport-4.6.2 ================================================
/srcɈړvsvars32.bats

** stl_user_config.h **

#ifdef NDEBUG
#undef _STLP_DEBUG
#else
#define _STLP_DEBUG 1
#endif

**  **

> set MSVCDIR=C:\Program Files\Microsoft Visual Studio .NET\Vc7
> copy vc71.mak makefile

** makefile̊Y **

EXTRA_COMMON_FLAGS=/FI "vc_warning_disable.h" /D "_MBCS" /Zc:wchar_t

** ɏ(/Zc:wchar_tǉ) **

> nmake clean all
> nmake install

Headers C:\Program Files\Microsoft Visual Studio .NET\Vc7\include\stlport
Libs C:\Program Files\Microsoft Visual Studio .NET\Vc7\lib
t@CRs[̂łꂼIDEݒ

==== boost-1.31.0 with regex patch ================================
vsvars32.bats

> set STLPORT_PATH=L:\libs\STLport-4.6.2\stlport
> set STLPORT_VERSION=4.6.2
> set STLPORT_4.6.2_PATH=L:\libs\STLport-4.6.2
> bjam -sTOOLS=vc7.1-stlport -sVC71_ROOT="C:\Program Files\Microsoft Visual Studio .NET\Vc7" -sBUILD="<native-wchar_t>on" --prefix="C:\Program Files\Microsoft Visual Studio .NET\Vc7" install

Headers C:\Program Files\Microsoft Visual Studio .NET\Vc7\include\boost-1_31\boost
Libs C:\Program Files\Microsoft Visual Studio .NET\Vc7\lib
t@CRs[̂łꂼIDEݒ
===================================================================
