mirror of
				https://github.com/osmarks/ngircd.git
				synced 2025-11-03 23:43:00 +00:00 
			
		
		
		
	Compare commits
	
		
			3159 Commits
		
	
	
		
			rel-0-4-3
			...
			rel-27-rc1
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					b362b5a945 | ||
| 
						 | 
					e3f96d446d | ||
| 
						 | 
					0d42ea7709 | ||
| 
						 | 
					4b1eb0e3ee | ||
| 
						 | 
					ff0a9b9c2a | ||
| 
						 | 
					791778d7b6 | ||
| 
						 | 
					e4873b4d63 | ||
| 
						 | 
					3e535a2955 | ||
| 
						 | 
					a8a37b681e | ||
| 
						 | 
					22a8744476 | ||
| 
						 | 
					7e78c293a9 | ||
| 
						 | 
					8d6f2c2820 | ||
| 
						 | 
					ddba126307 | ||
| 
						 | 
					bbcaf628f4 | ||
| 
						 | 
					a0d491a09f | ||
| 
						 | 
					3497925000 | ||
| 
						 | 
					24e822cff2 | ||
| 
						 | 
					71a2fe1895 | ||
| 
						 | 
					b2c9049af2 | ||
| 
						 | 
					b9d6a2f49c | ||
| 
						 | 
					6b27eabf5b | ||
| 
						 | 
					b826fad158 | ||
| 
						 | 
					8cef3ce42c | ||
| 
						 | 
					180e2ec135 | ||
| 
						 | 
					663972c88d | ||
| 
						 | 
					509ff60326 | ||
| 
						 | 
					0e176b5570 | ||
| 
						 | 
					c8589e9890 | ||
| 
						 | 
					58ee4df2ae | ||
| 
						 | 
					02bb99b024 | ||
| 
						 | 
					3db3b47fc7 | ||
| 
						 | 
					679505aab9 | ||
| 
						 | 
					08647ab1e7 | ||
| 
						 | 
					84b019b11f | ||
| 
						 | 
					8f8bef9fae | ||
| 
						 | 
					5ca567a18c | ||
| 
						 | 
					817937b218 | ||
| 
						 | 
					339ad77b62 | ||
| 
						 | 
					c8798fcec0 | ||
| 
						 | 
					c1c0bca0e2 | ||
| 
						 | 
					7efda4168f | ||
| 
						 | 
					1118b0e77c | ||
| 
						 | 
					5fd195a2cd | ||
| 
						 | 
					934f3a0d88 | ||
| 
						 | 
					c0b8b94550 | ||
| 
						 | 
					ea7f4e07b7 | ||
| 
						 | 
					f3961ec6ab | ||
| 
						 | 
					b3513ee159 | ||
| 
						 | 
					39eccffa32 | ||
| 
						 | 
					bdb55fb4b3 | ||
| 
						 | 
					79aefe43dd | ||
| 
						 | 
					a1c2ac5d5b | ||
| 
						 | 
					951c8b84ab | ||
| 
						 | 
					14838a249f | ||
| 
						 | 
					e8670f8690 | ||
| 
						 | 
					6fb8022949 | ||
| 
						 | 
					47d3872c60 | ||
| 
						 | 
					b4c8e74ccb | ||
| 
						 | 
					3ab6c85284 | ||
| 
						 | 
					ae9cfade44 | ||
| 
						 | 
					aa92837b02 | ||
| 
						 | 
					c349f2a6ba | ||
| 
						 | 
					7dcf9f1ad3 | ||
| 
						 | 
					2984dad8b4 | ||
| 
						 | 
					bb8b6f0fba | ||
| 
						 | 
					3c39094b52 | ||
| 
						 | 
					669d71f3fe | ||
| 
						 | 
					dbfe54ce62 | ||
| 
						 | 
					39d41001bc | ||
| 
						 | 
					e339d9c381 | ||
| 
						 | 
					47f9c6d0a0 | ||
| 
						 | 
					c65c3435e3 | ||
| 
						 | 
					a87b124648 | ||
| 
						 | 
					c83d55f758 | ||
| 
						 | 
					1d527eaf17 | ||
| 
						 | 
					d702ebab0a | ||
| 
						 | 
					5f494ec5fe | ||
| 
						 | 
					ccb0cf3170 | ||
| 
						 | 
					00dc9d2845 | ||
| 
						 | 
					499ca9ce6f | ||
| 
						 | 
					f54fb9ee14 | ||
| 
						 | 
					a06f33d4e5 | ||
| 
						 | 
					5413518586 | ||
| 
						 | 
					2877706660 | ||
| 
						 | 
					2448d047f9 | ||
| 
						 | 
					07219281ef | ||
| 
						 | 
					a5de81e489 | ||
| 
						 | 
					9a71ac8a91 | ||
| 
						 | 
					0061394d7f | ||
| 
						 | 
					bc7148f4ac | ||
| 
						 | 
					f96966a62f | ||
| 
						 | 
					7c90264f1f | ||
| 
						 | 
					21c1751b04 | ||
| 
						 | 
					843cbfc0f3 | ||
| 
						 | 
					9540d0c0a4 | ||
| 
						 | 
					f31d64eb1c | ||
| 
						 | 
					4a548e1220 | ||
| 
						 | 
					0714466af8 | ||
| 
						 | 
					445e559dbd | ||
| 
						 | 
					8fdb8f90b1 | ||
| 
						 | 
					a106d18d7d | ||
| 
						 | 
					a7f448e713 | ||
| 
						 | 
					232c7382de | ||
| 
						 | 
					30ba325dde | ||
| 
						 | 
					cfd7d4288e | ||
| 
						 | 
					3b70f4ba0c | ||
| 
						 | 
					335ae4f0d0 | ||
| 
						 | 
					63ad3b9acd | ||
| 
						 | 
					0035e0d778 | ||
| 
						 | 
					0f90a059b6 | ||
| 
						 | 
					0e678f766f | ||
| 
						 | 
					50114cd017 | ||
| 
						 | 
					c7de505c91 | ||
| 
						 | 
					8e9c789ae1 | ||
| 
						 | 
					3c9c54989e | ||
| 
						 | 
					0ea1715d00 | ||
| 
						 | 
					24f956abf7 | ||
| 
						 | 
					0652c99b39 | ||
| 
						 | 
					a0576f4810 | ||
| 
						 | 
					1b186cf5a0 | ||
| 
						 | 
					b49bc98b83 | ||
| 
						 | 
					55744b1863 | ||
| 
						 | 
					5ef1a657f4 | ||
| 
						 | 
					3e23f7d2c3 | ||
| 
						 | 
					46081d619a | ||
| 
						 | 
					d605a0825a | ||
| 
						 | 
					56ed5c90ad | ||
| 
						 | 
					7b30c352a1 | ||
| 
						 | 
					ea7ad914c8 | ||
| 
						 | 
					93e36555e3 | ||
| 
						 | 
					dc412a450e | ||
| 
						 | 
					b0caf5984e | ||
| 
						 | 
					8f6d04095b | ||
| 
						 | 
					2debc2e833 | ||
| 
						 | 
					79ffa9132b | ||
| 
						 | 
					1db3447c90 | ||
| 
						 | 
					3675c7567c | ||
| 
						 | 
					97ffec3d64 | ||
| 
						 | 
					71ae2b7d7f | ||
| 
						 | 
					65558a46e5 | ||
| 
						 | 
					afb17ff08e | ||
| 
						 | 
					cbd8e5b5d6 | ||
| 
						 | 
					dc832cd348 | ||
| 
						 | 
					2ff76d7f48 | ||
| 
						 | 
					f3c89af845 | ||
| 
						 | 
					d777ce6600 | ||
| 
						 | 
					5ccdb26885 | ||
| 
						 | 
					c7781cf7ef | ||
| 
						 | 
					2056de82ae | ||
| 
						 | 
					5cf0eabd84 | ||
| 
						 | 
					6e382889a3 | ||
| 
						 | 
					e699325fd0 | ||
| 
						 | 
					0ae158a492 | ||
| 
						 | 
					0f717bfd77 | ||
| 
						 | 
					ed9d8e7950 | ||
| 
						 | 
					4bcf4613f9 | ||
| 
						 | 
					c55a832806 | ||
| 
						 | 
					3dedd57f7f | ||
| 
						 | 
					07cb8ed9ae | ||
| 
						 | 
					b003d469f1 | ||
| 
						 | 
					15c7444283 | ||
| 
						 | 
					eb46f3d96d | ||
| 
						 | 
					a84cba8f78 | ||
| 
						 | 
					d697de3186 | ||
| 
						 | 
					02cf31c0e2 | ||
| 
						 | 
					430bb22376 | ||
| 
						 | 
					dc6807338e | ||
| 
						 | 
					0d503945cb | ||
| 
						 | 
					bae68eb612 | ||
| 
						 | 
					03aec7d0b3 | ||
| 
						 | 
					5d5fdfb3fd | ||
| 
						 | 
					05261c020e | ||
| 
						 | 
					e860807500 | ||
| 
						 | 
					e889de9d92 | ||
| 
						 | 
					fcf2874a9d | ||
| 
						 | 
					4b7e8db418 | ||
| 
						 | 
					bc22f41c51 | ||
| 
						 | 
					d11f13f187 | ||
| 
						 | 
					21f33e5911 | ||
| 
						 | 
					db88b92c8a | ||
| 
						 | 
					02850008f4 | ||
| 
						 | 
					52d8fa2c09 | ||
| 
						 | 
					1f40776bc1 | ||
| 
						 | 
					387a29a7fd | ||
| 
						 | 
					54fac57603 | ||
| 
						 | 
					9f05f5ee61 | ||
| 
						 | 
					629a45ee0f | ||
| 
						 | 
					8d414b079c | ||
| 
						 | 
					8a37695bf3 | ||
| 
						 | 
					71e9bb1ca6 | ||
| 
						 | 
					0dc692b1f7 | ||
| 
						 | 
					79a917f954 | ||
| 
						 | 
					11ea6a5070 | ||
| 
						 | 
					42e8654d7b | ||
| 
						 | 
					1fc54ebef1 | ||
| 
						 | 
					c2c84a1d26 | ||
| 
						 | 
					05324b232f | ||
| 
						 | 
					ea1207238f | ||
| 
						 | 
					830f00e953 | ||
| 
						 | 
					14777c18cf | ||
| 
						 | 
					e4a6bd5099 | ||
| 
						 | 
					ab62dd27dc | ||
| 
						 | 
					c6e3c13f27 | ||
| 
						 | 
					04de1423eb | ||
| 
						 | 
					13b8324c4a | ||
| 
						 | 
					f27827d793 | ||
| 
						 | 
					86f3c563d6 | ||
| 
						 | 
					eead4a631f | ||
| 
						 | 
					9c5e42458e | ||
| 
						 | 
					61ac8be2fd | ||
| 
						 | 
					3aa1d880fe | ||
| 
						 | 
					ba3b22b851 | ||
| 
						 | 
					4d519cfdbf | ||
| 
						 | 
					fed22184c5 | ||
| 
						 | 
					a3072ce698 | ||
| 
						 | 
					decf98d5ef | ||
| 
						 | 
					a77353361b | ||
| 
						 | 
					3f7caff630 | ||
| 
						 | 
					8d173a3328 | ||
| 
						 | 
					e7cb9b1a00 | ||
| 
						 | 
					c411643d45 | ||
| 
						 | 
					2e1797d5a5 | ||
| 
						 | 
					f5fa7db4ba | ||
| 
						 | 
					22cae1b5fc | ||
| 
						 | 
					fb5aa8f652 | ||
| 
						 | 
					91e87af605 | ||
| 
						 | 
					9286686c09 | ||
| 
						 | 
					1f69f1d0ab | ||
| 
						 | 
					b03fcaab5a | ||
| 
						 | 
					70eb1ee57d | ||
| 
						 | 
					80437b2533 | ||
| 
						 | 
					de1de40551 | ||
| 
						 | 
					4169cb25e6 | ||
| 
						 | 
					9a69c02567 | ||
| 
						 | 
					147e424d98 | ||
| 
						 | 
					e954b59d41 | ||
| 
						 | 
					b1893e740e | ||
| 
						 | 
					2c495a1fe7 | ||
| 
						 | 
					52c53f523a | ||
| 
						 | 
					f8002057f2 | ||
| 
						 | 
					13122bc97d | ||
| 
						 | 
					bb1d014aba | ||
| 
						 | 
					ad8c4b8efb | ||
| 
						 | 
					ad86a41eee | ||
| 
						 | 
					aec86aa84c | ||
| 
						 | 
					74631fa728 | ||
| 
						 | 
					1d4f80b422 | ||
| 
						 | 
					fe01ef9a51 | ||
| 
						 | 
					96bad2b861 | ||
| 
						 | 
					456eea6f18 | ||
| 
						 | 
					7690716e4f | ||
| 
						 | 
					c97fb2e93e | ||
| 
						 | 
					c8162a80be | ||
| 
						 | 
					e8e04b4c8f | ||
| 
						 | 
					a38eea8987 | ||
| 
						 | 
					d0f9d3d92e | ||
| 
						 | 
					bb4101cd6c | ||
| 
						 | 
					e29e15ca27 | ||
| 
						 | 
					8bd88be8ad | ||
| 
						 | 
					fb760d9473 | ||
| 
						 | 
					7f2d21f962 | ||
| 
						 | 
					6af9476cad | ||
| 
						 | 
					263c5edb60 | ||
| 
						 | 
					b4f7aae67e | ||
| 
						 | 
					798de94d65 | ||
| 
						 | 
					ac341176da | ||
| 
						 | 
					6a622c0084 | ||
| 
						 | 
					91ef17aba2 | ||
| 
						 | 
					13761f1ec9 | ||
| 
						 | 
					03acae970d | ||
| 
						 | 
					8f0c705029 | ||
| 
						 | 
					d803ff0525 | ||
| 
						 | 
					3559940e4a | ||
| 
						 | 
					34bdb0d98a | ||
| 
						 | 
					7ed22d0b22 | ||
| 
						 | 
					d9f81ac669 | ||
| 
						 | 
					7207bef418 | ||
| 
						 | 
					619a3f3ff2 | ||
| 
						 | 
					05640f9285 | ||
| 
						 | 
					e009fc87d5 | ||
| 
						 | 
					c37d6971d6 | ||
| 
						 | 
					ddeb7b20eb | ||
| 
						 | 
					543f44bff8 | ||
| 
						 | 
					bc728f92de | ||
| 
						 | 
					2f6f6929d8 | ||
| 
						 | 
					f244ab2219 | ||
| 
						 | 
					e17d4bdec7 | ||
| 
						 | 
					b2ba3e745a | ||
| 
						 | 
					3890304b54 | ||
| 
						 | 
					a69866f3f9 | ||
| 
						 | 
					7071476d2a | ||
| 
						 | 
					3c627dd70d | ||
| 
						 | 
					879d550408 | ||
| 
						 | 
					2bb917f05a | ||
| 
						 | 
					72acf53d69 | ||
| 
						 | 
					479d7d99c1 | ||
| 
						 | 
					181da30997 | ||
| 
						 | 
					bfebdaece8 | ||
| 
						 | 
					d2a134b79c | ||
| 
						 | 
					74f021fb44 | ||
| 
						 | 
					8e09180295 | ||
| 
						 | 
					f0532c98cd | ||
| 
						 | 
					9e0e955daf | ||
| 
						 | 
					3e44738416 | ||
| 
						 | 
					02c8887543 | ||
| 
						 | 
					77861f6fe2 | ||
| 
						 | 
					e9e3df27b7 | ||
| 
						 | 
					0dc3c13469 | ||
| 
						 | 
					d0d4de4980 | ||
| 
						 | 
					85df414907 | ||
| 
						 | 
					f5ff22d98f | ||
| 
						 | 
					995bbfd627 | ||
| 
						 | 
					dd6d75d37d | ||
| 
						 | 
					daa88b7651 | ||
| 
						 | 
					2924b3d52a | ||
| 
						 | 
					a335e480c5 | ||
| 
						 | 
					dde89b1267 | ||
| 
						 | 
					455f073687 | ||
| 
						 | 
					804c240320 | ||
| 
						 | 
					fb99d7c92e | ||
| 
						 | 
					1d06ed02ce | ||
| 
						 | 
					c283b52a78 | ||
| 
						 | 
					b708c95173 | ||
| 
						 | 
					722afc1b81 | ||
| 
						 | 
					86a64ce6aa | ||
| 
						 | 
					e84000f7b8 | ||
| 
						 | 
					a93247d32f | ||
| 
						 | 
					a673a6e3af | ||
| 
						 | 
					0ab4e7bffd | ||
| 
						 | 
					8f0d24c831 | ||
| 
						 | 
					0a6e284582 | ||
| 
						 | 
					2254e92e60 | ||
| 
						 | 
					7cda2f13f4 | ||
| 
						 | 
					7dba1a0766 | ||
| 
						 | 
					055d6e8056 | ||
| 
						 | 
					432a9297f8 | ||
| 
						 | 
					4dcd5f1225 | ||
| 
						 | 
					6a5569c27d | ||
| 
						 | 
					49ab79d0e6 | ||
| 
						 | 
					cedba36965 | ||
| 
						 | 
					40bea95c08 | ||
| 
						 | 
					7c7d03b730 | ||
| 
						 | 
					4693226d69 | ||
| 
						 | 
					afb59ab8e5 | ||
| 
						 | 
					d90f0323e5 | ||
| 
						 | 
					01e590b007 | ||
| 
						 | 
					7b7ee6a3ca | ||
| 
						 | 
					46838510ab | ||
| 
						 | 
					0903343f85 | ||
| 
						 | 
					182bfac855 | ||
| 
						 | 
					1e386fb7ac | ||
| 
						 | 
					52ccba5d1e | ||
| 
						 | 
					98e9467c85 | ||
| 
						 | 
					e8dacb68dc | ||
| 
						 | 
					398022631a | ||
| 
						 | 
					f2cef85fde | ||
| 
						 | 
					6ed59a8548 | ||
| 
						 | 
					49acb68584 | ||
| 
						 | 
					d8aba40f07 | ||
| 
						 | 
					87887bc632 | ||
| 
						 | 
					cb3a4321a2 | ||
| 
						 | 
					1e84b2640e | ||
| 
						 | 
					86d27eaf89 | ||
| 
						 | 
					4acf95ab61 | ||
| 
						 | 
					57cd41d289 | ||
| 
						 | 
					eb9929e82c | ||
| 
						 | 
					c2e4c304e3 | ||
| 
						 | 
					c56138c280 | ||
| 
						 | 
					a1ce3fc779 | ||
| 
						 | 
					ccc899c7f4 | ||
| 
						 | 
					2a52befa56 | ||
| 
						 | 
					2c18e9a7f8 | ||
| 
						 | 
					9811223fb8 | ||
| 
						 | 
					0083fe177f | ||
| 
						 | 
					34578b8b30 | ||
| 
						 | 
					85dc4d8777 | ||
| 
						 | 
					64c265cf33 | ||
| 
						 | 
					b72a7a4b96 | ||
| 
						 | 
					b8482fd3cf | ||
| 
						 | 
					90ea23ab4f | ||
| 
						 | 
					6e7e744cc6 | ||
| 
						 | 
					24cec978ee | ||
| 
						 | 
					a02524465e | ||
| 
						 | 
					813ea874f8 | ||
| 
						 | 
					813897023e | ||
| 
						 | 
					a5ca8be658 | ||
| 
						 | 
					c364d67f80 | ||
| 
						 | 
					5545e1bebf | ||
| 
						 | 
					d118cd74b6 | ||
| 
						 | 
					599626d570 | ||
| 
						 | 
					571b1a8b83 | ||
| 
						 | 
					b71a0ddbd5 | ||
| 
						 | 
					7ff16e8116 | ||
| 
						 | 
					f6b7764eb5 | ||
| 
						 | 
					adfe5affed | ||
| 
						 | 
					27934afd7e | ||
| 
						 | 
					f64cb901ef | ||
| 
						 | 
					d28d838cb9 | ||
| 
						 | 
					2fc61ce8a6 | ||
| 
						 | 
					5c48d7e9c7 | ||
| 
						 | 
					0f490b5cae | ||
| 
						 | 
					a43d79aeff | ||
| 
						 | 
					93a872a36b | ||
| 
						 | 
					c4245220de | ||
| 
						 | 
					f8f7f83f5a | ||
| 
						 | 
					03c8997af3 | ||
| 
						 | 
					4396936f38 | ||
| 
						 | 
					4da04640e6 | ||
| 
						 | 
					10c7ba99e7 | ||
| 
						 | 
					1136b97690 | ||
| 
						 | 
					d9a97f2857 | ||
| 
						 | 
					a4af9024fd | ||
| 
						 | 
					6fc53558ed | ||
| 
						 | 
					21767c968d | ||
| 
						 | 
					c5da483685 | ||
| 
						 | 
					4330f5d1c9 | ||
| 
						 | 
					81b81c818c | ||
| 
						 | 
					52825cde29 | ||
| 
						 | 
					03e6568079 | ||
| 
						 | 
					7dacc314f9 | ||
| 
						 | 
					24adfb88b4 | ||
| 
						 | 
					6ed440a030 | ||
| 
						 | 
					c7bbc9a390 | ||
| 
						 | 
					6171beb7ab | ||
| 
						 | 
					2196e945e4 | ||
| 
						 | 
					f16eb1b686 | ||
| 
						 | 
					c41f18e3f9 | ||
| 
						 | 
					dbfe1beca8 | ||
| 
						 | 
					6bdae55177 | ||
| 
						 | 
					fb5ae9e844 | ||
| 
						 | 
					bd8d4e710c | ||
| 
						 | 
					9a931a549b | ||
| 
						 | 
					3c30490d54 | ||
| 
						 | 
					6250335352 | ||
| 
						 | 
					7e14bd3b58 | ||
| 
						 | 
					31b3c83c1f | ||
| 
						 | 
					6e4235443e | ||
| 
						 | 
					cdcf474f15 | ||
| 
						 | 
					f33a4067a1 | ||
| 
						 | 
					100de3e4cc | ||
| 
						 | 
					7b58538074 | ||
| 
						 | 
					3f436e1810 | ||
| 
						 | 
					967deebacd | ||
| 
						 | 
					74262a4093 | ||
| 
						 | 
					be88707027 | ||
| 
						 | 
					7d7eb735f0 | ||
| 
						 | 
					fa7fac88d2 | ||
| 
						 | 
					84ff5a6eb9 | ||
| 
						 | 
					bf2eae3249 | ||
| 
						 | 
					ffad2da835 | ||
| 
						 | 
					3f1547ecde | ||
| 
						 | 
					7893dc5241 | ||
| 
						 | 
					896d45471a | ||
| 
						 | 
					01c3552140 | ||
| 
						 | 
					ce3c4074ba | ||
| 
						 | 
					40ed94a1f2 | ||
| 
						 | 
					c1f180b87b | ||
| 
						 | 
					f5944a17e4 | ||
| 
						 | 
					06920df4bb | ||
| 
						 | 
					e864b1f33e | ||
| 
						 | 
					3f807e1045 | ||
| 
						 | 
					39b8fc65b6 | ||
| 
						 | 
					3de972e0bd | ||
| 
						 | 
					ec2bf5c5a2 | ||
| 
						 | 
					70160b3a5b | ||
| 
						 | 
					a90004b913 | ||
| 
						 | 
					9e79ed8605 | ||
| 
						 | 
					cdd6b961af | ||
| 
						 | 
					bfc727ce49 | ||
| 
						 | 
					dee824a3f0 | ||
| 
						 | 
					f5ae1dd36c | ||
| 
						 | 
					794cb51e4b | ||
| 
						 | 
					dd4b74e29b | ||
| 
						 | 
					daed2467dd | ||
| 
						 | 
					d314c75a37 | ||
| 
						 | 
					5009ab3e8c | ||
| 
						 | 
					5713c49c84 | ||
| 
						 | 
					35f1db5f28 | ||
| 
						 | 
					4c2acd55c6 | ||
| 
						 | 
					f547981188 | ||
| 
						 | 
					b35f8916a5 | ||
| 
						 | 
					3d7aa9f906 | ||
| 
						 | 
					a534e71e8d | ||
| 
						 | 
					a13bb78b1e | ||
| 
						 | 
					b130b35f48 | ||
| 
						 | 
					37090a28e8 | ||
| 
						 | 
					67256f9da1 | ||
| 
						 | 
					7b10a0e4ee | ||
| 
						 | 
					259c314d14 | ||
| 
						 | 
					51396f8f1c | ||
| 
						 | 
					6238196dac | ||
| 
						 | 
					43fb18f2f5 | ||
| 
						 | 
					a4ed90ba9a | ||
| 
						 | 
					af9161a9bc | ||
| 
						 | 
					485d0aec81 | ||
| 
						 | 
					abf280d5bd | ||
| 
						 | 
					ccc9e1baa4 | ||
| 
						 | 
					755562d147 | ||
| 
						 | 
					384b27cee0 | ||
| 
						 | 
					6496fa4655 | ||
| 
						 | 
					20b52fe33d | ||
| 
						 | 
					0fc822d8c4 | ||
| 
						 | 
					2e168c7809 | ||
| 
						 | 
					14a84dfca5 | ||
| 
						 | 
					4cb36e370e | ||
| 
						 | 
					e273bd226a | ||
| 
						 | 
					3b24ebf122 | ||
| 
						 | 
					599cfd0944 | ||
| 
						 | 
					90062111f7 | ||
| 
						 | 
					e747fe9277 | ||
| 
						 | 
					0f85c4c6a7 | ||
| 
						 | 
					e73d70ce6f | ||
| 
						 | 
					2560e5f156 | ||
| 
						 | 
					1f5508d049 | ||
| 
						 | 
					97b4fd8a08 | ||
| 
						 | 
					fe73835666 | ||
| 
						 | 
					5b4b7e2f55 | ||
| 
						 | 
					8ae2cdfce9 | ||
| 
						 | 
					6685ae063f | ||
| 
						 | 
					e2b85ccde3 | ||
| 
						 | 
					7b358a57ac | ||
| 
						 | 
					5d88030bd1 | ||
| 
						 | 
					8872653ef6 | ||
| 
						 | 
					4d4512cd72 | ||
| 
						 | 
					bc098794ee | ||
| 
						 | 
					788da901ee | ||
| 
						 | 
					2a40112f09 | ||
| 
						 | 
					61b7932e82 | ||
| 
						 | 
					f024a4992a | ||
| 
						 | 
					d38747d951 | ||
| 
						 | 
					18070e5381 | ||
| 
						 | 
					d913323ca9 | ||
| 
						 | 
					9230f2fff1 | ||
| 
						 | 
					86bdf6e1d4 | ||
| 
						 | 
					1a628fff51 | ||
| 
						 | 
					bd33bd770d | ||
| 
						 | 
					b8433e9261 | ||
| 
						 | 
					5a424f60da | ||
| 
						 | 
					444308ccde | ||
| 
						 | 
					1ad536eeed | ||
| 
						 | 
					c68ae1a9f5 | ||
| 
						 | 
					df7ea9e7b4 | ||
| 
						 | 
					34824abe0d | ||
| 
						 | 
					ae00c100ac | ||
| 
						 | 
					61d1c864c5 | ||
| 
						 | 
					8d25044ce5 | ||
| 
						 | 
					c3c719b978 | ||
| 
						 | 
					9ee3760493 | ||
| 
						 | 
					344185b1bd | ||
| 
						 | 
					fcf61e9e02 | ||
| 
						 | 
					9f236c4b91 | ||
| 
						 | 
					00249f3c80 | ||
| 
						 | 
					925b4de298 | ||
| 
						 | 
					48ea69d778 | ||
| 
						 | 
					80d0613bf2 | ||
| 
						 | 
					4ab688c5e8 | ||
| 
						 | 
					2e93129877 | ||
| 
						 | 
					94148c37f5 | ||
| 
						 | 
					f25be28ab8 | ||
| 
						 | 
					fae7bd1bb7 | ||
| 
						 | 
					0556aa1901 | ||
| 
						 | 
					48698f14a2 | ||
| 
						 | 
					8e6db769ac | ||
| 
						 | 
					8a041373bb | ||
| 
						 | 
					37c8699f34 | ||
| 
						 | 
					788b3002d8 | ||
| 
						 | 
					beb9f65dc8 | ||
| 
						 | 
					62865f7e19 | ||
| 
						 | 
					a7dda1b28c | ||
| 
						 | 
					cba5a2579f | ||
| 
						 | 
					a2479bb906 | ||
| 
						 | 
					17589534d0 | ||
| 
						 | 
					ea26fd2840 | ||
| 
						 | 
					45d3e6aa91 | ||
| 
						 | 
					0bd3fb88b2 | ||
| 
						 | 
					c34b91d8dd | ||
| 
						 | 
					56da86b4f4 | ||
| 
						 | 
					ea8a2bf1fc | ||
| 
						 | 
					1b349b05d5 | ||
| 
						 | 
					4c5b439992 | ||
| 
						 | 
					86cd2da8d5 | ||
| 
						 | 
					9b1fee8995 | ||
| 
						 | 
					2798a12444 | ||
| 
						 | 
					02182143c3 | ||
| 
						 | 
					b5faf3055b | ||
| 
						 | 
					cccd8fc957 | ||
| 
						 | 
					eccbd97e1f | ||
| 
						 | 
					ec5ab4fcd1 | ||
| 
						 | 
					13a5358a3d | ||
| 
						 | 
					99db111bca | ||
| 
						 | 
					27b9d32bf2 | ||
| 
						 | 
					0985d69cc6 | ||
| 
						 | 
					d0977258ee | ||
| 
						 | 
					2cebfc54f5 | ||
| 
						 | 
					de3e5fa77c | ||
| 
						 | 
					b9006acee3 | ||
| 
						 | 
					51231ac8d4 | ||
| 
						 | 
					84ed46d4c1 | ||
| 
						 | 
					849f85a05c | ||
| 
						 | 
					e8e0351985 | ||
| 
						 | 
					131364def1 | ||
| 
						 | 
					bcb45da1b4 | ||
| 
						 | 
					08f9d31d60 | ||
| 
						 | 
					37609d6a4f | ||
| 
						 | 
					33c2d5e4e2 | ||
| 
						 | 
					a98bbc8e0b | ||
| 
						 | 
					9f74c0ff07 | ||
| 
						 | 
					e5cdd61fe3 | ||
| 
						 | 
					e3a2a6c44d | ||
| 
						 | 
					aad92ceafe | ||
| 
						 | 
					4102e8fdfe | ||
| 
						 | 
					f8f8a9a041 | ||
| 
						 | 
					04b947cdc3 | ||
| 
						 | 
					be2e611680 | ||
| 
						 | 
					41f75b6974 | ||
| 
						 | 
					e009ccbe66 | ||
| 
						 | 
					46d43dc09c | ||
| 
						 | 
					44698e44e8 | ||
| 
						 | 
					0ff33777fe | ||
| 
						 | 
					1dc93286a0 | ||
| 
						 | 
					2bacb8210b | ||
| 
						 | 
					3b65f4e38d | ||
| 
						 | 
					6ac5a82eec | ||
| 
						 | 
					086cf3a272 | ||
| 
						 | 
					8d01be7bbd | ||
| 
						 | 
					eb86d234f8 | ||
| 
						 | 
					3af0ece2bc | ||
| 
						 | 
					a9ffbdea3f | ||
| 
						 | 
					6dc5471a75 | ||
| 
						 | 
					309122017e | ||
| 
						 | 
					8f530eb315 | ||
| 
						 | 
					d56341c77b | ||
| 
						 | 
					212d99146d | ||
| 
						 | 
					e2f09213bc | ||
| 
						 | 
					c8b12af1d2 | ||
| 
						 | 
					a919e02ba1 | ||
| 
						 | 
					b081cfb628 | ||
| 
						 | 
					dd4c60cf39 | ||
| 
						 | 
					4828bae8d3 | ||
| 
						 | 
					cd38e9580e | ||
| 
						 | 
					aeebde4642 | ||
| 
						 | 
					298158501d | ||
| 
						 | 
					904c8a4375 | ||
| 
						 | 
					b86e33ef49 | ||
| 
						 | 
					0a3d8d60d3 | ||
| 
						 | 
					08d49a8fa0 | ||
| 
						 | 
					8f5cbe51a7 | ||
| 
						 | 
					bd0de15d31 | ||
| 
						 | 
					fcdb5cf8dd | ||
| 
						 | 
					7db8481500 | ||
| 
						 | 
					74514b8c23 | ||
| 
						 | 
					c74115f25c | ||
| 
						 | 
					672a167963 | ||
| 
						 | 
					139f5961a0 | ||
| 
						 | 
					5258fb7f7c | ||
| 
						 | 
					15dfdaac82 | ||
| 
						 | 
					bb8d207efa | ||
| 
						 | 
					e03d8eb728 | ||
| 
						 | 
					a95d3e05e7 | ||
| 
						 | 
					646a97de5f | ||
| 
						 | 
					8e60fac73b | ||
| 
						 | 
					5e775a3fae | ||
| 
						 | 
					69ce65bacb | ||
| 
						 | 
					bf8e03c466 | ||
| 
						 | 
					1254d315b9 | ||
| 
						 | 
					4ec19c0332 | ||
| 
						 | 
					61a6691b36 | ||
| 
						 | 
					78c8212280 | ||
| 
						 | 
					adc8d4f6c8 | ||
| 
						 | 
					24183b1a91 | ||
| 
						 | 
					888c524683 | ||
| 
						 | 
					ae0af66d50 | ||
| 
						 | 
					a8ecde2553 | ||
| 
						 | 
					fef10f590b | ||
| 
						 | 
					771e539c18 | ||
| 
						 | 
					313881d0c1 | ||
| 
						 | 
					3bd973037a | ||
| 
						 | 
					f494023b0d | ||
| 
						 | 
					659d126460 | ||
| 
						 | 
					76dcb08266 | ||
| 
						 | 
					4cb2edf020 | ||
| 
						 | 
					720eb874a9 | ||
| 
						 | 
					fa15eb1698 | ||
| 
						 | 
					b54e664a63 | ||
| 
						 | 
					7adc4b8e99 | ||
| 
						 | 
					5021977bb1 | ||
| 
						 | 
					5115756b79 | ||
| 
						 | 
					f6ac0d89ae | ||
| 
						 | 
					11240376a5 | ||
| 
						 | 
					e377f4ea47 | ||
| 
						 | 
					9d3800fd15 | ||
| 
						 | 
					4f525d39d4 | ||
| 
						 | 
					7ea3864a93 | ||
| 
						 | 
					891dbd2acc | ||
| 
						 | 
					f206fda8ae | ||
| 
						 | 
					6beb0fad3f | ||
| 
						 | 
					27fd92d580 | ||
| 
						 | 
					51e5ba94b3 | ||
| 
						 | 
					b4d0a40383 | ||
| 
						 | 
					3ab00e3a11 | ||
| 
						 | 
					cde2e8a277 | ||
| 
						 | 
					528c8fc244 | ||
| 
						 | 
					7f9bce705c | ||
| 
						 | 
					ce3e41cf4c | ||
| 
						 | 
					dd6a058992 | ||
| 
						 | 
					7ed06b2189 | ||
| 
						 | 
					a14eb495b7 | ||
| 
						 | 
					0131e1e00b | ||
| 
						 | 
					8618e942e6 | ||
| 
						 | 
					2fea782efc | ||
| 
						 | 
					a2e26aad1e | ||
| 
						 | 
					b4393277ea | ||
| 
						 | 
					b33da9b8f3 | ||
| 
						 | 
					3e35857080 | ||
| 
						 | 
					b25fd8a98c | ||
| 
						 | 
					be08349dcb | ||
| 
						 | 
					3228f1b267 | ||
| 
						 | 
					a53de63ba7 | ||
| 
						 | 
					e8f512bfe7 | ||
| 
						 | 
					bb31d7b88c | ||
| 
						 | 
					7f99f7c14f | ||
| 
						 | 
					883a8fa6f1 | ||
| 
						 | 
					a7b04ce6cf | ||
| 
						 | 
					bd1b727187 | ||
| 
						 | 
					19d6f4740e | ||
| 
						 | 
					0f0f4f41b8 | ||
| 
						 | 
					221365d8ef | ||
| 
						 | 
					2c96966431 | ||
| 
						 | 
					65359ff8f7 | ||
| 
						 | 
					d0c9f4a692 | ||
| 
						 | 
					d5763937ad | ||
| 
						 | 
					25b19e08e2 | ||
| 
						 | 
					0e63fb3fa7 | ||
| 
						 | 
					3e72331896 | ||
| 
						 | 
					1438771124 | ||
| 
						 | 
					b95dfb3ffd | ||
| 
						 | 
					4b15f10fbb | ||
| 
						 | 
					628c14d656 | ||
| 
						 | 
					2cb7023e28 | ||
| 
						 | 
					69c3f96998 | ||
| 
						 | 
					5c6875d768 | ||
| 
						 | 
					a78c7b3898 | ||
| 
						 | 
					ac32d07aaf | ||
| 
						 | 
					7fce719142 | ||
| 
						 | 
					cb7e4e8679 | ||
| 
						 | 
					35452b3157 | ||
| 
						 | 
					e90d30a2cc | ||
| 
						 | 
					45ab73ac81 | ||
| 
						 | 
					78978994df | ||
| 
						 | 
					19cb29da51 | ||
| 
						 | 
					6ed3b6f85c | ||
| 
						 | 
					5b8f13a4a9 | ||
| 
						 | 
					b6e6e2e1da | ||
| 
						 | 
					7c7fc8b5c4 | ||
| 
						 | 
					1a5e08f3f6 | ||
| 
						 | 
					e051ea06fc | ||
| 
						 | 
					a7023113e7 | ||
| 
						 | 
					02e24f5d1e | ||
| 
						 | 
					13740c1bf4 | ||
| 
						 | 
					8212b730c7 | ||
| 
						 | 
					a4daa613ae | ||
| 
						 | 
					5dce3301bd | ||
| 
						 | 
					a917514546 | ||
| 
						 | 
					4dc940f59e | ||
| 
						 | 
					5facf5c15e | ||
| 
						 | 
					1e8b775a7a | ||
| 
						 | 
					0ad0fe207a | ||
| 
						 | 
					f295117fba | ||
| 
						 | 
					8ab097afb7 | ||
| 
						 | 
					84e24afd2f | ||
| 
						 | 
					f16d230530 | ||
| 
						 | 
					3a3b3225d4 | ||
| 
						 | 
					84a599ece4 | ||
| 
						 | 
					b7690a0add | ||
| 
						 | 
					18ecc2fd81 | ||
| 
						 | 
					999c11ad49 | ||
| 
						 | 
					c891b5f250 | ||
| 
						 | 
					419ff38a07 | ||
| 
						 | 
					8d8201502f | ||
| 
						 | 
					d38d153f51 | ||
| 
						 | 
					fd260404ca | ||
| 
						 | 
					a551942635 | ||
| 
						 | 
					b60d5a0a11 | ||
| 
						 | 
					fae0054d31 | ||
| 
						 | 
					73fded7515 | ||
| 
						 | 
					7630e8ffc6 | ||
| 
						 | 
					4552ad5269 | ||
| 
						 | 
					3d49e8ac84 | ||
| 
						 | 
					508ca3044d | ||
| 
						 | 
					d8f2964710 | ||
| 
						 | 
					ab00997698 | ||
| 
						 | 
					b4966aa1bd | ||
| 
						 | 
					0703fcd719 | ||
| 
						 | 
					4594583f52 | ||
| 
						 | 
					68cb1a8c2e | ||
| 
						 | 
					21493731df | ||
| 
						 | 
					950aeec3ff | ||
| 
						 | 
					1f59821270 | ||
| 
						 | 
					60a9a7f118 | ||
| 
						 | 
					8ec09e3ca4 | ||
| 
						 | 
					289a26e9e4 | ||
| 
						 | 
					3e47bc9af5 | ||
| 
						 | 
					d2a1f6aa4b | ||
| 
						 | 
					f68aa02272 | ||
| 
						 | 
					588af510a3 | ||
| 
						 | 
					9e1c25a889 | ||
| 
						 | 
					5d92198487 | ||
| 
						 | 
					20ddffca0d | ||
| 
						 | 
					25e56a5e83 | ||
| 
						 | 
					1e5a7aac87 | ||
| 
						 | 
					b5b3dd9cfd | ||
| 
						 | 
					92fba63ad8 | ||
| 
						 | 
					25d35dd6f4 | ||
| 
						 | 
					a445abc10e | ||
| 
						 | 
					1342f78b09 | ||
| 
						 | 
					a0d57a6afd | ||
| 
						 | 
					c6ae353756 | ||
| 
						 | 
					12768e7a54 | ||
| 
						 | 
					35e2dcff88 | ||
| 
						 | 
					dc89e42ef5 | ||
| 
						 | 
					4a2d74c9ab | ||
| 
						 | 
					cd48b8128e | ||
| 
						 | 
					301d4915bc | ||
| 
						 | 
					8061056cec | ||
| 
						 | 
					44926b7f9f | ||
| 
						 | 
					d11a700589 | ||
| 
						 | 
					0a26079af2 | ||
| 
						 | 
					b6e49f3920 | ||
| 
						 | 
					4123118d5a | ||
| 
						 | 
					e29d198700 | ||
| 
						 | 
					6f531a3c99 | ||
| 
						 | 
					53917fa4b8 | ||
| 
						 | 
					646218e6f4 | ||
| 
						 | 
					4185c4a44a | ||
| 
						 | 
					45b0bb5aff | ||
| 
						 | 
					c7db2f8429 | ||
| 
						 | 
					f0b86e6c26 | ||
| 
						 | 
					7871a904d7 | ||
| 
						 | 
					40e3daf560 | ||
| 
						 | 
					44b7ff02fd | ||
| 
						 | 
					35ed57e6c1 | ||
| 
						 | 
					79731a57f3 | ||
| 
						 | 
					a7f37cebdc | ||
| 
						 | 
					47b99c69cc | ||
| 
						 | 
					757f3497bc | ||
| 
						 | 
					f2455cbe33 | ||
| 
						 | 
					e3f300d323 | ||
| 
						 | 
					497edbaf3e | ||
| 
						 | 
					48326e061a | ||
| 
						 | 
					84e9dcbab0 | ||
| 
						 | 
					30b32e84fe | ||
| 
						 | 
					fb92493376 | ||
| 
						 | 
					eb4f9eac0c | ||
| 
						 | 
					d7b5dd1bbf | ||
| 
						 | 
					b18e81b631 | ||
| 
						 | 
					8ff153d7d4 | ||
| 
						 | 
					32f63abb59 | ||
| 
						 | 
					23572af942 | ||
| 
						 | 
					8d9cfa157a | ||
| 
						 | 
					58abd0777b | ||
| 
						 | 
					3ee98d9f72 | ||
| 
						 | 
					b1a5ade88f | ||
| 
						 | 
					73229249d8 | ||
| 
						 | 
					e0da56fc7b | ||
| 
						 | 
					cdaaae0cb2 | ||
| 
						 | 
					c319fb8eaa | ||
| 
						 | 
					538e612a47 | ||
| 
						 | 
					9d97004a28 | ||
| 
						 | 
					87deb43012 | ||
| 
						 | 
					a9cbb375b7 | ||
| 
						 | 
					161adbb1aa | ||
| 
						 | 
					de2fa78d92 | ||
| 
						 | 
					8bede388af | ||
| 
						 | 
					c9d166747d | ||
| 
						 | 
					56cdc2175c | ||
| 
						 | 
					de453d71cb | ||
| 
						 | 
					23b07bdf50 | ||
| 
						 | 
					9ac94339dc | ||
| 
						 | 
					46b0eef721 | ||
| 
						 | 
					d3ae351236 | ||
| 
						 | 
					4790d78c98 | ||
| 
						 | 
					c66e20ce6e | ||
| 
						 | 
					343a90dc37 | ||
| 
						 | 
					09ab0704f4 | ||
| 
						 | 
					114644cdb0 | ||
| 
						 | 
					cf9f9e1f30 | ||
| 
						 | 
					19ce256a95 | ||
| 
						 | 
					eba53f652c | ||
| 
						 | 
					d8ee498a65 | ||
| 
						 | 
					e3a1a61868 | ||
| 
						 | 
					1a2bdd9e4c | ||
| 
						 | 
					384f965fba | ||
| 
						 | 
					005340c83f | ||
| 
						 | 
					d21afce2b6 | ||
| 
						 | 
					808c291c76 | ||
| 
						 | 
					62a07596d6 | ||
| 
						 | 
					b730b64bbe | ||
| 
						 | 
					3e22fc32f3 | ||
| 
						 | 
					e65a35e964 | ||
| 
						 | 
					78d189fbf7 | ||
| 
						 | 
					8cfb910441 | ||
| 
						 | 
					039a939cb8 | ||
| 
						 | 
					d7d5f4330b | ||
| 
						 | 
					79c1222896 | ||
| 
						 | 
					a3f3a1097b | ||
| 
						 | 
					d4df626d88 | ||
| 
						 | 
					eed8a4ee6e | ||
| 
						 | 
					b1b83831d1 | ||
| 
						 | 
					8e1beae4e7 | ||
| 
						 | 
					baed0618ed | ||
| 
						 | 
					e3e181f4b3 | ||
| 
						 | 
					1f2aa4da6f | ||
| 
						 | 
					fc39146f48 | ||
| 
						 | 
					192e304b94 | ||
| 
						 | 
					1744a8d145 | ||
| 
						 | 
					b12acddf4f | ||
| 
						 | 
					ef82ef4ddb | ||
| 
						 | 
					bb20aeb9bc | ||
| 
						 | 
					e9d0b2f039 | ||
| 
						 | 
					222ecbffbb | ||
| 
						 | 
					ce736fc15b | ||
| 
						 | 
					1413a4886f | ||
| 
						 | 
					cfec819f0d | ||
| 
						 | 
					107bfdc821 | ||
| 
						 | 
					5c160921ff | ||
| 
						 | 
					fe3bef55b7 | ||
| 
						 | 
					5300f0082c | ||
| 
						 | 
					85abfd84be | ||
| 
						 | 
					005ffeaa8c | ||
| 
						 | 
					5c8c6d3c70 | ||
| 
						 | 
					7eb3932d3a | ||
| 
						 | 
					ebf2f991b5 | ||
| 
						 | 
					a451cb22f1 | ||
| 
						 | 
					82bf4eb059 | ||
| 
						 | 
					d53d58fff2 | ||
| 
						 | 
					a072180c92 | ||
| 
						 | 
					0fd9a8505a | ||
| 
						 | 
					b2482b39e4 | ||
| 
						 | 
					74c7d7131f | ||
| 
						 | 
					4dd1c31dc7 | ||
| 
						 | 
					2e13e821f8 | ||
| 
						 | 
					2478c5816b | ||
| 
						 | 
					47ad9afcf3 | ||
| 
						 | 
					67e882d4bb | ||
| 
						 | 
					25c216cbdf | ||
| 
						 | 
					f5441d2170 | ||
| 
						 | 
					0d67be3f30 | ||
| 
						 | 
					f37600ee01 | ||
| 
						 | 
					f38a9035e5 | ||
| 
						 | 
					a12d6ff257 | ||
| 
						 | 
					2205227c3b | ||
| 
						 | 
					d2d867ea36 | ||
| 
						 | 
					b232ae2f17 | ||
| 
						 | 
					53b2acc00b | ||
| 
						 | 
					01b62202b2 | ||
| 
						 | 
					b68bb560e9 | ||
| 
						 | 
					21467c76f1 | ||
| 
						 | 
					33fae67579 | ||
| 
						 | 
					864015fa3f | ||
| 
						 | 
					1d3def0cc6 | ||
| 
						 | 
					e01e8f1cb6 | ||
| 
						 | 
					186ab51137 | ||
| 
						 | 
					74be904018 | ||
| 
						 | 
					298cd9a327 | ||
| 
						 | 
					414bfe65eb | ||
| 
						 | 
					c519ba9920 | ||
| 
						 | 
					fee8ff37b3 | ||
| 
						 | 
					fee591b759 | ||
| 
						 | 
					16f94546f5 | ||
| 
						 | 
					55859c1bef | ||
| 
						 | 
					bcefdef1ea | ||
| 
						 | 
					f79d41e927 | ||
| 
						 | 
					1680ea02da | ||
| 
						 | 
					1aaf54ac24 | ||
| 
						 | 
					a5984c702a | ||
| 
						 | 
					9a82304ae9 | ||
| 
						 | 
					a26e37b746 | ||
| 
						 | 
					c2b39fdede | ||
| 
						 | 
					8349a1c0d9 | ||
| 
						 | 
					360a254be0 | ||
| 
						 | 
					ab1fcebeff | ||
| 
						 | 
					a6dd2e33c2 | ||
| 
						 | 
					9d8974d509 | ||
| 
						 | 
					037b4b76df | ||
| 
						 | 
					be97fa8ab1 | ||
| 
						 | 
					164954a788 | ||
| 
						 | 
					c1d7f6216f | ||
| 
						 | 
					7df4c12da9 | ||
| 
						 | 
					0d5de60584 | ||
| 
						 | 
					4b0f526006 | ||
| 
						 | 
					4cf65b973c | ||
| 
						 | 
					160f728530 | ||
| 
						 | 
					922540306e | ||
| 
						 | 
					d48e440a72 | ||
| 
						 | 
					0709a0f050 | ||
| 
						 | 
					097c72aa65 | ||
| 
						 | 
					7b01bb833f | ||
| 
						 | 
					cfd0bddc30 | ||
| 
						 | 
					b53b12aa5f | ||
| 
						 | 
					d0bb185cf5 | ||
| 
						 | 
					49385a98b2 | ||
| 
						 | 
					b9e6cb3e55 | ||
| 
						 | 
					dffe5a9d60 | ||
| 
						 | 
					d7eb343ea0 | ||
| 
						 | 
					bf5610a3b9 | ||
| 
						 | 
					7bce6780ca | ||
| 
						 | 
					bf121ae95f | ||
| 
						 | 
					7b6b492bdd | ||
| 
						 | 
					aa7db2c0e9 | ||
| 
						 | 
					684e50f0a4 | ||
| 
						 | 
					4a90959cb5 | ||
| 
						 | 
					9b1cf420f1 | ||
| 
						 | 
					e7e47e77a3 | ||
| 
						 | 
					695df6532e | ||
| 
						 | 
					6680b536c4 | ||
| 
						 | 
					a21a7d8b66 | ||
| 
						 | 
					c0d059cd0e | ||
| 
						 | 
					7faa3ed7d6 | ||
| 
						 | 
					c9b152fa41 | ||
| 
						 | 
					ae27571414 | ||
| 
						 | 
					5e5377a063 | ||
| 
						 | 
					884c5bcff1 | ||
| 
						 | 
					3a2fcc32cd | ||
| 
						 | 
					a8aa8c6cbc | ||
| 
						 | 
					f01b09ce84 | ||
| 
						 | 
					2419a701d8 | ||
| 
						 | 
					110be707c3 | ||
| 
						 | 
					b2743af0ed | ||
| 
						 | 
					76565022fb | ||
| 
						 | 
					4602cb9891 | ||
| 
						 | 
					1d7e99531a | ||
| 
						 | 
					f0a9dbe3ad | ||
| 
						 | 
					245782897b | ||
| 
						 | 
					2327b17656 | ||
| 
						 | 
					359732af85 | ||
| 
						 | 
					1dea0d91a0 | ||
| 
						 | 
					d67d077a71 | ||
| 
						 | 
					69be7a85a2 | ||
| 
						 | 
					8ec17063a6 | ||
| 
						 | 
					da4c1ebe81 | ||
| 
						 | 
					bd3a7ccb15 | ||
| 
						 | 
					edfcc2f9d5 | ||
| 
						 | 
					ee362b3bd2 | ||
| 
						 | 
					67bd1bf34f | ||
| 
						 | 
					9f3af061cf | ||
| 
						 | 
					88c3d4896a | ||
| 
						 | 
					7b6ef3bc8e | ||
| 
						 | 
					fbaa751da8 | ||
| 
						 | 
					06b6327875 | ||
| 
						 | 
					0d9740b9fa | ||
| 
						 | 
					e9be3334d1 | ||
| 
						 | 
					0ae74ceaed | ||
| 
						 | 
					17ffda1c8a | ||
| 
						 | 
					0de11ead36 | ||
| 
						 | 
					9d486db460 | ||
| 
						 | 
					257fe922d2 | ||
| 
						 | 
					1068f88377 | ||
| 
						 | 
					9e7360e5fa | ||
| 
						 | 
					273d4bdd32 | ||
| 
						 | 
					27d244dfae | ||
| 
						 | 
					a39a1a5273 | ||
| 
						 | 
					ef392e7d37 | ||
| 
						 | 
					c38751191f | ||
| 
						 | 
					5cbdcf4f0d | ||
| 
						 | 
					3641e51109 | ||
| 
						 | 
					3f46e93ccc | ||
| 
						 | 
					8e3c56e5b2 | ||
| 
						 | 
					e1026d5dd1 | ||
| 
						 | 
					f7bdee5f13 | ||
| 
						 | 
					391aa8d1f7 | ||
| 
						 | 
					89d99e2ff9 | ||
| 
						 | 
					c16133c5ee | ||
| 
						 | 
					4888984429 | ||
| 
						 | 
					44bb22d23e | ||
| 
						 | 
					c7dd5ea0ba | ||
| 
						 | 
					871760583c | ||
| 
						 | 
					bc20f9ec10 | ||
| 
						 | 
					5a200e1543 | ||
| 
						 | 
					d2df7396a8 | ||
| 
						 | 
					3d27073d61 | ||
| 
						 | 
					b6f19ea8fe | ||
| 
						 | 
					8c46067b34 | ||
| 
						 | 
					594fdd02aa | ||
| 
						 | 
					6a308fcb42 | ||
| 
						 | 
					1537c79132 | ||
| 
						 | 
					e0c9931ad8 | ||
| 
						 | 
					eba95bb0d2 | ||
| 
						 | 
					51a6a33056 | ||
| 
						 | 
					6e28f4a7d1 | ||
| 
						 | 
					9882e578e9 | ||
| 
						 | 
					73781c1b38 | ||
| 
						 | 
					f2fa1045e2 | ||
| 
						 | 
					33a165721b | ||
| 
						 | 
					a3a4b5f696 | ||
| 
						 | 
					39412d6486 | ||
| 
						 | 
					c1656256df | ||
| 
						 | 
					1f4711a547 | ||
| 
						 | 
					4d0069c3a8 | ||
| 
						 | 
					12c60a670e | ||
| 
						 | 
					2f7d0c0839 | ||
| 
						 | 
					1afbf71236 | ||
| 
						 | 
					7ed08f01ef | ||
| 
						 | 
					81cc5f82b5 | ||
| 
						 | 
					78a3b4c7d6 | ||
| 
						 | 
					39d630c00d | ||
| 
						 | 
					4fe6b42c53 | ||
| 
						 | 
					d4d8102fc9 | ||
| 
						 | 
					77f68b4fd1 | ||
| 
						 | 
					2f8877ded4 | ||
| 
						 | 
					4bff3daf92 | ||
| 
						 | 
					c5beca8aab | ||
| 
						 | 
					f8405b1a4f | ||
| 
						 | 
					fdfc27265e | ||
| 
						 | 
					a4d1e6007f | ||
| 
						 | 
					9260759cec | ||
| 
						 | 
					c2ac1ad3ba | ||
| 
						 | 
					470d2e2362 | ||
| 
						 | 
					888664435a | ||
| 
						 | 
					98493077a2 | ||
| 
						 | 
					1fa2af5b3a | ||
| 
						 | 
					05cc9bf9b0 | ||
| 
						 | 
					cc06e1ff89 | ||
| 
						 | 
					9fbf592924 | ||
| 
						 | 
					adf92302bf | ||
| 
						 | 
					566a451299 | ||
| 
						 | 
					e0f8ce093a | ||
| 
						 | 
					5e3449a241 | ||
| 
						 | 
					762b0325df | ||
| 
						 | 
					6b62a5ec4f | ||
| 
						 | 
					b24d645ca1 | ||
| 
						 | 
					1bb2fbedcc | ||
| 
						 | 
					3193d5477c | ||
| 
						 | 
					edab86e0f8 | ||
| 
						 | 
					e4006a93e3 | ||
| 
						 | 
					9069380ddf | ||
| 
						 | 
					ab188c1486 | ||
| 
						 | 
					5eb9f2e717 | ||
| 
						 | 
					abfc5c6e27 | ||
| 
						 | 
					565523cbb4 | ||
| 
						 | 
					013298d4c6 | ||
| 
						 | 
					af13732ec7 | ||
| 
						 | 
					408a74b865 | ||
| 
						 | 
					f47904bf95 | ||
| 
						 | 
					70eb8219f5 | ||
| 
						 | 
					9e5b9ddad0 | ||
| 
						 | 
					56b7e67307 | ||
| 
						 | 
					b681aa5b9f | ||
| 
						 | 
					b32f3b76e9 | ||
| 
						 | 
					1a5ed654b4 | ||
| 
						 | 
					9cbb8f3bb8 | ||
| 
						 | 
					e19ce437ca | ||
| 
						 | 
					4e550bf9ef | ||
| 
						 | 
					1d29a59f7e | ||
| 
						 | 
					765c2f26ea | ||
| 
						 | 
					69fa6f268a | ||
| 
						 | 
					43509fd22c | ||
| 
						 | 
					a71abfef4b | ||
| 
						 | 
					8a8e8a3a23 | ||
| 
						 | 
					65befdafaa | ||
| 
						 | 
					15fec92ed7 | ||
| 
						 | 
					1e4a00f94f | ||
| 
						 | 
					338758799d | ||
| 
						 | 
					164e15b8c6 | ||
| 
						 | 
					32bfafafd9 | ||
| 
						 | 
					6ef20e0f9a | ||
| 
						 | 
					e86e193e01 | ||
| 
						 | 
					ae5ebfb9f0 | ||
| 
						 | 
					e9e6224aae | ||
| 
						 | 
					e23f025dd6 | ||
| 
						 | 
					3ca8703309 | ||
| 
						 | 
					fc82efc3e8 | ||
| 
						 | 
					dc9fcb0fb2 | ||
| 
						 | 
					2b95c69ea1 | ||
| 
						 | 
					af70c3dbc9 | ||
| 
						 | 
					1e054e0b82 | ||
| 
						 | 
					06a20b87c4 | ||
| 
						 | 
					fea2194fc0 | ||
| 
						 | 
					872dc5042d | ||
| 
						 | 
					e1315f30fd | ||
| 
						 | 
					0a85c58878 | ||
| 
						 | 
					ee21490887 | ||
| 
						 | 
					8fa92f0a24 | ||
| 
						 | 
					8e193df973 | ||
| 
						 | 
					9d348d00d9 | ||
| 
						 | 
					9e48f3f8f8 | ||
| 
						 | 
					e4a06844a3 | ||
| 
						 | 
					20ccc1bba7 | ||
| 
						 | 
					13d9e0c5a7 | ||
| 
						 | 
					a7911e35af | ||
| 
						 | 
					60812b6fdf | ||
| 
						 | 
					1ea6811616 | ||
| 
						 | 
					d2f54abbed | ||
| 
						 | 
					07dbb73c92 | ||
| 
						 | 
					30796698a9 | ||
| 
						 | 
					f173a974be | ||
| 
						 | 
					8aac366802 | ||
| 
						 | 
					69803d6ff1 | ||
| 
						 | 
					be6994aece | ||
| 
						 | 
					1361b3742d | ||
| 
						 | 
					d3036c74e9 | ||
| 
						 | 
					553e8b6aa3 | ||
| 
						 | 
					51d7674ee7 | ||
| 
						 | 
					1189200d4a | ||
| 
						 | 
					7795b07c53 | ||
| 
						 | 
					d9325e8030 | ||
| 
						 | 
					641045249c | ||
| 
						 | 
					69f81a359a | ||
| 
						 | 
					be03bc672c | ||
| 
						 | 
					160c52400f | ||
| 
						 | 
					0b8acf1205 | ||
| 
						 | 
					88f6fc5fd8 | ||
| 
						 | 
					da897a2a14 | ||
| 
						 | 
					989c9fa531 | ||
| 
						 | 
					2fd42667c2 | ||
| 
						 | 
					2dfa24d2fa | ||
| 
						 | 
					1ed602eb47 | ||
| 
						 | 
					ea725b99b7 | ||
| 
						 | 
					3dc3a03538 | ||
| 
						 | 
					95f0e4033c | ||
| 
						 | 
					409b2c86c8 | ||
| 
						 | 
					d692286d7a | ||
| 
						 | 
					456e55921d | ||
| 
						 | 
					9f3690c39c | ||
| 
						 | 
					6cbe13085d | ||
| 
						 | 
					b7780e3f2a | ||
| 
						 | 
					04744e9d89 | ||
| 
						 | 
					54f04f81e9 | ||
| 
						 | 
					95e156b519 | ||
| 
						 | 
					e160121698 | ||
| 
						 | 
					54566b6b32 | ||
| 
						 | 
					c041bb340c | ||
| 
						 | 
					af60f04fef | ||
| 
						 | 
					2d35731399 | ||
| 
						 | 
					7ae7ace579 | ||
| 
						 | 
					5f400694cf | ||
| 
						 | 
					bd118c65fd | ||
| 
						 | 
					29c49f643f | ||
| 
						 | 
					b6185b1ac8 | ||
| 
						 | 
					14afdaee08 | ||
| 
						 | 
					949c8ea7c7 | ||
| 
						 | 
					1765f0ae0b | ||
| 
						 | 
					7f8d0ea5a3 | ||
| 
						 | 
					d99edb7728 | ||
| 
						 | 
					cb28c4ff03 | ||
| 
						 | 
					269310f04b | ||
| 
						 | 
					3282c1325e | ||
| 
						 | 
					3d0ce77f12 | ||
| 
						 | 
					946d838de4 | ||
| 
						 | 
					a085444035 | ||
| 
						 | 
					449ad1eeea | ||
| 
						 | 
					9dfde13f0c | ||
| 
						 | 
					5410d96748 | ||
| 
						 | 
					b80e115f39 | ||
| 
						 | 
					f087c68a99 | ||
| 
						 | 
					6aad5a6706 | ||
| 
						 | 
					eba14d937d | ||
| 
						 | 
					c438c227b5 | ||
| 
						 | 
					d41f4d6d20 | ||
| 
						 | 
					391cf4e2a1 | ||
| 
						 | 
					7ef6cb4584 | ||
| 
						 | 
					e7256bb8ac | ||
| 
						 | 
					b1786f309e | ||
| 
						 | 
					42b32f8a2a | ||
| 
						 | 
					49b2d0ec98 | ||
| 
						 | 
					dd7d64f577 | ||
| 
						 | 
					605b6a67bc | ||
| 
						 | 
					10c7a15687 | ||
| 
						 | 
					05748aa5ee | ||
| 
						 | 
					0bb892bb5f | ||
| 
						 | 
					c26ca7773b | ||
| 
						 | 
					1cb2f5739d | ||
| 
						 | 
					160f5725a6 | ||
| 
						 | 
					e4e1595bff | ||
| 
						 | 
					66315cab9a | ||
| 
						 | 
					67a9d994e3 | ||
| 
						 | 
					1cd8d7f386 | ||
| 
						 | 
					9a102ca96b | ||
| 
						 | 
					e70e81460b | ||
| 
						 | 
					5acb90fafc | ||
| 
						 | 
					d61fbfc6e3 | ||
| 
						 | 
					cf7e3b1c02 | ||
| 
						 | 
					1b5d1064de | ||
| 
						 | 
					5b2512c215 | ||
| 
						 | 
					680db6755b | ||
| 
						 | 
					fc0b026149 | ||
| 
						 | 
					162433398e | ||
| 
						 | 
					f99d33ddd9 | ||
| 
						 | 
					d29e389779 | ||
| 
						 | 
					f1a4a4dc88 | ||
| 
						 | 
					6cb90f399d | ||
| 
						 | 
					d587926eb0 | ||
| 
						 | 
					770a58ac6d | ||
| 
						 | 
					15775e6790 | ||
| 
						 | 
					62f705f97e | ||
| 
						 | 
					a39e2f22c9 | ||
| 
						 | 
					dcb1951efd | ||
| 
						 | 
					fa8b83e69b | ||
| 
						 | 
					acd7a5d6d4 | ||
| 
						 | 
					ae7470ceb5 | ||
| 
						 | 
					d1f604ab89 | ||
| 
						 | 
					ff2a425ab8 | ||
| 
						 | 
					f419a369bf | ||
| 
						 | 
					152b529abf | ||
| 
						 | 
					fc55c945db | ||
| 
						 | 
					b19f7d73cb | ||
| 
						 | 
					38747b40dc | ||
| 
						 | 
					dbb66695c9 | ||
| 
						 | 
					77cff9e47c | ||
| 
						 | 
					c0d13c4713 | ||
| 
						 | 
					25dd193e9b | ||
| 
						 | 
					71d8c37171 | ||
| 
						 | 
					52f59149ad | ||
| 
						 | 
					33e8c24806 | ||
| 
						 | 
					5417a72536 | ||
| 
						 | 
					94e4562c1c | ||
| 
						 | 
					6caa947f98 | ||
| 
						 | 
					e49109e36d | ||
| 
						 | 
					adfa968f99 | ||
| 
						 | 
					07f241ff6d | ||
| 
						 | 
					53fecf5a2b | ||
| 
						 | 
					8a674c3263 | ||
| 
						 | 
					1f5fbd5992 | ||
| 
						 | 
					5858dc3886 | ||
| 
						 | 
					af6ac0fa41 | ||
| 
						 | 
					f3ec90f3f0 | ||
| 
						 | 
					c6a7de869c | ||
| 
						 | 
					4ef23df813 | ||
| 
						 | 
					5555b6cc86 | ||
| 
						 | 
					72a982ae7e | ||
| 
						 | 
					2a7dd06ebd | ||
| 
						 | 
					ebfcdb088b | ||
| 
						 | 
					03628dbeaf | ||
| 
						 | 
					408cefd15d | ||
| 
						 | 
					f59f773cfe | ||
| 
						 | 
					f732c7117e | ||
| 
						 | 
					477224be5c | ||
| 
						 | 
					493ccd57f4 | ||
| 
						 | 
					8700f4d93c | ||
| 
						 | 
					765dc320f1 | ||
| 
						 | 
					9fff9f6a2b | ||
| 
						 | 
					b856a58051 | ||
| 
						 | 
					8927700b22 | ||
| 
						 | 
					58a4dae56d | ||
| 
						 | 
					914d6a26d8 | ||
| 
						 | 
					c98e794b38 | ||
| 
						 | 
					a990bd72ec | ||
| 
						 | 
					5a34bb203a | ||
| 
						 | 
					d3ef2239e1 | ||
| 
						 | 
					a57748e1a1 | ||
| 
						 | 
					6600ce3445 | ||
| 
						 | 
					4a6d44dce2 | ||
| 
						 | 
					5ed7a4ea57 | ||
| 
						 | 
					ba32d594fd | ||
| 
						 | 
					3460c87c58 | ||
| 
						 | 
					02592f912e | ||
| 
						 | 
					1964bda252 | ||
| 
						 | 
					23ce0393b2 | ||
| 
						 | 
					994a003aba | ||
| 
						 | 
					eda2556e09 | ||
| 
						 | 
					9402bcaa73 | ||
| 
						 | 
					6d11fb1497 | ||
| 
						 | 
					28bbd7e27a | ||
| 
						 | 
					1dca082fc6 | ||
| 
						 | 
					4a5dfcc3ac | ||
| 
						 | 
					f37e495a2b | ||
| 
						 | 
					21cbf37db5 | ||
| 
						 | 
					4188a82e76 | ||
| 
						 | 
					36d4f6c601 | ||
| 
						 | 
					186b14f332 | ||
| 
						 | 
					8ea1c5bb82 | ||
| 
						 | 
					79ca5fe04d | ||
| 
						 | 
					60bb40d67a | ||
| 
						 | 
					5da98ec389 | ||
| 
						 | 
					0305f75456 | ||
| 
						 | 
					65bcff35ff | ||
| 
						 | 
					790fa89e67 | ||
| 
						 | 
					ce448e9077 | ||
| 
						 | 
					dd580d3ea7 | ||
| 
						 | 
					de6f08cc04 | ||
| 
						 | 
					678d5411e2 | ||
| 
						 | 
					7321be2ccd | ||
| 
						 | 
					9bc5d565bb | ||
| 
						 | 
					0d19f2b43a | ||
| 
						 | 
					5a14942b0a | ||
| 
						 | 
					2bca14b52e | ||
| 
						 | 
					29b41a4ecc | ||
| 
						 | 
					30b6e72b96 | ||
| 
						 | 
					4a19763868 | ||
| 
						 | 
					bdcf3f0e24 | ||
| 
						 | 
					d7ad956a06 | ||
| 
						 | 
					e2c9290030 | ||
| 
						 | 
					5edde9a760 | ||
| 
						 | 
					864f3df575 | ||
| 
						 | 
					ffccfb0975 | ||
| 
						 | 
					76f40bdb98 | ||
| 
						 | 
					3dd91923e4 | ||
| 
						 | 
					a4de27deee | ||
| 
						 | 
					8449e08245 | ||
| 
						 | 
					05d1df97c3 | ||
| 
						 | 
					01c39ba001 | ||
| 
						 | 
					0c0cac641d | ||
| 
						 | 
					8288878122 | ||
| 
						 | 
					596bc096b0 | ||
| 
						 | 
					5700329f8c | ||
| 
						 | 
					3b74280879 | ||
| 
						 | 
					f1267ca375 | ||
| 
						 | 
					ccb175dce6 | ||
| 
						 | 
					99e08eaced | ||
| 
						 | 
					5f2bc55d36 | ||
| 
						 | 
					1fa5b11995 | ||
| 
						 | 
					d00a0f1e7c | ||
| 
						 | 
					a988bbc86a | ||
| 
						 | 
					4226db873f | ||
| 
						 | 
					f579043671 | ||
| 
						 | 
					50cb321bb1 | ||
| 
						 | 
					ade8902b88 | ||
| 
						 | 
					3a826b774a | ||
| 
						 | 
					c51cc88eb0 | ||
| 
						 | 
					5e82a91d13 | ||
| 
						 | 
					4943bbb066 | ||
| 
						 | 
					e2ba7e08b4 | ||
| 
						 | 
					b1a117cd98 | ||
| 
						 | 
					4a770e8e2d | ||
| 
						 | 
					ba720fcbae | ||
| 
						 | 
					b3cfbc3d28 | ||
| 
						 | 
					74578890b7 | ||
| 
						 | 
					212311efc5 | ||
| 
						 | 
					fe5c7cb22d | ||
| 
						 | 
					cdae82413d | ||
| 
						 | 
					3600dc60fc | ||
| 
						 | 
					cd954ee7e9 | ||
| 
						 | 
					355828e64f | ||
| 
						 | 
					755f54b150 | ||
| 
						 | 
					ef3dbf96eb | ||
| 
						 | 
					1fe17e246c | ||
| 
						 | 
					c135d0dded | ||
| 
						 | 
					1e281a8baa | ||
| 
						 | 
					6349ec8bb3 | ||
| 
						 | 
					8d68fe3f86 | ||
| 
						 | 
					4f6c19712e | ||
| 
						 | 
					4833f9e5c8 | ||
| 
						 | 
					90a186158b | ||
| 
						 | 
					b52d5e2a78 | ||
| 
						 | 
					04e38f17ae | ||
| 
						 | 
					32188d821b | ||
| 
						 | 
					6f4a348b75 | ||
| 
						 | 
					a51670005f | ||
| 
						 | 
					0263fa4c66 | ||
| 
						 | 
					31ea0f8ee9 | ||
| 
						 | 
					fd4dfccc30 | ||
| 
						 | 
					2a4bf67aac | ||
| 
						 | 
					575485eb82 | ||
| 
						 | 
					3fd4f320b7 | ||
| 
						 | 
					6fdd3479f1 | ||
| 
						 | 
					617640e0a3 | ||
| 
						 | 
					f72e22d361 | ||
| 
						 | 
					c65bf5d2ce | ||
| 
						 | 
					9c6230e177 | ||
| 
						 | 
					479a43b1c6 | ||
| 
						 | 
					056de78e31 | ||
| 
						 | 
					a02bc9cc6f | ||
| 
						 | 
					01e40f4b55 | ||
| 
						 | 
					acb66d6463 | ||
| 
						 | 
					63a304755a | ||
| 
						 | 
					6ebb31ab35 | ||
| 
						 | 
					cf93881dfb | ||
| 
						 | 
					560492a4a4 | ||
| 
						 | 
					9cd3494de9 | ||
| 
						 | 
					6131822af6 | ||
| 
						 | 
					57a2faf4a7 | ||
| 
						 | 
					41034950d9 | ||
| 
						 | 
					6faf44bc6d | ||
| 
						 | 
					f369177617 | ||
| 
						 | 
					37ee0a3313 | ||
| 
						 | 
					03457135b7 | ||
| 
						 | 
					28424d013d | ||
| 
						 | 
					583c50476b | ||
| 
						 | 
					808d4f6e85 | ||
| 
						 | 
					fb4b5acfb8 | ||
| 
						 | 
					77870ddf2d | ||
| 
						 | 
					1995af0ed6 | ||
| 
						 | 
					761b2284b9 | ||
| 
						 | 
					79be1c477e | ||
| 
						 | 
					7b5e2fe38e | ||
| 
						 | 
					bf8b646304 | ||
| 
						 | 
					e4ffcd00bd | ||
| 
						 | 
					4cc4c29e38 | ||
| 
						 | 
					0db9a31e50 | ||
| 
						 | 
					5462c6c50f | ||
| 
						 | 
					3d49fa5bff | ||
| 
						 | 
					2d4ea28835 | ||
| 
						 | 
					d4632a727f | ||
| 
						 | 
					60f5dd5b29 | ||
| 
						 | 
					89e73ad4b4 | ||
| 
						 | 
					54e67ea9ee | ||
| 
						 | 
					cc336b7558 | ||
| 
						 | 
					ae55d4f500 | ||
| 
						 | 
					edfa215481 | ||
| 
						 | 
					c6742192a6 | ||
| 
						 | 
					0c0d4af55a | ||
| 
						 | 
					8605e9c0fe | ||
| 
						 | 
					a68103771c | ||
| 
						 | 
					8ad1c23ae4 | ||
| 
						 | 
					f76e0a1db6 | ||
| 
						 | 
					51ed742054 | ||
| 
						 | 
					60eac5e952 | ||
| 
						 | 
					139d6303e7 | ||
| 
						 | 
					28f8b50174 | ||
| 
						 | 
					e2930f3f5e | ||
| 
						 | 
					059e707249 | ||
| 
						 | 
					b849e63fbf | ||
| 
						 | 
					55190f2d3d | ||
| 
						 | 
					6dc80bd195 | ||
| 
						 | 
					df359835d1 | ||
| 
						 | 
					defd7e09af | ||
| 
						 | 
					29d448ed63 | ||
| 
						 | 
					bdec5ac1f3 | ||
| 
						 | 
					73fd26e9fa | ||
| 
						 | 
					79e1ec2b1e | ||
| 
						 | 
					615d09459e | ||
| 
						 | 
					1338ade650 | ||
| 
						 | 
					21140500f1 | ||
| 
						 | 
					77ceb9f8ab | ||
| 
						 | 
					b042363e88 | ||
| 
						 | 
					6b0bb665c3 | ||
| 
						 | 
					1caa3fb94b | ||
| 
						 | 
					025342fe46 | ||
| 
						 | 
					628c6c962b | ||
| 
						 | 
					1ed49de83a | ||
| 
						 | 
					bb914b93e9 | ||
| 
						 | 
					50e8a62c5c | ||
| 
						 | 
					aa32fec1b6 | ||
| 
						 | 
					cbe41ec875 | ||
| 
						 | 
					20276f7cc9 | ||
| 
						 | 
					6e8cf51bb2 | ||
| 
						 | 
					53fc0ebff6 | ||
| 
						 | 
					9b3e143a26 | ||
| 
						 | 
					f1bbc92b39 | ||
| 
						 | 
					1da3e25e65 | ||
| 
						 | 
					e1de769ab9 | ||
| 
						 | 
					9f58418765 | ||
| 
						 | 
					ef157715a0 | ||
| 
						 | 
					ecad9f32c8 | ||
| 
						 | 
					f58c8b94d9 | ||
| 
						 | 
					3a2ac66f7f | ||
| 
						 | 
					cf05bf31a7 | ||
| 
						 | 
					a4d7c6f145 | ||
| 
						 | 
					1ddc74f13e | ||
| 
						 | 
					75dabcaae5 | ||
| 
						 | 
					1b73e68e6e | ||
| 
						 | 
					03cde2efd3 | ||
| 
						 | 
					cb6faed61c | ||
| 
						 | 
					c62c2d349b | ||
| 
						 | 
					60137a7139 | ||
| 
						 | 
					513a75c919 | ||
| 
						 | 
					4f1b5400e9 | ||
| 
						 | 
					cade80dcf5 | ||
| 
						 | 
					28ca31e576 | ||
| 
						 | 
					c414d0bd3a | ||
| 
						 | 
					bc88b2cb06 | ||
| 
						 | 
					bc1ac7fbc5 | ||
| 
						 | 
					37e950a40c | ||
| 
						 | 
					55c04e691d | ||
| 
						 | 
					881b9af251 | ||
| 
						 | 
					294320ed62 | ||
| 
						 | 
					03b70229eb | ||
| 
						 | 
					9918dfc1d5 | ||
| 
						 | 
					e46cf64cc1 | ||
| 
						 | 
					113bd34878 | ||
| 
						 | 
					4a3e40bc95 | ||
| 
						 | 
					45b1a45c97 | ||
| 
						 | 
					7d6de7c352 | ||
| 
						 | 
					30b584c2e8 | ||
| 
						 | 
					eaaf0c3bd5 | ||
| 
						 | 
					9a7499af8b | ||
| 
						 | 
					bce16c2864 | ||
| 
						 | 
					926204cacd | ||
| 
						 | 
					3bf0c6f3b9 | ||
| 
						 | 
					f78b0c61e9 | ||
| 
						 | 
					fa09883c72 | ||
| 
						 | 
					affa03b277 | ||
| 
						 | 
					5b1efaee67 | ||
| 
						 | 
					d5f80b2a8d | ||
| 
						 | 
					60fc4d6335 | ||
| 
						 | 
					536538968c | ||
| 
						 | 
					4daf780f01 | ||
| 
						 | 
					ed72bf4ceb | ||
| 
						 | 
					d76910ce7b | ||
| 
						 | 
					8fd0e29d46 | ||
| 
						 | 
					bfa48f3448 | ||
| 
						 | 
					66c6458ae7 | ||
| 
						 | 
					3b37ad334b | ||
| 
						 | 
					c191ea53a9 | ||
| 
						 | 
					e1598e2670 | ||
| 
						 | 
					44acf41cc1 | ||
| 
						 | 
					933da741c6 | ||
| 
						 | 
					cf7e19193b | ||
| 
						 | 
					5f1e43416a | ||
| 
						 | 
					5debe20509 | ||
| 
						 | 
					a7eef6666b | ||
| 
						 | 
					56a8abc253 | ||
| 
						 | 
					21bb2bd658 | ||
| 
						 | 
					bddfd67550 | ||
| 
						 | 
					805bf03490 | ||
| 
						 | 
					63cbc6cd42 | ||
| 
						 | 
					b3cacf86df | ||
| 
						 | 
					0ef94edad7 | ||
| 
						 | 
					643ae1b48b | ||
| 
						 | 
					9b1c47220f | ||
| 
						 | 
					8e2c5816ee | ||
| 
						 | 
					f31c3a3aa2 | ||
| 
						 | 
					b0931f322b | ||
| 
						 | 
					5196e9bcb1 | ||
| 
						 | 
					57aa64e117 | ||
| 
						 | 
					fd7e85b798 | ||
| 
						 | 
					b1852f3029 | ||
| 
						 | 
					822c1e9265 | ||
| 
						 | 
					5b4a3eda08 | ||
| 
						 | 
					a83554b572 | ||
| 
						 | 
					627b0b713c | ||
| 
						 | 
					95428a72ff | ||
| 
						 | 
					6b83d1740e | ||
| 
						 | 
					c8bba8e5c3 | ||
| 
						 | 
					37359799eb | ||
| 
						 | 
					4a14fb252d | ||
| 
						 | 
					9b59f043c8 | ||
| 
						 | 
					b545d38ae4 | ||
| 
						 | 
					84eaed6c9a | ||
| 
						 | 
					544b9884f4 | ||
| 
						 | 
					5e16b6df2d | ||
| 
						 | 
					ea041b8838 | ||
| 
						 | 
					68835a1d1a | ||
| 
						 | 
					54879b432b | ||
| 
						 | 
					d9355d53f8 | ||
| 
						 | 
					8c0137a6e0 | ||
| 
						 | 
					166ab3925e | ||
| 
						 | 
					1f6a5744f6 | ||
| 
						 | 
					156569d263 | ||
| 
						 | 
					c3a8d6a73e | ||
| 
						 | 
					3a7d59c1ac | ||
| 
						 | 
					51b88b12f3 | ||
| 
						 | 
					ea35ba74b6 | ||
| 
						 | 
					2d4361d088 | ||
| 
						 | 
					e9e7fc33f1 | ||
| 
						 | 
					c09742c518 | ||
| 
						 | 
					c56ab96270 | ||
| 
						 | 
					0a9608a26f | ||
| 
						 | 
					dee89c2355 | ||
| 
						 | 
					b8c6dd503f | ||
| 
						 | 
					66d6c3c84b | ||
| 
						 | 
					2fce4667a8 | ||
| 
						 | 
					c6a43fbaf0 | ||
| 
						 | 
					3be9c477be | ||
| 
						 | 
					d09094812f | ||
| 
						 | 
					c5000694d1 | ||
| 
						 | 
					2c1b6280fa | ||
| 
						 | 
					5a3128243f | ||
| 
						 | 
					95e8320ca9 | ||
| 
						 | 
					8f46681bc8 | ||
| 
						 | 
					1c7b9dbe93 | ||
| 
						 | 
					0acef7c598 | ||
| 
						 | 
					00c8dfa8be | ||
| 
						 | 
					75243ffb37 | ||
| 
						 | 
					5468ba3744 | ||
| 
						 | 
					eb159e0a8d | ||
| 
						 | 
					df3473c9c1 | ||
| 
						 | 
					a11e895045 | ||
| 
						 | 
					175f0af979 | ||
| 
						 | 
					40a0e9abbe | ||
| 
						 | 
					0659503afd | ||
| 
						 | 
					18efc7469c | ||
| 
						 | 
					fd9266df78 | ||
| 
						 | 
					0e4e22a7a6 | ||
| 
						 | 
					9d20397470 | ||
| 
						 | 
					307cdce908 | ||
| 
						 | 
					dc9f42dc3c | ||
| 
						 | 
					a971047bc5 | ||
| 
						 | 
					6500d443fc | ||
| 
						 | 
					d26a283ea9 | ||
| 
						 | 
					4b83a23d9d | ||
| 
						 | 
					8a94ec9728 | ||
| 
						 | 
					e5fea5380d | ||
| 
						 | 
					9a82ca0d6b | ||
| 
						 | 
					e573f54b0c | ||
| 
						 | 
					e070d93f64 | ||
| 
						 | 
					1519afa391 | ||
| 
						 | 
					85ce82e504 | ||
| 
						 | 
					83c699d5a5 | ||
| 
						 | 
					56cf95278e | ||
| 
						 | 
					d0b2526a01 | ||
| 
						 | 
					7cf9d93aee | ||
| 
						 | 
					ffc5f93ef5 | ||
| 
						 | 
					97d97ef5c4 | ||
| 
						 | 
					2eb564ccaa | ||
| 
						 | 
					14baf64f41 | ||
| 
						 | 
					4c113d8850 | ||
| 
						 | 
					3243d9ee44 | ||
| 
						 | 
					672b391523 | ||
| 
						 | 
					0eda085f1e | ||
| 
						 | 
					2cc21caf32 | ||
| 
						 | 
					7b69bc2ae8 | ||
| 
						 | 
					7ad167f4c4 | ||
| 
						 | 
					920d0636ff | ||
| 
						 | 
					54e6a2dce5 | ||
| 
						 | 
					b01a9bd864 | ||
| 
						 | 
					9f067a059d | ||
| 
						 | 
					5a91d62100 | ||
| 
						 | 
					3a5b7b63ae | ||
| 
						 | 
					9308541e6d | ||
| 
						 | 
					027cf22267 | ||
| 
						 | 
					125c05fba0 | ||
| 
						 | 
					fb19b05e1e | ||
| 
						 | 
					34b2f0085d | ||
| 
						 | 
					ce2541a826 | ||
| 
						 | 
					d44a7dac26 | ||
| 
						 | 
					475ce1e93c | ||
| 
						 | 
					0cba8f362a | ||
| 
						 | 
					afd65bc728 | ||
| 
						 | 
					f92a614a35 | ||
| 
						 | 
					ec0b405d9d | ||
| 
						 | 
					1d6dcb25c4 | ||
| 
						 | 
					178f9cbdac | ||
| 
						 | 
					6356418ae5 | ||
| 
						 | 
					28e9888764 | ||
| 
						 | 
					3afa0e0658 | ||
| 
						 | 
					3913de3cff | ||
| 
						 | 
					91e87a3705 | ||
| 
						 | 
					71e9ac486f | ||
| 
						 | 
					d93030ad27 | ||
| 
						 | 
					4e125fb67c | ||
| 
						 | 
					33f32dbd67 | ||
| 
						 | 
					74aac88dbf | ||
| 
						 | 
					0337b1ac1e | ||
| 
						 | 
					02d7623074 | ||
| 
						 | 
					c5342fb467 | ||
| 
						 | 
					557be8c56b | ||
| 
						 | 
					687784d276 | ||
| 
						 | 
					92603f7c80 | ||
| 
						 | 
					d070ec08ab | ||
| 
						 | 
					a60465be3e | ||
| 
						 | 
					14048c4717 | ||
| 
						 | 
					f199d63724 | ||
| 
						 | 
					4f759d8113 | ||
| 
						 | 
					6bc2d3d06e | ||
| 
						 | 
					a5735f68d7 | ||
| 
						 | 
					13f1d57e84 | ||
| 
						 | 
					068d43352d | ||
| 
						 | 
					e56bd8ff89 | ||
| 
						 | 
					2fce881d96 | ||
| 
						 | 
					ef3327d372 | ||
| 
						 | 
					ebf5edfd87 | ||
| 
						 | 
					bdd44eb0ab | ||
| 
						 | 
					c997e04325 | ||
| 
						 | 
					2c2c93e311 | ||
| 
						 | 
					41a23d20e4 | ||
| 
						 | 
					c769cbecb6 | ||
| 
						 | 
					707cc42dec | ||
| 
						 | 
					30f1ed211d | ||
| 
						 | 
					415ebc04a2 | ||
| 
						 | 
					598df07584 | ||
| 
						 | 
					e4b4bb5e71 | ||
| 
						 | 
					dfc3de131c | ||
| 
						 | 
					338c643250 | ||
| 
						 | 
					5af91fc005 | ||
| 
						 | 
					0ca8156efd | ||
| 
						 | 
					ccbbd7d1a5 | ||
| 
						 | 
					e5cf73b9ee | ||
| 
						 | 
					5df56111c4 | ||
| 
						 | 
					e5174c629c | ||
| 
						 | 
					3358ad07d7 | ||
| 
						 | 
					318c8b238b | ||
| 
						 | 
					f8381aafb4 | ||
| 
						 | 
					d4eb55c79f | ||
| 
						 | 
					2546a13ad2 | ||
| 
						 | 
					b92a7627f3 | ||
| 
						 | 
					258143897c | ||
| 
						 | 
					477f2fd9e7 | ||
| 
						 | 
					e37080400b | ||
| 
						 | 
					3f01324160 | ||
| 
						 | 
					4467d127c2 | ||
| 
						 | 
					2b14234abc | ||
| 
						 | 
					b945726ac2 | ||
| 
						 | 
					da160d020e | ||
| 
						 | 
					b95345731e | ||
| 
						 | 
					71562ebe57 | ||
| 
						 | 
					258e39e89f | ||
| 
						 | 
					e142c50ae6 | ||
| 
						 | 
					a84f7dcee5 | ||
| 
						 | 
					8644cbf197 | ||
| 
						 | 
					4c121f277d | ||
| 
						 | 
					12f5b0579b | ||
| 
						 | 
					6f7b669bec | ||
| 
						 | 
					951314cb79 | ||
| 
						 | 
					d360871394 | ||
| 
						 | 
					b90f71ca2a | ||
| 
						 | 
					d060e90de0 | ||
| 
						 | 
					73f7201ab3 | ||
| 
						 | 
					956bbe2c28 | ||
| 
						 | 
					e19f7a8c19 | ||
| 
						 | 
					4ed2cb1a02 | ||
| 
						 | 
					818a206a42 | ||
| 
						 | 
					1d9067b019 | ||
| 
						 | 
					5d87f6ba80 | ||
| 
						 | 
					7cf187c09f | ||
| 
						 | 
					9486bc7465 | ||
| 
						 | 
					d02b083543 | ||
| 
						 | 
					70254a5553 | ||
| 
						 | 
					b1d38de4d2 | ||
| 
						 | 
					aad49bd260 | ||
| 
						 | 
					d90cc7add0 | ||
| 
						 | 
					149859c5fe | ||
| 
						 | 
					d9c26f3aeb | ||
| 
						 | 
					0510bbe958 | ||
| 
						 | 
					12cd554af1 | ||
| 
						 | 
					5cf5ba31eb | ||
| 
						 | 
					75b719a0c8 | ||
| 
						 | 
					4e56e5341f | ||
| 
						 | 
					3895b42d1b | ||
| 
						 | 
					6c81ffaece | ||
| 
						 | 
					97cc58fb13 | ||
| 
						 | 
					c63d8fd051 | ||
| 
						 | 
					3d8eda9c86 | ||
| 
						 | 
					3283d275ba | ||
| 
						 | 
					faf9b6ea16 | ||
| 
						 | 
					452fb28394 | ||
| 
						 | 
					0428a1c4ea | ||
| 
						 | 
					98a8ea105c | ||
| 
						 | 
					83bfdddf99 | ||
| 
						 | 
					2a790861a1 | ||
| 
						 | 
					4e507881f3 | ||
| 
						 | 
					f7c2e8223f | ||
| 
						 | 
					60acc62af7 | ||
| 
						 | 
					530112b114 | ||
| 
						 | 
					6cfc56064e | ||
| 
						 | 
					4a81367dac | ||
| 
						 | 
					8c425945a2 | ||
| 
						 | 
					bb6ee46892 | ||
| 
						 | 
					9194319399 | ||
| 
						 | 
					33b1204349 | ||
| 
						 | 
					09968ee843 | ||
| 
						 | 
					523a6fad09 | ||
| 
						 | 
					54b17fc201 | ||
| 
						 | 
					25f48a2a34 | ||
| 
						 | 
					22fa782be7 | ||
| 
						 | 
					2f6d7a649c | ||
| 
						 | 
					7df90846e1 | ||
| 
						 | 
					92a9092208 | ||
| 
						 | 
					a0efcdccfa | ||
| 
						 | 
					012aeca32b | ||
| 
						 | 
					c4a505d3a8 | ||
| 
						 | 
					8df445316a | ||
| 
						 | 
					11af32466f | ||
| 
						 | 
					5538115537 | ||
| 
						 | 
					b8643477ba | ||
| 
						 | 
					796dcf6a62 | ||
| 
						 | 
					6b0c094809 | ||
| 
						 | 
					b36fc3b095 | ||
| 
						 | 
					2dd51a98e4 | ||
| 
						 | 
					761ae2b1a4 | ||
| 
						 | 
					87cae1465b | ||
| 
						 | 
					b7135ea76a | ||
| 
						 | 
					248f8e0b70 | ||
| 
						 | 
					7b33424c13 | ||
| 
						 | 
					7c82cc236b | ||
| 
						 | 
					307f8abd74 | ||
| 
						 | 
					bc63064d5c | ||
| 
						 | 
					be844d74d3 | ||
| 
						 | 
					637d739285 | ||
| 
						 | 
					66e68de16a | ||
| 
						 | 
					7f44a2ad1c | ||
| 
						 | 
					abb1abeb77 | ||
| 
						 | 
					ab1f48a346 | ||
| 
						 | 
					feb31e4200 | ||
| 
						 | 
					c31ad221a6 | ||
| 
						 | 
					44cdf1b1ca | ||
| 
						 | 
					e710e8ae37 | ||
| 
						 | 
					89ba1bdcba | ||
| 
						 | 
					0250acc50b | ||
| 
						 | 
					ec80cc99c6 | ||
| 
						 | 
					5147b675cb | ||
| 
						 | 
					ddecfcd831 | ||
| 
						 | 
					2f71fbb2a1 | ||
| 
						 | 
					1784180bf3 | ||
| 
						 | 
					634ef8c131 | ||
| 
						 | 
					4d152b771e | ||
| 
						 | 
					c634303765 | ||
| 
						 | 
					cb0d594e61 | ||
| 
						 | 
					000a227a74 | ||
| 
						 | 
					6bd35bf090 | ||
| 
						 | 
					3022d7cff3 | ||
| 
						 | 
					f86ce17f1c | ||
| 
						 | 
					42db159d26 | ||
| 
						 | 
					59b19ea6a3 | ||
| 
						 | 
					4add9c29ed | ||
| 
						 | 
					d1364ab488 | ||
| 
						 | 
					56256535c5 | ||
| 
						 | 
					35b6f3997c | ||
| 
						 | 
					463c5cb7c5 | ||
| 
						 | 
					7548aa089c | ||
| 
						 | 
					478a8c01f9 | ||
| 
						 | 
					61e6b5c0aa | ||
| 
						 | 
					91a6fffaa0 | ||
| 
						 | 
					2ce5b734bd | ||
| 
						 | 
					f99f9a8f02 | ||
| 
						 | 
					4715ccf9ca | ||
| 
						 | 
					8974e90552 | ||
| 
						 | 
					2fe13f0a45 | ||
| 
						 | 
					20ce56cc5b | ||
| 
						 | 
					47a0379e2b | ||
| 
						 | 
					37563537a9 | ||
| 
						 | 
					82d32ffb28 | ||
| 
						 | 
					024588dbe7 | ||
| 
						 | 
					47ca178a21 | ||
| 
						 | 
					12db0bdc4f | ||
| 
						 | 
					53b98fd7e9 | ||
| 
						 | 
					c7d4d85666 | ||
| 
						 | 
					4659dae6eb | ||
| 
						 | 
					68f896eee0 | ||
| 
						 | 
					06bfb3adfb | ||
| 
						 | 
					2f305331a1 | ||
| 
						 | 
					ad7361dfe0 | ||
| 
						 | 
					e47c9d750f | ||
| 
						 | 
					001c00b273 | ||
| 
						 | 
					b861f536b2 | ||
| 
						 | 
					877bcc55f2 | ||
| 
						 | 
					8f162f4e17 | ||
| 
						 | 
					089ca21b3d | ||
| 
						 | 
					137a139112 | ||
| 
						 | 
					b160f574de | ||
| 
						 | 
					d223b587e4 | ||
| 
						 | 
					77939c382d | ||
| 
						 | 
					f586052f2b | ||
| 
						 | 
					d4ed056147 | ||
| 
						 | 
					9021ea2070 | ||
| 
						 | 
					640367e886 | ||
| 
						 | 
					4b9e52eb4d | ||
| 
						 | 
					69081851ac | ||
| 
						 | 
					efcca62a35 | ||
| 
						 | 
					cd65e0a56e | ||
| 
						 | 
					2275add327 | ||
| 
						 | 
					fd1091541b | ||
| 
						 | 
					5675be4cd9 | ||
| 
						 | 
					f1486e6a53 | ||
| 
						 | 
					22a9ed6694 | ||
| 
						 | 
					ddf56cbe5f | ||
| 
						 | 
					255edf7eab | ||
| 
						 | 
					5930a29197 | ||
| 
						 | 
					07d8da60de | ||
| 
						 | 
					44afe042d1 | ||
| 
						 | 
					a073bc89c4 | ||
| 
						 | 
					63e89ceb21 | ||
| 
						 | 
					09416f36bf | ||
| 
						 | 
					508b55126f | ||
| 
						 | 
					9f65979979 | ||
| 
						 | 
					2e34ddae53 | ||
| 
						 | 
					09deb857ce | ||
| 
						 | 
					8c14d397ba | ||
| 
						 | 
					99eab1e216 | ||
| 
						 | 
					c93d089736 | ||
| 
						 | 
					429f85b77a | ||
| 
						 | 
					ea2a4b3370 | ||
| 
						 | 
					f9b9850662 | ||
| 
						 | 
					1b852fce72 | ||
| 
						 | 
					82aaffe55d | ||
| 
						 | 
					40199e0b56 | ||
| 
						 | 
					95b7dbcc18 | ||
| 
						 | 
					43f8d149bb | ||
| 
						 | 
					949a4ef793 | ||
| 
						 | 
					f74781647a | ||
| 
						 | 
					5c78230283 | ||
| 
						 | 
					ee568cc444 | ||
| 
						 | 
					2d9a3ec484 | ||
| 
						 | 
					262d945284 | ||
| 
						 | 
					f6ce2d557a | ||
| 
						 | 
					4243cae985 | ||
| 
						 | 
					40226d26b2 | ||
| 
						 | 
					d2f7d3087d | ||
| 
						 | 
					3f1e03edd9 | ||
| 
						 | 
					23e7f7f0dd | ||
| 
						 | 
					f36746a4d0 | ||
| 
						 | 
					8cb0e3af68 | ||
| 
						 | 
					eb3ddace46 | ||
| 
						 | 
					5040d56489 | ||
| 
						 | 
					fb0fbe908d | ||
| 
						 | 
					fa7bb2790a | ||
| 
						 | 
					5877bca4bc | ||
| 
						 | 
					37602d1523 | ||
| 
						 | 
					a09034563a | ||
| 
						 | 
					5b35b101f2 | ||
| 
						 | 
					058d3085a9 | ||
| 
						 | 
					74883f57da | ||
| 
						 | 
					018e351630 | ||
| 
						 | 
					6e105bf87e | ||
| 
						 | 
					61966a6088 | ||
| 
						 | 
					27c96632f1 | ||
| 
						 | 
					4108e16be6 | ||
| 
						 | 
					4e02bdc322 | ||
| 
						 | 
					ca5e09865e | ||
| 
						 | 
					fb0c7ad252 | ||
| 
						 | 
					d8950c5dd0 | ||
| 
						 | 
					257312b102 | ||
| 
						 | 
					27d947fb7d | ||
| 
						 | 
					bed98979dc | ||
| 
						 | 
					bddb4914b4 | ||
| 
						 | 
					4c6c6ecf0e | ||
| 
						 | 
					a2f5a05ff8 | ||
| 
						 | 
					639eb40035 | ||
| 
						 | 
					0d6f9d4e3e | ||
| 
						 | 
					147de9dfa9 | ||
| 
						 | 
					f6e729443e | ||
| 
						 | 
					e426c131c7 | ||
| 
						 | 
					b9661ae65d | ||
| 
						 | 
					035f7fb2fe | ||
| 
						 | 
					1b2c228de5 | ||
| 
						 | 
					4d7d1d23be | ||
| 
						 | 
					e2aacff7d4 | ||
| 
						 | 
					0eccdbc137 | ||
| 
						 | 
					939ee6a39b | ||
| 
						 | 
					8423b89996 | ||
| 
						 | 
					7d87318b04 | ||
| 
						 | 
					83caef4598 | ||
| 
						 | 
					7378860aea | ||
| 
						 | 
					6eb3f3055d | ||
| 
						 | 
					c888c81adf | ||
| 
						 | 
					fac4682212 | ||
| 
						 | 
					47026e14ce | ||
| 
						 | 
					63626449f8 | ||
| 
						 | 
					184eb1c54b | ||
| 
						 | 
					5ce6bf28d1 | ||
| 
						 | 
					f1f94f07e1 | ||
| 
						 | 
					c8fd051e06 | ||
| 
						 | 
					3e8978d836 | ||
| 
						 | 
					9a2d4eef44 | ||
| 
						 | 
					0d5fc770d3 | ||
| 
						 | 
					5590f8624b | ||
| 
						 | 
					fdc7ae22e9 | ||
| 
						 | 
					179d61c588 | ||
| 
						 | 
					47e581e453 | ||
| 
						 | 
					65573d7a07 | ||
| 
						 | 
					155056f386 | ||
| 
						 | 
					3833f8aae3 | ||
| 
						 | 
					161340d486 | ||
| 
						 | 
					e9e1fa459b | ||
| 
						 | 
					581f5479a2 | ||
| 
						 | 
					00ab67dcdb | ||
| 
						 | 
					dd3a3bc603 | ||
| 
						 | 
					0a3f562f36 | ||
| 
						 | 
					9dfd42a7e6 | ||
| 
						 | 
					a65eb347ec | ||
| 
						 | 
					2af87e9152 | ||
| 
						 | 
					d0045afb09 | ||
| 
						 | 
					1f5bdaec84 | ||
| 
						 | 
					185004cb30 | ||
| 
						 | 
					4a2eea2939 | ||
| 
						 | 
					6d3686e73d | ||
| 
						 | 
					5d0ba011c7 | ||
| 
						 | 
					87f4b1c6f6 | ||
| 
						 | 
					8067bab106 | ||
| 
						 | 
					097c7bd741 | ||
| 
						 | 
					c7bd9da446 | ||
| 
						 | 
					3d0ab6bd2e | ||
| 
						 | 
					bebfbedf3f | ||
| 
						 | 
					cba9270845 | ||
| 
						 | 
					2a9ffe7037 | ||
| 
						 | 
					4000e01b28 | ||
| 
						 | 
					68d3d36dd6 | ||
| 
						 | 
					eedfc35bbc | ||
| 
						 | 
					d39d3ec4b9 | ||
| 
						 | 
					79dfd60a0c | ||
| 
						 | 
					29ad5e0d94 | ||
| 
						 | 
					7e8ac0afcf | ||
| 
						 | 
					93df629b69 | ||
| 
						 | 
					66060dbce9 | ||
| 
						 | 
					0701afedee | ||
| 
						 | 
					a17745d6d7 | ||
| 
						 | 
					1249acfdba | ||
| 
						 | 
					c8fb6a2258 | ||
| 
						 | 
					7215737038 | ||
| 
						 | 
					6eb2e37234 | ||
| 
						 | 
					fb9707de98 | ||
| 
						 | 
					db9afbbf0e | ||
| 
						 | 
					e1b9409e63 | ||
| 
						 | 
					4b2f966b7e | ||
| 
						 | 
					a293088027 | ||
| 
						 | 
					bd043449f2 | ||
| 
						 | 
					0570e13cac | ||
| 
						 | 
					6b21249151 | ||
| 
						 | 
					4f8d646e2a | ||
| 
						 | 
					ac55a80d9f | ||
| 
						 | 
					bc09a3e487 | ||
| 
						 | 
					ff218617db | ||
| 
						 | 
					b65358b17c | ||
| 
						 | 
					e9f3e69f36 | ||
| 
						 | 
					5b2364b236 | ||
| 
						 | 
					4db29b0076 | ||
| 
						 | 
					0aae3ec5d7 | ||
| 
						 | 
					468a1c7767 | ||
| 
						 | 
					ab3ac4e466 | ||
| 
						 | 
					4d18ac83a2 | ||
| 
						 | 
					660b529c10 | ||
| 
						 | 
					565129f992 | ||
| 
						 | 
					b2a3bc3257 | ||
| 
						 | 
					bcf8a5bee6 | ||
| 
						 | 
					fc4cd39202 | ||
| 
						 | 
					b5b7c7f174 | ||
| 
						 | 
					6444442931 | ||
| 
						 | 
					e899c75d7e | ||
| 
						 | 
					cae9a3aee5 | ||
| 
						 | 
					e708790566 | ||
| 
						 | 
					0dd0015d16 | ||
| 
						 | 
					dd3d2e2c39 | ||
| 
						 | 
					9275dc4dc4 | ||
| 
						 | 
					af9123fd82 | ||
| 
						 | 
					ca32c1b311 | ||
| 
						 | 
					342f20f889 | ||
| 
						 | 
					a5b5a6a99a | ||
| 
						 | 
					c65343e719 | ||
| 
						 | 
					a7197f579c | ||
| 
						 | 
					30c11b2313 | ||
| 
						 | 
					b7033e1478 | ||
| 
						 | 
					db992975eb | ||
| 
						 | 
					c12dc45f17 | ||
| 
						 | 
					a2e4eb5aaf | ||
| 
						 | 
					58b8fb5d12 | ||
| 
						 | 
					8efeae1714 | ||
| 
						 | 
					21ad5dcfff | ||
| 
						 | 
					4074fd9149 | ||
| 
						 | 
					2f105b1c0a | ||
| 
						 | 
					a2cdc08c39 | ||
| 
						 | 
					e728bd2e1a | ||
| 
						 | 
					12e288c062 | ||
| 
						 | 
					733e15bb64 | ||
| 
						 | 
					99544e8d5d | ||
| 
						 | 
					f36337fab3 | ||
| 
						 | 
					1a46b37bd5 | ||
| 
						 | 
					5f87474a74 | ||
| 
						 | 
					6434d0b23e | ||
| 
						 | 
					d5c5d2a37f | ||
| 
						 | 
					ac96fe5877 | ||
| 
						 | 
					a6d1d26a43 | ||
| 
						 | 
					c2f5399b51 | ||
| 
						 | 
					ae6e6616a6 | ||
| 
						 | 
					a5915f75c9 | ||
| 
						 | 
					f2ba8abec5 | ||
| 
						 | 
					701c259394 | ||
| 
						 | 
					a32b404863 | ||
| 
						 | 
					b15d906dff | ||
| 
						 | 
					1c14e2e0a2 | ||
| 
						 | 
					77f54693ef | ||
| 
						 | 
					b61407713d | ||
| 
						 | 
					b120c2a271 | ||
| 
						 | 
					51ccb5928a | ||
| 
						 | 
					890c3d9d72 | ||
| 
						 | 
					84706af7fe | ||
| 
						 | 
					46a191caf6 | ||
| 
						 | 
					20ff63a8a1 | ||
| 
						 | 
					21a067e0b1 | ||
| 
						 | 
					8c7521af25 | ||
| 
						 | 
					e96b4aad2e | ||
| 
						 | 
					2e794a6943 | ||
| 
						 | 
					1e9e16fa3b | ||
| 
						 | 
					6ecccd2644 | ||
| 
						 | 
					9db49e8f2c | ||
| 
						 | 
					74cb2e2768 | ||
| 
						 | 
					e5097bf2e6 | ||
| 
						 | 
					3237d28bfb | ||
| 
						 | 
					317841529b | ||
| 
						 | 
					68dc35b548 | ||
| 
						 | 
					d6e6350523 | ||
| 
						 | 
					7036111a6c | ||
| 
						 | 
					987559e46d | ||
| 
						 | 
					fca29bfa23 | ||
| 
						 | 
					63db3daafe | ||
| 
						 | 
					2e858755c5 | ||
| 
						 | 
					b682a5e485 | ||
| 
						 | 
					efbfe4ae83 | ||
| 
						 | 
					c92e57fec3 | ||
| 
						 | 
					ca130e6db6 | ||
| 
						 | 
					248d75e566 | ||
| 
						 | 
					4715b17106 | ||
| 
						 | 
					70facb7f6e | ||
| 
						 | 
					76604f847a | ||
| 
						 | 
					c7693f625e | ||
| 
						 | 
					e50d049074 | ||
| 
						 | 
					dd003e23b7 | ||
| 
						 | 
					178b564c51 | ||
| 
						 | 
					b976ec032f | ||
| 
						 | 
					8916b201fa | ||
| 
						 | 
					ead79d3e39 | ||
| 
						 | 
					0e2f5a4f3d | ||
| 
						 | 
					78692f1e87 | ||
| 
						 | 
					02b0a51517 | ||
| 
						 | 
					a874c26c25 | ||
| 
						 | 
					1eca0aea4f | ||
| 
						 | 
					7b5a1bbe3c | ||
| 
						 | 
					b88e97f193 | ||
| 
						 | 
					6b4ecf8c83 | ||
| 
						 | 
					6093af49d5 | ||
| 
						 | 
					0d180a913f | ||
| 
						 | 
					60ae9c827e | ||
| 
						 | 
					c857e9c887 | ||
| 
						 | 
					579fce1831 | ||
| 
						 | 
					2bf77fb0c3 | ||
| 
						 | 
					774c6cda4d | ||
| 
						 | 
					afef7dee82 | ||
| 
						 | 
					7eca418465 | ||
| 
						 | 
					ebbf92898e | ||
| 
						 | 
					733ef4c815 | ||
| 
						 | 
					e5a19fa3a0 | ||
| 
						 | 
					ccb747cb3b | ||
| 
						 | 
					9a6b6f527b | ||
| 
						 | 
					43d644ed92 | ||
| 
						 | 
					eeccc193dd | ||
| 
						 | 
					0e3ce63ec1 | ||
| 
						 | 
					0c33f46fc2 | ||
| 
						 | 
					117a9e21e7 | ||
| 
						 | 
					162338b8c8 | ||
| 
						 | 
					de395db8e3 | ||
| 
						 | 
					dbea187373 | ||
| 
						 | 
					d81dab99fa | ||
| 
						 | 
					9dc5e50226 | ||
| 
						 | 
					c06c815c28 | ||
| 
						 | 
					04169f34cf | ||
| 
						 | 
					aec535c8b6 | ||
| 
						 | 
					2d4dd33627 | ||
| 
						 | 
					b0699efdab | ||
| 
						 | 
					1ca8bb5255 | ||
| 
						 | 
					bc2dac3c74 | ||
| 
						 | 
					94dd7fa7d6 | ||
| 
						 | 
					fcf65beea4 | ||
| 
						 | 
					1cf8ccd8fe | ||
| 
						 | 
					74424cb1a5 | ||
| 
						 | 
					5c20474fdb | ||
| 
						 | 
					8b0ac2306e | ||
| 
						 | 
					5195555c5a | ||
| 
						 | 
					a4660f40db | ||
| 
						 | 
					9fa9c1fdda | ||
| 
						 | 
					cac9f279fa | ||
| 
						 | 
					517321807e | ||
| 
						 | 
					ae98008c1c | ||
| 
						 | 
					45404a1644 | ||
| 
						 | 
					50338126e0 | ||
| 
						 | 
					8ac701d6c8 | ||
| 
						 | 
					158bf554c3 | ||
| 
						 | 
					9c3c7e5a09 | ||
| 
						 | 
					cd0dc8627d | ||
| 
						 | 
					44fdde7610 | ||
| 
						 | 
					95f8b963a6 | ||
| 
						 | 
					1aeaf64c66 | ||
| 
						 | 
					06caecb0c4 | ||
| 
						 | 
					b1c14598e1 | ||
| 
						 | 
					7f0d101184 | ||
| 
						 | 
					9f247ebd5a | ||
| 
						 | 
					dd9b4bc956 | ||
| 
						 | 
					6f97dd4938 | ||
| 
						 | 
					a02f25a810 | ||
| 
						 | 
					aa25cd7da2 | ||
| 
						 | 
					70fcdf1b5c | ||
| 
						 | 
					dfe662ad45 | ||
| 
						 | 
					7daa7fb278 | ||
| 
						 | 
					e7c2c86aee | ||
| 
						 | 
					c4bc2114c9 | ||
| 
						 | 
					129a22a29b | ||
| 
						 | 
					8304210c06 | ||
| 
						 | 
					aee48a3b38 | ||
| 
						 | 
					77faf14b29 | ||
| 
						 | 
					8b17579e60 | ||
| 
						 | 
					b4363162ce | ||
| 
						 | 
					873edc6311 | ||
| 
						 | 
					6ed37415fc | ||
| 
						 | 
					55fadbfb1d | ||
| 
						 | 
					ca8ab38cac | ||
| 
						 | 
					dec7eba531 | ||
| 
						 | 
					b0ae15e01d | ||
| 
						 | 
					43ba1bc805 | ||
| 
						 | 
					811ac48bd2 | ||
| 
						 | 
					e936a79f6b | ||
| 
						 | 
					0545288ebd | ||
| 
						 | 
					e635ed43bf | ||
| 
						 | 
					4d0b03b423 | ||
| 
						 | 
					f6df13d5f8 | ||
| 
						 | 
					f56a1bdf20 | ||
| 
						 | 
					9dfcc6504e | ||
| 
						 | 
					a822153309 | ||
| 
						 | 
					49f5a4d454 | ||
| 
						 | 
					326607eea1 | ||
| 
						 | 
					bfba1f37ed | ||
| 
						 | 
					374f90f392 | ||
| 
						 | 
					8adff59223 | ||
| 
						 | 
					27d93d7d8c | ||
| 
						 | 
					8a2ed0a75f | ||
| 
						 | 
					5fdd5be12b | ||
| 
						 | 
					795802f2b0 | ||
| 
						 | 
					1869766331 | ||
| 
						 | 
					1d08d51e2e | ||
| 
						 | 
					5e929effca | ||
| 
						 | 
					e618041168 | ||
| 
						 | 
					e7f8782831 | ||
| 
						 | 
					4ef172d603 | ||
| 
						 | 
					490c9d04d7 | ||
| 
						 | 
					8579b2a1e5 | ||
| 
						 | 
					3da942e237 | ||
| 
						 | 
					bcb6cf3ffa | ||
| 
						 | 
					972b07ff29 | ||
| 
						 | 
					ba19fb8ff4 | ||
| 
						 | 
					8d8b133bdf | ||
| 
						 | 
					ec30cd4e5f | ||
| 
						 | 
					f2fbf206b6 | ||
| 
						 | 
					1fdd5478c6 | ||
| 
						 | 
					9537542647 | ||
| 
						 | 
					0993ff81bb | ||
| 
						 | 
					894cd2cd68 | ||
| 
						 | 
					c16d1b03aa | ||
| 
						 | 
					451315643f | ||
| 
						 | 
					d77182e7a6 | ||
| 
						 | 
					8edeed8418 | ||
| 
						 | 
					112102b10c | ||
| 
						 | 
					ae63ed04c5 | ||
| 
						 | 
					85acb82469 | ||
| 
						 | 
					51d09fb4f7 | ||
| 
						 | 
					8308c170db | ||
| 
						 | 
					07fe19889b | ||
| 
						 | 
					0c293ae988 | ||
| 
						 | 
					18c92d9de7 | ||
| 
						 | 
					2440ed080c | ||
| 
						 | 
					669da58715 | ||
| 
						 | 
					39f1ddd9d0 | ||
| 
						 | 
					34e912d9f2 | ||
| 
						 | 
					44172a8c7f | ||
| 
						 | 
					a6d7fb8739 | ||
| 
						 | 
					d16ce5a735 | ||
| 
						 | 
					a40a026d15 | ||
| 
						 | 
					6c5f4beb53 | ||
| 
						 | 
					26b0ddf200 | ||
| 
						 | 
					b6690df2be | ||
| 
						 | 
					6dacec7ded | ||
| 
						 | 
					429b5f3ec9 | ||
| 
						 | 
					81bacda627 | ||
| 
						 | 
					6960cb4c38 | ||
| 
						 | 
					7b61b34c56 | ||
| 
						 | 
					386d3b9e67 | ||
| 
						 | 
					5049c5c694 | ||
| 
						 | 
					292879aca4 | ||
| 
						 | 
					dcb9e2a004 | ||
| 
						 | 
					0d10c60b31 | ||
| 
						 | 
					08e0b277bc | ||
| 
						 | 
					58736b3902 | ||
| 
						 | 
					f7354cdf28 | ||
| 
						 | 
					196f27c4ad | ||
| 
						 | 
					c1f32e8214 | ||
| 
						 | 
					eee2762852 | ||
| 
						 | 
					c79fa28a66 | ||
| 
						 | 
					1e692e5890 | ||
| 
						 | 
					ceafdf109b | ||
| 
						 | 
					450251f082 | ||
| 
						 | 
					ceef058065 | ||
| 
						 | 
					b04a526a19 | ||
| 
						 | 
					2f195a07b2 | ||
| 
						 | 
					f38eeedfd7 | ||
| 
						 | 
					8ca1e4d548 | ||
| 
						 | 
					e07cc4bb63 | ||
| 
						 | 
					c5bdd86f96 | ||
| 
						 | 
					aa26e2ef36 | ||
| 
						 | 
					9445962237 | ||
| 
						 | 
					6b898b63f0 | ||
| 
						 | 
					f7a4d03ba2 | ||
| 
						 | 
					ade1e2eb7b | ||
| 
						 | 
					a9a605de3e | ||
| 
						 | 
					7ec11de523 | ||
| 
						 | 
					18eb92a72b | ||
| 
						 | 
					9ddb934784 | ||
| 
						 | 
					4f8ac179bf | ||
| 
						 | 
					02b8e51562 | ||
| 
						 | 
					d27196e334 | ||
| 
						 | 
					3edaa35d49 | ||
| 
						 | 
					88258070c4 | ||
| 
						 | 
					beb4edd3cf | ||
| 
						 | 
					364ff7087d | ||
| 
						 | 
					0b3ee07a2a | ||
| 
						 | 
					a49a580a77 | ||
| 
						 | 
					7080e9f83c | ||
| 
						 | 
					59a48bfa1f | ||
| 
						 | 
					42e8063a32 | ||
| 
						 | 
					c23bbe6b65 | ||
| 
						 | 
					d8f47ed195 | ||
| 
						 | 
					d7c975e8d8 | ||
| 
						 | 
					bf21dd1578 | ||
| 
						 | 
					9013f56451 | ||
| 
						 | 
					3012c232eb | ||
| 
						 | 
					26390c60fb | ||
| 
						 | 
					cdb039672c | ||
| 
						 | 
					7281b8dd4d | ||
| 
						 | 
					39fc76c4e4 | ||
| 
						 | 
					a6d51c3a9e | ||
| 
						 | 
					18b2227a0a | ||
| 
						 | 
					47701feb08 | ||
| 
						 | 
					59b903f3bb | ||
| 
						 | 
					d433eb3896 | ||
| 
						 | 
					c1e9841118 | ||
| 
						 | 
					dd59820051 | ||
| 
						 | 
					967476799f | ||
| 
						 | 
					6b1e322865 | ||
| 
						 | 
					1d8da4b525 | ||
| 
						 | 
					292c7bd4c0 | ||
| 
						 | 
					558fe6b453 | ||
| 
						 | 
					bed119c9e5 | ||
| 
						 | 
					64d330b726 | ||
| 
						 | 
					cc25c52048 | ||
| 
						 | 
					233210b906 | ||
| 
						 | 
					f68e92eb9a | ||
| 
						 | 
					b225081c2b | ||
| 
						 | 
					30bbc5e1e1 | ||
| 
						 | 
					0c07eb71a7 | ||
| 
						 | 
					0b1202cd9e | ||
| 
						 | 
					8212662d9d | ||
| 
						 | 
					f697923c48 | ||
| 
						 | 
					af77ce70b6 | ||
| 
						 | 
					507a9e9cb3 | ||
| 
						 | 
					779446298c | ||
| 
						 | 
					cb76d96efb | ||
| 
						 | 
					de1489b39b | ||
| 
						 | 
					5155e1c67a | ||
| 
						 | 
					1e9a958324 | ||
| 
						 | 
					56227abc5e | ||
| 
						 | 
					f9e651b333 | ||
| 
						 | 
					bdaf53e799 | ||
| 
						 | 
					33f4e6763b | ||
| 
						 | 
					eaa550d690 | ||
| 
						 | 
					f275c66e95 | ||
| 
						 | 
					17fffea873 | ||
| 
						 | 
					1e3363d2a4 | ||
| 
						 | 
					6667bb6b77 | ||
| 
						 | 
					b90bedbcb2 | ||
| 
						 | 
					c2a154a33e | ||
| 
						 | 
					6bbc086760 | ||
| 
						 | 
					bb98fd8c85 | ||
| 
						 | 
					e9b0ec9148 | ||
| 
						 | 
					c53903eb3f | ||
| 
						 | 
					57c7e23622 | ||
| 
						 | 
					cdb694aeb3 | ||
| 
						 | 
					6cafa16a56 | ||
| 
						 | 
					5589ebd9c3 | ||
| 
						 | 
					f645e5b62e | ||
| 
						 | 
					ad07c94c8d | ||
| 
						 | 
					5a9c04619f | ||
| 
						 | 
					ed94d5d5cd | ||
| 
						 | 
					ea076a28f2 | ||
| 
						 | 
					c9ccb66944 | ||
| 
						 | 
					cb6279f102 | ||
| 
						 | 
					b79b315dd4 | ||
| 
						 | 
					c40592d2ce | ||
| 
						 | 
					05170bc94c | ||
| 
						 | 
					07ad774f0a | ||
| 
						 | 
					a8da1afe05 | ||
| 
						 | 
					ff2c1efae8 | ||
| 
						 | 
					05e2c0f048 | ||
| 
						 | 
					d329a961bd | ||
| 
						 | 
					606cdb69bf | ||
| 
						 | 
					a5695e7ef8 | ||
| 
						 | 
					2978b5edff | ||
| 
						 | 
					be79fabcbf | ||
| 
						 | 
					ec2f16fa16 | ||
| 
						 | 
					7b6e26628a | ||
| 
						 | 
					2981fe9eb7 | ||
| 
						 | 
					20d002e155 | ||
| 
						 | 
					cfe6356531 | ||
| 
						 | 
					e33ab90379 | ||
| 
						 | 
					d8f3c2b42b | ||
| 
						 | 
					3debe00581 | ||
| 
						 | 
					eb6113fc33 | ||
| 
						 | 
					166c610957 | ||
| 
						 | 
					b9f16c9635 | ||
| 
						 | 
					1ed708ef39 | ||
| 
						 | 
					5e4124d38d | ||
| 
						 | 
					0d00ce6e38 | ||
| 
						 | 
					057df41a9b | ||
| 
						 | 
					5eb89619d6 | ||
| 
						 | 
					6e03626eed | ||
| 
						 | 
					d9efbe80e1 | ||
| 
						 | 
					da9456dbca | ||
| 
						 | 
					ac9390f08c | ||
| 
						 | 
					3f602e5a25 | ||
| 
						 | 
					6647da58fc | ||
| 
						 | 
					225a338139 | ||
| 
						 | 
					bfdf17ff32 | ||
| 
						 | 
					260b8e5f36 | ||
| 
						 | 
					9a009b24da | ||
| 
						 | 
					83765a5a34 | ||
| 
						 | 
					bdc08ae28e | ||
| 
						 | 
					34ede2a91a | ||
| 
						 | 
					0424747e95 | ||
| 
						 | 
					8d5e170091 | ||
| 
						 | 
					68ee133f87 | ||
| 
						 | 
					27cd1e0d05 | ||
| 
						 | 
					3dc4c92553 | ||
| 
						 | 
					188e95f680 | ||
| 
						 | 
					c5f4e9d095 | ||
| 
						 | 
					e541da2a8f | ||
| 
						 | 
					e55399c667 | ||
| 
						 | 
					e7102559b9 | ||
| 
						 | 
					32f8eb46ee | ||
| 
						 | 
					0e01a37a69 | ||
| 
						 | 
					927e626f03 | ||
| 
						 | 
					277a048f4f | ||
| 
						 | 
					dd0b37690b | ||
| 
						 | 
					83194a23a3 | ||
| 
						 | 
					a1ff081b8a | ||
| 
						 | 
					e1c70a3c93 | ||
| 
						 | 
					c43d47d69c | ||
| 
						 | 
					bbf978dbcf | ||
| 
						 | 
					090756523e | ||
| 
						 | 
					8497d28fba | ||
| 
						 | 
					cef95681ff | ||
| 
						 | 
					52a24c4bbd | ||
| 
						 | 
					e2968dd98d | ||
| 
						 | 
					79b9592f27 | ||
| 
						 | 
					0551f688f6 | ||
| 
						 | 
					c74ac55832 | ||
| 
						 | 
					b4dc216db3 | ||
| 
						 | 
					cbf87971a4 | ||
| 
						 | 
					4d656d12e9 | ||
| 
						 | 
					da78dc4785 | ||
| 
						 | 
					bd52d4e49c | ||
| 
						 | 
					e0345e5e0a | ||
| 
						 | 
					c1dd86d702 | ||
| 
						 | 
					b25faf3c2a | ||
| 
						 | 
					384d6b894a | ||
| 
						 | 
					a061668b1a | ||
| 
						 | 
					489d8c5cd0 | ||
| 
						 | 
					daa996f177 | ||
| 
						 | 
					7deacbaa11 | ||
| 
						 | 
					c3dfd63bf3 | ||
| 
						 | 
					f5b91cd03d | ||
| 
						 | 
					8e43b16d22 | ||
| 
						 | 
					4ef6dae1cd | ||
| 
						 | 
					0b91df05e0 | ||
| 
						 | 
					feafb6cb2e | ||
| 
						 | 
					0391d35a67 | ||
| 
						 | 
					a93b4d9789 | ||
| 
						 | 
					eefa1b1c64 | ||
| 
						 | 
					016e547daa | ||
| 
						 | 
					b588eaed02 | ||
| 
						 | 
					36e0345ce6 | ||
| 
						 | 
					62796722f1 | ||
| 
						 | 
					935ffd0dc0 | ||
| 
						 | 
					fa54e6e2a4 | ||
| 
						 | 
					179e760cf1 | ||
| 
						 | 
					47faa8595a | ||
| 
						 | 
					9ab97b29ae | ||
| 
						 | 
					24df40eca7 | ||
| 
						 | 
					02a22611be | ||
| 
						 | 
					59a0fb8cd9 | ||
| 
						 | 
					d383703b78 | ||
| 
						 | 
					8291e10b96 | ||
| 
						 | 
					312e4aeb86 | ||
| 
						 | 
					ac4f25e3a7 | ||
| 
						 | 
					7646739431 | ||
| 
						 | 
					5f19a9418e | ||
| 
						 | 
					3858e28e07 | ||
| 
						 | 
					f53455977d | ||
| 
						 | 
					9ca1f6a988 | ||
| 
						 | 
					1a1ff404a8 | ||
| 
						 | 
					c755b82dd9 | ||
| 
						 | 
					8fc69bb6fb | ||
| 
						 | 
					10edb7c741 | ||
| 
						 | 
					ff019dd76f | ||
| 
						 | 
					a004f34447 | ||
| 
						 | 
					10bb43c66e | ||
| 
						 | 
					b6999f10c0 | ||
| 
						 | 
					516064dc06 | ||
| 
						 | 
					a84b9d99a1 | ||
| 
						 | 
					5170ecf045 | ||
| 
						 | 
					23a28fa336 | ||
| 
						 | 
					15b5e1a6eb | ||
| 
						 | 
					ade2fdc9aa | ||
| 
						 | 
					e744936d19 | ||
| 
						 | 
					4a5b3f34a5 | ||
| 
						 | 
					7640aa5190 | ||
| 
						 | 
					35771fa776 | ||
| 
						 | 
					439c945d56 | ||
| 
						 | 
					93146b5718 | ||
| 
						 | 
					fd4a6b5dd5 | ||
| 
						 | 
					b896f8acda | ||
| 
						 | 
					29bd35bc4f | ||
| 
						 | 
					f179070113 | ||
| 
						 | 
					f813833ba1 | ||
| 
						 | 
					f349b18949 | ||
| 
						 | 
					aa15257936 | ||
| 
						 | 
					6e0c5698e4 | ||
| 
						 | 
					cf4ad8d6f7 | ||
| 
						 | 
					2a3f8cc57d | ||
| 
						 | 
					560c79615c | ||
| 
						 | 
					d1b2a1c4f9 | ||
| 
						 | 
					9d8f425a9a | ||
| 
						 | 
					fbec1f1070 | ||
| 
						 | 
					d978d8ddbb | ||
| 
						 | 
					e07542a1ff | ||
| 
						 | 
					155f26eee2 | ||
| 
						 | 
					9eee0c883b | ||
| 
						 | 
					939767d502 | ||
| 
						 | 
					dccb297678 | ||
| 
						 | 
					2152e37722 | ||
| 
						 | 
					28cd2c1191 | ||
| 
						 | 
					947c512435 | ||
| 
						 | 
					42c4e6c7b1 | ||
| 
						 | 
					f9cb4a42a0 | ||
| 
						 | 
					0f3e84f415 | ||
| 
						 | 
					6a0bd57ec4 | ||
| 
						 | 
					fc1118cb5a | ||
| 
						 | 
					070976e443 | ||
| 
						 | 
					0bcaed3564 | ||
| 
						 | 
					df00b38a0b | ||
| 
						 | 
					aca6310dac | ||
| 
						 | 
					ff98833136 | ||
| 
						 | 
					1443bc381c | ||
| 
						 | 
					9d82635b15 | ||
| 
						 | 
					fa80012e71 | ||
| 
						 | 
					43d9a62473 | ||
| 
						 | 
					51e1a2e04a | ||
| 
						 | 
					b8a3178a1b | ||
| 
						 | 
					bb94d18115 | ||
| 
						 | 
					3b79965e38 | ||
| 
						 | 
					e82e3c3fdc | ||
| 
						 | 
					f39d628512 | ||
| 
						 | 
					5b33308528 | ||
| 
						 | 
					444fdcf905 | ||
| 
						 | 
					1bf0426aaf | ||
| 
						 | 
					8139505829 | ||
| 
						 | 
					c9540015c8 | ||
| 
						 | 
					2070cfe107 | ||
| 
						 | 
					91f4aeec20 | ||
| 
						 | 
					8c1df9ef8d | ||
| 
						 | 
					c428ac7563 | ||
| 
						 | 
					e12179aa92 | ||
| 
						 | 
					cd9650c07e | ||
| 
						 | 
					5e3e3ad445 | ||
| 
						 | 
					e6a352dcfe | ||
| 
						 | 
					e17976a172 | ||
| 
						 | 
					ae6a7e7c0b | ||
| 
						 | 
					717a26e37d | ||
| 
						 | 
					8dadb17f83 | ||
| 
						 | 
					281f7583f5 | ||
| 
						 | 
					a7956f334e | ||
| 
						 | 
					3e026ded6f | ||
| 
						 | 
					4e485443d3 | ||
| 
						 | 
					01b58a0582 | ||
| 
						 | 
					f83ea4b124 | ||
| 
						 | 
					b8d7dcec77 | ||
| 
						 | 
					b77dae3499 | ||
| 
						 | 
					0b04bfa7c0 | ||
| 
						 | 
					4953c15bdf | ||
| 
						 | 
					437f2c335f | ||
| 
						 | 
					e68cdf304f | ||
| 
						 | 
					a2544e496c | ||
| 
						 | 
					e5b824388d | ||
| 
						 | 
					214842853c | ||
| 
						 | 
					cf6b9e3ec1 | ||
| 
						 | 
					50d354bc21 | ||
| 
						 | 
					3c9da65652 | ||
| 
						 | 
					8340e4267c | ||
| 
						 | 
					c9ee3ae4f0 | ||
| 
						 | 
					e21b9d842c | ||
| 
						 | 
					15e4f67402 | ||
| 
						 | 
					01bec0daa2 | ||
| 
						 | 
					d19813cc4b | ||
| 
						 | 
					cf7660c975 | ||
| 
						 | 
					9c5c0c7c84 | ||
| 
						 | 
					4d2f279d2d | ||
| 
						 | 
					371fc25967 | ||
| 
						 | 
					b316c380ad | ||
| 
						 | 
					695631b298 | ||
| 
						 | 
					6626395c88 | ||
| 
						 | 
					0ced4181b0 | ||
| 
						 | 
					4f6f84e7e1 | ||
| 
						 | 
					b8456d1ba6 | ||
| 
						 | 
					fbdf85b553 | ||
| 
						 | 
					e13cb291dd | ||
| 
						 | 
					8193bf2070 | ||
| 
						 | 
					5efd0987f3 | ||
| 
						 | 
					60cf07c875 | ||
| 
						 | 
					3c738ed46d | ||
| 
						 | 
					9353a4a9cb | ||
| 
						 | 
					18dfd96635 | ||
| 
						 | 
					77751e0fbf | ||
| 
						 | 
					d9a13b317e | ||
| 
						 | 
					d449496aa4 | ||
| 
						 | 
					2f90341225 | ||
| 
						 | 
					ab44e1c6cc | ||
| 
						 | 
					a3f59f1a5b | ||
| 
						 | 
					212d36a33c | ||
| 
						 | 
					d0304b19a2 | ||
| 
						 | 
					c69b208bd4 | ||
| 
						 | 
					397c5e2e02 | ||
| 
						 | 
					77c4c015e3 | ||
| 
						 | 
					43a4bc5b8b | ||
| 
						 | 
					1df4081e50 | ||
| 
						 | 
					b9d6a03e25 | ||
| 
						 | 
					8841d87365 | ||
| 
						 | 
					d9e3f834d7 | ||
| 
						 | 
					210282d00f | ||
| 
						 | 
					17f7c6d3ed | ||
| 
						 | 
					a02bf31d50 | ||
| 
						 | 
					98677b4348 | ||
| 
						 | 
					03d5fd6cb7 | ||
| 
						 | 
					3a811ef563 | ||
| 
						 | 
					3e4f58e416 | ||
| 
						 | 
					b7be46ed8a | ||
| 
						 | 
					902ad91212 | ||
| 
						 | 
					ca584143c6 | ||
| 
						 | 
					892144dc71 | ||
| 
						 | 
					8d024d05d2 | ||
| 
						 | 
					69ad0e386e | ||
| 
						 | 
					2e88dd72d1 | ||
| 
						 | 
					7924fafb25 | ||
| 
						 | 
					7f61f413f4 | ||
| 
						 | 
					865c43080a | ||
| 
						 | 
					c0d74a3860 | ||
| 
						 | 
					3c7909ccec | ||
| 
						 | 
					48ec815e99 | ||
| 
						 | 
					80c6dc86ed | ||
| 
						 | 
					25ca2b3cc5 | ||
| 
						 | 
					f7fe170a5e | ||
| 
						 | 
					e65ab4a3f7 | ||
| 
						 | 
					2694017426 | ||
| 
						 | 
					00e75ccd7d | ||
| 
						 | 
					e907816380 | ||
| 
						 | 
					b55915c1fe | ||
| 
						 | 
					5b8b3b8384 | ||
| 
						 | 
					9f74b95015 | ||
| 
						 | 
					8b7b23cf8f | ||
| 
						 | 
					b7eb5f66dc | ||
| 
						 | 
					427be23b6e | ||
| 
						 | 
					ba767481d9 | ||
| 
						 | 
					490f28ffd1 | ||
| 
						 | 
					c7f075236b | ||
| 
						 | 
					44a2b3cf69 | ||
| 
						 | 
					f0d633b5ac | ||
| 
						 | 
					0f3f03b51d | ||
| 
						 | 
					fa7b3f0e4c | ||
| 
						 | 
					6725d7893c | ||
| 
						 | 
					11c4e786fa | ||
| 
						 | 
					b99af4fa47 | ||
| 
						 | 
					6591f17f0a | ||
| 
						 | 
					9f122037ae | ||
| 
						 | 
					cde9dfdb77 | ||
| 
						 | 
					f0349f5266 | ||
| 
						 | 
					4807c4e636 | ||
| 
						 | 
					c1cafbddfe | ||
| 
						 | 
					bad7ac62a7 | ||
| 
						 | 
					39219230b2 | ||
| 
						 | 
					1e5fa014ba | ||
| 
						 | 
					0efec7c094 | ||
| 
						 | 
					c3a892e165 | ||
| 
						 | 
					2e02da291a | ||
| 
						 | 
					a39f479163 | ||
| 
						 | 
					e50d568f25 | ||
| 
						 | 
					0c471b84f7 | ||
| 
						 | 
					1e59617d2c | ||
| 
						 | 
					e93f545c74 | ||
| 
						 | 
					a1437f1ad0 | ||
| 
						 | 
					1d8cb34bc8 | ||
| 
						 | 
					7a6f99a607 | ||
| 
						 | 
					93a39e8782 | ||
| 
						 | 
					a1dff15252 | ||
| 
						 | 
					ee2c0f7701 | ||
| 
						 | 
					d3a6537fce | ||
| 
						 | 
					b0b797b396 | ||
| 
						 | 
					2de5b5cf4a | ||
| 
						 | 
					2625ce7875 | ||
| 
						 | 
					65f3adca21 | ||
| 
						 | 
					ecde730ec4 | ||
| 
						 | 
					e553829a59 | ||
| 
						 | 
					7cc12a3d63 | ||
| 
						 | 
					ad98f2c20d | ||
| 
						 | 
					dc8ca3dfaf | ||
| 
						 | 
					ae128734ac | ||
| 
						 | 
					f86bbd718d | ||
| 
						 | 
					283aed75cf | ||
| 
						 | 
					15d78412bc | ||
| 
						 | 
					1fd9216ca4 | ||
| 
						 | 
					a7eb18db4e | ||
| 
						 | 
					5ecb00ed23 | ||
| 
						 | 
					5e89b0c82d | ||
| 
						 | 
					22b7b07932 | ||
| 
						 | 
					57bc0d7895 | ||
| 
						 | 
					5334778dbd | ||
| 
						 | 
					1dd953b0c0 | ||
| 
						 | 
					fa3dbfd8d6 | ||
| 
						 | 
					4eb57b590b | ||
| 
						 | 
					12bf203167 | ||
| 
						 | 
					cf2d479437 | ||
| 
						 | 
					413fed9858 | ||
| 
						 | 
					60f14cca38 | ||
| 
						 | 
					4f54760c4b | ||
| 
						 | 
					c0e7a0124d | ||
| 
						 | 
					b8cf379fd6 | ||
| 
						 | 
					085a03d107 | ||
| 
						 | 
					ab788a2ed1 | ||
| 
						 | 
					4c6e07c309 | ||
| 
						 | 
					e311cc0140 | ||
| 
						 | 
					a5c9229084 | ||
| 
						 | 
					a0c032b2ff | ||
| 
						 | 
					03ec91f943 | ||
| 
						 | 
					7233b72145 | ||
| 
						 | 
					1656841f25 | ||
| 
						 | 
					799511d472 | ||
| 
						 | 
					ffb90f4cb5 | ||
| 
						 | 
					e46b124ca4 | ||
| 
						 | 
					c6b9f3a13d | ||
| 
						 | 
					6d5b606c46 | ||
| 
						 | 
					dd09b17eae | ||
| 
						 | 
					caa7049e2b | ||
| 
						 | 
					b2615bcc76 | ||
| 
						 | 
					1c0ded41af | ||
| 
						 | 
					7bbdfb3d84 | ||
| 
						 | 
					0086d2771d | ||
| 
						 | 
					98bc7d4fb7 | ||
| 
						 | 
					be9df69116 | ||
| 
						 | 
					f80a5ae1de | ||
| 
						 | 
					b1a148905a | ||
| 
						 | 
					8457fca570 | ||
| 
						 | 
					999897f587 | ||
| 
						 | 
					ab2d1ca41e | ||
| 
						 | 
					ee489ee6d7 | ||
| 
						 | 
					6250dcb1dc | ||
| 
						 | 
					797f9170d7 | ||
| 
						 | 
					071686ac6e | ||
| 
						 | 
					70c9c05153 | ||
| 
						 | 
					bf84670aaa | ||
| 
						 | 
					d35c0137b7 | ||
| 
						 | 
					ae39724a63 | ||
| 
						 | 
					8da254ea74 | ||
| 
						 | 
					47c8bcc8c9 | ||
| 
						 | 
					9523e28179 | ||
| 
						 | 
					a4d5ca633a | ||
| 
						 | 
					3102c550ff | ||
| 
						 | 
					51dd80c48b | ||
| 
						 | 
					14e870e2ec | ||
| 
						 | 
					a6265aa0df | ||
| 
						 | 
					4c870f4be9 | ||
| 
						 | 
					a29e37a4c1 | ||
| 
						 | 
					aabe013dd0 | ||
| 
						 | 
					07984e0b81 | ||
| 
						 | 
					7ec3603996 | ||
| 
						 | 
					b991de0f15 | ||
| 
						 | 
					601f0ede61 | ||
| 
						 | 
					0d32a3b4fe | ||
| 
						 | 
					650f9a2d9e | ||
| 
						 | 
					05839597bf | ||
| 
						 | 
					8eac8bcbfc | ||
| 
						 | 
					8dd5ea0729 | ||
| 
						 | 
					d98e7def76 | ||
| 
						 | 
					5b25c8ccd0 | ||
| 
						 | 
					135abb5d74 | ||
| 
						 | 
					12cad28ee8 | ||
| 
						 | 
					b840be9875 | ||
| 
						 | 
					863daa29cb | ||
| 
						 | 
					3cf845fbfb | ||
| 
						 | 
					c49bee8d0b | ||
| 
						 | 
					0dfb771671 | ||
| 
						 | 
					452d98f329 | ||
| 
						 | 
					a981f517f3 | ||
| 
						 | 
					736bacde90 | ||
| 
						 | 
					df0eb17172 | ||
| 
						 | 
					f274ec0652 | ||
| 
						 | 
					b7593369fb | ||
| 
						 | 
					ef407ea50c | ||
| 
						 | 
					345b9a3217 | ||
| 
						 | 
					af719e60c5 | ||
| 
						 | 
					84022a12fd | ||
| 
						 | 
					c7b55aa6f4 | ||
| 
						 | 
					5e70a131e9 | ||
| 
						 | 
					1e83e6662f | ||
| 
						 | 
					b6c049cb3c | ||
| 
						 | 
					39d7b014cf | ||
| 
						 | 
					bd645f5095 | ||
| 
						 | 
					856f24eb7e | ||
| 
						 | 
					f060db5ec5 | ||
| 
						 | 
					180eb810cf | ||
| 
						 | 
					25f32ce8b8 | ||
| 
						 | 
					5eaf15574a | ||
| 
						 | 
					467e76aa32 | ||
| 
						 | 
					63bda7de11 | ||
| 
						 | 
					ec474a4bd2 | ||
| 
						 | 
					74ff9828de | ||
| 
						 | 
					25530fff71 | ||
| 
						 | 
					df2bd0e6fb | ||
| 
						 | 
					1ed0c6926e | ||
| 
						 | 
					7a2b49a629 | ||
| 
						 | 
					a33105dcd1 | ||
| 
						 | 
					a5b5952598 | ||
| 
						 | 
					c6e936d6c2 | ||
| 
						 | 
					ab2abee1fe | ||
| 
						 | 
					67d79b92e6 | ||
| 
						 | 
					9ba956ca8b | ||
| 
						 | 
					c50ecda715 | ||
| 
						 | 
					9d928b240b | ||
| 
						 | 
					870fa2797c | ||
| 
						 | 
					8d1efc81f6 | ||
| 
						 | 
					2b6dbb07e8 | ||
| 
						 | 
					7caf3f8429 | ||
| 
						 | 
					1a6f88f218 | ||
| 
						 | 
					06cb16580e | ||
| 
						 | 
					2b690fff78 | ||
| 
						 | 
					7058a8c006 | ||
| 
						 | 
					b71db1a9a5 | ||
| 
						 | 
					420c96d17b | ||
| 
						 | 
					6817978ddb | ||
| 
						 | 
					efedfe12ff | ||
| 
						 | 
					90ab7c7c48 | ||
| 
						 | 
					fa9e38b36f | ||
| 
						 | 
					33bda862da | ||
| 
						 | 
					ef2b5eea53 | ||
| 
						 | 
					45279951aa | ||
| 
						 | 
					47b4581907 | ||
| 
						 | 
					b5d6597c0a | ||
| 
						 | 
					4a87df8e79 | ||
| 
						 | 
					7715e4de61 | ||
| 
						 | 
					982a08b80d | ||
| 
						 | 
					157718a7a3 | ||
| 
						 | 
					72b95c4a66 | ||
| 
						 | 
					4fe894cbe7 | ||
| 
						 | 
					0c9f22ac66 | ||
| 
						 | 
					bde8d2dd6b | ||
| 
						 | 
					6e27c52336 | ||
| 
						 | 
					efeba4a7f1 | ||
| 
						 | 
					a9d44b95bd | ||
| 
						 | 
					34bdaaa33f | ||
| 
						 | 
					508fa48aa6 | ||
| 
						 | 
					66b461a5ab | ||
| 
						 | 
					e3d70f2c43 | ||
| 
						 | 
					5502fb271d | ||
| 
						 | 
					e6f96a7a86 | ||
| 
						 | 
					005391ca5b | ||
| 
						 | 
					3a3d6d7b9a | ||
| 
						 | 
					4ded22b00b | ||
| 
						 | 
					b615d12897 | ||
| 
						 | 
					21244add31 | ||
| 
						 | 
					e7b09536bf | ||
| 
						 | 
					a0b06ecbd4 | ||
| 
						 | 
					3f873b0c39 | ||
| 
						 | 
					05bf66dff0 | ||
| 
						 | 
					069ca5df40 | ||
| 
						 | 
					eb817807bc | ||
| 
						 | 
					fc6f64742c | ||
| 
						 | 
					d040fa2a7d | ||
| 
						 | 
					4d46eac733 | ||
| 
						 | 
					85691130b1 | ||
| 
						 | 
					c4d78a3469 | ||
| 
						 | 
					dd4535b7f1 | ||
| 
						 | 
					1734e53410 | ||
| 
						 | 
					843fe45dee | ||
| 
						 | 
					51dabeafaa | ||
| 
						 | 
					05fc4a4cb7 | ||
| 
						 | 
					f3c0c7c0b3 | ||
| 
						 | 
					c2aefbb3e1 | ||
| 
						 | 
					296ddebed1 | ||
| 
						 | 
					922b7dbd46 | ||
| 
						 | 
					ffcf5ab999 | ||
| 
						 | 
					592565aef5 | ||
| 
						 | 
					53f76a1dad | ||
| 
						 | 
					ce4b719459 | ||
| 
						 | 
					19ac723e48 | ||
| 
						 | 
					a1ded68a49 | ||
| 
						 | 
					8a927a1b6a | ||
| 
						 | 
					eab10c91b7 | ||
| 
						 | 
					6c19b0e438 | ||
| 
						 | 
					6f15c062a3 | ||
| 
						 | 
					afe3b1918d | ||
| 
						 | 
					eaeda12c54 | ||
| 
						 | 
					60df88777e | ||
| 
						 | 
					3dc1621200 | ||
| 
						 | 
					14cbca87c8 | ||
| 
						 | 
					ce1087165d | ||
| 
						 | 
					aafd21c7d9 | ||
| 
						 | 
					9611833e33 | ||
| 
						 | 
					62d576880b | ||
| 
						 | 
					378e511e04 | ||
| 
						 | 
					1f9ba7b326 | ||
| 
						 | 
					3010f03414 | ||
| 
						 | 
					938abb0236 | ||
| 
						 | 
					1256f34736 | ||
| 
						 | 
					d1ac40391e | ||
| 
						 | 
					33a3550df4 | ||
| 
						 | 
					1c668252c9 | ||
| 
						 | 
					55ee4c9553 | ||
| 
						 | 
					ad1cbe34b4 | ||
| 
						 | 
					aa58390673 | ||
| 
						 | 
					5aa9c8f44c | ||
| 
						 | 
					e62ad97937 | ||
| 
						 | 
					6d81286b08 | ||
| 
						 | 
					40ebd4704a | ||
| 
						 | 
					241d033f37 | ||
| 
						 | 
					5e6c713d9c | ||
| 
						 | 
					c76e6769db | ||
| 
						 | 
					497b61f4ab | ||
| 
						 | 
					28c7f37204 | ||
| 
						 | 
					c0910498e8 | ||
| 
						 | 
					bfa5fd3add | ||
| 
						 | 
					f43e284b22 | ||
| 
						 | 
					c67bb2ac9f | ||
| 
						 | 
					d58431a097 | ||
| 
						 | 
					ff07226814 | ||
| 
						 | 
					65b31ffbb2 | ||
| 
						 | 
					adcd9289c2 | ||
| 
						 | 
					71ae473187 | ||
| 
						 | 
					7e1b3b9157 | ||
| 
						 | 
					f673fb960a | ||
| 
						 | 
					7d30c8cebc | ||
| 
						 | 
					d645ce86e9 | ||
| 
						 | 
					7b6cfc17c4 | ||
| 
						 | 
					5063de59b1 | ||
| 
						 | 
					e0ed3aa141 | ||
| 
						 | 
					3b6c3d6d64 | ||
| 
						 | 
					e07fab17b1 | ||
| 
						 | 
					3da161131a | ||
| 
						 | 
					b1f4200608 | ||
| 
						 | 
					2d4f7847d8 | ||
| 
						 | 
					81a26d988a | ||
| 
						 | 
					1d524784ff | ||
| 
						 | 
					a6b61df983 | ||
| 
						 | 
					72670833cb | ||
| 
						 | 
					1902c6bf94 | ||
| 
						 | 
					7a90d92aef | ||
| 
						 | 
					a5fb74f3f2 | ||
| 
						 | 
					adbb2e09df | ||
| 
						 | 
					39b9f65d0d | ||
| 
						 | 
					cf9629b9c7 | ||
| 
						 | 
					8907c8dd3d | ||
| 
						 | 
					c1a278b0eb | ||
| 
						 | 
					21ab8f4640 | ||
| 
						 | 
					e1ef0bd4fd | ||
| 
						 | 
					151babd168 | ||
| 
						 | 
					9fd8254ada | ||
| 
						 | 
					5329241831 | ||
| 
						 | 
					e876e210da | ||
| 
						 | 
					e6d1bcdf82 | ||
| 
						 | 
					c3d9c40a74 | ||
| 
						 | 
					4014a8ff0d | ||
| 
						 | 
					63c36773e4 | ||
| 
						 | 
					e2b827d8b1 | ||
| 
						 | 
					31a8dd2f2f | ||
| 
						 | 
					27a70171f1 | ||
| 
						 | 
					1fd7215def | ||
| 
						 | 
					acd91c0164 | ||
| 
						 | 
					9cb74e8135 | ||
| 
						 | 
					b788a3daa5 | ||
| 
						 | 
					04162c3944 | ||
| 
						 | 
					5cac54044b | ||
| 
						 | 
					ae958aa1a5 | ||
| 
						 | 
					b966b2108d | ||
| 
						 | 
					9ec32d15ab | ||
| 
						 | 
					adc1eedda3 | ||
| 
						 | 
					6d28127154 | ||
| 
						 | 
					646acbc0b2 | ||
| 
						 | 
					74b1205783 | ||
| 
						 | 
					f7567db01f | ||
| 
						 | 
					ef328ab392 | ||
| 
						 | 
					22365b2c55 | ||
| 
						 | 
					35507ce97e | ||
| 
						 | 
					d5b4c6dfd3 | ||
| 
						 | 
					234f9472c2 | ||
| 
						 | 
					a2119a660a | ||
| 
						 | 
					dadebb2196 | ||
| 
						 | 
					bec858c77f | ||
| 
						 | 
					cc1e8514f8 | ||
| 
						 | 
					b5d74751b1 | ||
| 
						 | 
					9cdf8772b3 | ||
| 
						 | 
					bd041df0cc | ||
| 
						 | 
					124e28b14e | ||
| 
						 | 
					a6f2f1afce | ||
| 
						 | 
					f7327524fc | ||
| 
						 | 
					e74ee37db5 | ||
| 
						 | 
					4bf5692888 | ||
| 
						 | 
					c2f60abe55 | ||
| 
						 | 
					be7683c79b | ||
| 
						 | 
					269a760f3d | ||
| 
						 | 
					6430410158 | ||
| 
						 | 
					ba258e65a0 | ||
| 
						 | 
					1934257636 | ||
| 
						 | 
					fba52c45e8 | ||
| 
						 | 
					2728c74b6c | ||
| 
						 | 
					46ec0f24f6 | ||
| 
						 | 
					9dc44d9bab | ||
| 
						 | 
					ea9b72ef79 | ||
| 
						 | 
					9212f8a709 | ||
| 
						 | 
					3862949a46 | ||
| 
						 | 
					c23535bc96 | ||
| 
						 | 
					e7c1b19161 | ||
| 
						 | 
					cc0a694c36 | ||
| 
						 | 
					af9b97b55f | ||
| 
						 | 
					f43b4e8cd8 | ||
| 
						 | 
					8430c55733 | ||
| 
						 | 
					ff043fa00f | ||
| 
						 | 
					040f5422f2 | ||
| 
						 | 
					c3aac8ddb4 | ||
| 
						 | 
					0b1635e371 | ||
| 
						 | 
					74f971284e | ||
| 
						 | 
					4f65cf8fb3 | ||
| 
						 | 
					b2d472fc50 | ||
| 
						 | 
					0fb57ecffc | ||
| 
						 | 
					237c761f67 | ||
| 
						 | 
					c5461c4596 | ||
| 
						 | 
					31a3bfed54 | ||
| 
						 | 
					4432a8164a | ||
| 
						 | 
					e9a9bdda13 | ||
| 
						 | 
					75f1c5ec33 | ||
| 
						 | 
					509a34f0fa | ||
| 
						 | 
					679565603a | ||
| 
						 | 
					cf029a81ac | ||
| 
						 | 
					2aeb0025cf | ||
| 
						 | 
					c11e5501aa | ||
| 
						 | 
					f0831174c3 | ||
| 
						 | 
					0c15d4977f | ||
| 
						 | 
					991da8ea2f | ||
| 
						 | 
					772de2596d | ||
| 
						 | 
					be54db83c9 | ||
| 
						 | 
					cfe1893d2c | ||
| 
						 | 
					1536ae30ee | ||
| 
						 | 
					81297e6c23 | ||
| 
						 | 
					f73e403ae5 | ||
| 
						 | 
					f2b35c3aab | ||
| 
						 | 
					f22f1cf4f4 | ||
| 
						 | 
					3c0c3c3c5f | ||
| 
						 | 
					9d2407dbc5 | ||
| 
						 | 
					28a58717be | ||
| 
						 | 
					f0ebf6c120 | ||
| 
						 | 
					7f79591522 | ||
| 
						 | 
					3be7b9ef59 | ||
| 
						 | 
					bd5de06c67 | ||
| 
						 | 
					49a57354f2 | ||
| 
						 | 
					5b4e9152ad | ||
| 
						 | 
					b8c153df54 | ||
| 
						 | 
					2310ac2c39 | ||
| 
						 | 
					89edc330f1 | ||
| 
						 | 
					1f975b6e05 | ||
| 
						 | 
					97d5e1b49b | ||
| 
						 | 
					75c0bd250e | ||
| 
						 | 
					7d4e9a019f | ||
| 
						 | 
					ddbf2626d7 | ||
| 
						 | 
					8e803116f1 | ||
| 
						 | 
					4b17e86c96 | ||
| 
						 | 
					265dc87da9 | ||
| 
						 | 
					bc87234fed | ||
| 
						 | 
					1c6dec3ffe | ||
| 
						 | 
					bee32fb05a | ||
| 
						 | 
					c98200aaa3 | ||
| 
						 | 
					ac5c8bea9c | ||
| 
						 | 
					b2cf9efc3a | ||
| 
						 | 
					a189b3a5c4 | ||
| 
						 | 
					60e76ed474 | ||
| 
						 | 
					5b27e491d4 | ||
| 
						 | 
					284a0afb1d | ||
| 
						 | 
					e8cd4d9b70 | ||
| 
						 | 
					ccf89512f6 | ||
| 
						 | 
					2ebc35e18b | ||
| 
						 | 
					69b05aca38 | ||
| 
						 | 
					c9a08ad178 | ||
| 
						 | 
					8e6ffa6a6f | 
							
								
								
									
										4
									
								
								.clang_complete
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								.clang_complete
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					-I./src
 | 
				
			||||||
 | 
					-I./src/ipaddr
 | 
				
			||||||
 | 
					-I./src/portab
 | 
				
			||||||
 | 
					-I./src/tool
 | 
				
			||||||
							
								
								
									
										1
									
								
								.dockerignore
									
									
									
									
									
										Symbolic link
									
								
							
							
						
						
									
										1
									
								
								.dockerignore
									
									
									
									
									
										Symbolic link
									
								
							@@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					.gitignore
 | 
				
			||||||
							
								
								
									
										20
									
								
								.editorconfig
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								.editorconfig
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					# ngIRCd -- The Next Generation IRC Daemon
 | 
				
			||||||
 | 
					# Copyright (c)2001-2016 Alexander Barton (alex@barton.de) and Contributors.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This program is free software; you can redistribute it and/or modify
 | 
				
			||||||
 | 
					# it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					# the Free Software Foundation; either version 2 of the License, or
 | 
				
			||||||
 | 
					# (at your option) any later version.
 | 
				
			||||||
 | 
					# Please read the file COPYING, README and AUTHORS for more information.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# .editorconfig: Editor settings, see <http://editorconfig.org>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					root = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[*]
 | 
				
			||||||
 | 
					indent_style = tab
 | 
				
			||||||
 | 
					indent_size = 8
 | 
				
			||||||
 | 
					end_of_line = lf
 | 
				
			||||||
 | 
					charset = utf-8
 | 
				
			||||||
 | 
					trim_trailing_whitespace = true
 | 
				
			||||||
 | 
					insert_final_newline = true
 | 
				
			||||||
							
								
								
									
										60
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,60 @@
 | 
				
			|||||||
 | 
					name: ngIRCd CI
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					on:
 | 
				
			||||||
 | 
					  push:
 | 
				
			||||||
 | 
					    branches:
 | 
				
			||||||
 | 
					      - master
 | 
				
			||||||
 | 
					    paths-ignore:
 | 
				
			||||||
 | 
					      - 'COPYING'
 | 
				
			||||||
 | 
					      - 'ChangeLog'
 | 
				
			||||||
 | 
					      - 'NEWS'
 | 
				
			||||||
 | 
					      - 'contrib/**'
 | 
				
			||||||
 | 
					      - 'doc/**'
 | 
				
			||||||
 | 
					      - 'man/**'
 | 
				
			||||||
 | 
					      - '**.md'
 | 
				
			||||||
 | 
					      - '**.txt'
 | 
				
			||||||
 | 
					  pull_request:
 | 
				
			||||||
 | 
					    branches:
 | 
				
			||||||
 | 
					      - master
 | 
				
			||||||
 | 
					    paths-ignore:
 | 
				
			||||||
 | 
					      - 'COPYING'
 | 
				
			||||||
 | 
					      - 'ChangeLog'
 | 
				
			||||||
 | 
					      - 'NEWS'
 | 
				
			||||||
 | 
					      - 'contrib/**'
 | 
				
			||||||
 | 
					      - 'doc/**'
 | 
				
			||||||
 | 
					      - 'man/**'
 | 
				
			||||||
 | 
					      - '**.md'
 | 
				
			||||||
 | 
					      - '**.txt'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					jobs:
 | 
				
			||||||
 | 
					  build_and_distcheck:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    name: Configure ngIRCd sources and run make targets "all" and "distcheck"
 | 
				
			||||||
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
 | 
					    timeout-minutes: 10
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					    - uses: actions/checkout@v4
 | 
				
			||||||
 | 
					    - uses: awalsh128/cache-apt-pkgs-action@v1
 | 
				
			||||||
 | 
					      with:
 | 
				
			||||||
 | 
					        packages: >
 | 
				
			||||||
 | 
					          autoconf
 | 
				
			||||||
 | 
					          automake
 | 
				
			||||||
 | 
					          build-essential
 | 
				
			||||||
 | 
					          expect
 | 
				
			||||||
 | 
					          libident-dev
 | 
				
			||||||
 | 
					          libpam0g-dev
 | 
				
			||||||
 | 
					          libssl-dev
 | 
				
			||||||
 | 
					          libwrap0-dev
 | 
				
			||||||
 | 
					          pkg-config
 | 
				
			||||||
 | 
					          telnet
 | 
				
			||||||
 | 
					          zlib1g-dev
 | 
				
			||||||
 | 
					        version: 1.0
 | 
				
			||||||
 | 
					    - name: Generate build system files
 | 
				
			||||||
 | 
					      run: ./autogen.sh
 | 
				
			||||||
 | 
					    - name: Configure the build system
 | 
				
			||||||
 | 
					      run: ./configure --enable-ipv6 --with-iconv --with-ident --with-openssl --with-pam --with-tcp-wrappers --with-zlib
 | 
				
			||||||
 | 
					    - name: Build everything
 | 
				
			||||||
 | 
					      run: make all
 | 
				
			||||||
 | 
					    - name: Create distribution archive and run tests
 | 
				
			||||||
 | 
					      run: make distcheck
 | 
				
			||||||
							
								
								
									
										54
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,54 @@
 | 
				
			|||||||
 | 
					.*.swp
 | 
				
			||||||
 | 
					.deps
 | 
				
			||||||
 | 
					.trunk
 | 
				
			||||||
 | 
					.vscode
 | 
				
			||||||
 | 
					*.a
 | 
				
			||||||
 | 
					*.e_
 | 
				
			||||||
 | 
					*.exe
 | 
				
			||||||
 | 
					*.log
 | 
				
			||||||
 | 
					*.o
 | 
				
			||||||
 | 
					*~
 | 
				
			||||||
 | 
					Makefile
 | 
				
			||||||
 | 
					Makefile.in
 | 
				
			||||||
 | 
					aclocal.m4
 | 
				
			||||||
 | 
					ansi2knr.1
 | 
				
			||||||
 | 
					ansi2knr.c
 | 
				
			||||||
 | 
					ansi2knr.h
 | 
				
			||||||
 | 
					ar-lib
 | 
				
			||||||
 | 
					autom4te.cache
 | 
				
			||||||
 | 
					build-stamp-ngircd*
 | 
				
			||||||
 | 
					build+*
 | 
				
			||||||
 | 
					compile
 | 
				
			||||||
 | 
					config.cache
 | 
				
			||||||
 | 
					config.status
 | 
				
			||||||
 | 
					configure
 | 
				
			||||||
 | 
					configure.ac
 | 
				
			||||||
 | 
					configure.lineno
 | 
				
			||||||
 | 
					cov-int
 | 
				
			||||||
 | 
					cscope.out
 | 
				
			||||||
 | 
					debian
 | 
				
			||||||
 | 
					depcomp
 | 
				
			||||||
 | 
					install-sh
 | 
				
			||||||
 | 
					missing
 | 
				
			||||||
 | 
					ngircd.dest
 | 
				
			||||||
 | 
					doc/sample-ngircd.conf
 | 
				
			||||||
 | 
					doc/src/html
 | 
				
			||||||
 | 
					man/ngircd.8
 | 
				
			||||||
 | 
					man/ngircd.conf.5
 | 
				
			||||||
 | 
					src/*/Makefile.am
 | 
				
			||||||
 | 
					src/config.h
 | 
				
			||||||
 | 
					src/config.h.in
 | 
				
			||||||
 | 
					src/stamp-h1
 | 
				
			||||||
 | 
					src/ngircd/check-help
 | 
				
			||||||
 | 
					src/ngircd/check-version
 | 
				
			||||||
 | 
					src/ngircd/ngircd
 | 
				
			||||||
 | 
					src/portab/portabtest
 | 
				
			||||||
 | 
					src/testsuite/*-test
 | 
				
			||||||
 | 
					src/testsuite/logs
 | 
				
			||||||
 | 
					src/testsuite/ngircd-*.motd
 | 
				
			||||||
 | 
					src/testsuite/ssl/cert.pem
 | 
				
			||||||
 | 
					src/testsuite/ssl/dhparams.pem
 | 
				
			||||||
 | 
					src/testsuite/ssl/key.pem
 | 
				
			||||||
 | 
					src/testsuite/T-ngircd?
 | 
				
			||||||
 | 
					src/testsuite/tests
 | 
				
			||||||
 | 
					src/testsuite/tests-skipped.lst
 | 
				
			||||||
							
								
								
									
										22
									
								
								.mailmap
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								.mailmap
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
				
			|||||||
 | 
					# mailmap file for git-[short]log and git-blame
 | 
				
			||||||
 | 
					# use "git shortlog -se" to see the list of all authors.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Alexander Barton <alex@barton.de> <anonymous>
 | 
				
			||||||
 | 
					Alexander Barton <alex@barton.de> <alex@kfreebsd.barton.de>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Ali Shemiran <ashemira@ucsd.edu>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Christoph Biedl <ngircd.anoy@manchmal.in-ulm.de> <debian.axhn@manchmal.in-ulm.de>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Dana Dahlstrom <dana+ngIRCd@cs.ucsd.edu> <dana@cs.ucsd.edu>
 | 
				
			||||||
 | 
					Dana Dahlstrom <dana+ngIRCd@cs.ucsd.edu> <dana+70@cs.ucsd.edu>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DNS <dns@rbose.org>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Götz Hoffart <goetz@hoffart.de>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					LucentW <lucent@zebes.info> <LucentW@users.noreply.github.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Michi <michi+ngircd@dataswamp.org>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Sam James <sam@cmpct.info> <11667869+thesamesam@users.noreply.github.com>
 | 
				
			||||||
							
								
								
									
										13
									
								
								AUTHORS
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								AUTHORS
									
									
									
									
									
								
							@@ -1,13 +0,0 @@
 | 
				
			|||||||
 | 
					 | 
				
			||||||
                     ngIRCd - Next Generation IRC Server
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                      (c)2001,2002 by Alexander Barton,
 | 
					 | 
				
			||||||
                    alex@barton.de, http://www.barton.de/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                  ngIRCd ist freie Software und steht unter
 | 
					 | 
				
			||||||
                       der GNU General Public License.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                           -- AUTHORS / Autoren --
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Alexander Barton, alex@arthur.ath.cx
 | 
					 | 
				
			||||||
							
								
								
									
										81
									
								
								AUTHORS.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								AUTHORS.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,81 @@
 | 
				
			|||||||
 | 
					# [ngIRCd](https://ngircd.barton.de) - Authors & Contributors
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Please feel free to post an email to the ngIRCd users mailing list
 | 
				
			||||||
 | 
					<ngircd@lists.barton.de> (see <https://ngircd.barton.de/support> for details)
 | 
				
			||||||
 | 
					if you have comments, patches, suggestions or questions.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Or join the "#ngircd" channel in IRC on irc.barton.de:
 | 
				
			||||||
 | 
					<irc://irc.barton.de/ngircd>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*Please do not email the people listed here directly, if possible!*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Main Authors
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Alexander Barton <alex@barton.de>
 | 
				
			||||||
 | 
					- Florian Westphal <fw@strlen.de>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Contributors
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- 9pfs <hellosmile6@tilde.pink>
 | 
				
			||||||
 | 
					- Ali Shemiran <ashemira@ucsd.edu>
 | 
				
			||||||
 | 
					- Ask Bjørn Hansen <ask@develooper.com>
 | 
				
			||||||
 | 
					- Benjamin Pineau <ben@zouh.org>
 | 
				
			||||||
 | 
					- Bernd Kuhls <bernd.kuhls@t-online.de>
 | 
				
			||||||
 | 
					- Brandon Beresini <beresini@google.com>
 | 
				
			||||||
 | 
					- Brett Smith <brett@w3.org>
 | 
				
			||||||
 | 
					- Brian Collins <bricollins@gmail.com>
 | 
				
			||||||
 | 
					- Bryan Caldwell <bcaldwel@ucsd.edu>
 | 
				
			||||||
 | 
					- Christian Aistleitner <christian@quelltextlich.at>
 | 
				
			||||||
 | 
					- Christoph Biedl <ngircd.anoy@manchmal.in-ulm.de>
 | 
				
			||||||
 | 
					- Dana Dahlstrom <dana+ngIRCd@cs.ucsd.edu>
 | 
				
			||||||
 | 
					- David Kingston <deathking1337@aim.com>
 | 
				
			||||||
 | 
					- DNS <dns@rbose.org>
 | 
				
			||||||
 | 
					- Eric Grunow <egrunow@ucsd.edu>
 | 
				
			||||||
 | 
					- ewired <37567272+ewired@users.noreply.github.com>
 | 
				
			||||||
 | 
					- Fabrice Fontaine <fontaine.fabrice@gmail.com>
 | 
				
			||||||
 | 
					- Federico G. Schwindt <fgsch@lodoss.net>
 | 
				
			||||||
 | 
					- Florian Weimer <fweimer@redhat.com>
 | 
				
			||||||
 | 
					- Gabor Adam Toth <tg@tgbit.net>
 | 
				
			||||||
 | 
					- Götz Hoffart <goetz@hoffart.de>
 | 
				
			||||||
 | 
					- hello-smile6 <73048226+hello-smile6@users.noreply.github.com>
 | 
				
			||||||
 | 
					- Hilko Bengen <bengen@hilluzination.de>
 | 
				
			||||||
 | 
					- Ian Chard <ian@chard.org>
 | 
				
			||||||
 | 
					- Ilja Osthoff <i.osthoff@gmx.net>
 | 
				
			||||||
 | 
					- ItsOnlyBinary <ItsOnlyBinary@users.noreply.github.com>
 | 
				
			||||||
 | 
					- Ivan Agarkov <i_agarkov@wargaming.net>
 | 
				
			||||||
 | 
					- James Lu <james@overdrivenetworks.com>
 | 
				
			||||||
 | 
					- Jari Aalto <jari.aalto@cante.net>
 | 
				
			||||||
 | 
					- Johann Hartwig Hauschild <git@hauschild.it>
 | 
				
			||||||
 | 
					- JRMU <jrmu@lecturify.com>
 | 
				
			||||||
 | 
					- Jules Maselbas <jmaselbas@zdiv.net>
 | 
				
			||||||
 | 
					- Katherine Peeters <katherine.peeters@leagueh.xyz>
 | 
				
			||||||
 | 
					- LucentW <lucent@zebes.info>
 | 
				
			||||||
 | 
					- Mantas Mikulėnas <grawity@gmail.com>
 | 
				
			||||||
 | 
					- Michi <michi+ngircd@dataswamp.org>
 | 
				
			||||||
 | 
					- Neale Pickett <neale@woozle.org>
 | 
				
			||||||
 | 
					- Peter Powell <petpow@saberuk.com>
 | 
				
			||||||
 | 
					- Rolf Eike Beer <eike@sf-mail.de>
 | 
				
			||||||
 | 
					- Rosen Penev <rosenp@gmail.com>
 | 
				
			||||||
 | 
					- Roy Sindre Norangshol <roy.sindre@norangshol.no>
 | 
				
			||||||
 | 
					- salaaad2 <47527723+salaaad2@users.noreply.github.com>
 | 
				
			||||||
 | 
					- Sam James <sam@cmpct.info>
 | 
				
			||||||
 | 
					- Scott Perry <scperry@ucsd.edu>
 | 
				
			||||||
 | 
					- Sean Reifschneider <jafo-rpms@tummy.com>
 | 
				
			||||||
 | 
					- Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
 | 
				
			||||||
 | 
					- Sebastian Köhler <sebkoehler@whoami.org.uk>
 | 
				
			||||||
 | 
					- shankari <shankari@eecs.berkeley.edu>
 | 
				
			||||||
 | 
					- Tassilo Schweyer <dev@welterde.de>
 | 
				
			||||||
 | 
					- Tom Ryder <tom@sanctum.geek.nz>
 | 
				
			||||||
 | 
					- Unit 193 <unit193@ubuntu.com>
 | 
				
			||||||
 | 
					- Valentin Lorentz <progval+git@progval.net>
 | 
				
			||||||
 | 
					- William Pitcock <nenolod@dereferenced.org>
 | 
				
			||||||
 | 
					- Windree <57554809+Windree@users.noreply.github.com>
 | 
				
			||||||
 | 
					- xnaas <8271327+xnaas@users.noreply.github.com>
 | 
				
			||||||
 | 
					- xor <xorboy@gmail.com>
 | 
				
			||||||
 | 
					- Yecheng Fu <cofyc.jackson@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Code snippets
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Andrew Tridgell & Martin Pool: strl{cpy|cat}()-functions
 | 
				
			||||||
 | 
					- John Kercheval: pattern matching functions
 | 
				
			||||||
 | 
					- Patrick Powell <papowell@astart.com>: snprintf()-function
 | 
				
			||||||
							
								
								
									
										39
									
								
								COPYING
									
									
									
									
									
								
							
							
						
						
									
										39
									
								
								COPYING
									
									
									
									
									
								
							@@ -1,12 +1,12 @@
 | 
				
			|||||||
		    GNU GENERAL PUBLIC LICENSE
 | 
					                    GNU GENERAL PUBLIC LICENSE
 | 
				
			||||||
		       Version 2, June 1991
 | 
					                       Version 2, June 1991
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
 | 
					 Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
 | 
				
			||||||
 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 | 
					 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 | 
				
			||||||
 Everyone is permitted to copy and distribute verbatim copies
 | 
					 Everyone is permitted to copy and distribute verbatim copies
 | 
				
			||||||
 of this license document, but changing it is not allowed.
 | 
					 of this license document, but changing it is not allowed.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			    Preamble
 | 
					                            Preamble
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  The licenses for most software are designed to take away your
 | 
					  The licenses for most software are designed to take away your
 | 
				
			||||||
freedom to share and change it.  By contrast, the GNU General Public
 | 
					freedom to share and change it.  By contrast, the GNU General Public
 | 
				
			||||||
@@ -15,7 +15,7 @@ software--to make sure the software is free for all its users.  This
 | 
				
			|||||||
General Public License applies to most of the Free Software
 | 
					General Public License applies to most of the Free Software
 | 
				
			||||||
Foundation's software and to any other program whose authors commit to
 | 
					Foundation's software and to any other program whose authors commit to
 | 
				
			||||||
using it.  (Some other Free Software Foundation software is covered by
 | 
					using it.  (Some other Free Software Foundation software is covered by
 | 
				
			||||||
the GNU Library General Public License instead.)  You can apply it to
 | 
					the GNU Lesser General Public License instead.)  You can apply it to
 | 
				
			||||||
your programs, too.
 | 
					your programs, too.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  When we speak of free software, we are referring to freedom, not
 | 
					  When we speak of free software, we are referring to freedom, not
 | 
				
			||||||
@@ -55,8 +55,8 @@ patent must be licensed for everyone's free use or not licensed at all.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  The precise terms and conditions for copying, distribution and
 | 
					  The precise terms and conditions for copying, distribution and
 | 
				
			||||||
modification follow.
 | 
					modification follow.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		    GNU GENERAL PUBLIC LICENSE
 | 
					                    GNU GENERAL PUBLIC LICENSE
 | 
				
			||||||
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
 | 
					   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  0. This License applies to any program or other work which contains
 | 
					  0. This License applies to any program or other work which contains
 | 
				
			||||||
@@ -110,7 +110,7 @@ above, provided that you also meet all of these conditions:
 | 
				
			|||||||
    License.  (Exception: if the Program itself is interactive but
 | 
					    License.  (Exception: if the Program itself is interactive but
 | 
				
			||||||
    does not normally print such an announcement, your work based on
 | 
					    does not normally print such an announcement, your work based on
 | 
				
			||||||
    the Program is not required to print an announcement.)
 | 
					    the Program is not required to print an announcement.)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
These requirements apply to the modified work as a whole.  If
 | 
					These requirements apply to the modified work as a whole.  If
 | 
				
			||||||
identifiable sections of that work are not derived from the Program,
 | 
					identifiable sections of that work are not derived from the Program,
 | 
				
			||||||
and can be reasonably considered independent and separate works in
 | 
					and can be reasonably considered independent and separate works in
 | 
				
			||||||
@@ -168,7 +168,7 @@ access to copy from a designated place, then offering equivalent
 | 
				
			|||||||
access to copy the source code from the same place counts as
 | 
					access to copy the source code from the same place counts as
 | 
				
			||||||
distribution of the source code, even though third parties are not
 | 
					distribution of the source code, even though third parties are not
 | 
				
			||||||
compelled to copy the source along with the object code.
 | 
					compelled to copy the source along with the object code.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  4. You may not copy, modify, sublicense, or distribute the Program
 | 
					  4. You may not copy, modify, sublicense, or distribute the Program
 | 
				
			||||||
except as expressly provided under this License.  Any attempt
 | 
					except as expressly provided under this License.  Any attempt
 | 
				
			||||||
otherwise to copy, modify, sublicense or distribute the Program is
 | 
					otherwise to copy, modify, sublicense or distribute the Program is
 | 
				
			||||||
@@ -225,7 +225,7 @@ impose that choice.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
This section is intended to make thoroughly clear what is believed to
 | 
					This section is intended to make thoroughly clear what is believed to
 | 
				
			||||||
be a consequence of the rest of this License.
 | 
					be a consequence of the rest of this License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  8. If the distribution and/or use of the Program is restricted in
 | 
					  8. If the distribution and/or use of the Program is restricted in
 | 
				
			||||||
certain countries either by patents or by copyrighted interfaces, the
 | 
					certain countries either by patents or by copyrighted interfaces, the
 | 
				
			||||||
original copyright holder who places the Program under this License
 | 
					original copyright holder who places the Program under this License
 | 
				
			||||||
@@ -255,7 +255,7 @@ make exceptions for this.  Our decision will be guided by the two goals
 | 
				
			|||||||
of preserving the free status of all derivatives of our free software and
 | 
					of preserving the free status of all derivatives of our free software and
 | 
				
			||||||
of promoting the sharing and reuse of software generally.
 | 
					of promoting the sharing and reuse of software generally.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			    NO WARRANTY
 | 
					                            NO WARRANTY
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
 | 
					  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
 | 
				
			||||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
 | 
					FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
 | 
				
			||||||
@@ -277,9 +277,9 @@ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
 | 
				
			|||||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
 | 
					PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
 | 
				
			||||||
POSSIBILITY OF SUCH DAMAGES.
 | 
					POSSIBILITY OF SUCH DAMAGES.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		     END OF TERMS AND CONDITIONS
 | 
					                     END OF TERMS AND CONDITIONS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    How to Apply These Terms to Your New Programs
 | 
					            How to Apply These Terms to Your New Programs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  If you develop a new program, and you want it to be of the greatest
 | 
					  If you develop a new program, and you want it to be of the greatest
 | 
				
			||||||
possible use to the public, the best way to achieve this is to make it
 | 
					possible use to the public, the best way to achieve this is to make it
 | 
				
			||||||
@@ -303,10 +303,9 @@ the "copyright" line and a pointer to where the full notice is found.
 | 
				
			|||||||
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
					    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
				
			||||||
    GNU General Public License for more details.
 | 
					    GNU General Public License for more details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    You should have received a copy of the GNU General Public License
 | 
					    You should have received a copy of the GNU General Public License along
 | 
				
			||||||
    along with this program; if not, write to the Free Software
 | 
					    with this program; if not, write to the Free Software Foundation, Inc.,
 | 
				
			||||||
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 | 
					    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
Also add information on how to contact you by electronic and paper mail.
 | 
					Also add information on how to contact you by electronic and paper mail.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -336,5 +335,5 @@ necessary.  Here is a sample; alter the names:
 | 
				
			|||||||
This General Public License does not permit incorporating your program into
 | 
					This General Public License does not permit incorporating your program into
 | 
				
			||||||
proprietary programs.  If your program is a subroutine library, you may
 | 
					proprietary programs.  If your program is a subroutine library, you may
 | 
				
			||||||
consider it more useful to permit linking proprietary applications with the
 | 
					consider it more useful to permit linking proprietary applications with the
 | 
				
			||||||
library.  If this is what you want to do, use the GNU Library General
 | 
					library.  If this is what you want to do, use the GNU Lesser General
 | 
				
			||||||
Public License instead of this License.
 | 
					Public License instead of this License.
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										90
									
								
								INSTALL
									
									
									
									
									
								
							
							
						
						
									
										90
									
								
								INSTALL
									
									
									
									
									
								
							@@ -1,90 +0,0 @@
 | 
				
			|||||||
 | 
					 | 
				
			||||||
                     ngIRCd - Next Generation IRC Server
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                      (c)2001,2002 by Alexander Barton,
 | 
					 | 
				
			||||||
                    alex@barton.de, http://www.barton.de/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                  ngIRCd ist freie Software und steht unter
 | 
					 | 
				
			||||||
                       der GNU General Public License.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                         -- INSTALL / Installation --
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
ngIRCd ist fuer UNIXoide-Systeme konzipiert. Dieser Text beschreibt den
 | 
					 | 
				
			||||||
"Standardfall": ein UNIX bzw. UNIX-aehnliches System, das von GNU automake
 | 
					 | 
				
			||||||
und GNU autoconf ("configure") unterstuetzt wird.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
I. Voraussetzungen
 | 
					 | 
				
			||||||
~~~~~~~~~~~~~~~~~~
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
ngIRCd benoetigt "Alex' Portability Headers" (portab.h). Diese koennen von
 | 
					 | 
				
			||||||
der Homepage heruntergeladen werden:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<http://arthur.ath.cx/~alex/ngircd/#download>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Vor dem configure-Lauf des ngIRCd muessen dies Header auf dem System in-
 | 
					 | 
				
			||||||
stalliert sein, anonsten bricht configure ab.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
II. Quick Start
 | 
					 | 
				
			||||||
~~~~~~~~~~~~~~~
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
In der Regel sind folgende Schritte ausreichend:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   1) ./autogen.sh	[nur erforderlich, wenn ueber CVS bezogen]
 | 
					 | 
				
			||||||
   2) ./configure
 | 
					 | 
				
			||||||
   3) make
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
zu 1) autogen.sh:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Der erste Schritt, autogen.sh, ist nur notwendig, wenn das configure-Script
 | 
					 | 
				
			||||||
noch nicht vorhanden ist. Dies ist nie bei offiziellen ("stabilen") Versionen
 | 
					 | 
				
			||||||
in tar.gz-Archiven der Fall, jedoch nie, wenn der Source-Code ueber CVS
 | 
					 | 
				
			||||||
bezogen wurde.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Dieser Absatz ist also eigentlich ausschliesslich fuer Entwickler interessant.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
autogen.sh erzeugt die fuer das configure-Script notwendigen Makefile.in's
 | 
					 | 
				
			||||||
sowie das configure-Script selber und weitere fuer den make-Lauf erforderliche
 | 
					 | 
				
			||||||
Dateien. Dazu wird sowohl GNU automake als auch GNU autoconf (in aktuellen
 | 
					 | 
				
			||||||
Versionen!) benoetigt.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(nochmal: "Endanwender" mussen diesen Schritt i.d.R. nicht ausfuehren!)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
zu 2) ./configure:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Mit dem configure-Script wird ngIRCd, wie GNU Software meistens, an das
 | 
					 | 
				
			||||||
lokale System angepasst und die erforderlichen Makefile's erzeugt.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Im Optimalfall sollte configure alle benoetigten Libraries, Header etc. selber
 | 
					 | 
				
			||||||
erkennen und entsprechend reagieren. Sollte dies einmal nicht der Fall sein,
 | 
					 | 
				
			||||||
so zeigt "./configure --help" moegliche Optionen.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
zu 3) make:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Der make-Befehl bearbeitet die vom configure-Script erzeugten Makefile's und
 | 
					 | 
				
			||||||
uebersetzt die comBase-Library und die Testprogramme.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
III. Nuetzliche make-Targets
 | 
					 | 
				
			||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Die vom configure-Script erzeugten Makefile's enthalten immer die folgenden
 | 
					 | 
				
			||||||
nuetzlichen Targets:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 - clean: alle Erzeugnisse des Compilers/Linkers loeschen.
 | 
					 | 
				
			||||||
   Naechster Schritt: -> make
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 - distclean: zusaetzliche alle Makefile's loeschen.
 | 
					 | 
				
			||||||
   Naechster Schritt: -> ./configure
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 - maintainer-clean: alle automat. erzeugten Dateien loeschen.
 | 
					 | 
				
			||||||
   Naechster Schritt: -> ./autogen.sh
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
-- 
 | 
					 | 
				
			||||||
$Id: INSTALL,v 1.5 2002/03/03 13:07:01 alex Exp $
 | 
					 | 
				
			||||||
							
								
								
									
										411
									
								
								INSTALL.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										411
									
								
								INSTALL.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,411 @@
 | 
				
			|||||||
 | 
					# [ngIRCd](https://ngircd.barton.de) - Installation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This document describes how to install ngIRCd, the lightweight Internet Relay
 | 
				
			||||||
 | 
					Chat (IRC) server.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The first section lists noteworthy changes to earlier releases; you definitely
 | 
				
			||||||
 | 
					should read this when upgrading your setup! But you can skip over this section
 | 
				
			||||||
 | 
					when you are working on a fresh installation.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The subsequent sections describe the steps required to build and install ngIRCd
 | 
				
			||||||
 | 
					_from sources_. The information given here is not relevant when you are using
 | 
				
			||||||
 | 
					packages provided by your operating system vendor or third-party repositories!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Please see the file `doc/QuickStart.md` in the `doc/` directory or on
 | 
				
			||||||
 | 
					[GitHub](https://github.com/ngircd/ngircd/blob/master/doc/QuickStart.md) for
 | 
				
			||||||
 | 
					information about _setting up_ and _running_ ngIRCd, including some real-world
 | 
				
			||||||
 | 
					configuration examples.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Upgrade Information
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This section lists important updates and breaking changes that you should be
 | 
				
			||||||
 | 
					aware of *before* starting the upgrade:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Differences to version 26
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- **Attention**:
 | 
				
			||||||
 | 
					  Starting with release 27, ngIRCd validates SSL/TLS certificates on outgoing
 | 
				
			||||||
 | 
					  server-server links by default and drops(!) connections when the remote
 | 
				
			||||||
 | 
					  certificate is invalid (for example self-signed, expired, not matching the
 | 
				
			||||||
 | 
					  host name, ...). Therefore you have to make sure that all relevant
 | 
				
			||||||
 | 
					  *certificates are valid* (or to disable certificate validation on this
 | 
				
			||||||
 | 
					  connection using the new `SSLVerify = false` setting in the affected
 | 
				
			||||||
 | 
					  `[Server]` block, where the remote certificate is not valid and you can not
 | 
				
			||||||
 | 
					  fix this issue).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Differences to version 25
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- **Attention**:
 | 
				
			||||||
 | 
					  All already deprecated legacy options (besides the newly deprecated *Key* and
 | 
				
			||||||
 | 
					  *MaxUsers* settings, see below) were removed in ngIRCd 26, so make sure to
 | 
				
			||||||
 | 
					  update your configuration before upgrading, if you haven't done so already
 | 
				
			||||||
 | 
					  (you got a warning on daemon startup when using deprecated options): you can
 | 
				
			||||||
 | 
					  check your configuration using `ngircd --configtest` -- which is a good idea
 | 
				
			||||||
 | 
					  anyway ;-)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Setting modes for predefined channels in *[Channel]* sections has been
 | 
				
			||||||
 | 
					  enhanced: now you can set *all* modes, like in IRC "MODE" commands, and have
 | 
				
			||||||
 | 
					  this setting multiple times per *[Channel]* block. Modifying lists (ban list,
 | 
				
			||||||
 | 
					  invite list, exception list) is supported, too.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Both the *Key* and *MaxUsers* settings are now deprecated and should be
 | 
				
			||||||
 | 
					  replaced by `Modes = +l <limit>` and `Modes = +k <key>` respectively.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Differences to version 22.x
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- The *NoticeAuth* `ngircd.conf` configuration variable has been renamed to
 | 
				
			||||||
 | 
					  *NoticeBeforeRegistration*. The old *NoticeAuth* variable still works but
 | 
				
			||||||
 | 
					  is deprecated now.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- The default value of the SSL *CipherList* variable has been changed to
 | 
				
			||||||
 | 
					  "HIGH:!aNULL:@STRENGTH:!SSLv3" (OpenSSL) and "SECURE128:-VERS-SSL3.0"
 | 
				
			||||||
 | 
					  (GnuTLS) to disable the old SSLv3 protocol by default.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  To enable connections of clients still requiring the weak SSLv3 protocol,
 | 
				
			||||||
 | 
					  the *CipherList* must be set to its old value (not recommended!), which
 | 
				
			||||||
 | 
					  was "HIGH:!aNULL:@STRENGTH" (OpenSSL) and "SECURE128" (GnuTLS), see below.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Differences to version 20.x
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Starting with ngIRCd 21, the ciphers used by SSL are configurable and
 | 
				
			||||||
 | 
					  default to "HIGH:!aNULL:@STRENGTH" (OpenSSL) or "SECURE128" (GnuTLS).
 | 
				
			||||||
 | 
					  Previous version were using the OpenSSL or GnuTLS defaults, "DEFAULT"
 | 
				
			||||||
 | 
					  and "NORMAL" respectively.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- When adding GLINE's or KLINE's to ngIRCd 21 (or newer), all clients matching
 | 
				
			||||||
 | 
					  the new mask will be KILL'ed. This was not the case with earlier versions
 | 
				
			||||||
 | 
					  that only added the mask but didn't kill already connected users.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- The *PredefChannelsOnly* configuration variable has been superseded by the
 | 
				
			||||||
 | 
					  new *AllowedChannelTypes* variable. It is still supported and translated to
 | 
				
			||||||
 | 
					  the appropriate *AllowedChannelTypes* setting but is deprecated now.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Differences to version 19.x
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Starting with ngIRCd 20, users can "cloak" their hostname only when the
 | 
				
			||||||
 | 
					  configuration variable *CloakHostModeX* (introduced in 19.2) is set.
 | 
				
			||||||
 | 
					  Otherwise, only IRC operators, other servers, and services are allowed to
 | 
				
			||||||
 | 
					  set mode +x. This prevents regular users from changing their hostmask to
 | 
				
			||||||
 | 
					  the name of the IRC server itself, which confused quite a few people ;-)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Differences to version 17.x
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Support for ZeroConf/Bonjour/Rendezvous service registration has been
 | 
				
			||||||
 | 
					  removed. The configuration option *NoZeroconf* is no longer available.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- The structure of `ngircd.conf` has been cleaned up and three new configuration
 | 
				
			||||||
 | 
					  sections have been introduced: *[Limits]*, *[Options]*, and *[SSL]*.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Lots of configuration variables stored in the *[Global]* section are now
 | 
				
			||||||
 | 
					  deprecated there and should be stored in one of these new sections (but
 | 
				
			||||||
 | 
					  still work in *[Global]*):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - *AllowRemoteOper*    -> [Options]
 | 
				
			||||||
 | 
					  - *ChrootDir*          -> [Options]
 | 
				
			||||||
 | 
					  - *ConnectIPv4*        -> [Options]
 | 
				
			||||||
 | 
					  - *ConnectIPv6*        -> [Options]
 | 
				
			||||||
 | 
					  - *ConnectRetry*       -> [Limits]
 | 
				
			||||||
 | 
					  - *MaxConnections*     -> [Limits]
 | 
				
			||||||
 | 
					  - *MaxConnectionsIP*   -> [Limits]
 | 
				
			||||||
 | 
					  - *MaxJoins*           -> [Limits]
 | 
				
			||||||
 | 
					  - *MaxNickLength*      -> [Limits]
 | 
				
			||||||
 | 
					  - *NoDNS*              -> [Options], and renamed to *DNS*
 | 
				
			||||||
 | 
					  - *NoIdent*            -> [Options], and renamed to *Ident*
 | 
				
			||||||
 | 
					  - *NoPAM*              -> [Options], and renamed to *PAM*
 | 
				
			||||||
 | 
					  - *OperCanUseMode*     -> [Options]
 | 
				
			||||||
 | 
					  - *OperServerMode*     -> [Options]
 | 
				
			||||||
 | 
					  - *PingTimeout*        -> [Limits]
 | 
				
			||||||
 | 
					  - *PongTimeout*        -> [Limits]
 | 
				
			||||||
 | 
					  - *PredefChannelsOnly* -> [Options]
 | 
				
			||||||
 | 
					  - *SSLCertFile*        -> [SSL], and renamed to *CertFile*
 | 
				
			||||||
 | 
					  - *SSLDHFile*          -> [SSL], and renamed to *DHFile*
 | 
				
			||||||
 | 
					  - *SSLKeyFile*         -> [SSL], and renamed to *KeyFile*
 | 
				
			||||||
 | 
					  - *SSLKeyFilePassword* -> [SSL], and renamed to *KeyFilePassword*
 | 
				
			||||||
 | 
					  - *SSLPorts*           -> [SSL], and renamed to *Ports*
 | 
				
			||||||
 | 
					  - *SyslogFacility*     -> [Options]
 | 
				
			||||||
 | 
					  - *WebircPassword*     -> [Options]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  You should adjust your `ngircd.conf` and run `ngircd --configtest` to make
 | 
				
			||||||
 | 
					  sure that your settings are correct and up to date!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Differences to version 16.x
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Changes to the *MotdFile* specified in `ngircd.conf` now require a ngIRCd
 | 
				
			||||||
 | 
					  configuration reload to take effect (HUP signal, *REHASH* command).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Differences to version 0.9.x
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- The option of the configure script to enable support for Zeroconf/Bonjour/
 | 
				
			||||||
 | 
					  Rendezvous/WhateverItIsNamedToday has been renamed:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - `--with-rendezvous`  ->  `--with-zeroconf`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Differences to version 0.8.x
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- The maximum length of passwords has been raised to 20 characters (instead
 | 
				
			||||||
 | 
					  of 8 characters). If your passwords are longer than 8 characters then they
 | 
				
			||||||
 | 
					  are cut at an other position now.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Differences to version 0.6.x
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Some options of the configure script have been renamed:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - `--disable-syslog`  ->  `--without-syslog`
 | 
				
			||||||
 | 
					  - `--disable-zlib`    ->  `--without-zlib`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Please call `./configure --help` to review the full list of options!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Differences to version 0.5.x
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Starting with version 0.6.0, other servers are identified using asynchronous
 | 
				
			||||||
 | 
					  passwords: therefore the variable *Password* in *[Server]*-sections has been
 | 
				
			||||||
 | 
					  replaced by *MyPassword* and *PeerPassword*.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- New configuration variables, section *[Global]*: *MaxConnections*, *MaxJoins*
 | 
				
			||||||
 | 
					  (see example configuration file `doc/sample-ngircd.conf`!).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Standard Installation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*Note*: This sections describes installing ngIRCd *from sources*. If you use
 | 
				
			||||||
 | 
					packages available for your operating system distribution you should skip over
 | 
				
			||||||
 | 
					and continue with the *Configuration* section, see below.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngIRCd is developed for UNIX-based systems, which means that the installation
 | 
				
			||||||
 | 
					on modern UNIX-like systems that are supported by GNU autoconf and GNU
 | 
				
			||||||
 | 
					automake ("`configure` script") should be no problem.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The normal installation procedure after getting (and expanding) the source
 | 
				
			||||||
 | 
					files (using a distribution archive or Git) is as following:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1) Satisfy prerequisites
 | 
				
			||||||
 | 
					2) `./autogen.sh` [only necessary when using "raw" sources with Git]
 | 
				
			||||||
 | 
					3) `./configure`
 | 
				
			||||||
 | 
					4) `make`
 | 
				
			||||||
 | 
					5) `make install`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(Please see details below!)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Now the newly compiled executable "ngircd" is installed in its standard
 | 
				
			||||||
 | 
					location, `/usr/local/sbin/`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If no previous version of the configuration file exists (the standard name
 | 
				
			||||||
 | 
					is `/usr/local/etc/ngircd.conf)`, a sample configuration file containing all
 | 
				
			||||||
 | 
					possible options will be installed there. You'll find its template in the
 | 
				
			||||||
 | 
					`doc/` directory: `sample-ngircd.conf`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The next step is to configure and afterwards start the daemon. See the section
 | 
				
			||||||
 | 
					*Configuration* below.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Satisfy prerequisites
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					When building from source, you'll need some other software to build ngIRCd:
 | 
				
			||||||
 | 
					for example a working C compiler, make tool, and a few libraries depending on
 | 
				
			||||||
 | 
					the feature set you want to enable at compile time (like IDENT, SSL, and PAM).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					And if you aren't using a distribution archive ("tar.gz" file), but cloned the
 | 
				
			||||||
 | 
					plain source archive, you need a few additional tools to generate the build
 | 
				
			||||||
 | 
					system itself: GNU automake and autoconf, as well as pkg-config.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If you are using one of the "big" operating systems or Linux distributions,
 | 
				
			||||||
 | 
					you can use the following commands to install all the required packages to
 | 
				
			||||||
 | 
					build the sources including all optional features and to run the test suite:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Red Hat / Fedora based distributions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					``` shell
 | 
				
			||||||
 | 
					  yum install \
 | 
				
			||||||
 | 
					    autoconf automake expect gcc glibc-devel gnutls-devel \
 | 
				
			||||||
 | 
					    libident-devel make pam-devel pkg-config tcp_wrappers-devel \
 | 
				
			||||||
 | 
					    telnet zlib-devel
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*Note:* More recent versions use the DNF package manager; so substitute "yum"
 | 
				
			||||||
 | 
					with "dnf" in the command above. And neither "libident-devel" (IDENT support)
 | 
				
			||||||
 | 
					nor "tcp_wrappers-devel" (TCP Wrappers) are provided any more!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					So the resulting command looks like this:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					``` shell
 | 
				
			||||||
 | 
					  dnf install \
 | 
				
			||||||
 | 
					    autoconf automake expect gcc glibc-devel gnutls-devel \
 | 
				
			||||||
 | 
					    make pam-devel pkg-config telnet zlib-devel
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Debian / Ubuntu based distributions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					``` shell
 | 
				
			||||||
 | 
					  apt-get install \
 | 
				
			||||||
 | 
					    autoconf automake build-essential expect libgnutls28-dev \
 | 
				
			||||||
 | 
					    libident-dev libpam-dev pkg-config libwrap0-dev libz-dev telnet
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### ArchLinux based distributions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					``` shell
 | 
				
			||||||
 | 
					  pacman -S --needed \
 | 
				
			||||||
 | 
					    autoconf automake expect gcc gnutls inetutils libident libwrap \
 | 
				
			||||||
 | 
					    make pam pkg-config zlib
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### macOS with Homebrew
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					To build ngIRCd on Apple macOS, you need either Xcode or the command line
 | 
				
			||||||
 | 
					development tools. You can install the latter with the `xcode-select --install`
 | 
				
			||||||
 | 
					command.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Additional tools and libraries that are not part of macOS itself are best
 | 
				
			||||||
 | 
					installed with the [Homebrew](https://brew.sh) package manager:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					``` shell
 | 
				
			||||||
 | 
					  brew install autoconf automake gnutls libident pkg-config
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Note: To actually use the GnuTLS and IDENT libraries installed by Homebrew, you
 | 
				
			||||||
 | 
					need to pass the installation path to the `./configure` command (see below). For
 | 
				
			||||||
 | 
					example like this:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					``` shell
 | 
				
			||||||
 | 
					  ./configure --with-gnutls=$(brew --prefix) --with-ident=$(brew --prefix) [...]
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### `./autogen.sh`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The first step, to run `./autogen.sh`, is *only* necessary if the `configure`
 | 
				
			||||||
 | 
					script itself isn't already generated and available. This never happens in
 | 
				
			||||||
 | 
					official ("stable") releases in "tar.gz" archives, but when cloning the source
 | 
				
			||||||
 | 
					code repository using Git.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**This step is therefore only interesting for developers!**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The `autogen.sh` script produces the `Makefile.in`'s, which are necessary for
 | 
				
			||||||
 | 
					the configure script itself, and some more files for `make(1)`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					To run `autogen.sh` you'll need GNU autoconf, GNU automake and pkg-config: at
 | 
				
			||||||
 | 
					least autoconf 2.61 and automake 1.10 are required, newer is better. But don't
 | 
				
			||||||
 | 
					use automake 1.12 or newer for creating distribution archives: it will work
 | 
				
			||||||
 | 
					but lack "de-ANSI-fication" support in the generated Makefile's! Stick with
 | 
				
			||||||
 | 
					automake 1.11.x for this purpose ...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					So *automake 1.11.x* and *autoconf 2.67+* is recommended.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Again: "end users" do not need this step and neither need GNU autoconf nor GNU
 | 
				
			||||||
 | 
					automake at all!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### `./configure`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The `configure` script is used to detect local system dependencies.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					In the perfect case, `configure` should recognize all needed libraries, header
 | 
				
			||||||
 | 
					files and so on. If this shouldn't work, `./configure --help` shows all
 | 
				
			||||||
 | 
					possible options.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					In addition, you can pass some command line options to `configure` to enable
 | 
				
			||||||
 | 
					and/or disable some features of ngIRCd. All these options are shown using
 | 
				
			||||||
 | 
					`./configure --help`, too.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Compiling a static binary will avoid you the hassle of feeding a chroot dir
 | 
				
			||||||
 | 
					(if you want use the chroot feature). Just do something like:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					``` shell
 | 
				
			||||||
 | 
					  CFLAGS=-static ./configure [--your-options ...]
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Then you can use a void directory as ChrootDir (like OpenSSH's `/var/empty`).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### `make`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The `make(1)` command uses the `Makefile`'s produced by `configure` and
 | 
				
			||||||
 | 
					compiles the ngIRCd daemon.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### `make install`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Use `make install` to install the server and a sample configuration file on
 | 
				
			||||||
 | 
					the local system. Normally, root privileges are necessary to complete this
 | 
				
			||||||
 | 
					step. If there is already an older configuration file present, it won't be
 | 
				
			||||||
 | 
					overwritten.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					These files and folders will be installed by default:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `/usr/local/sbin/ngircd`: executable server
 | 
				
			||||||
 | 
					- `/usr/local/etc/ngircd.conf`: sample configuration (if not already present)
 | 
				
			||||||
 | 
					- `/usr/local/share/doc/ngircd/`: documentation
 | 
				
			||||||
 | 
					- `/usr/local/share/man/`: manual pages
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Additional features
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The following optional features can be compiled into the daemon by passing
 | 
				
			||||||
 | 
					options to the `configure` script. Most options can handle a `<path>` argument
 | 
				
			||||||
 | 
					which will be used to search for the required libraries and header files in
 | 
				
			||||||
 | 
					the given paths (`<path>/lib/...`, `<path>/include/...`) in addition to the
 | 
				
			||||||
 | 
					standard locations.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Syslog Logging (autodetected by default):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  `--with-syslog[=<path>]` / `--without-syslog`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Enable (disable) support for logging to "syslog", which should be
 | 
				
			||||||
 | 
					  available on most modern UNIX-like operating systems by default.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- ZLib Compression (autodetected by default):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  `--with-zlib[=<path>]` / `--without-zlib`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Enable (disable) support for compressed server-server links.
 | 
				
			||||||
 | 
					  The Z compression library ("libz") is required for this option.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- IO Backend (autodetected by default):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - `--with-select[=<path>]` / `--without-select`
 | 
				
			||||||
 | 
					  - `--with-poll[=<path>]` / `--without-poll`
 | 
				
			||||||
 | 
					  - `--with-devpoll[=<path>]` / `--without-devpoll`
 | 
				
			||||||
 | 
					  - `--with-epoll[=<path>]` / `--without-epoll`
 | 
				
			||||||
 | 
					  - `--with-kqueue[=<path>]` / `--without-kqueue`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ngIRCd can use different IO "backends": the "old school" `select(2)` and
 | 
				
			||||||
 | 
					  `poll(2)` API which should be supported by most UNIX-like operating systems,
 | 
				
			||||||
 | 
					  or the more efficient and flexible `epoll(7)` (Linux >=2.6), `kqueue(2)`
 | 
				
			||||||
 | 
					  (BSD) and `/dev/poll` APIs.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  By default the IO backend is autodetected, but you can use `--without-xxx`
 | 
				
			||||||
 | 
					  to disable a more enhanced API.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  When using the `epoll(7)` API, support for `select(2)` is compiled in as
 | 
				
			||||||
 | 
					  well by default, to enable the binary to run on older Linux kernels (<2.6),
 | 
				
			||||||
 | 
					  too.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- IDENT-Support:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  `--with-ident[=<path>]`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Include support for IDENT ("AUTH") lookups. The "ident" library is
 | 
				
			||||||
 | 
					  required for this option.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- TCP-Wrappers:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  `--with-tcp-wrappers[=<path>]`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Include support for Wietse Venemas "TCP Wrappers" to limit client access
 | 
				
			||||||
 | 
					  to the daemon, for example by using `/etc/hosts.{allow|deny}`.
 | 
				
			||||||
 | 
					  The "libwrap" is required for this option.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- PAM:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  `--with-pam[=<path>]`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Enable support for PAM, the Pluggable Authentication Modules library.
 | 
				
			||||||
 | 
					  See `doc/PAM.txt` for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- SSL:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - `--with-openssl[=<path>]`
 | 
				
			||||||
 | 
					  - `--with-gnutls[=<path>]`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Enable support for SSL/TLS using OpenSSL or GnuTLS libraries.
 | 
				
			||||||
 | 
					  See `doc/SSL.md` for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- IPv6 (autodetected by default):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  `--enable-ipv6` / `--disable-ipv6`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Enable (disable) support for version 6 of the Internet Protocol, which should
 | 
				
			||||||
 | 
					  be available on most modern UNIX-like operating systems by default.
 | 
				
			||||||
@@ -1,21 +0,0 @@
 | 
				
			|||||||
#
 | 
					 | 
				
			||||||
# ngIRCd -- The Next Generation IRC Daemon
 | 
					 | 
				
			||||||
# Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
 | 
					 | 
				
			||||||
# der GNU General Public License (GPL), wie von der Free Software Foundation
 | 
					 | 
				
			||||||
# herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2
 | 
					 | 
				
			||||||
# der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version.
 | 
					 | 
				
			||||||
# Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
 | 
					 | 
				
			||||||
# der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# $Id: Makefile.am,v 1.4 2002/03/12 14:37:51 alex Exp $
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
SUBDIRS = ngircd.pbproj
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
maintainer-clean-local:
 | 
					 | 
				
			||||||
	rm -f Makefile Makefile.in
 | 
					 | 
				
			||||||
	rm -rf build
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# -eof-
 | 
					 | 
				
			||||||
@@ -1,20 +0,0 @@
 | 
				
			|||||||
#
 | 
					 | 
				
			||||||
# ngIRCd -- The Next Generation IRC Daemon
 | 
					 | 
				
			||||||
# Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
 | 
					 | 
				
			||||||
# der GNU General Public License (GPL), wie von der Free Software Foundation
 | 
					 | 
				
			||||||
# herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2
 | 
					 | 
				
			||||||
# der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version.
 | 
					 | 
				
			||||||
# Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
 | 
					 | 
				
			||||||
# der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# $Id: Makefile.am,v 1.3 2002/03/12 14:37:51 alex Exp $
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
EXTRA_DIST = project.pbxproj
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
maintainer-clean-local:
 | 
					 | 
				
			||||||
	rm -f Makefile Makefile.in
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# -eof-
 | 
					 | 
				
			||||||
@@ -1,935 +0,0 @@
 | 
				
			|||||||
// !$*UTF8*$!
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	archiveVersion = 1;
 | 
					 | 
				
			||||||
	classes = {
 | 
					 | 
				
			||||||
	};
 | 
					 | 
				
			||||||
	objectVersion = 34;
 | 
					 | 
				
			||||||
	objects = {
 | 
					 | 
				
			||||||
		014CEA520018CE5811CA2923 = {
 | 
					 | 
				
			||||||
			buildRules = (
 | 
					 | 
				
			||||||
			);
 | 
					 | 
				
			||||||
			buildSettings = {
 | 
					 | 
				
			||||||
				COPY_PHASE_STRIP = NO;
 | 
					 | 
				
			||||||
				OPTIMIZATION_CFLAGS = "-O0";
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
			isa = PBXBuildStyle;
 | 
					 | 
				
			||||||
			name = Development;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		014CEA530018CE5811CA2923 = {
 | 
					 | 
				
			||||||
			buildRules = (
 | 
					 | 
				
			||||||
			);
 | 
					 | 
				
			||||||
			buildSettings = {
 | 
					 | 
				
			||||||
				COPY_PHASE_STRIP = YES;
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
			isa = PBXBuildStyle;
 | 
					 | 
				
			||||||
			name = Deployment;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
//010
 | 
					 | 
				
			||||||
//011
 | 
					 | 
				
			||||||
//012
 | 
					 | 
				
			||||||
//013
 | 
					 | 
				
			||||||
//014
 | 
					 | 
				
			||||||
//030
 | 
					 | 
				
			||||||
//031
 | 
					 | 
				
			||||||
//032
 | 
					 | 
				
			||||||
//033
 | 
					 | 
				
			||||||
//034
 | 
					 | 
				
			||||||
		034768E8FF38A79811DB9C8B = {
 | 
					 | 
				
			||||||
			isa = PBXExecutableFileReference;
 | 
					 | 
				
			||||||
			path = ngircd;
 | 
					 | 
				
			||||||
			refType = 3;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
//030
 | 
					 | 
				
			||||||
//031
 | 
					 | 
				
			||||||
//032
 | 
					 | 
				
			||||||
//033
 | 
					 | 
				
			||||||
//034
 | 
					 | 
				
			||||||
//080
 | 
					 | 
				
			||||||
//081
 | 
					 | 
				
			||||||
//082
 | 
					 | 
				
			||||||
//083
 | 
					 | 
				
			||||||
//084
 | 
					 | 
				
			||||||
		08FB7793FE84155DC02AAC07 = {
 | 
					 | 
				
			||||||
			buildStyles = (
 | 
					 | 
				
			||||||
				014CEA520018CE5811CA2923,
 | 
					 | 
				
			||||||
				014CEA530018CE5811CA2923,
 | 
					 | 
				
			||||||
			);
 | 
					 | 
				
			||||||
			isa = PBXProject;
 | 
					 | 
				
			||||||
			mainGroup = 08FB7794FE84155DC02AAC07;
 | 
					 | 
				
			||||||
			projectDirPath = "";
 | 
					 | 
				
			||||||
			targets = (
 | 
					 | 
				
			||||||
				08FB779FFE84155DC02AAC07,
 | 
					 | 
				
			||||||
				F538241E024F89BC01A85B04,
 | 
					 | 
				
			||||||
			);
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		08FB7794FE84155DC02AAC07 = {
 | 
					 | 
				
			||||||
			children = (
 | 
					 | 
				
			||||||
				1AB674ADFE9D54B511CA2CBB,
 | 
					 | 
				
			||||||
				F51F791401DFD0DE01D13771,
 | 
					 | 
				
			||||||
				F56D8B9E01E0BFA00155ADA7,
 | 
					 | 
				
			||||||
				F52162B301C7B904012300F4,
 | 
					 | 
				
			||||||
				F52162C301C7B904012300F4,
 | 
					 | 
				
			||||||
				F52162C401C7B904012300F4,
 | 
					 | 
				
			||||||
				F52162C501C7B904012300F4,
 | 
					 | 
				
			||||||
				F52162C601C7B904012300F4,
 | 
					 | 
				
			||||||
				F52162C701C7B904012300F4,
 | 
					 | 
				
			||||||
				F52162C801C7B904012300F4,
 | 
					 | 
				
			||||||
				F52162C901C7B904012300F4,
 | 
					 | 
				
			||||||
				F52162CA01C7B904012300F4,
 | 
					 | 
				
			||||||
				F52162CB01C7B904012300F4,
 | 
					 | 
				
			||||||
			);
 | 
					 | 
				
			||||||
			isa = PBXGroup;
 | 
					 | 
				
			||||||
			name = ngircd;
 | 
					 | 
				
			||||||
			refType = 4;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		08FB779FFE84155DC02AAC07 = {
 | 
					 | 
				
			||||||
			buildPhases = (
 | 
					 | 
				
			||||||
				08FB77A0FE84155DC02AAC07,
 | 
					 | 
				
			||||||
				08FB77A1FE84155DC02AAC07,
 | 
					 | 
				
			||||||
				08FB77A3FE84155DC02AAC07,
 | 
					 | 
				
			||||||
				08FB77A5FE84155DC02AAC07,
 | 
					 | 
				
			||||||
			);
 | 
					 | 
				
			||||||
			buildSettings = {
 | 
					 | 
				
			||||||
				FRAMEWORK_SEARCH_PATHS = "";
 | 
					 | 
				
			||||||
				HEADER_SEARCH_PATHS = "";
 | 
					 | 
				
			||||||
				INSTALL_PATH = "$(HOME)/bin";
 | 
					 | 
				
			||||||
				LIBRARY_SEARCH_PATHS = "";
 | 
					 | 
				
			||||||
				OTHER_CFLAGS = "-DLOCALSTATEDIR=\\\\\\\"/usr/local/var\\\\\\\" -DSYSCONFDIR=\\\\\\\"/usr/local/etc\\\\\\\"";
 | 
					 | 
				
			||||||
				OTHER_LDFLAGS = "";
 | 
					 | 
				
			||||||
				OTHER_REZFLAGS = "";
 | 
					 | 
				
			||||||
				PRODUCT_NAME = ngircd;
 | 
					 | 
				
			||||||
				REZ_EXECUTABLE = YES;
 | 
					 | 
				
			||||||
				SECTORDER_FLAGS = "";
 | 
					 | 
				
			||||||
				WARNING_CFLAGS = "-Wall";
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
			dependencies = (
 | 
					 | 
				
			||||||
			);
 | 
					 | 
				
			||||||
			isa = PBXToolTarget;
 | 
					 | 
				
			||||||
			name = ngircd;
 | 
					 | 
				
			||||||
			productInstallPath = "$(HOME)/bin";
 | 
					 | 
				
			||||||
			productName = ngircd;
 | 
					 | 
				
			||||||
			productReference = 034768E8FF38A79811DB9C8B;
 | 
					 | 
				
			||||||
			shouldUseHeadermap = 1;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		08FB77A0FE84155DC02AAC07 = {
 | 
					 | 
				
			||||||
			buildActionMask = 2147483647;
 | 
					 | 
				
			||||||
			files = (
 | 
					 | 
				
			||||||
				F52162CE01C7B904012300F4,
 | 
					 | 
				
			||||||
				F52162CF01C7B904012300F4,
 | 
					 | 
				
			||||||
				F52162D001C7B904012300F4,
 | 
					 | 
				
			||||||
				F52162D901C7BAAE012300F4,
 | 
					 | 
				
			||||||
				F52162DC01C7BCDD012300F4,
 | 
					 | 
				
			||||||
				F52162E401C7C79E012300F4,
 | 
					 | 
				
			||||||
				F51D17FE01C8F5B701E11C2E,
 | 
					 | 
				
			||||||
				F51D180401C8FDD001E11C2E,
 | 
					 | 
				
			||||||
				F51D180501C8FDD001E11C2E,
 | 
					 | 
				
			||||||
				F576ABFC01D5E77301A85B03,
 | 
					 | 
				
			||||||
				F576ABFF01D61D7401A85B03,
 | 
					 | 
				
			||||||
				F51F791301DFC95301D13771,
 | 
					 | 
				
			||||||
				F51DBB15022D95E801A85B04,
 | 
					 | 
				
			||||||
				F51DBB19022D995501A85B04,
 | 
					 | 
				
			||||||
				F51DBB1D022D9D8F01A85B04,
 | 
					 | 
				
			||||||
				F57C88870232853501A85B04,
 | 
					 | 
				
			||||||
				F57C888B0232884501A85B04,
 | 
					 | 
				
			||||||
				F57C888F02328D7201A85B04,
 | 
					 | 
				
			||||||
				F5F18138023EC63701A85B04,
 | 
					 | 
				
			||||||
				F5F18139023EC63701A85B04,
 | 
					 | 
				
			||||||
				F5F1813A023EC63701A85B04,
 | 
					 | 
				
			||||||
				F55047BC0240F6E501A85B04,
 | 
					 | 
				
			||||||
			);
 | 
					 | 
				
			||||||
			isa = PBXHeadersBuildPhase;
 | 
					 | 
				
			||||||
			name = Headers;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		08FB77A1FE84155DC02AAC07 = {
 | 
					 | 
				
			||||||
			buildActionMask = 2147483647;
 | 
					 | 
				
			||||||
			files = (
 | 
					 | 
				
			||||||
				F52162D101C7B904012300F4,
 | 
					 | 
				
			||||||
				F52162D201C7B904012300F4,
 | 
					 | 
				
			||||||
				F52162D301C7B904012300F4,
 | 
					 | 
				
			||||||
				F52162DD01C7BCDD012300F4,
 | 
					 | 
				
			||||||
				F52162E501C7C79E012300F4,
 | 
					 | 
				
			||||||
				F51D17FF01C8F5B701E11C2E,
 | 
					 | 
				
			||||||
				F51D180701C8FDD001E11C2E,
 | 
					 | 
				
			||||||
				F576ABFD01D5E77301A85B03,
 | 
					 | 
				
			||||||
				F5263AEE01E263D201CE8F8F,
 | 
					 | 
				
			||||||
				F51DBB16022D95E801A85B04,
 | 
					 | 
				
			||||||
				F51DBB1A022D995501A85B04,
 | 
					 | 
				
			||||||
				F51DBB1E022D9D8F01A85B04,
 | 
					 | 
				
			||||||
				F57C88880232853501A85B04,
 | 
					 | 
				
			||||||
				F57C888C0232884501A85B04,
 | 
					 | 
				
			||||||
				F57C889002328D7201A85B04,
 | 
					 | 
				
			||||||
				F55047BD0240F6E501A85B04,
 | 
					 | 
				
			||||||
			);
 | 
					 | 
				
			||||||
			isa = PBXSourcesBuildPhase;
 | 
					 | 
				
			||||||
			name = Sources;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		08FB77A3FE84155DC02AAC07 = {
 | 
					 | 
				
			||||||
			buildActionMask = 2147483647;
 | 
					 | 
				
			||||||
			files = (
 | 
					 | 
				
			||||||
			);
 | 
					 | 
				
			||||||
			isa = PBXFrameworksBuildPhase;
 | 
					 | 
				
			||||||
			name = "Frameworks & Libraries";
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		08FB77A5FE84155DC02AAC07 = {
 | 
					 | 
				
			||||||
			buildActionMask = 2147483647;
 | 
					 | 
				
			||||||
			files = (
 | 
					 | 
				
			||||||
			);
 | 
					 | 
				
			||||||
			isa = PBXRezBuildPhase;
 | 
					 | 
				
			||||||
			name = "ResourceManager Resources";
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
//080
 | 
					 | 
				
			||||||
//081
 | 
					 | 
				
			||||||
//082
 | 
					 | 
				
			||||||
//083
 | 
					 | 
				
			||||||
//084
 | 
					 | 
				
			||||||
//1A0
 | 
					 | 
				
			||||||
//1A1
 | 
					 | 
				
			||||||
//1A2
 | 
					 | 
				
			||||||
//1A3
 | 
					 | 
				
			||||||
//1A4
 | 
					 | 
				
			||||||
		1AB674ADFE9D54B511CA2CBB = {
 | 
					 | 
				
			||||||
			children = (
 | 
					 | 
				
			||||||
				034768E8FF38A79811DB9C8B,
 | 
					 | 
				
			||||||
				F538241D024F89BC01A85B04,
 | 
					 | 
				
			||||||
			);
 | 
					 | 
				
			||||||
			isa = PBXGroup;
 | 
					 | 
				
			||||||
			name = Products;
 | 
					 | 
				
			||||||
			refType = 4;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
//1A0
 | 
					 | 
				
			||||||
//1A1
 | 
					 | 
				
			||||||
//1A2
 | 
					 | 
				
			||||||
//1A3
 | 
					 | 
				
			||||||
//1A4
 | 
					 | 
				
			||||||
//F50
 | 
					 | 
				
			||||||
//F51
 | 
					 | 
				
			||||||
//F52
 | 
					 | 
				
			||||||
//F53
 | 
					 | 
				
			||||||
//F54
 | 
					 | 
				
			||||||
		F51D17FC01C8F5B701E11C2E = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			name = client.c;
 | 
					 | 
				
			||||||
			path = ../src/ngircd/client.c;
 | 
					 | 
				
			||||||
			refType = 2;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F51D17FD01C8F5B701E11C2E = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			name = client.h;
 | 
					 | 
				
			||||||
			path = ../src/ngircd/client.h;
 | 
					 | 
				
			||||||
			refType = 2;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F51D17FE01C8F5B701E11C2E = {
 | 
					 | 
				
			||||||
			fileRef = F51D17FD01C8F5B701E11C2E;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F51D17FF01C8F5B701E11C2E = {
 | 
					 | 
				
			||||||
			fileRef = F51D17FC01C8F5B701E11C2E;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F51D180001C8FDD001E11C2E = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			name = channel.c;
 | 
					 | 
				
			||||||
			path = ../src/ngircd/channel.c;
 | 
					 | 
				
			||||||
			refType = 2;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F51D180101C8FDD001E11C2E = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			name = channel.h;
 | 
					 | 
				
			||||||
			path = ../src/ngircd/channel.h;
 | 
					 | 
				
			||||||
			refType = 2;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F51D180201C8FDD001E11C2E = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			name = irc.c;
 | 
					 | 
				
			||||||
			path = ../src/ngircd/irc.c;
 | 
					 | 
				
			||||||
			refType = 2;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F51D180301C8FDD001E11C2E = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			name = irc.h;
 | 
					 | 
				
			||||||
			path = ../src/ngircd/irc.h;
 | 
					 | 
				
			||||||
			refType = 2;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F51D180401C8FDD001E11C2E = {
 | 
					 | 
				
			||||||
			fileRef = F51D180101C8FDD001E11C2E;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F51D180501C8FDD001E11C2E = {
 | 
					 | 
				
			||||||
			fileRef = F51D180301C8FDD001E11C2E;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F51D180701C8FDD001E11C2E = {
 | 
					 | 
				
			||||||
			fileRef = F51D180201C8FDD001E11C2E;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F51DBB13022D95E801A85B04 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			path = "irc-write.c";
 | 
					 | 
				
			||||||
			refType = 4;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F51DBB14022D95E801A85B04 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			path = "irc-write.h";
 | 
					 | 
				
			||||||
			refType = 4;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F51DBB15022D95E801A85B04 = {
 | 
					 | 
				
			||||||
			fileRef = F51DBB14022D95E801A85B04;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F51DBB16022D95E801A85B04 = {
 | 
					 | 
				
			||||||
			fileRef = F51DBB13022D95E801A85B04;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F51DBB17022D995501A85B04 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			path = "irc-mode.c";
 | 
					 | 
				
			||||||
			refType = 4;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F51DBB18022D995501A85B04 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			path = "irc-mode.h";
 | 
					 | 
				
			||||||
			refType = 4;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F51DBB19022D995501A85B04 = {
 | 
					 | 
				
			||||||
			fileRef = F51DBB18022D995501A85B04;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F51DBB1A022D995501A85B04 = {
 | 
					 | 
				
			||||||
			fileRef = F51DBB17022D995501A85B04;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F51DBB1B022D9D8F01A85B04 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			path = "irc-login.c";
 | 
					 | 
				
			||||||
			refType = 4;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F51DBB1C022D9D8F01A85B04 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			path = "irc-login.h";
 | 
					 | 
				
			||||||
			refType = 4;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F51DBB1D022D9D8F01A85B04 = {
 | 
					 | 
				
			||||||
			fileRef = F51DBB1C022D9D8F01A85B04;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F51DBB1E022D9D8F01A85B04 = {
 | 
					 | 
				
			||||||
			fileRef = F51DBB1B022D9D8F01A85B04;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F51F791201DFC95301D13771 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			name = defines.h;
 | 
					 | 
				
			||||||
			path = ../src/ngircd/defines.h;
 | 
					 | 
				
			||||||
			refType = 2;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F51F791301DFC95301D13771 = {
 | 
					 | 
				
			||||||
			fileRef = F51F791201DFC95301D13771;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F51F791401DFD0DE01D13771 = {
 | 
					 | 
				
			||||||
			children = (
 | 
					 | 
				
			||||||
				F5263AEF01E2A9B801CE8F8F,
 | 
					 | 
				
			||||||
				F51F791501DFD0DE01D13771,
 | 
					 | 
				
			||||||
				F51F791601DFD0DE01D13771,
 | 
					 | 
				
			||||||
				F51F791701DFD0DE01D13771,
 | 
					 | 
				
			||||||
			);
 | 
					 | 
				
			||||||
			isa = PBXGroup;
 | 
					 | 
				
			||||||
			name = doc;
 | 
					 | 
				
			||||||
			path = /Users/alex/Develop/ngircd/doc;
 | 
					 | 
				
			||||||
			refType = 0;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F51F791501DFD0DE01D13771 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			path = CVS.txt;
 | 
					 | 
				
			||||||
			refType = 4;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F51F791601DFD0DE01D13771 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			path = RFC.txt;
 | 
					 | 
				
			||||||
			refType = 4;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F51F791701DFD0DE01D13771 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			path = "sample-ngircd.conf";
 | 
					 | 
				
			||||||
			refType = 4;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F52162B301C7B904012300F4 = {
 | 
					 | 
				
			||||||
			children = (
 | 
					 | 
				
			||||||
				F52162B801C7B904012300F4,
 | 
					 | 
				
			||||||
				F52162D801C7BAAE012300F4,
 | 
					 | 
				
			||||||
				F52162B901C7B904012300F4,
 | 
					 | 
				
			||||||
				F5F18132023EC61E01A85B04,
 | 
					 | 
				
			||||||
			);
 | 
					 | 
				
			||||||
			isa = PBXGroup;
 | 
					 | 
				
			||||||
			name = src;
 | 
					 | 
				
			||||||
			path = ../src;
 | 
					 | 
				
			||||||
			refType = 2;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F52162B801C7B904012300F4 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			path = Makefile.am;
 | 
					 | 
				
			||||||
			refType = 4;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F52162B901C7B904012300F4 = {
 | 
					 | 
				
			||||||
			children = (
 | 
					 | 
				
			||||||
				F52162BD01C7B904012300F4,
 | 
					 | 
				
			||||||
				F52162BE01C7B904012300F4,
 | 
					 | 
				
			||||||
				F52162BF01C7B904012300F4,
 | 
					 | 
				
			||||||
				F51D180001C8FDD001E11C2E,
 | 
					 | 
				
			||||||
				F51D180101C8FDD001E11C2E,
 | 
					 | 
				
			||||||
				F51D17FC01C8F5B701E11C2E,
 | 
					 | 
				
			||||||
				F51D17FD01C8F5B701E11C2E,
 | 
					 | 
				
			||||||
				F52162E201C7C77B012300F4,
 | 
					 | 
				
			||||||
				F52162E301C7C77B012300F4,
 | 
					 | 
				
			||||||
				F52162DA01C7BCDC012300F4,
 | 
					 | 
				
			||||||
				F52162DB01C7BCDC012300F4,
 | 
					 | 
				
			||||||
				F55047BA0240F6E501A85B04,
 | 
					 | 
				
			||||||
				F55047BB0240F6E501A85B04,
 | 
					 | 
				
			||||||
				F51D180201C8FDD001E11C2E,
 | 
					 | 
				
			||||||
				F51D180301C8FDD001E11C2E,
 | 
					 | 
				
			||||||
				F57C888D02328D7201A85B04,
 | 
					 | 
				
			||||||
				F57C888E02328D7201A85B04,
 | 
					 | 
				
			||||||
				F51DBB1B022D9D8F01A85B04,
 | 
					 | 
				
			||||||
				F51DBB1C022D9D8F01A85B04,
 | 
					 | 
				
			||||||
				F51DBB17022D995501A85B04,
 | 
					 | 
				
			||||||
				F51DBB18022D995501A85B04,
 | 
					 | 
				
			||||||
				F57C88850232853501A85B04,
 | 
					 | 
				
			||||||
				F57C88860232853501A85B04,
 | 
					 | 
				
			||||||
				F57C88890232884501A85B04,
 | 
					 | 
				
			||||||
				F57C888A0232884501A85B04,
 | 
					 | 
				
			||||||
				F51DBB13022D95E801A85B04,
 | 
					 | 
				
			||||||
				F51DBB14022D95E801A85B04,
 | 
					 | 
				
			||||||
				F52162BB01C7B904012300F4,
 | 
					 | 
				
			||||||
				F52162BC01C7B904012300F4,
 | 
					 | 
				
			||||||
				F576ABFA01D5E77301A85B03,
 | 
					 | 
				
			||||||
				F576ABFB01D5E77301A85B03,
 | 
					 | 
				
			||||||
				F52162C001C7B904012300F4,
 | 
					 | 
				
			||||||
				F52162C101C7B904012300F4,
 | 
					 | 
				
			||||||
				F51F791201DFC95301D13771,
 | 
					 | 
				
			||||||
				F576ABFE01D61D7401A85B03,
 | 
					 | 
				
			||||||
			);
 | 
					 | 
				
			||||||
			isa = PBXGroup;
 | 
					 | 
				
			||||||
			path = ngircd;
 | 
					 | 
				
			||||||
			refType = 4;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F52162BB01C7B904012300F4 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			path = log.c;
 | 
					 | 
				
			||||||
			refType = 4;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F52162BC01C7B904012300F4 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			path = log.h;
 | 
					 | 
				
			||||||
			refType = 4;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F52162BD01C7B904012300F4 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			path = Makefile.am;
 | 
					 | 
				
			||||||
			refType = 4;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F52162BE01C7B904012300F4 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			path = ngircd.c;
 | 
					 | 
				
			||||||
			refType = 4;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F52162BF01C7B904012300F4 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			path = ngircd.h;
 | 
					 | 
				
			||||||
			refType = 4;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F52162C001C7B904012300F4 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			path = tool.c;
 | 
					 | 
				
			||||||
			refType = 4;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F52162C101C7B904012300F4 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			path = tool.h;
 | 
					 | 
				
			||||||
			refType = 4;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F52162C301C7B904012300F4 = {
 | 
					 | 
				
			||||||
			isa = PBXExecutableFileReference;
 | 
					 | 
				
			||||||
			name = autogen.sh;
 | 
					 | 
				
			||||||
			path = ../autogen.sh;
 | 
					 | 
				
			||||||
			refType = 2;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F52162C401C7B904012300F4 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			name = configure.in;
 | 
					 | 
				
			||||||
			path = ../configure.in;
 | 
					 | 
				
			||||||
			refType = 2;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F52162C501C7B904012300F4 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			name = Makefile.am;
 | 
					 | 
				
			||||||
			path = ../Makefile.am;
 | 
					 | 
				
			||||||
			refType = 2;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F52162C601C7B904012300F4 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			name = INSTALL;
 | 
					 | 
				
			||||||
			path = ../INSTALL;
 | 
					 | 
				
			||||||
			refType = 2;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F52162C701C7B904012300F4 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			name = AUTHORS;
 | 
					 | 
				
			||||||
			path = ../AUTHORS;
 | 
					 | 
				
			||||||
			refType = 2;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F52162C801C7B904012300F4 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			name = ChangeLog;
 | 
					 | 
				
			||||||
			path = ../ChangeLog;
 | 
					 | 
				
			||||||
			refType = 2;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F52162C901C7B904012300F4 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			name = COPYING;
 | 
					 | 
				
			||||||
			path = ../COPYING;
 | 
					 | 
				
			||||||
			refType = 2;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F52162CA01C7B904012300F4 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			name = NEWS;
 | 
					 | 
				
			||||||
			path = ../NEWS;
 | 
					 | 
				
			||||||
			refType = 2;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F52162CB01C7B904012300F4 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			name = README;
 | 
					 | 
				
			||||||
			path = ../README;
 | 
					 | 
				
			||||||
			refType = 2;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F52162CE01C7B904012300F4 = {
 | 
					 | 
				
			||||||
			fileRef = F52162BC01C7B904012300F4;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F52162CF01C7B904012300F4 = {
 | 
					 | 
				
			||||||
			fileRef = F52162BF01C7B904012300F4;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F52162D001C7B904012300F4 = {
 | 
					 | 
				
			||||||
			fileRef = F52162C101C7B904012300F4;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F52162D101C7B904012300F4 = {
 | 
					 | 
				
			||||||
			fileRef = F52162BB01C7B904012300F4;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F52162D201C7B904012300F4 = {
 | 
					 | 
				
			||||||
			fileRef = F52162BE01C7B904012300F4;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F52162D301C7B904012300F4 = {
 | 
					 | 
				
			||||||
			fileRef = F52162C001C7B904012300F4;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F52162D801C7BAAE012300F4 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			name = config.h;
 | 
					 | 
				
			||||||
			path = ../src/config.h;
 | 
					 | 
				
			||||||
			refType = 2;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F52162D901C7BAAE012300F4 = {
 | 
					 | 
				
			||||||
			fileRef = F52162D801C7BAAE012300F4;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F52162DA01C7BCDC012300F4 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			name = conn.c;
 | 
					 | 
				
			||||||
			path = ../src/ngircd/conn.c;
 | 
					 | 
				
			||||||
			refType = 2;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F52162DB01C7BCDC012300F4 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			name = conn.h;
 | 
					 | 
				
			||||||
			path = ../src/ngircd/conn.h;
 | 
					 | 
				
			||||||
			refType = 2;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F52162DC01C7BCDD012300F4 = {
 | 
					 | 
				
			||||||
			fileRef = F52162DB01C7BCDC012300F4;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F52162DD01C7BCDD012300F4 = {
 | 
					 | 
				
			||||||
			fileRef = F52162DA01C7BCDC012300F4;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F52162E201C7C77B012300F4 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			name = conf.c;
 | 
					 | 
				
			||||||
			path = ../src/ngircd/conf.c;
 | 
					 | 
				
			||||||
			refType = 2;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F52162E301C7C77B012300F4 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			name = conf.h;
 | 
					 | 
				
			||||||
			path = ../src/ngircd/conf.h;
 | 
					 | 
				
			||||||
			refType = 2;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F52162E401C7C79E012300F4 = {
 | 
					 | 
				
			||||||
			fileRef = F52162E301C7C77B012300F4;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F52162E501C7C79E012300F4 = {
 | 
					 | 
				
			||||||
			fileRef = F52162E201C7C77B012300F4;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F5263AEE01E263D201CE8F8F = {
 | 
					 | 
				
			||||||
			fileRef = F51D180001C8FDD001E11C2E;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F5263AEF01E2A9B801CE8F8F = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			name = Makefile.am;
 | 
					 | 
				
			||||||
			path = ../doc/Makefile.am;
 | 
					 | 
				
			||||||
			refType = 2;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F538241D024F89BC01A85B04 = {
 | 
					 | 
				
			||||||
			isa = PBXExecutableFileReference;
 | 
					 | 
				
			||||||
			path = portabtest;
 | 
					 | 
				
			||||||
			refType = 3;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F538241E024F89BC01A85B04 = {
 | 
					 | 
				
			||||||
			buildPhases = (
 | 
					 | 
				
			||||||
				F538241F024F89BC01A85B04,
 | 
					 | 
				
			||||||
				F5382423024F89BC01A85B04,
 | 
					 | 
				
			||||||
				F5382425024F89BC01A85B04,
 | 
					 | 
				
			||||||
				F5382426024F89BC01A85B04,
 | 
					 | 
				
			||||||
			);
 | 
					 | 
				
			||||||
			buildSettings = {
 | 
					 | 
				
			||||||
				OTHER_CFLAGS = "";
 | 
					 | 
				
			||||||
				OTHER_LDFLAGS = "";
 | 
					 | 
				
			||||||
				OTHER_REZFLAGS = "";
 | 
					 | 
				
			||||||
				PRODUCT_NAME = portabtest;
 | 
					 | 
				
			||||||
				REZ_EXECUTABLE = YES;
 | 
					 | 
				
			||||||
				SECTORDER_FLAGS = "";
 | 
					 | 
				
			||||||
				WARNING_CFLAGS = "-Wall";
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
			dependencies = (
 | 
					 | 
				
			||||||
			);
 | 
					 | 
				
			||||||
			isa = PBXToolTarget;
 | 
					 | 
				
			||||||
			name = portabtest;
 | 
					 | 
				
			||||||
			productInstallPath = /usr/local/bin;
 | 
					 | 
				
			||||||
			productName = portabtest;
 | 
					 | 
				
			||||||
			productReference = F538241D024F89BC01A85B04;
 | 
					 | 
				
			||||||
			shouldUseHeadermap = 0;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F538241F024F89BC01A85B04 = {
 | 
					 | 
				
			||||||
			buildActionMask = 2147483647;
 | 
					 | 
				
			||||||
			files = (
 | 
					 | 
				
			||||||
				F5382420024F89BC01A85B04,
 | 
					 | 
				
			||||||
				F5382421024F89BC01A85B04,
 | 
					 | 
				
			||||||
				F5382422024F89BC01A85B04,
 | 
					 | 
				
			||||||
			);
 | 
					 | 
				
			||||||
			isa = PBXHeadersBuildPhase;
 | 
					 | 
				
			||||||
			name = Headers;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F5382420024F89BC01A85B04 = {
 | 
					 | 
				
			||||||
			fileRef = F5F18134023EC63701A85B04;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F5382421024F89BC01A85B04 = {
 | 
					 | 
				
			||||||
			fileRef = F5F18135023EC63701A85B04;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F5382422024F89BC01A85B04 = {
 | 
					 | 
				
			||||||
			fileRef = F5F18136023EC63701A85B04;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F5382423024F89BC01A85B04 = {
 | 
					 | 
				
			||||||
			buildActionMask = 2147483647;
 | 
					 | 
				
			||||||
			files = (
 | 
					 | 
				
			||||||
				F5382424024F89BC01A85B04,
 | 
					 | 
				
			||||||
			);
 | 
					 | 
				
			||||||
			isa = PBXSourcesBuildPhase;
 | 
					 | 
				
			||||||
			name = Sources;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F5382424024F89BC01A85B04 = {
 | 
					 | 
				
			||||||
			fileRef = F5F18137023EC63701A85B04;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F5382425024F89BC01A85B04 = {
 | 
					 | 
				
			||||||
			buildActionMask = 2147483647;
 | 
					 | 
				
			||||||
			files = (
 | 
					 | 
				
			||||||
			);
 | 
					 | 
				
			||||||
			isa = PBXFrameworksBuildPhase;
 | 
					 | 
				
			||||||
			name = "Frameworks & Libraries";
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F5382426024F89BC01A85B04 = {
 | 
					 | 
				
			||||||
			buildActionMask = 2147483647;
 | 
					 | 
				
			||||||
			files = (
 | 
					 | 
				
			||||||
			);
 | 
					 | 
				
			||||||
			isa = PBXRezBuildPhase;
 | 
					 | 
				
			||||||
			name = "ResourceManager Resources";
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F55047BA0240F6E501A85B04 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			path = hash.c;
 | 
					 | 
				
			||||||
			refType = 4;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F55047BB0240F6E501A85B04 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			path = hash.h;
 | 
					 | 
				
			||||||
			refType = 4;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F55047BC0240F6E501A85B04 = {
 | 
					 | 
				
			||||||
			fileRef = F55047BB0240F6E501A85B04;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F55047BD0240F6E501A85B04 = {
 | 
					 | 
				
			||||||
			fileRef = F55047BA0240F6E501A85B04;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F56D8B9E01E0BFA00155ADA7 = {
 | 
					 | 
				
			||||||
			children = (
 | 
					 | 
				
			||||||
				F56D8B9F01E0BFA00155ADA7,
 | 
					 | 
				
			||||||
				F56D8BA001E0BFA00155ADA7,
 | 
					 | 
				
			||||||
			);
 | 
					 | 
				
			||||||
			isa = PBXGroup;
 | 
					 | 
				
			||||||
			name = MacOSX;
 | 
					 | 
				
			||||||
			path = "";
 | 
					 | 
				
			||||||
			refType = 2;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F56D8B9F01E0BFA00155ADA7 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			path = Makefile.am;
 | 
					 | 
				
			||||||
			refType = 4;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F56D8BA001E0BFA00155ADA7 = {
 | 
					 | 
				
			||||||
			children = (
 | 
					 | 
				
			||||||
				F56D8BA101E0BFA00155ADA7,
 | 
					 | 
				
			||||||
			);
 | 
					 | 
				
			||||||
			isa = PBXGroup;
 | 
					 | 
				
			||||||
			path = ngircd.pbproj;
 | 
					 | 
				
			||||||
			refType = 4;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F56D8BA101E0BFA00155ADA7 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			path = Makefile.am;
 | 
					 | 
				
			||||||
			refType = 4;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F576ABFA01D5E77301A85B03 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			path = parse.c;
 | 
					 | 
				
			||||||
			refType = 4;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F576ABFB01D5E77301A85B03 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			path = parse.h;
 | 
					 | 
				
			||||||
			refType = 4;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F576ABFC01D5E77301A85B03 = {
 | 
					 | 
				
			||||||
			fileRef = F576ABFB01D5E77301A85B03;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F576ABFD01D5E77301A85B03 = {
 | 
					 | 
				
			||||||
			fileRef = F576ABFA01D5E77301A85B03;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F576ABFE01D61D7401A85B03 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			name = messages.h;
 | 
					 | 
				
			||||||
			path = ../src/ngircd/messages.h;
 | 
					 | 
				
			||||||
			refType = 2;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F576ABFF01D61D7401A85B03 = {
 | 
					 | 
				
			||||||
			fileRef = F576ABFE01D61D7401A85B03;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F57C88850232853501A85B04 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			path = "irc-oper.c";
 | 
					 | 
				
			||||||
			refType = 4;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F57C88860232853501A85B04 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			path = "irc-oper.h";
 | 
					 | 
				
			||||||
			refType = 4;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F57C88870232853501A85B04 = {
 | 
					 | 
				
			||||||
			fileRef = F57C88860232853501A85B04;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F57C88880232853501A85B04 = {
 | 
					 | 
				
			||||||
			fileRef = F57C88850232853501A85B04;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F57C88890232884501A85B04 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			path = "irc-server.c";
 | 
					 | 
				
			||||||
			refType = 4;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F57C888A0232884501A85B04 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			path = "irc-server.h";
 | 
					 | 
				
			||||||
			refType = 4;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F57C888B0232884501A85B04 = {
 | 
					 | 
				
			||||||
			fileRef = F57C888A0232884501A85B04;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F57C888C0232884501A85B04 = {
 | 
					 | 
				
			||||||
			fileRef = F57C88890232884501A85B04;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F57C888D02328D7201A85B04 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			path = "irc-channel.c";
 | 
					 | 
				
			||||||
			refType = 4;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F57C888E02328D7201A85B04 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			path = "irc-channel.h";
 | 
					 | 
				
			||||||
			refType = 4;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F57C888F02328D7201A85B04 = {
 | 
					 | 
				
			||||||
			fileRef = F57C888E02328D7201A85B04;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F57C889002328D7201A85B04 = {
 | 
					 | 
				
			||||||
			fileRef = F57C888D02328D7201A85B04;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F5F18132023EC61E01A85B04 = {
 | 
					 | 
				
			||||||
			children = (
 | 
					 | 
				
			||||||
				F5F18133023EC63701A85B04,
 | 
					 | 
				
			||||||
				F5F18134023EC63701A85B04,
 | 
					 | 
				
			||||||
				F5F18135023EC63701A85B04,
 | 
					 | 
				
			||||||
				F5F18136023EC63701A85B04,
 | 
					 | 
				
			||||||
				F5F18137023EC63701A85B04,
 | 
					 | 
				
			||||||
			);
 | 
					 | 
				
			||||||
			isa = PBXGroup;
 | 
					 | 
				
			||||||
			name = portab;
 | 
					 | 
				
			||||||
			path = /Users/alex/Develop/ngircd/src;
 | 
					 | 
				
			||||||
			refType = 0;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F5F18133023EC63701A85B04 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			name = Makefile.am;
 | 
					 | 
				
			||||||
			path = portab/Makefile.am;
 | 
					 | 
				
			||||||
			refType = 4;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F5F18134023EC63701A85B04 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			name = exp.h;
 | 
					 | 
				
			||||||
			path = portab/exp.h;
 | 
					 | 
				
			||||||
			refType = 4;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F5F18135023EC63701A85B04 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			name = imp.h;
 | 
					 | 
				
			||||||
			path = portab/imp.h;
 | 
					 | 
				
			||||||
			refType = 4;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F5F18136023EC63701A85B04 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			name = portab.h;
 | 
					 | 
				
			||||||
			path = portab/portab.h;
 | 
					 | 
				
			||||||
			refType = 4;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F5F18137023EC63701A85B04 = {
 | 
					 | 
				
			||||||
			isa = PBXFileReference;
 | 
					 | 
				
			||||||
			name = portabtest.c;
 | 
					 | 
				
			||||||
			path = portab/portabtest.c;
 | 
					 | 
				
			||||||
			refType = 4;
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F5F18138023EC63701A85B04 = {
 | 
					 | 
				
			||||||
			fileRef = F5F18134023EC63701A85B04;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F5F18139023EC63701A85B04 = {
 | 
					 | 
				
			||||||
			fileRef = F5F18135023EC63701A85B04;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		F5F1813A023EC63701A85B04 = {
 | 
					 | 
				
			||||||
			fileRef = F5F18136023EC63701A85B04;
 | 
					 | 
				
			||||||
			isa = PBXBuildFile;
 | 
					 | 
				
			||||||
			settings = {
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
	};
 | 
					 | 
				
			||||||
	rootObject = 08FB7793FE84155DC02AAC07;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										52
									
								
								Makefile.am
									
									
									
									
									
								
							
							
						
						
									
										52
									
								
								Makefile.am
									
									
									
									
									
								
							@@ -1,28 +1,48 @@
 | 
				
			|||||||
#
 | 
					#
 | 
				
			||||||
# ngIRCd -- The Next Generation IRC Daemon
 | 
					# ngIRCd -- The Next Generation IRC Daemon
 | 
				
			||||||
# Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
 | 
					# Copyright (c)2001-2024 Alexander Barton (alex@barton.de) and Contributors
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
 | 
					# This program is free software; you can redistribute it and/or modify
 | 
				
			||||||
# der GNU General Public License (GPL), wie von der Free Software Foundation
 | 
					# it under the terms of the GNU General Public License as published by
 | 
				
			||||||
# herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2
 | 
					# the Free Software Foundation; either version 2 of the License, or
 | 
				
			||||||
# der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version.
 | 
					# (at your option) any later version.
 | 
				
			||||||
# Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
 | 
					# Please read the file COPYING, README and AUTHORS for more information.
 | 
				
			||||||
# der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# $Id: Makefile.am,v 1.8 2002/03/25 19:39:48 alex Exp $
 | 
					 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
AUTOMAKE_OPTIONS = gnu
 | 
					SUBDIRS = doc src man contrib
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SUBDIRS = doc MacOSX src
 | 
					EXTRA_DIST = \
 | 
				
			||||||
 | 
						AUTHORS.md \
 | 
				
			||||||
 | 
						INSTALL.md \
 | 
				
			||||||
 | 
						README.md \
 | 
				
			||||||
 | 
						autogen.sh \
 | 
				
			||||||
 | 
						configure.ng \
 | 
				
			||||||
 | 
						.clang_complete \
 | 
				
			||||||
 | 
						.dockerignore \
 | 
				
			||||||
 | 
						.mailmap
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					clean-local:
 | 
				
			||||||
 | 
						rm -f build-stamp*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
maintainer-clean-local:
 | 
					maintainer-clean-local:
 | 
				
			||||||
	rm -rf autom4te.cache
 | 
						rm -rf autom4te.cache
 | 
				
			||||||
	rm -f Makefile.in Makefile aclocal.m4 configure
 | 
						rm -f Makefile.in Makefile aclocal.m4 configure configure.ac
 | 
				
			||||||
	rm -f mkinstalldirs missing depcomp install-sh
 | 
						rm -f ar-lib mkinstalldirs missing depcomp install-sh
 | 
				
			||||||
	rm -f config.log
 | 
						rm -f config.log debian
 | 
				
			||||||
 | 
					
 | 
				
			||||||
lint:
 | 
					testsuite:
 | 
				
			||||||
	make -C src/ngircd lint
 | 
						${MAKE} -C src/testsuite check
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					srcdoc:
 | 
				
			||||||
 | 
						${MAKE} -C doc/src srcdoc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					rpm: distcheck
 | 
				
			||||||
 | 
						rpmbuild -ta ngircd-$(VERSION).tar.gz
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					deb:
 | 
				
			||||||
 | 
						[ -f debian/rules ] || ln -s contrib/Debian debian
 | 
				
			||||||
 | 
						dpkg-buildpackage --build=binary
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.PHONY: deb rpm srcdoc testsuite
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# -eof-
 | 
					# -eof-
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										68
									
								
								README
									
									
									
									
									
								
							
							
						
						
									
										68
									
								
								README
									
									
									
									
									
								
							@@ -1,68 +0,0 @@
 | 
				
			|||||||
 
 | 
					 | 
				
			||||||
                     ngIRCd - Next Generation IRC Server
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                      (c)2001,2002 by Alexander Barton,
 | 
					 | 
				
			||||||
                    alex@barton.de, http://www.barton.de/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                  ngIRCd ist freie Software und steht unter
 | 
					 | 
				
			||||||
                       der GNU General Public License.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                           -- README / Liesmich --
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
I. Einfuehrung
 | 
					 | 
				
			||||||
~~~~~~~~~~~~~~
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
ngIRCd ist ein Server fuer den Internet Relay Chat (IRC). Er ist von Grund
 | 
					 | 
				
			||||||
auf neu geschrieben, also nicht wie die meisten anderen IRCd's vom Urvater,
 | 
					 | 
				
			||||||
dem Daemon des IRCNet abgeleitet.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Zur Zeit befindet sich der ngIRCd noch in Entwicklung, teilweise fehlen noch
 | 
					 | 
				
			||||||
Features oder sind noch nicht "final" implementiert. 
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Channels sind inzwischen implementiert (seit Version 0.1.0), privates Chatten
 | 
					 | 
				
			||||||
mit /msg und /query funktioniert ebenso. Server-Links werden dabei unter-
 | 
					 | 
				
			||||||
stuetzt. Einige User- und Channel-Modes sind implementiert, hier kennt der
 | 
					 | 
				
			||||||
Server jedoch noch nicht alles.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Bisher (mehr oder wenig vollstaendig) implementierte IRC-Befehle:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
AWAY, DIE, ERROR, ISON, JOIN, KILL, LINKS, LUSERS, MODE, MOTD, NAMES, NICK,
 | 
					 | 
				
			||||||
NOTICE, NJOIN, OPER, PART, PASS, PING, PONG, PRIVMSG, QUIT, RESTART, SERVER,
 | 
					 | 
				
			||||||
SQUIT, TOPIC, USER, USERHOST, VERSION, WHO, WHOIS.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Ueber Rueckmeldungen, Bug-Reports und Patches freue ich mich! Also los, haut
 | 
					 | 
				
			||||||
in die Tasten! :-))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Via E-Mail erreichst du mich als <alex@arthur.ath.cx> bzw. <alex@barton.de>.
 | 
					 | 
				
			||||||
Die Homepage des ngIRCd findest du unter <http://arthur.ath.cx/~alex/ngircd/>.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Hinweise zur Installation findest du in der Datei INSTALL.
 | 
					 | 
				
			||||||
Alle Autoren von ngIRCd sind in AUTHORS aufgefuehrt.
 | 
					 | 
				
			||||||
In der Datei COPYING steht die GNU General Public License.
 | 
					 | 
				
			||||||
Das README liest du gerade ,-)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
II. Vorteile
 | 
					 | 
				
			||||||
~~~~~~~~~~~~
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- keine Probleme mit Servern, deren IP-Adressen nicht statisch sind,
 | 
					 | 
				
			||||||
- uebersichtliche ("schlanke") Konfigurationsdatei,
 | 
					 | 
				
			||||||
- frei verfuegbarer, moderner und "aufgeraeumter" C-Quellcode.
 | 
					 | 
				
			||||||
- ngIRCd wird aktiv weiter entwickelt.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
III. Unterstuetzte Plattformen
 | 
					 | 
				
			||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- A/UX
 | 
					 | 
				
			||||||
- FreeBSD
 | 
					 | 
				
			||||||
- Linux
 | 
					 | 
				
			||||||
- Mac OS X
 | 
					 | 
				
			||||||
- NetBSD
 | 
					 | 
				
			||||||
- Windows mit Cygwin
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
-- 
 | 
					 | 
				
			||||||
$Id: README,v 1.8 2002/03/21 23:25:15 alex Exp $
 | 
					 | 
				
			||||||
							
								
								
									
										101
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,101 @@
 | 
				
			|||||||
 | 
					# [ngIRCd](https://ngircd.barton.de) - Internet Relay Chat Server
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Introduction
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*ngIRCd* is a free, portable and lightweight *Internet Relay Chat* ([IRC])
 | 
				
			||||||
 | 
					server for small or private networks, developed under the terms of the GNU
 | 
				
			||||||
 | 
					General Public License ([GPL]); please see the file `COPYING` for licensing
 | 
				
			||||||
 | 
					information.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The server is quite easy to configure and runs as a single-node server or can
 | 
				
			||||||
 | 
					be part of a network of ngIRCd servers in a LAN or across the internet. It
 | 
				
			||||||
 | 
					optionally supports the IPv6 protocol, SSL/TLS-protected client-server and
 | 
				
			||||||
 | 
					server-server links, the Pluggable Authentication Modules (PAM) system for user
 | 
				
			||||||
 | 
					authentication, IDENT requests, and character set conversion for legacy
 | 
				
			||||||
 | 
					clients.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The name ngIRCd stands for *next-generation IRC daemon*, which is a little bit
 | 
				
			||||||
 | 
					exaggerated: *lightweight Internet Relay Chat server* most probably would have
 | 
				
			||||||
 | 
					been a better name :-)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Status
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Development of *ngIRCd* started back in 2001: The server has been written from
 | 
				
			||||||
 | 
					scratch in C, tries to follow all relevant standards, and is not based on the
 | 
				
			||||||
 | 
					forefather, the daemon of the IRCNet.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					It is not the goal of ngIRCd to implement all the nasty behaviors of the
 | 
				
			||||||
 | 
					original `ircd` or corner-cases in the RFCs, but to implement most of the useful
 | 
				
			||||||
 | 
					commands and semantics that are used by existing clients.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*ngIRCd* is used as the daemon in real-world in-house and public IRC networks
 | 
				
			||||||
 | 
					and included in the package repositories of various operating systems.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Advantages and strengths
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Well arranged (lean) configuration file.
 | 
				
			||||||
 | 
					- Simple to build, install, configure, and maintain.
 | 
				
			||||||
 | 
					- Supports IPv6 and SSL.
 | 
				
			||||||
 | 
					- Can use PAM for user authentication.
 | 
				
			||||||
 | 
					- Lots of popular user and channel modes are implemented.
 | 
				
			||||||
 | 
					- Supports "cloaking" of users.
 | 
				
			||||||
 | 
					- No problems with servers that have dynamic IP addresses.
 | 
				
			||||||
 | 
					- Freely available, modern, portable and tidy C source.
 | 
				
			||||||
 | 
					- Wide field of supported platforms, including AIX, A/UX, FreeBSD, HP-UX,
 | 
				
			||||||
 | 
					  IRIX, Linux, macOS, NetBSD, OpenBSD, Solaris and Windows with WSL or Cygwin.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Documentation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The **homepage** of the ngIRCd project is <https://ngircd.barton.de>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The `INSTALL.md` document describes how to _install_ and _upgrade_ ngIRCd. It
 | 
				
			||||||
 | 
					is included in all distribution archives and available online on
 | 
				
			||||||
 | 
					[GitHub](https://github.com/ngircd/ngircd/blob/master/INSTALL.md).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Please see the file `doc/QuickStart.md` in the `doc/` directory or on
 | 
				
			||||||
 | 
					[GitHub](https://github.com/ngircd/ngircd/blob/master/doc/QuickStart.md) for
 | 
				
			||||||
 | 
					information about _setting up_ and _running_ ngIRCd, including some real-world
 | 
				
			||||||
 | 
					configuration examples.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					More information can be found in a couple of files in the `doc/` directory
 | 
				
			||||||
 | 
					(online on [GitHub](https://github.com/ngircd/ngircd/tree/master/doc)) and in
 | 
				
			||||||
 | 
					the [documentation section](https://ngircd.barton.de/documentation) on the
 | 
				
			||||||
 | 
					[homepage of ngIRCd](https://ngircd.barton.de).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					In addition, ngIRCd comes with two _manual pages_: `ngircd(8)` (for the daemon)
 | 
				
			||||||
 | 
					and `ngircd.conf(5)` (for its configuration file). They have even more details
 | 
				
			||||||
 | 
					and list all possible command line parameters and configuration options. You
 | 
				
			||||||
 | 
					can read them with the `man` command (when they are installed locally on your
 | 
				
			||||||
 | 
					system, e.g. `man 8 ngircd` and `man 5 ngircd.conf`) or online here:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Daemon:
 | 
				
			||||||
 | 
					  [ngircd(8)](https://ngircd.barton.de/man/ngircd.8.html)
 | 
				
			||||||
 | 
					- Configuration file:
 | 
				
			||||||
 | 
					  [ngircd.conf(5)](https://ngircd.barton.de/man/ngircd.conf.5.html)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Downloads & Source Code
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					You can find the latest information about the ngIRCd and the most recent
 | 
				
			||||||
 | 
					stable release on the [news](https://ngircd.barton.de/news) and
 | 
				
			||||||
 | 
					[downloads](https://ngircd.barton.de/download) pages of the homepage.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Visit our source code repository at [GitHub](https://github.com/ngircd/ngircd)
 | 
				
			||||||
 | 
					if you are interested in the latest development code.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Problems, Bugs, Patches
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Please don't hesitate to contact us if you encounter problems:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- On IRC: <irc://irc.barton.de/ngircd>
 | 
				
			||||||
 | 
					- Via the mailing list: <ngircd@lists.barton.de>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See <https://ngircd.barton.de/support> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If you find any bugs in ngIRCd (which most probably will be there ...), please
 | 
				
			||||||
 | 
					report them to our issue tracker at GitHub:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Bug tracker: <https://github.com/ngircd/ngircd/issues>
 | 
				
			||||||
 | 
					- Patches, "pull requests": <https://github.com/ngircd/ngircd/pulls>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[IRC]: https://wikipedia.org/wiki/Internet_Relay_Chat
 | 
				
			||||||
 | 
					[GPL]: https://wikipedia.org/wiki/GNU_General_Public_License
 | 
				
			||||||
							
								
								
									
										258
									
								
								autogen.sh
									
									
									
									
									
								
							
							
						
						
									
										258
									
								
								autogen.sh
									
									
									
									
									
								
							@@ -1,16 +1,258 @@
 | 
				
			|||||||
#!/bin/sh
 | 
					#!/bin/sh
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# $Id: autogen.sh,v 1.3 2002/03/12 14:37:51 alex Exp $
 | 
					# ngIRCd -- The Next Generation IRC Daemon
 | 
				
			||||||
 | 
					# Copyright (c)2001-2024 Alexander Barton (alex@barton.de) and Contributors
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This program is free software; you can redistribute it and/or modify
 | 
				
			||||||
 | 
					# it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					# the Free Software Foundation; either version 2 of the License, or
 | 
				
			||||||
 | 
					# (at your option) any later version.
 | 
				
			||||||
 | 
					# Please read the file COPYING, README and AUTHORS for more information.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Usage:
 | 
				
			||||||
 | 
					#   [VAR=<value>] ./autogen.sh [<configure-args>]
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This script generates the ./configure script using GNU automake and
 | 
				
			||||||
 | 
					# GNU autoconf. It tries to be smart in finding the correct/usable/available
 | 
				
			||||||
 | 
					# installed versions of these tools on your system.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# In addition, it enables or disables the "de-ANSI-fication" support of GNU
 | 
				
			||||||
 | 
					# automake, which is supported up to autoconf 1.11.x an has been removed
 | 
				
			||||||
 | 
					# in automake 1.12 -- make sure to use a version of automake supporting it
 | 
				
			||||||
 | 
					# when generating distribution archives!
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# The following strategy is used for each of aclocal, autoheader, automake,
 | 
				
			||||||
 | 
					# and autoconf: first, "tool" (the regular name of the tool, e. g. "autoconf"
 | 
				
			||||||
 | 
					# or "automake") is checked. If this fails, "tool<major><minor>" (for example
 | 
				
			||||||
 | 
					# "automake16") and "tool-<major>.<minor>" (e. g. "autoconf-2.54") are tried
 | 
				
			||||||
 | 
					# with <major> being 2 for tool of GNU autoconf and 1 for tools of automake;
 | 
				
			||||||
 | 
					# <minor> is tried from 99 to 0. The first occurrence will be used.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# When you pass <configure-args> to autogen.sh it will call the generated
 | 
				
			||||||
 | 
					# ./configure script on success and pass these parameters to it.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# You can tweak the behaviour using these environment variables:
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# - ACLOCAL=<cmd>, AUTOHEADER=<cmd>, AUTOMAKE=<cmd>, AUTOCONF=<cmd>
 | 
				
			||||||
 | 
					#   Name and optionally path to the particular tool.
 | 
				
			||||||
 | 
					# - PREFIX=<path>
 | 
				
			||||||
 | 
					#   Search the GNU autoconf and GNU automake tools in <path> first. If the
 | 
				
			||||||
 | 
					#   generated ./configure script will be called, pass "--prefix=<path>" to it.
 | 
				
			||||||
 | 
					# - EXIST=<tool>
 | 
				
			||||||
 | 
					#   Use <tool> to test for aclocal, autoheader etc. pp. ...
 | 
				
			||||||
 | 
					#   When not specified, either "type" or "which" is used.
 | 
				
			||||||
 | 
					# - VERBOSE=1
 | 
				
			||||||
 | 
					#   Output the detected names of the GNU automake and GNU autoconf tools.
 | 
				
			||||||
 | 
					# - GO=1
 | 
				
			||||||
 | 
					#   Call ./configure even if no arguments have been passed to autogen.sh.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Examples:
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# - ./autogen.sh
 | 
				
			||||||
 | 
					#   Generates the ./configure script.
 | 
				
			||||||
 | 
					# - GO=1 ./autogen.sh
 | 
				
			||||||
 | 
					#   Generates the ./configure script and runs it as "./configure".
 | 
				
			||||||
 | 
					# - VERBOSE=1 ./autogen.sh --with-ident
 | 
				
			||||||
 | 
					#   Show tool names, generates the ./configure script, and runs it with
 | 
				
			||||||
 | 
					#   these arguments: "./configure --with-ident".
 | 
				
			||||||
 | 
					# - ACLOCAL=aclocal-1.6 GO=1 PREFIX=$HOME ./autogen.sh
 | 
				
			||||||
 | 
					#   Uses "aclocal-1.6" as aclocal tool, generates the ./configure script,
 | 
				
			||||||
 | 
					#   and runs it with these arguments: "./configure --prefix=$HOME".
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [ -f configure ]; then
 | 
					Check_Tool()
 | 
				
			||||||
	echo "autogen.sh: configure-Skript existiert bereits ..."
 | 
					{
 | 
				
			||||||
 | 
						searchlist="$1"
 | 
				
			||||||
 | 
						major="$2"
 | 
				
			||||||
 | 
						minor="$3"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for name in $searchlist; do
 | 
				
			||||||
 | 
							$EXIST "${name}${major}${minor}" >/dev/null 2>&1
 | 
				
			||||||
 | 
							if [ $? -eq 0 ]; then
 | 
				
			||||||
 | 
								echo "${name}${major}${minor}"
 | 
				
			||||||
 | 
								return 0
 | 
				
			||||||
 | 
							fi
 | 
				
			||||||
 | 
							$EXIST "${name}-${major}.${minor}" >/dev/null 2>&1
 | 
				
			||||||
 | 
							if [ $? -eq 0 ]; then
 | 
				
			||||||
 | 
								echo "${name}-${major}.${minor}"
 | 
				
			||||||
 | 
								return 0
 | 
				
			||||||
 | 
							fi
 | 
				
			||||||
 | 
						done
 | 
				
			||||||
 | 
						return 1
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Search()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						[ $# -lt 2 ] && return 1
 | 
				
			||||||
 | 
						[ $# -gt 3 ] && return 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						searchlist="$1"
 | 
				
			||||||
 | 
						major="$2"
 | 
				
			||||||
 | 
						minor_pref="$3"
 | 
				
			||||||
 | 
						minor=99
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						[ -n "$PREFIX" ] && searchlist="${PREFIX}/$1 ${PREFIX}/bin/$1 $searchlist"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if [ -n "$minor_pref" ]; then
 | 
				
			||||||
 | 
							Check_Tool "$searchlist" "$major" "$minor_pref" && return 0
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for name in $searchlist; do
 | 
				
			||||||
 | 
							$EXIST "${name}" >/dev/null 2>&1
 | 
				
			||||||
 | 
							if [ $? -eq 0 ]; then
 | 
				
			||||||
 | 
								"${name}" --version 2>&1 \
 | 
				
			||||||
 | 
								 | grep -v "environment variable" >/dev/null 2>&1
 | 
				
			||||||
 | 
								if [ $? -eq 0 ]; then
 | 
				
			||||||
 | 
									echo "${name}"
 | 
				
			||||||
 | 
									return 0
 | 
				
			||||||
 | 
								fi
 | 
				
			||||||
 | 
							fi
 | 
				
			||||||
 | 
						done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						while [ $minor -ge 0 ]; do
 | 
				
			||||||
 | 
							Check_Tool "$searchlist" "$major" "$minor" && return 0
 | 
				
			||||||
 | 
							minor=$(expr $minor - 1)
 | 
				
			||||||
 | 
						done
 | 
				
			||||||
 | 
						return 1
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Notfound()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						echo "Error: $* not found!"
 | 
				
			||||||
 | 
						echo 'Please install supported versions of GNU autoconf, GNU automake'
 | 
				
			||||||
 | 
						echo 'and pkg-config: see the INSTALL file for details.'
 | 
				
			||||||
 | 
						exit 1
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Run()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						[ "$VERBOSE" = "1" ] && echo " - running \"$*\" ..."
 | 
				
			||||||
 | 
						"$@"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Reset locale settings to suppress warning messages of Perl
 | 
				
			||||||
 | 
					unset LC_ALL
 | 
				
			||||||
 | 
					unset LANG
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Which command should be used to detect the automake/autoconf tools?
 | 
				
			||||||
 | 
					[ -z "$EXIST" ] && existlist="type which" || existlist="$EXIST"
 | 
				
			||||||
 | 
					EXIST=""
 | 
				
			||||||
 | 
					for t in $existlist; do
 | 
				
			||||||
 | 
						$t /bin/ls >/dev/null 2>&1
 | 
				
			||||||
 | 
						if [ $? -eq 0 ]; then
 | 
				
			||||||
 | 
							rm -f /tmp/test.$$
 | 
				
			||||||
 | 
							$t /tmp/test.$$ >/dev/null 2>&1
 | 
				
			||||||
 | 
							[ $? -ne 0 ] && EXIST="$t"
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
						[ -n "$EXIST" ] && break
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
 | 
					if [ -z "$EXIST" ]; then
 | 
				
			||||||
 | 
						echo "Didn't detect a working command to test for the autoconf/automake tools!"
 | 
				
			||||||
 | 
						echo "Searchlist: $existlist"
 | 
				
			||||||
 | 
						exit 1
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					[ "$VERBOSE" = "1" ] && echo "Using \"$EXIST\" to test for tools."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Try to detect the needed tools when no environment variable already
 | 
				
			||||||
 | 
					# specifies one:
 | 
				
			||||||
 | 
					echo "Searching for required tools ..."
 | 
				
			||||||
 | 
					[ -z "$ACLOCAL" ] && ACLOCAL=$(Search aclocal 1 11)
 | 
				
			||||||
 | 
					[ "$VERBOSE" = "1" ] && echo " - ACLOCAL=$ACLOCAL"
 | 
				
			||||||
 | 
					[ -z "$AUTOHEADER" ] && AUTOHEADER=$(Search autoheader 2)
 | 
				
			||||||
 | 
					[ "$VERBOSE" = "1" ] && echo " - AUTOHEADER=$AUTOHEADER"
 | 
				
			||||||
 | 
					[ -z "$AUTOMAKE" ] && AUTOMAKE=$(Search automake 1 11)
 | 
				
			||||||
 | 
					[ "$VERBOSE" = "1" ] && echo " - AUTOMAKE=$AUTOMAKE"
 | 
				
			||||||
 | 
					[ -z "$AUTOCONF" ] && AUTOCONF=$(Search autoconf 2)
 | 
				
			||||||
 | 
					[ "$VERBOSE" = "1" ] && echo " - AUTOCONF=$AUTOCONF"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AUTOCONF_VERSION=$(echo "$AUTOCONF" | cut -d'-' -f2-)
 | 
				
			||||||
 | 
					[ -n "$AUTOCONF_VERSION" ] && [ "$AUTOCONF_VERSION" != "autoconf" ] \
 | 
				
			||||||
 | 
						&& export AUTOCONF_VERSION || unset AUTOCONF_VERSION
 | 
				
			||||||
 | 
					[ "$VERBOSE" = "1" ] && echo " - AUTOCONF_VERSION=$AUTOCONF_VERSION"
 | 
				
			||||||
 | 
					AUTOMAKE_VERSION=$(echo $AUTOMAKE | cut -d'-' -f2-)
 | 
				
			||||||
 | 
					[ -n "$AUTOMAKE_VERSION" ] && [ "$AUTOMAKE_VERSION" != "automake" ] \
 | 
				
			||||||
 | 
						&& export AUTOMAKE_VERSION || unset AUTOMAKE_VERSION
 | 
				
			||||||
 | 
					[ "$VERBOSE" = "1" ] && echo " - AUTOMAKE_VERSION=$AUTOMAKE_VERSION"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[ $# -gt 0 ] && CONFIGURE_ARGS=" $*" || CONFIGURE_ARGS=""
 | 
				
			||||||
 | 
					[ -z "$GO" ] && [ -n "$CONFIGURE_ARGS" ] && GO=1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Verify that all tools have been found
 | 
				
			||||||
 | 
					command -v pkg-config >/dev/null || Notfound pkg-config
 | 
				
			||||||
 | 
					[ -z "$ACLOCAL" ] && Notfound aclocal
 | 
				
			||||||
 | 
					[ -z "$AUTOHEADER" ] && Notfound autoheader
 | 
				
			||||||
 | 
					[ -z "$AUTOMAKE" ] && Notfound automake
 | 
				
			||||||
 | 
					[ -z "$AUTOCONF" ] && Notfound autoconf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AM_VERSION=$($AUTOMAKE --version | head -n 1 | sed -e 's/.* //g')
 | 
				
			||||||
 | 
					ifs=$IFS; IFS="."; set $AM_VERSION; IFS=$ifs
 | 
				
			||||||
 | 
					AM_MAJOR="$1"; AM_MINOR="$2"
 | 
				
			||||||
 | 
					echo "Detected automake $AM_VERSION ..."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AM_MAKEFILES="src/ipaddr/Makefile.ng src/ngircd/Makefile.ng src/testsuite/Makefile.ng src/tool/Makefile.ng"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# De-ANSI-fication?
 | 
				
			||||||
 | 
					if [ "$AM_MAJOR" -eq "1" ] && [ "$AM_MINOR" -lt "12" ]; then
 | 
				
			||||||
 | 
						# automake < 1.12 => automatic de-ANSI-fication support available
 | 
				
			||||||
 | 
						echo " - Enabling de-ANSI-fication support."
 | 
				
			||||||
 | 
						sed -e "s|^__ng_PROTOTYPES__|AM_C_PROTOTYPES|g" configure.ng >configure.ac
 | 
				
			||||||
 | 
						DEANSI_START=""
 | 
				
			||||||
 | 
						DEANSI_END=""
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
						# automake >= 1.12 => no de-ANSI-fication support available
 | 
				
			||||||
 | 
						echo " - Disabling de-ANSI-fication support."
 | 
				
			||||||
 | 
						sed -e "s|^__ng_PROTOTYPES__|AC_C_PROTOTYPES|g" configure.ng >configure.ac
 | 
				
			||||||
 | 
						DEANSI_START="#"
 | 
				
			||||||
 | 
						DEANSI_END=" (disabled by ./autogen.sh script)"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					# Serial test harness?
 | 
				
			||||||
 | 
					if [ "$AM_MAJOR" -eq "1" ] && [ "$AM_MINOR" -ge "13" ]; then
 | 
				
			||||||
 | 
						# automake >= 1.13 => enforce "serial test harness"
 | 
				
			||||||
 | 
						echo " - Enforcing serial test harness."
 | 
				
			||||||
 | 
						SERIAL_TESTS="serial-tests"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
						# automake < 1.13 => no new test harness, nothing to do
 | 
				
			||||||
 | 
						# shellcheck disable=SC2034
 | 
				
			||||||
 | 
						SERIAL_TEST=""
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
aclocal && \
 | 
					sed -e "s|^__ng_Makefile_am_template__|AUTOMAKE_OPTIONS = ${SERIAL_TESTS} ${DEANSI_START}ansi2knr${DEANSI_END}|g" \
 | 
				
			||||||
 autoheader && \
 | 
						src/portab/Makefile.ng >src/portab/Makefile.am
 | 
				
			||||||
 automake --add-missing && \
 | 
					for makefile_ng in $AM_MAKEFILES; do
 | 
				
			||||||
 autoconf && \
 | 
						makefile_am=$(echo "$makefile_ng" | sed -e "s|\.ng\$|\.am|g")
 | 
				
			||||||
 echo "Okay, autogen.sh war erfolgreich."
 | 
						sed -e "s|^__ng_Makefile_am_template__|AUTOMAKE_OPTIONS = ${SERIAL_TESTS} ${DEANSI_START}../portab/ansi2knr${DEANSI_END}|g" \
 | 
				
			||||||
 | 
							$makefile_ng >$makefile_am
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export ACLOCAL AUTOHEADER AUTOMAKE AUTOCONF
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Generate files
 | 
				
			||||||
 | 
					echo "Generating files using \"$AUTOCONF\" and \"$AUTOMAKE\" ..."
 | 
				
			||||||
 | 
					Run $ACLOCAL && \
 | 
				
			||||||
 | 
						Run $AUTOCONF && \
 | 
				
			||||||
 | 
						Run $AUTOHEADER && \
 | 
				
			||||||
 | 
						Run $AUTOMAKE --add-missing --no-force
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ $? -eq 0 ] && [ -x ./configure ]; then
 | 
				
			||||||
 | 
						# Success: if we got some parameters we call ./configure and pass
 | 
				
			||||||
 | 
						# all of them to it.
 | 
				
			||||||
 | 
						NAME=$(grep PACKAGE_STRING= configure | cut -d"'" -f2)
 | 
				
			||||||
 | 
						if [ "$GO" = "1" ]; then
 | 
				
			||||||
 | 
							[ -n "$PREFIX" ] && p=" --prefix=$PREFIX" || p=""
 | 
				
			||||||
 | 
							c="./configure${p}${CONFIGURE_ARGS}"
 | 
				
			||||||
 | 
							echo "Okay, autogen.sh for $NAME done."
 | 
				
			||||||
 | 
							echo "Calling \"$c\" ..."
 | 
				
			||||||
 | 
							$c
 | 
				
			||||||
 | 
							exit $?
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							echo "Okay, autogen.sh for $NAME done."
 | 
				
			||||||
 | 
							echo "Now run the \"./configure\" script."
 | 
				
			||||||
 | 
							exit 0
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
						# Failure!?
 | 
				
			||||||
 | 
						echo "Error! Check your installation of GNU automake and autoconf!"
 | 
				
			||||||
 | 
						exit 1
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# -eof-
 | 
					# -eof-
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2104
									
								
								config.guess
									
									
									
									
										vendored
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										2104
									
								
								config.guess
									
									
									
									
										vendored
									
									
										
										
										Normal file → Executable file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										2671
									
								
								config.sub
									
									
									
									
										vendored
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										2671
									
								
								config.sub
									
									
									
									
										vendored
									
									
										
										
										Normal file → Executable file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										175
									
								
								configure.in
									
									
									
									
									
								
							
							
						
						
									
										175
									
								
								configure.in
									
									
									
									
									
								
							@@ -1,175 +0,0 @@
 | 
				
			|||||||
#
 | 
					 | 
				
			||||||
# ngIRCd -- The Next Generation IRC Daemon
 | 
					 | 
				
			||||||
# Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
 | 
					 | 
				
			||||||
# der GNU General Public License (GPL), wie von der Free Software Foundation
 | 
					 | 
				
			||||||
# herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2
 | 
					 | 
				
			||||||
# der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version.
 | 
					 | 
				
			||||||
# Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
 | 
					 | 
				
			||||||
# der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# $Id: configure.in,v 1.39 2002/03/30 18:02:39 alex Exp $
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# -- Initialisierung --
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
AC_INIT
 | 
					 | 
				
			||||||
AC_CANONICAL_TARGET
 | 
					 | 
				
			||||||
AC_CONFIG_SRCDIR(src/config.h.in)
 | 
					 | 
				
			||||||
AM_INIT_AUTOMAKE(ngircd,0.3.0-CVS)
 | 
					 | 
				
			||||||
AM_CONFIG_HEADER(src/config.h)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# -- Templates fuer config.h --
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
AH_TEMPLATE([DEBUG], [Define if debug-mode should be enabled])
 | 
					 | 
				
			||||||
AH_TEMPLATE([HAVE_socklen_t], [Define if socklen_t exists])
 | 
					 | 
				
			||||||
AH_TEMPLATE([SNIFFER], [Define if IRC sniffer should be enabled])
 | 
					 | 
				
			||||||
AH_TEMPLATE([STRICT_RFC], [Define if ngIRCd should behave strict RFC compliant])
 | 
					 | 
				
			||||||
AH_TEMPLATE([USE_SYSLOG], [Define if syslog should be used for logging])
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
AH_TEMPLATE([TARGET_OS], [Target operating system name])
 | 
					 | 
				
			||||||
AH_TEMPLATE([TARGET_VENDOR], [Target system vendor])
 | 
					 | 
				
			||||||
AH_TEMPLATE([TARGET_CPU], [Target CPU name])
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# -- C Compiler --
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
AC_PROG_CC
 | 
					 | 
				
			||||||
AC_LANG_C
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# -- Hilfsprogramme --
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
AC_PROG_AWK
 | 
					 | 
				
			||||||
AC_PROG_INSTALL
 | 
					 | 
				
			||||||
AC_PROG_LN_S
 | 
					 | 
				
			||||||
AC_PROG_MAKE_SET
 | 
					 | 
				
			||||||
AC_PROG_RANLIB
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# -- Header --
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
AC_HEADER_STDC
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
AC_HEADER_TIME
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
AC_CHECK_HEADERS(arpa/inet.h)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
AC_CHECK_HEADERS([ \
 | 
					 | 
				
			||||||
	errno.h fcntl.h netdb.h netinet/in.h stdlib.h string.h \
 | 
					 | 
				
			||||||
	sys/socket.h sys/time.h sys/wait.h unistd.h \
 | 
					 | 
				
			||||||
	],,AC_MSG_ERROR([required C header missing!]))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# -- Datentypen --
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
AC_MSG_CHECKING(whether socklen_t exists)
 | 
					 | 
				
			||||||
AC_TRY_COMPILE([
 | 
					 | 
				
			||||||
	#include <sys/socket.h>
 | 
					 | 
				
			||||||
	#include <sys/types.h>
 | 
					 | 
				
			||||||
	],[
 | 
					 | 
				
			||||||
	socklen_t a, b;
 | 
					 | 
				
			||||||
	a = 2; b = 4; a += b;
 | 
					 | 
				
			||||||
	],[
 | 
					 | 
				
			||||||
	AC_DEFINE(HAVE_socklen_t) AC_MSG_RESULT(yes)
 | 
					 | 
				
			||||||
	],[
 | 
					 | 
				
			||||||
	AC_MSG_RESULT(no)
 | 
					 | 
				
			||||||
])
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# -- Libraries --
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
AC_CHECK_LIB(UTIL,memmove)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# -- Funktionen --
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
AC_FUNC_MALLOC
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
AC_CHECK_FUNCS([ \
 | 
					 | 
				
			||||||
	bind gethostbyaddr gethostbyname gethostname inet_ntoa memmove \
 | 
					 | 
				
			||||||
	memset select setsockopt socket strcasecmp strchr strerror strftime \
 | 
					 | 
				
			||||||
	strstr vsnprintf waitpid \
 | 
					 | 
				
			||||||
	],,AC_MSG_ERROR([required function missing!]))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
AC_CHECK_FUNCS(inet_aton)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
AC_CHECK_FUNCS(sigaction)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# -- Konfigurationsoptionen --
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
AC_ARG_ENABLE(syslog,
 | 
					 | 
				
			||||||
	[  --disable-syslog        disable syslog (autodetected by default)],
 | 
					 | 
				
			||||||
	[	if test "$enableval" = "yes"; then
 | 
					 | 
				
			||||||
			AC_CHECK_HEADER(syslog.h,
 | 
					 | 
				
			||||||
				[	AC_DEFINE(USE_SYSLOG, 1)
 | 
					 | 
				
			||||||
					AC_CHECK_LIB(be,syslog)
 | 
					 | 
				
			||||||
				],
 | 
					 | 
				
			||||||
				AC_MSG_ERROR([Can't enable syslog: syslog.h not found!])
 | 
					 | 
				
			||||||
			)
 | 
					 | 
				
			||||||
		else
 | 
					 | 
				
			||||||
			AC_MSG_RESULT([disabling syslog])
 | 
					 | 
				
			||||||
		fi
 | 
					 | 
				
			||||||
	],
 | 
					 | 
				
			||||||
	[	AC_CHECK_HEADER(syslog.h,
 | 
					 | 
				
			||||||
			[	AC_DEFINE(USE_SYSLOG, 1)
 | 
					 | 
				
			||||||
				AC_CHECK_LIB(be,syslog)
 | 
					 | 
				
			||||||
			]
 | 
					 | 
				
			||||||
		)
 | 
					 | 
				
			||||||
	]
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
AC_ARG_ENABLE(strict-rfc,
 | 
					 | 
				
			||||||
	[  --enable-strict-rfc     strict RFC conformance, may break clients],
 | 
					 | 
				
			||||||
	if test "$enableval" = "yes"; then
 | 
					 | 
				
			||||||
		AC_DEFINE(STRICT_RFC, 1)
 | 
					 | 
				
			||||||
		AC_MSG_RESULT([enabling strict RFC conformance])
 | 
					 | 
				
			||||||
	fi
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
AC_ARG_ENABLE(sniffer,
 | 
					 | 
				
			||||||
	[  --enable-sniffer        enable network traffic monitor (enables debug mode!)],
 | 
					 | 
				
			||||||
	if test "$enableval" = "yes"; then
 | 
					 | 
				
			||||||
		AC_DEFINE(SNIFFER, 1)
 | 
					 | 
				
			||||||
		AC_MSG_RESULT([enabling network traffic monitor])
 | 
					 | 
				
			||||||
		x_debug_on=yes
 | 
					 | 
				
			||||||
	fi
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
AC_ARG_ENABLE(debug,
 | 
					 | 
				
			||||||
	[  --enable-debug          show additional debug output],
 | 
					 | 
				
			||||||
	if test "$enableval" = "yes"; then x_debug_on=yes; fi
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
if test "$x_debug_on" = "yes"; then
 | 
					 | 
				
			||||||
	AC_DEFINE(DEBUG, 1)
 | 
					 | 
				
			||||||
	AC_MSG_RESULT([enabling additional debug output])
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# -- Definitionen --
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
AC_DEFINE_UNQUOTED(TARGET_CPU, "$target_cpu" )
 | 
					 | 
				
			||||||
AC_DEFINE_UNQUOTED(TARGET_VENDOR, "$target_vendor" )
 | 
					 | 
				
			||||||
AC_DEFINE_UNQUOTED(TARGET_OS, "$target_os" )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# -- Variablen --
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if test "$GCC" = "yes"; then
 | 
					 | 
				
			||||||
	CFLAGS="-Wall $CFLAGS"
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
CFLAGS="$CFLAGS -DSYSCONFDIR='\"\$(sysconfdir)\"'"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if test `uname` = "A/UX"; then
 | 
					 | 
				
			||||||
	# unter A/UX sollte _POSIX_SOURCE definiert sein.
 | 
					 | 
				
			||||||
	AC_MSG_RESULT([detected A/UX, defining _POSIX_SOURCE])
 | 
					 | 
				
			||||||
	CFLAGS="$CFLAGS -D_POSIX_SOURCE"
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# -- Ausgabe --
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
AC_OUTPUT([ \
 | 
					 | 
				
			||||||
	Makefile \
 | 
					 | 
				
			||||||
	doc/Makefile \
 | 
					 | 
				
			||||||
	MacOSX/Makefile \
 | 
					 | 
				
			||||||
	MacOSX/ngircd.pbproj/Makefile \
 | 
					 | 
				
			||||||
	src/Makefile \
 | 
					 | 
				
			||||||
	src/portab/Makefile \
 | 
					 | 
				
			||||||
	src/ngircd/Makefile \
 | 
					 | 
				
			||||||
])
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# -eof-
 | 
					 | 
				
			||||||
							
								
								
									
										850
									
								
								configure.ng
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										850
									
								
								configure.ng
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,850 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# ngIRCd -- The Next Generation IRC Daemon
 | 
				
			||||||
 | 
					# Copyright (c)2001-2024 Alexander Barton (alex@barton.de) and Contributors
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This program is free software; you can redistribute it and/or modify
 | 
				
			||||||
 | 
					# it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					# the Free Software Foundation; either version 2 of the License, or
 | 
				
			||||||
 | 
					# (at your option) any later version.
 | 
				
			||||||
 | 
					# Please read the file COPYING, README and AUTHORS for more information.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					define(VERSION_ID,esyscmd([
 | 
				
			||||||
 | 
						V=`git describe 2>/dev/null | sed -e 's/rel-//g' | sed -e 's/-/~/'`;
 | 
				
			||||||
 | 
						[ -z "$V" -a -r configure ] \
 | 
				
			||||||
 | 
							&& V=`grep "PACKAGE_STRING=" configure | cut -d"'" -f2 | cut -d' ' -f2`
 | 
				
			||||||
 | 
						( [ -n "$V" ] && echo "$V" || echo "??" ) | tr -d '\n';
 | 
				
			||||||
 | 
					]))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					m4_ifdef([AM_SILENT_RULES],
 | 
				
			||||||
 | 
						[m4_define([ng_color_tests], [color-tests])],
 | 
				
			||||||
 | 
						[m4_define([ng_color_tests], [])])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -- Initialisation --
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AC_PREREQ([2.61])
 | 
				
			||||||
 | 
					AC_INIT([ngIRCd],[VERSION_ID],[ngircd@lists.barton.de],[ngircd],[https://ngircd.barton.de/])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AC_CONFIG_SRCDIR([src/ngircd/ngircd.c])
 | 
				
			||||||
 | 
					AC_CONFIG_HEADER([src/config.h])
 | 
				
			||||||
 | 
					AC_CANONICAL_HOST
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AM_INIT_AUTOMAKE([-Wall 1.10 foreign ]ng_color_tests)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -- Templates for config.h --
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AH_TEMPLATE([DEBUG], [Define if debug-mode should be enabled])
 | 
				
			||||||
 | 
					AH_TEMPLATE([HAVE_sockaddr_in_len], [Define if sockaddr_in.sin_len exists])
 | 
				
			||||||
 | 
					AH_TEMPLATE([HAVE_socklen_t], [Define if socklen_t exists])
 | 
				
			||||||
 | 
					AH_TEMPLATE([ICONV], [Define if libiconv can be used, e.g. for CHARCONV])
 | 
				
			||||||
 | 
					AH_TEMPLATE([IDENTAUTH], [Define if the server should do IDENT requests])
 | 
				
			||||||
 | 
					AH_TEMPLATE([IRCPLUS], [Define if IRC+ protocol should be used])
 | 
				
			||||||
 | 
					AH_TEMPLATE([PAM], [Define if PAM should be used])
 | 
				
			||||||
 | 
					AH_TEMPLATE([SNIFFER], [Define if IRC sniffer should be enabled])
 | 
				
			||||||
 | 
					AH_TEMPLATE([STRICT_RFC], [Define if ngIRCd should behave strict RFC compliant])
 | 
				
			||||||
 | 
					AH_TEMPLATE([SYSLOG], [Define if syslog should be used for logging])
 | 
				
			||||||
 | 
					AH_TEMPLATE([TCPWRAP], [Define if TCP wrappers should be used])
 | 
				
			||||||
 | 
					AH_TEMPLATE([WANT_IPV6], [Define if IPV6 protocol should be enabled])
 | 
				
			||||||
 | 
					AH_TEMPLATE([ZLIB], [Define if zlib compression should be enabled])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AH_TEMPLATE([HOST_OS], [Target operating system name])
 | 
				
			||||||
 | 
					AH_TEMPLATE([HOST_VENDOR], [Target system vendor])
 | 
				
			||||||
 | 
					AH_TEMPLATE([HOST_CPU], [Target CPU name])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -- C Compiler --
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AC_PROG_CC
 | 
				
			||||||
 | 
					AC_PROG_CC_STDC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -- Helper programs --
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AC_PROG_AWK
 | 
				
			||||||
 | 
					AC_PROG_INSTALL
 | 
				
			||||||
 | 
					AC_PROG_LN_S
 | 
				
			||||||
 | 
					AC_PROG_MAKE_SET
 | 
				
			||||||
 | 
					AC_PROG_MKDIR_P
 | 
				
			||||||
 | 
					AC_PROG_RANLIB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -- Compiler Features --
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AC_C_CONST
 | 
				
			||||||
 | 
					AC_C_INLINE
 | 
				
			||||||
 | 
					__ng_PROTOTYPES__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -- Function Definitions --
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AC_DEFUN([GCC_STACK_PROTECT_CC],[
 | 
				
			||||||
 | 
						ssp_cc=yes
 | 
				
			||||||
 | 
						# Use -fstack-protector-all for the test to enfoce the use of the
 | 
				
			||||||
 | 
						# guard variable
 | 
				
			||||||
 | 
						AC_MSG_CHECKING([whether ${CC} accepts -fstack-protector])
 | 
				
			||||||
 | 
						ssp_old_cflags="$CFLAGS"
 | 
				
			||||||
 | 
						CFLAGS="$CFLAGS -fstack-protector-all"
 | 
				
			||||||
 | 
						AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],[],[ssp_cc=no])
 | 
				
			||||||
 | 
						echo $ssp_cc
 | 
				
			||||||
 | 
						CFLAGS="$ssp_old_cflags"
 | 
				
			||||||
 | 
						if test "X$ssp_cc" = "Xyes"; then
 | 
				
			||||||
 | 
							CFLAGS="$CFLAGS -fstack-protector"
 | 
				
			||||||
 | 
							AC_DEFINE([ENABLE_SSP_CC], 1, [Define if SSP C support is enabled.])
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
					])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AC_DEFUN([WORKING_GETADDRINFO],[
 | 
				
			||||||
 | 
						AC_CHECK_FUNCS([getaddrinfo],[
 | 
				
			||||||
 | 
							AC_MSG_CHECKING([whether getaddrinfo() works])
 | 
				
			||||||
 | 
							AC_RUN_IFELSE([AC_LANG_SOURCE([[
 | 
				
			||||||
 | 
					#include <stdio.h>
 | 
				
			||||||
 | 
					#include <sys/types.h>
 | 
				
			||||||
 | 
					#include <sys/socket.h>
 | 
				
			||||||
 | 
					#include <netdb.h>
 | 
				
			||||||
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					int
 | 
				
			||||||
 | 
					main(int argc, char **argv)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						struct addrinfo hints, *ai;
 | 
				
			||||||
 | 
						memset(&hints, 0, sizeof(hints));
 | 
				
			||||||
 | 
						hints.ai_flags = AI_PASSIVE;
 | 
				
			||||||
 | 
						hints.ai_socktype = SOCK_STREAM;
 | 
				
			||||||
 | 
						hints.ai_family = PF_UNSPEC;
 | 
				
			||||||
 | 
						if(getaddrinfo(NULL, "0", &hints, &ai) != 0)
 | 
				
			||||||
 | 
							return 1;
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
							]])],[
 | 
				
			||||||
 | 
							AC_DEFINE([HAVE_WORKING_GETADDRINFO], 1, [getaddrinfo(0)])
 | 
				
			||||||
 | 
							AC_MSG_RESULT(yes)
 | 
				
			||||||
 | 
							],[
 | 
				
			||||||
 | 
							AC_MSG_RESULT(no)
 | 
				
			||||||
 | 
							],[
 | 
				
			||||||
 | 
							AC_MSG_RESULT(no)
 | 
				
			||||||
 | 
							])
 | 
				
			||||||
 | 
						])
 | 
				
			||||||
 | 
					])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AC_DEFUN([GCC_W_NO_FORMAT_TRUNC],[
 | 
				
			||||||
 | 
						result=yes
 | 
				
			||||||
 | 
						AC_MSG_CHECKING([whether ${CC} accepts -Wno-format-truncation])
 | 
				
			||||||
 | 
						old_cflags="$CFLAGS"
 | 
				
			||||||
 | 
						CFLAGS="$CFLAGS -Werror -Wno-format-truncation"
 | 
				
			||||||
 | 
						AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],[],[result=no])
 | 
				
			||||||
 | 
						echo $result
 | 
				
			||||||
 | 
						if test "X$result" = "Xyes"; then
 | 
				
			||||||
 | 
							CFLAGS="$old_cflags -Wno-format-truncation"
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							CFLAGS="$old_cflags"
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
					])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -- Hard coded system and compiler dependencies/features/options ... --
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if test "$GCC" = "yes"; then
 | 
				
			||||||
 | 
						# We are using the GNU C compiler. Good!
 | 
				
			||||||
 | 
						CFLAGS="$CFLAGS -pipe -W -Wall -Wpointer-arith -Wstrict-prototypes"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						GCC_STACK_PROTECT_CC
 | 
				
			||||||
 | 
						GCC_W_NO_FORMAT_TRUNC
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					case "$host_os" in
 | 
				
			||||||
 | 
						hpux*)
 | 
				
			||||||
 | 
							# This is HP/UX, we need to define _XOPEN_SOURCE_EXTENDED
 | 
				
			||||||
 | 
							# (tested with HP/UX 11.11)
 | 
				
			||||||
 | 
							CFLAGS="$CFLAGS -D_XOPEN_SOURCE_EXTENDED"
 | 
				
			||||||
 | 
							;;
 | 
				
			||||||
 | 
					esac
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Add additional CFLAGS, eventually specified on the command line:
 | 
				
			||||||
 | 
					test -n "$CFLAGS_ADD" && CFLAGS="$CFLAGS $CFLAGS_ADD"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CFLAGS="$CFLAGS -DSYSCONFDIR='\"\$(sysconfdir)\"' -DDOCDIR='\"\$(docdir)\"'"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -- Headers --
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AC_HEADER_STDC
 | 
				
			||||||
 | 
					AC_HEADER_SYS_WAIT
 | 
				
			||||||
 | 
					AC_HEADER_TIME
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Required header files
 | 
				
			||||||
 | 
					AC_CHECK_HEADERS([ \
 | 
				
			||||||
 | 
							fcntl.h \
 | 
				
			||||||
 | 
							netdb.h \
 | 
				
			||||||
 | 
							netinet/in.h \
 | 
				
			||||||
 | 
							stdlib.h \
 | 
				
			||||||
 | 
							string.h \
 | 
				
			||||||
 | 
							strings.h \
 | 
				
			||||||
 | 
							sys/socket.h \
 | 
				
			||||||
 | 
							sys/time.h \
 | 
				
			||||||
 | 
							sys/types.h \
 | 
				
			||||||
 | 
							unistd.h \
 | 
				
			||||||
 | 
						],,AC_MSG_ERROR([required C header missing!]))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Optional header files
 | 
				
			||||||
 | 
					AC_CHECK_HEADERS_ONCE([ \
 | 
				
			||||||
 | 
						arpa/inet.h \
 | 
				
			||||||
 | 
						inttypes.h \
 | 
				
			||||||
 | 
						malloc.h \
 | 
				
			||||||
 | 
						netinet/in_systm.h \
 | 
				
			||||||
 | 
						netinet/ip.h \
 | 
				
			||||||
 | 
						stdbool.h \
 | 
				
			||||||
 | 
						stddef.h \
 | 
				
			||||||
 | 
						stdint.h \
 | 
				
			||||||
 | 
						sys/resource.h \
 | 
				
			||||||
 | 
						sys/un.h \
 | 
				
			||||||
 | 
						varargs.h \
 | 
				
			||||||
 | 
					])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -- Datatypes --
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AC_MSG_CHECKING(whether socklen_t exists)
 | 
				
			||||||
 | 
					AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 | 
				
			||||||
 | 
					#include <sys/types.h>
 | 
				
			||||||
 | 
					#include <sys/socket.h>
 | 
				
			||||||
 | 
						]],[[
 | 
				
			||||||
 | 
						socklen_t a, b;
 | 
				
			||||||
 | 
						a = 2; b = 4; a += b;
 | 
				
			||||||
 | 
						]])],[
 | 
				
			||||||
 | 
						AC_DEFINE(HAVE_socklen_t) AC_MSG_RESULT(yes)
 | 
				
			||||||
 | 
						],[
 | 
				
			||||||
 | 
						AC_MSG_RESULT(no)
 | 
				
			||||||
 | 
					])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AC_TYPE_PID_T
 | 
				
			||||||
 | 
					AC_TYPE_SIZE_T
 | 
				
			||||||
 | 
					AC_TYPE_SSIZE_T
 | 
				
			||||||
 | 
					AC_TYPE_UID_T
 | 
				
			||||||
 | 
					AC_TYPE_UINT16_T
 | 
				
			||||||
 | 
					AC_TYPE_UINT32_T
 | 
				
			||||||
 | 
					AC_TYPE_UINT8_T
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AC_CHECK_MEMBER([struct sockaddr_in.sin_len], AC_DEFINE(HAVE_sockaddr_in_len),,
 | 
				
			||||||
 | 
					 [#include <arpa/inet.h>])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -- Libraries --
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# memmove: A/UX libUTIL
 | 
				
			||||||
 | 
					AC_SEARCH_LIBS([memmove], [UTIL], [], [
 | 
				
			||||||
 | 
						AC_MSG_ERROR([unable to find the memmove() function])
 | 
				
			||||||
 | 
					])
 | 
				
			||||||
 | 
					# gethostbyname: Solaris libnsl
 | 
				
			||||||
 | 
					AC_SEARCH_LIBS([gethostbyname], [bind nsl network], [], [
 | 
				
			||||||
 | 
						AC_MSG_ERROR([unable to find the gethostbyname() function])
 | 
				
			||||||
 | 
					])
 | 
				
			||||||
 | 
					# bind: SVR4 libsocket
 | 
				
			||||||
 | 
					AC_SEARCH_LIBS([bind], [socket network], [], [
 | 
				
			||||||
 | 
						AC_MSG_ERROR([unable to find the bind() function])
 | 
				
			||||||
 | 
					])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -- Functions --
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AC_FUNC_FORK
 | 
				
			||||||
 | 
					AC_FUNC_STRFTIME
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Required functions
 | 
				
			||||||
 | 
					AC_CHECK_FUNCS([ \
 | 
				
			||||||
 | 
							alarm \
 | 
				
			||||||
 | 
							dup2 \
 | 
				
			||||||
 | 
							endpwent \
 | 
				
			||||||
 | 
							gethostbyaddr \
 | 
				
			||||||
 | 
							gethostbyname \
 | 
				
			||||||
 | 
							gethostname \
 | 
				
			||||||
 | 
							gettimeofday \
 | 
				
			||||||
 | 
							inet_ntoa \
 | 
				
			||||||
 | 
							memmove \
 | 
				
			||||||
 | 
							memset \
 | 
				
			||||||
 | 
							setsid \
 | 
				
			||||||
 | 
							socket \
 | 
				
			||||||
 | 
							strcasecmp \
 | 
				
			||||||
 | 
							strchr \
 | 
				
			||||||
 | 
							strcspn \
 | 
				
			||||||
 | 
							strerror \
 | 
				
			||||||
 | 
							strncasecmp \
 | 
				
			||||||
 | 
							strrchr \
 | 
				
			||||||
 | 
							strspn \
 | 
				
			||||||
 | 
							strstr \
 | 
				
			||||||
 | 
						],,
 | 
				
			||||||
 | 
						AC_MSG_ERROR([required function missing!]))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Optional functions
 | 
				
			||||||
 | 
					AC_CHECK_FUNCS_ONCE([
 | 
				
			||||||
 | 
						arc4random \
 | 
				
			||||||
 | 
						arc4random_stir \
 | 
				
			||||||
 | 
						gai_strerror \
 | 
				
			||||||
 | 
						getnameinfo \
 | 
				
			||||||
 | 
						inet_aton \
 | 
				
			||||||
 | 
						setgroups \
 | 
				
			||||||
 | 
						setrlimit \
 | 
				
			||||||
 | 
						sigaction \
 | 
				
			||||||
 | 
						sigprocmask \
 | 
				
			||||||
 | 
						snprintf \
 | 
				
			||||||
 | 
						strdup \
 | 
				
			||||||
 | 
						strlcat \
 | 
				
			||||||
 | 
						strlcpy \
 | 
				
			||||||
 | 
						strndup \
 | 
				
			||||||
 | 
						strsignal \
 | 
				
			||||||
 | 
						strtok_r \
 | 
				
			||||||
 | 
						unsetenv \
 | 
				
			||||||
 | 
						vsnprintf \
 | 
				
			||||||
 | 
						waitpid \
 | 
				
			||||||
 | 
					])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					WORKING_GETADDRINFO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -- Configuration options --
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# use syslog?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					x_syslog_on=no
 | 
				
			||||||
 | 
					AC_ARG_WITH(syslog,
 | 
				
			||||||
 | 
						AS_HELP_STRING([--without-syslog],
 | 
				
			||||||
 | 
							       [disable syslog (autodetected by default)]),
 | 
				
			||||||
 | 
						[	if test "$withval" != "no"; then
 | 
				
			||||||
 | 
								if test "$withval" != "yes"; then
 | 
				
			||||||
 | 
									CFLAGS="-I$withval/include $CFLAGS"
 | 
				
			||||||
 | 
									CPPFLAGS="-I$withval/include $CPPFLAGS"
 | 
				
			||||||
 | 
									LDFLAGS="-L$withval/lib $LDFLAGS"
 | 
				
			||||||
 | 
								fi
 | 
				
			||||||
 | 
								AC_SEARCH_LIBS([syslog], [be], [x_syslog_on=yes], [
 | 
				
			||||||
 | 
									AC_MSG_ERROR([Can't enable syslog!])
 | 
				
			||||||
 | 
								])
 | 
				
			||||||
 | 
							fi
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						[	AC_SEARCH_LIBS([syslog], [be], [x_syslog_on=yes])
 | 
				
			||||||
 | 
						]
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					if test "$x_syslog_on" = "yes"; then
 | 
				
			||||||
 | 
						AC_DEFINE(SYSLOG, 1)
 | 
				
			||||||
 | 
						AC_CHECK_HEADERS(syslog.h,,AC_MSG_ERROR([required C header missing!]))
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# use zlib compression?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					x_zlib_on=no
 | 
				
			||||||
 | 
					AC_ARG_WITH(zlib,
 | 
				
			||||||
 | 
						AS_HELP_STRING([--without-zlib],
 | 
				
			||||||
 | 
							       [disable zlib compression (autodetected by default)]),
 | 
				
			||||||
 | 
						[	if test "$withval" != "no"; then
 | 
				
			||||||
 | 
								if test "$withval" != "yes"; then
 | 
				
			||||||
 | 
									CFLAGS="-I$withval/include $CFLAGS"
 | 
				
			||||||
 | 
									CPPFLAGS="-I$withval/include $CPPFLAGS"
 | 
				
			||||||
 | 
									LDFLAGS="-L$withval/lib $LDFLAGS"
 | 
				
			||||||
 | 
								fi
 | 
				
			||||||
 | 
								AC_CHECK_LIB(z, deflate)
 | 
				
			||||||
 | 
								AC_CHECK_FUNCS(deflate, x_zlib_on=yes,
 | 
				
			||||||
 | 
									AC_MSG_ERROR([Can't enable zlib!])
 | 
				
			||||||
 | 
								)
 | 
				
			||||||
 | 
							fi
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						[	AC_CHECK_LIB(z, deflate)
 | 
				
			||||||
 | 
							AC_CHECK_FUNCS(deflate, x_zlib_on=yes)
 | 
				
			||||||
 | 
						]
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					if test "$x_zlib_on" = "yes"; then
 | 
				
			||||||
 | 
						AC_DEFINE(ZLIB, 1)
 | 
				
			||||||
 | 
						AC_CHECK_HEADERS(zlib.h,,AC_MSG_ERROR([required C header missing!]))
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# detect which IO API to use:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					x_io_backend=none
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AC_ARG_WITH(select,
 | 
				
			||||||
 | 
						AS_HELP_STRING([--without-select],
 | 
				
			||||||
 | 
							       [disable select IO support (autodetected by default)]),
 | 
				
			||||||
 | 
						[	if test "$withval" != "no"; then
 | 
				
			||||||
 | 
								if test "$withval" != "yes"; then
 | 
				
			||||||
 | 
									CFLAGS="-I$withval/include $CFLAGS"
 | 
				
			||||||
 | 
									CPPFLAGS="-I$withval/include $CPPFLAGS"
 | 
				
			||||||
 | 
									LDFLAGS="-L$withval/lib $LDFLAGS"
 | 
				
			||||||
 | 
								fi
 | 
				
			||||||
 | 
								AC_CHECK_FUNCS(select, x_io_select=yes,
 | 
				
			||||||
 | 
									AC_MSG_ERROR([Can't enable select IO support!])
 | 
				
			||||||
 | 
								)
 | 
				
			||||||
 | 
							fi
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						[
 | 
				
			||||||
 | 
							AC_CHECK_FUNCS(select, x_io_select=yes)
 | 
				
			||||||
 | 
						]
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AC_ARG_WITH(poll,
 | 
				
			||||||
 | 
						AS_HELP_STRING([--without-poll],
 | 
				
			||||||
 | 
							       [disable poll support (autodetected by default)]),
 | 
				
			||||||
 | 
						[	if test "$withval" != "no"; then
 | 
				
			||||||
 | 
								if test "$withval" != "yes"; then
 | 
				
			||||||
 | 
									CFLAGS="-I$withval/include $CFLAGS"
 | 
				
			||||||
 | 
									CPPFLAGS="-I$withval/include $CPPFLAGS"
 | 
				
			||||||
 | 
									LDFLAGS="-L$withval/lib $LDFLAGS"
 | 
				
			||||||
 | 
								fi
 | 
				
			||||||
 | 
								AC_CHECK_FUNCS(poll, [
 | 
				
			||||||
 | 
									AC_CHECK_HEADERS(poll.h,
 | 
				
			||||||
 | 
										x_io_backend=poll\(\),
 | 
				
			||||||
 | 
										AC_MSG_ERROR(
 | 
				
			||||||
 | 
										     [Can't enable poll IO support!])
 | 
				
			||||||
 | 
									)
 | 
				
			||||||
 | 
								], [
 | 
				
			||||||
 | 
									AC_MSG_ERROR([Can't enable poll IO support!])
 | 
				
			||||||
 | 
								])
 | 
				
			||||||
 | 
							fi
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						[
 | 
				
			||||||
 | 
							AC_CHECK_FUNCS(poll, [
 | 
				
			||||||
 | 
								AC_CHECK_HEADERS(poll.h, x_io_backend=poll\(\))
 | 
				
			||||||
 | 
							])
 | 
				
			||||||
 | 
						]
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AC_ARG_WITH(devpoll,
 | 
				
			||||||
 | 
						AS_HELP_STRING([--without-devpoll],
 | 
				
			||||||
 | 
							       [disable /dev/poll IO support (autodetected by default)]),
 | 
				
			||||||
 | 
						[	if test "$withval" != "no"; then
 | 
				
			||||||
 | 
								if test "$withval" != "yes"; then
 | 
				
			||||||
 | 
									CFLAGS="-I$withval/include $CFLAGS"
 | 
				
			||||||
 | 
									CPPFLAGS="-I$withval/include $CPPFLAGS"
 | 
				
			||||||
 | 
									LDFLAGS="-L$withval/lib $LDFLAGS"
 | 
				
			||||||
 | 
								fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									AC_CHECK_HEADERS(sys/devpoll.h,,AC_MSG_ERROR([required C header missing!]))
 | 
				
			||||||
 | 
							fi
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						[
 | 
				
			||||||
 | 
							AC_CHECK_HEADERS(sys/devpoll.h, x_io_backend=/dev/poll)
 | 
				
			||||||
 | 
						]
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AC_ARG_WITH(epoll,
 | 
				
			||||||
 | 
						AS_HELP_STRING([--without-epoll],
 | 
				
			||||||
 | 
							       [disable epoll IO support (autodetected by default)]),
 | 
				
			||||||
 | 
						[	if test "$withval" != "no"; then
 | 
				
			||||||
 | 
								if test "$withval" != "yes"; then
 | 
				
			||||||
 | 
									CFLAGS="-I$withval/include $CFLAGS"
 | 
				
			||||||
 | 
									CPPFLAGS="-I$withval/include $CPPFLAGS"
 | 
				
			||||||
 | 
									LDFLAGS="-L$withval/lib $LDFLAGS"
 | 
				
			||||||
 | 
								fi
 | 
				
			||||||
 | 
								AC_CHECK_FUNCS(epoll_create, x_io_epoll=yes,
 | 
				
			||||||
 | 
									AC_MSG_ERROR([Can't enable epoll IO support!])
 | 
				
			||||||
 | 
								)
 | 
				
			||||||
 | 
							fi
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						[
 | 
				
			||||||
 | 
							AC_CHECK_FUNCS(epoll_create, x_io_epoll=yes)
 | 
				
			||||||
 | 
						]
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AC_ARG_WITH(kqueue,
 | 
				
			||||||
 | 
						AS_HELP_STRING([--without-kqueue],
 | 
				
			||||||
 | 
							       [disable kqueue IO support (autodetected by default)]),
 | 
				
			||||||
 | 
						[	if test "$withval" != "no"; then
 | 
				
			||||||
 | 
								if test "$withval" != "yes"; then
 | 
				
			||||||
 | 
									CFLAGS="-I$withval/include $CFLAGS"
 | 
				
			||||||
 | 
									CPPFLAGS="-I$withval/include $CPPFLAGS"
 | 
				
			||||||
 | 
									LDFLAGS="-L$withval/lib $LDFLAGS"
 | 
				
			||||||
 | 
								fi
 | 
				
			||||||
 | 
								AC_CHECK_FUNCS(kqueue, x_io_backend=kqueue\(\),
 | 
				
			||||||
 | 
									AC_MSG_ERROR([Can't enable kqueue IO support!])
 | 
				
			||||||
 | 
								)
 | 
				
			||||||
 | 
							fi
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						[
 | 
				
			||||||
 | 
							AC_CHECK_FUNCS(kqueue, x_io_backend=kqueue\(\))
 | 
				
			||||||
 | 
						]
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if test "$x_io_epoll" = "yes" -a "$x_io_select" = "yes"; then
 | 
				
			||||||
 | 
						# when epoll() and select() are available, we'll use both!
 | 
				
			||||||
 | 
						x_io_backend="epoll(), select()"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
						if test "$x_io_epoll" = "yes"; then
 | 
				
			||||||
 | 
							# we prefere epoll() if it is available
 | 
				
			||||||
 | 
							x_io_backend="epoll()"
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							if test "$x_io_select" = "yes" -a "$x_io_backend" = "none"; then
 | 
				
			||||||
 | 
								# we'll use select, when available and no "better"
 | 
				
			||||||
 | 
								# interface has been detected ...
 | 
				
			||||||
 | 
								x_io_backend="select()"
 | 
				
			||||||
 | 
							fi
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if test "$x_io_backend" = "none"; then
 | 
				
			||||||
 | 
						AC_MSG_ERROR([No useable IO API activated/found!?])
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# use SSL?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AC_ARG_WITH(openssl,
 | 
				
			||||||
 | 
						AS_HELP_STRING([--with-openssl],
 | 
				
			||||||
 | 
							       [enable SSL support using OpenSSL]),
 | 
				
			||||||
 | 
						[	if test "$withval" != "no"; then
 | 
				
			||||||
 | 
								if test "$withval" != "yes"; then
 | 
				
			||||||
 | 
									CFLAGS="-I$withval/include $CFLAGS"
 | 
				
			||||||
 | 
									CPPFLAGS="-I$withval/include $CPPFLAGS"
 | 
				
			||||||
 | 
									LDFLAGS="-L$withval/lib $LDFLAGS"
 | 
				
			||||||
 | 
								fi
 | 
				
			||||||
 | 
								PKG_CHECK_MODULES([OPENSSL], [libssl libcrypto],
 | 
				
			||||||
 | 
									[LIBS="$LIBS $OPENSSL_LIBS" CFLAGS="$CFLAGS $OPENSSL_CFLAGS"
 | 
				
			||||||
 | 
									AC_DEFINE(HAVE_LIBSSL, 1)],
 | 
				
			||||||
 | 
									[AC_CHECK_LIB(crypto, BIO_s_mem)
 | 
				
			||||||
 | 
									AC_CHECK_LIB(ssl, SSL_new)]
 | 
				
			||||||
 | 
								)
 | 
				
			||||||
 | 
								AC_CHECK_FUNCS(SSL_new, x_ssl_openssl=yes,
 | 
				
			||||||
 | 
									AC_MSG_ERROR([Can't enable openssl])
 | 
				
			||||||
 | 
								)
 | 
				
			||||||
 | 
							fi
 | 
				
			||||||
 | 
						]
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AC_ARG_WITH(gnutls,
 | 
				
			||||||
 | 
						AS_HELP_STRING([--with-gnutls],
 | 
				
			||||||
 | 
							       [enable SSL support using gnutls]),
 | 
				
			||||||
 | 
						[	if test "$withval" != "no"; then
 | 
				
			||||||
 | 
								if test "$withval" != "yes"; then
 | 
				
			||||||
 | 
									CFLAGS="-I$withval/include $CFLAGS"
 | 
				
			||||||
 | 
									CPPFLAGS="-I$withval/include $CPPFLAGS"
 | 
				
			||||||
 | 
									LDFLAGS="-L$withval/lib $LDFLAGS"
 | 
				
			||||||
 | 
								fi
 | 
				
			||||||
 | 
								AC_CHECK_LIB(gnutls, gnutls_global_init)
 | 
				
			||||||
 | 
								AC_CHECK_FUNCS(gnutls_global_init, x_ssl_gnutls=yes,
 | 
				
			||||||
 | 
									AC_MSG_ERROR([Can't enable gnutls])
 | 
				
			||||||
 | 
								)
 | 
				
			||||||
 | 
							fi
 | 
				
			||||||
 | 
						]
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					x_ssl_lib="no"
 | 
				
			||||||
 | 
					if test "$x_ssl_gnutls" = "yes"; then
 | 
				
			||||||
 | 
						if test "$x_ssl_openssl" = "yes";then
 | 
				
			||||||
 | 
							AC_MSG_ERROR([Cannot enable both gnutls and openssl])
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
						x_ssl_lib=gnutls
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					if test "$x_ssl_openssl" = "yes"; then
 | 
				
			||||||
 | 
						x_ssl_lib=openssl
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AM_CONDITIONAL(HAVE_SSL, [test $x_ssl_lib != "no"])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# use TCP wrappers?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					x_tcpwrap_on=no
 | 
				
			||||||
 | 
					AC_ARG_WITH(tcp-wrappers,
 | 
				
			||||||
 | 
						AS_HELP_STRING([--with-tcp-wrappers],
 | 
				
			||||||
 | 
							       [enable TCP wrappers support]),
 | 
				
			||||||
 | 
						[	if test "$withval" != "no"; then
 | 
				
			||||||
 | 
								if test "$withval" != "yes"; then
 | 
				
			||||||
 | 
									CFLAGS="-I$withval/include $CFLAGS"
 | 
				
			||||||
 | 
									CPPFLAGS="-I$withval/include $CPPFLAGS"
 | 
				
			||||||
 | 
									LDFLAGS="-L$withval/lib $LDFLAGS"
 | 
				
			||||||
 | 
								fi
 | 
				
			||||||
 | 
								AC_MSG_CHECKING(for hosts_access)
 | 
				
			||||||
 | 
								saved_LIBS="$LIBS"
 | 
				
			||||||
 | 
								LIBS="-lwrap $LIBS"
 | 
				
			||||||
 | 
								LIBS_END="-lwrap $LIBS_END"
 | 
				
			||||||
 | 
								AC_LINK_IFELSE([AC_LANG_PROGRAM([[
 | 
				
			||||||
 | 
					#include <sys/types.h>
 | 
				
			||||||
 | 
					#include <sys/socket.h>
 | 
				
			||||||
 | 
					#include <tcpd.h>
 | 
				
			||||||
 | 
					int allow_severity = 0;
 | 
				
			||||||
 | 
					int deny_severity = 0;
 | 
				
			||||||
 | 
									]],[[
 | 
				
			||||||
 | 
									tcpd_warn("link test");
 | 
				
			||||||
 | 
									]])],[
 | 
				
			||||||
 | 
									AC_MSG_RESULT(yes)
 | 
				
			||||||
 | 
									AC_DEFINE(TCPWRAP, 1)
 | 
				
			||||||
 | 
									x_tcpwrap_on=yes
 | 
				
			||||||
 | 
									],[
 | 
				
			||||||
 | 
									AC_MSG_RESULT(no)
 | 
				
			||||||
 | 
									AC_MSG_ERROR([Can't enable TCP wrappers!])
 | 
				
			||||||
 | 
								])
 | 
				
			||||||
 | 
								LIBS="$saved_LIBS"
 | 
				
			||||||
 | 
							fi
 | 
				
			||||||
 | 
						]
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# do IDENT requests using libident?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					x_identauth_on=no
 | 
				
			||||||
 | 
					AC_ARG_WITH(ident,
 | 
				
			||||||
 | 
						AS_HELP_STRING([--with-ident],
 | 
				
			||||||
 | 
							       [enable "IDENT" ("AUTH") protocol support]),
 | 
				
			||||||
 | 
						[	if test "$withval" != "no"; then
 | 
				
			||||||
 | 
								if test "$withval" != "yes"; then
 | 
				
			||||||
 | 
									CFLAGS="-I$withval/include $CFLAGS"
 | 
				
			||||||
 | 
									CPPFLAGS="-I$withval/include $CPPFLAGS"
 | 
				
			||||||
 | 
									LDFLAGS="-L$withval/lib $LDFLAGS"
 | 
				
			||||||
 | 
								fi
 | 
				
			||||||
 | 
								AC_CHECK_LIB(ident, ident_id)
 | 
				
			||||||
 | 
								AC_CHECK_FUNCS(ident_id, x_identauth_on=yes,
 | 
				
			||||||
 | 
									AC_MSG_ERROR([Can't enable IDENT support!])
 | 
				
			||||||
 | 
								)
 | 
				
			||||||
 | 
							fi
 | 
				
			||||||
 | 
						]
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					if test "$x_identauth_on" = "yes"; then
 | 
				
			||||||
 | 
						AC_DEFINE(IDENTAUTH, 1)
 | 
				
			||||||
 | 
						AC_CHECK_HEADERS(ident.h,,AC_MSG_ERROR([required C header missing!]))
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# compile in PAM support?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					x_pam_on=no
 | 
				
			||||||
 | 
					AC_ARG_WITH(pam,
 | 
				
			||||||
 | 
						AS_HELP_STRING([--with-pam],
 | 
				
			||||||
 | 
							       [enable user authentication using PAM]),
 | 
				
			||||||
 | 
						[	if test "$withval" != "no"; then
 | 
				
			||||||
 | 
								if test "$withval" != "yes"; then
 | 
				
			||||||
 | 
									CFLAGS="-I$withval/include $CFLAGS"
 | 
				
			||||||
 | 
									CPPFLAGS="-I$withval/include $CPPFLAGS"
 | 
				
			||||||
 | 
									LDFLAGS="-L$withval/lib $LDFLAGS"
 | 
				
			||||||
 | 
								fi
 | 
				
			||||||
 | 
								AC_CHECK_LIB(pam, pam_authenticate)
 | 
				
			||||||
 | 
								AC_CHECK_FUNCS(pam_authenticate, x_pam_on=yes,
 | 
				
			||||||
 | 
									AC_MSG_ERROR([Can't enable PAM support!])
 | 
				
			||||||
 | 
								)
 | 
				
			||||||
 | 
							fi
 | 
				
			||||||
 | 
						]
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					if test "$x_pam_on" = "yes"; then
 | 
				
			||||||
 | 
						AC_DEFINE(PAM, 1)
 | 
				
			||||||
 | 
						AC_CHECK_HEADERS(security/pam_appl.h,pam_ok=yes)
 | 
				
			||||||
 | 
						if test "$pam_ok" != "yes"; then
 | 
				
			||||||
 | 
							AC_CHECK_HEADERS(pam/pam_appl.h,pam_ok=yes,
 | 
				
			||||||
 | 
								AC_MSG_ERROR([required C header missing!]))
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# compile in IRC+ protocol support?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					x_ircplus_on=yes
 | 
				
			||||||
 | 
					AC_ARG_ENABLE(ircplus,
 | 
				
			||||||
 | 
						AS_HELP_STRING([--disable-ircplus],
 | 
				
			||||||
 | 
							       [disable IRC+ protocol]),
 | 
				
			||||||
 | 
						if test "$enableval" = "no"; then x_ircplus_on=no; fi
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					if test "$x_ircplus_on" = "yes"; then
 | 
				
			||||||
 | 
						AC_DEFINE(IRCPLUS, 1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Compile in iconv support?
 | 
				
			||||||
 | 
						# We only check for it when IRC+ is enabled, because the IRC+ command
 | 
				
			||||||
 | 
						# CHARCONV is the only function depending on it.
 | 
				
			||||||
 | 
						x_iconv_on=no
 | 
				
			||||||
 | 
						AC_ARG_WITH(iconv,
 | 
				
			||||||
 | 
							AS_HELP_STRING([--with-iconv],
 | 
				
			||||||
 | 
								       [enable character conversion using libiconv]),
 | 
				
			||||||
 | 
							[ if test "$withval" != "no"; then
 | 
				
			||||||
 | 
								if test "$withval" != "yes"; then
 | 
				
			||||||
 | 
									CFLAGS="-I$withval/include $CFLAGS"
 | 
				
			||||||
 | 
									CPPFLAGS="-I$withval/include $CPPFLAGS"
 | 
				
			||||||
 | 
									LDFLAGS="-L$withval/lib $LDFLAGS"
 | 
				
			||||||
 | 
								fi
 | 
				
			||||||
 | 
								AC_CHECK_LIB(iconv, iconv_open)
 | 
				
			||||||
 | 
								AC_CHECK_FUNCS(iconv_open, x_iconv_on=yes)
 | 
				
			||||||
 | 
								if test "$x_iconv_on" != "yes"; then
 | 
				
			||||||
 | 
									AC_CHECK_LIB(iconv, libiconv_open)
 | 
				
			||||||
 | 
									AC_CHECK_FUNCS(libiconv_open, x_iconv_on=yes)
 | 
				
			||||||
 | 
								fi
 | 
				
			||||||
 | 
								if test "$x_iconv_on" != "yes"; then
 | 
				
			||||||
 | 
									AC_MSG_ERROR([Can't enable libiconv support!])
 | 
				
			||||||
 | 
								fi
 | 
				
			||||||
 | 
							fi ]
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
						if test "$x_iconv_on" = "yes"; then
 | 
				
			||||||
 | 
							AC_DEFINE(ICONV, 1)
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# enable support for IPv6?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					x_ipv6_on=yes
 | 
				
			||||||
 | 
					AC_ARG_ENABLE(ipv6,
 | 
				
			||||||
 | 
						AS_HELP_STRING([--disable-ipv6],
 | 
				
			||||||
 | 
							       [disable IPv6 protocol support (autodetected by default)]),
 | 
				
			||||||
 | 
						[	if test "$enableval" = "no"; then
 | 
				
			||||||
 | 
								x_ipv6_on=no
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
								AC_CHECK_FUNCS(
 | 
				
			||||||
 | 
									[getaddrinfo getnameinfo],,
 | 
				
			||||||
 | 
									AC_MSG_ERROR([required function missing for IPv6 support!])
 | 
				
			||||||
 | 
								)
 | 
				
			||||||
 | 
							fi
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						[	AC_CHECK_FUNCS([getaddrinfo getnameinfo],, x_ipv6_on=no)
 | 
				
			||||||
 | 
						]
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					if test "$x_ipv6_on" = "yes"; then
 | 
				
			||||||
 | 
						AC_DEFINE(WANT_IPV6, 1)
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# compile in IRC "sniffer"?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					x_sniffer_on=no; x_debug_on=no
 | 
				
			||||||
 | 
					AC_ARG_ENABLE(sniffer,
 | 
				
			||||||
 | 
						AS_HELP_STRING([--enable-sniffer],
 | 
				
			||||||
 | 
							       [enable IRC traffic sniffer (enables debug mode)]),
 | 
				
			||||||
 | 
						if test "$enableval" = "yes"; then
 | 
				
			||||||
 | 
							AC_DEFINE(SNIFFER, 1)
 | 
				
			||||||
 | 
							x_sniffer_on=yes; x_debug_on=yes
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# enable additional debugging code?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AC_ARG_ENABLE(debug,
 | 
				
			||||||
 | 
						AS_HELP_STRING([--enable-debug],
 | 
				
			||||||
 | 
							       [show additional debug output]),
 | 
				
			||||||
 | 
						if test "$enableval" = "yes"; then x_debug_on=yes; fi
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					if test "$x_debug_on" = "yes"; then
 | 
				
			||||||
 | 
						AC_DEFINE(DEBUG, 1)
 | 
				
			||||||
 | 
						test "$GCC" = "yes" && CFLAGS="-pedantic $CFLAGS"
 | 
				
			||||||
 | 
						AC_CHECK_FUNCS(mtrace)
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# enable "strict RFC rules"?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					x_strict_rfc_on=no
 | 
				
			||||||
 | 
					AC_ARG_ENABLE(strict-rfc,
 | 
				
			||||||
 | 
						AS_HELP_STRING([--enable-strict-rfc],
 | 
				
			||||||
 | 
							       [strict RFC conformance -- may break clients!]),
 | 
				
			||||||
 | 
						if test "$enableval" = "yes"; then
 | 
				
			||||||
 | 
							AC_DEFINE(STRICT_RFC, 1)
 | 
				
			||||||
 | 
							x_strict_rfc_on=yes
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -- Definitions --
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AC_DEFINE_UNQUOTED(HOST_CPU, "$host_cpu" )
 | 
				
			||||||
 | 
					AC_DEFINE_UNQUOTED(HOST_VENDOR, "$host_vendor" )
 | 
				
			||||||
 | 
					AC_DEFINE_UNQUOTED(HOST_OS, "$host_os" )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Add additional CFLAGS, LDFLAGS and LIBS which were specified on the command
 | 
				
			||||||
 | 
					# line or by some tests from above, but after running this script. Useful for
 | 
				
			||||||
 | 
					# adding "-Werror", for example:
 | 
				
			||||||
 | 
					test -n "$CFLAGS_END" && CFLAGS="$CFLAGS $CFLAGS_END"
 | 
				
			||||||
 | 
					test -n "$LDFLAGS_END" && LDFLAGS="$LDFLAGS $LDFLAGS_END"
 | 
				
			||||||
 | 
					test -n "$LIBS_END" && LIBS="$LIBS $LIBS_END"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -- Generate files --
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AC_CONFIG_FILES([ \
 | 
				
			||||||
 | 
						Makefile \
 | 
				
			||||||
 | 
						contrib/Debian/Makefile \
 | 
				
			||||||
 | 
						contrib/Makefile \
 | 
				
			||||||
 | 
						doc/Makefile \
 | 
				
			||||||
 | 
						doc/src/Makefile \
 | 
				
			||||||
 | 
						man/Makefile \
 | 
				
			||||||
 | 
						src/ipaddr/Makefile \
 | 
				
			||||||
 | 
						src/Makefile \
 | 
				
			||||||
 | 
						src/ngircd/Makefile \
 | 
				
			||||||
 | 
						src/portab/Makefile \
 | 
				
			||||||
 | 
						src/testsuite/Makefile \
 | 
				
			||||||
 | 
						src/tool/Makefile \
 | 
				
			||||||
 | 
					])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AC_OUTPUT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type dpkg >/dev/null 2>&1
 | 
				
			||||||
 | 
					if test $? -eq 0; then
 | 
				
			||||||
 | 
						# Generate debian/ link if the dpkg command exists
 | 
				
			||||||
 | 
						# (read: if we are running on a debian compatible system)
 | 
				
			||||||
 | 
						echo "creating Debian-specific links ..."
 | 
				
			||||||
 | 
						if test ! -f debian/rules -a -f contrib/Debian/rules; then
 | 
				
			||||||
 | 
							ln -s contrib/Debian debian
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -- Result --
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo
 | 
				
			||||||
 | 
					echo "ngIRCd $PACKAGE_VERSION has been configured with the following options:"
 | 
				
			||||||
 | 
					echo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Someone please show me a better way :)  [borrowed by OpenSSH]
 | 
				
			||||||
 | 
					B=`eval echo ${bindir}` ; B=`eval echo ${B}`
 | 
				
			||||||
 | 
					S=`eval echo ${sbindir}` ; S=`eval echo ${S}`
 | 
				
			||||||
 | 
					C=`eval echo ${sysconfdir}` ; C=`eval echo ${C}`
 | 
				
			||||||
 | 
					M=`eval echo ${mandir}` ; M=`eval echo ${M}`
 | 
				
			||||||
 | 
					D=`eval echo ${docdir}` ; D=`eval echo ${D}`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo "               Host: ${host}"
 | 
				
			||||||
 | 
					echo "           Compiler: ${CC}"
 | 
				
			||||||
 | 
					test -n "$CFLAGS"	&& echo "     Compiler flags: ${CFLAGS}"
 | 
				
			||||||
 | 
					test -n "$CPPFLAGS"	&& echo " Preprocessor flags: ${CPPFLAGS}"
 | 
				
			||||||
 | 
					test -n "$LDFLAGS"	&& echo "       Linker flags: ${LDFLAGS}"
 | 
				
			||||||
 | 
					test -n "$LIBS"		&& echo "          Libraries: ${LIBS}"
 | 
				
			||||||
 | 
					echo
 | 
				
			||||||
 | 
					echo "    'ngircd' binary: $S"
 | 
				
			||||||
 | 
					echo " Configuration file: $C"
 | 
				
			||||||
 | 
					echo "       Manual pages: $M"
 | 
				
			||||||
 | 
					echo "      Documentation: $D"
 | 
				
			||||||
 | 
					echo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo $ECHO_N "     Syslog support: $ECHO_C"
 | 
				
			||||||
 | 
					test "$x_syslog_on" = "yes" \
 | 
				
			||||||
 | 
						&& echo $ECHO_N "yes   $ECHO_C" \
 | 
				
			||||||
 | 
						|| echo $ECHO_N "no    $ECHO_C"
 | 
				
			||||||
 | 
					echo $ECHO_N "  Enable debug code: $ECHO_C"
 | 
				
			||||||
 | 
					test "$x_debug_on" = "yes" \
 | 
				
			||||||
 | 
						&& echo "yes" \
 | 
				
			||||||
 | 
						|| echo "no"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo $ECHO_N "   zlib compression: $ECHO_C"
 | 
				
			||||||
 | 
					test "$x_zlib_on" = "yes" \
 | 
				
			||||||
 | 
						&& echo $ECHO_N "yes   $ECHO_C" \
 | 
				
			||||||
 | 
						|| echo $ECHO_N "no    $ECHO_C"
 | 
				
			||||||
 | 
					echo $ECHO_N "        IRC sniffer: $ECHO_C"
 | 
				
			||||||
 | 
					test "$x_sniffer_on" = "yes" \
 | 
				
			||||||
 | 
						&& echo "yes" \
 | 
				
			||||||
 | 
						|| echo "no"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo $ECHO_N "   Use TCP Wrappers: $ECHO_C"
 | 
				
			||||||
 | 
					test "$x_tcpwrap_on" = "yes" \
 | 
				
			||||||
 | 
						&& echo $ECHO_N "yes   $ECHO_C" \
 | 
				
			||||||
 | 
						|| echo $ECHO_N "no    $ECHO_C"
 | 
				
			||||||
 | 
					echo $ECHO_N "    Strict RFC mode: $ECHO_C"
 | 
				
			||||||
 | 
					test "$x_strict_rfc_on" = "yes" \
 | 
				
			||||||
 | 
						&& echo "yes" \
 | 
				
			||||||
 | 
						|| echo "no"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo $ECHO_N "      IDENT support: $ECHO_C"
 | 
				
			||||||
 | 
					test "$x_identauth_on" = "yes" \
 | 
				
			||||||
 | 
						&& echo $ECHO_N "yes   $ECHO_C" \
 | 
				
			||||||
 | 
						|| echo $ECHO_N "no    $ECHO_C"
 | 
				
			||||||
 | 
					echo $ECHO_N "      IRC+ protocol: $ECHO_C"
 | 
				
			||||||
 | 
					test "$x_ircplus_on" = "yes" \
 | 
				
			||||||
 | 
						&& echo "yes" \
 | 
				
			||||||
 | 
						|| echo "no"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo $ECHO_N "      IPv6 protocol: $ECHO_C"
 | 
				
			||||||
 | 
					test "$x_ipv6_on" = "yes" \
 | 
				
			||||||
 | 
						&& echo $ECHO_N "yes   $ECHO_C" \
 | 
				
			||||||
 | 
						|| echo $ECHO_N "no    $ECHO_C"
 | 
				
			||||||
 | 
					echo $ECHO_N "        I/O backend: $ECHO_C"
 | 
				
			||||||
 | 
						echo "$x_io_backend"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo $ECHO_N "        PAM support: $ECHO_C"
 | 
				
			||||||
 | 
					test "$x_pam_on" = "yes" \
 | 
				
			||||||
 | 
						&& echo $ECHO_N "yes   $ECHO_C" \
 | 
				
			||||||
 | 
						|| echo $ECHO_N "no    $ECHO_C"
 | 
				
			||||||
 | 
					echo $ECHO_N "        SSL support: $ECHO_C"
 | 
				
			||||||
 | 
					echo "$x_ssl_lib"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo $ECHO_N "   libiconv support: $ECHO_C"
 | 
				
			||||||
 | 
						echo "$x_iconv_on"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					define(_automake_regex_,[[^AUTOMAKE_OPTIONS = [a-z .\-]*/portab/ansi2knr]])
 | 
				
			||||||
 | 
					if ! grep "_automake_regex_" src/ngircd/Makefile.am >/dev/null 2>&1; then
 | 
				
			||||||
 | 
						echo "WARNING:"
 | 
				
			||||||
 | 
						echo "This GNU automake generated build system does not support \"de-ANSI-fication\","
 | 
				
			||||||
 | 
						echo "therefore don't use it to generate \"official\" distribution archives!"
 | 
				
			||||||
 | 
						echo "(Most probably you want to use GNU automake 1.11.x for this purpose ...)"
 | 
				
			||||||
 | 
						echo
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -eof-
 | 
				
			||||||
							
								
								
									
										7
									
								
								contrib/Debian/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								contrib/Debian/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
				
			|||||||
 | 
					*.log
 | 
				
			||||||
 | 
					*.debhelper
 | 
				
			||||||
 | 
					*.substvars
 | 
				
			||||||
 | 
					debhelper-build-stamp
 | 
				
			||||||
 | 
					files
 | 
				
			||||||
 | 
					ngircd/
 | 
				
			||||||
 | 
					ngircd.service
 | 
				
			||||||
							
								
								
									
										30
									
								
								contrib/Debian/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								contrib/Debian/Makefile.am
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,30 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# ngIRCd -- The Next Generation IRC Daemon
 | 
				
			||||||
 | 
					# Copyright (c)2001-2024 Alexander Barton (alex@barton.de) and Contributors
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This program is free software; you can redistribute it and/or modify
 | 
				
			||||||
 | 
					# it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					# the Free Software Foundation; either version 2 of the License, or
 | 
				
			||||||
 | 
					# (at your option) any later version.
 | 
				
			||||||
 | 
					# Please read the file COPYING, README and AUTHORS for more information.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXTRA_DIST = \
 | 
				
			||||||
 | 
						changelog \
 | 
				
			||||||
 | 
						control \
 | 
				
			||||||
 | 
						copyright \
 | 
				
			||||||
 | 
						ngircd.default \
 | 
				
			||||||
 | 
						ngircd.pam \
 | 
				
			||||||
 | 
						rules \
 | 
				
			||||||
 | 
						watch \
 | 
				
			||||||
 | 
						source/format
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					maintainer-clean-local:
 | 
				
			||||||
 | 
						rm -f Makefile Makefile.in
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					clean-local:
 | 
				
			||||||
 | 
						rm -f *.log *.debhelper *.substvars
 | 
				
			||||||
 | 
						rm -f debhelper-build-stamp files ngircd.service
 | 
				
			||||||
 | 
						rm -rf .debhelper/ ngircd/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -eof-
 | 
				
			||||||
							
								
								
									
										592
									
								
								contrib/Debian/changelog
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										592
									
								
								contrib/Debian/changelog
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,592 @@
 | 
				
			|||||||
 | 
					ngircd (27~rc1-0ab1) unstable; urgency=medium
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release candidate 1 for ngIRCd Release 27.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Sat, 13 Apr 2024 12:26:35 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (26.1-0ab1) unstable; urgency=medium
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release: ngIRCd 26.1.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Sat, 02 Jan 2021 14:31:51 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (26-0ab1) unstable; urgency=medium
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release: ngIRCd 26.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Sat, 20 Jun 2020 15:26:46 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (26~rc2-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release candidate 2 for ngIRCd Release 26.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Thu, 11 Jun 2020 17:21:17 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (26~rc1-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release candidate 1 for ngIRCd Release 26.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Sun, 10 May 2020 17:13:17 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (25-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release: ngIRCd 25.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Wed, 23 Jan 2019 23:13:03 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (25~rc1-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release candidate 1 for ngIRCd Release 25.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Sat, 11 Aug 2018 21:35:08 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (24-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release: ngIRCd 24.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Fri, 20 Jan 2017 16:43:09 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (24~rc1-0ab2) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Use OpenSSL instead of GnuTLS for SSL-enabled packages.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Fri, 20 Jan 2017 15:20:07 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (24~rc1-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release candidate 1 for ngIRCd Release 24.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Sat, 07 Jan 2017 18:58:02 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (23-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release: ngIRCd 23.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Mon, 16 Nov 2015 21:27:03 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (23~rc1-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release candidate 1 for ngIRCd Release 23.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Sun, 06 Sep 2015 16:55:23 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (22.1-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release: ngIRCd 22.1.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Mon, 06 Apr 2015 14:34:50 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (22-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release: ngIRCd 22.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Sat, 11 Oct 2014 20:29:03 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (22~rc1-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release candidate 1 for ngIRCd Release 22.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Mon, 29 Sep 2014 17:07:55 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (21.1-0ab2) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Use correct package name in pathname to "HelpFile" (Command.txt)
 | 
				
			||||||
 | 
					    in "ngircd-full" and "ngircd-full-dbg" packages.
 | 
				
			||||||
 | 
					  * Don't adjust path names that are correct by default.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Mon, 14 Jul 2014 11:20:17 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (21.1-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release: ngIRCd 21.1.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Tue, 25 Mar 2014 14:44:59 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (21-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release: ngIRCd 21.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Wed, 30 Oct 2013 22:13:55 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (21~rc2-0ab3) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Fix sed(1) rules adjusting "ngircd-full" package, error introduced
 | 
				
			||||||
 | 
					    by last commit :-/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Sun, 20 Oct 2013 18:31:16 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (21~rc2-0ab2) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Fix default "HelpFile" file name in ngircd.conf for "full" packages.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Sun, 20 Oct 2013 17:18:28 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (21~rc2-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release candidate 2 for ngIRCd Release 21.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Sun, 20 Oct 2013 15:50:03 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (21~rc1-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release candidate 1 for ngIRCd Release 21.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Sat, 05 Oct 2013 23:24:09 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (20.3-0ab1) unstable; urgency=high
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release, fixing a security related bug: ngIRCd 20.3.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Fri, 23 Aug 2013 21:53:21 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (20.2-0ab1) unstable; urgency=high
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release, fixing a security related bug: ngIRCd 20.2.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Fri, 15 Feb 2013 12:17:00 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (20.1-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release: ngIRCd 20.1.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Wed, 02 Jan 2013 22:37:26 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (20-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release: ngIRCd 20.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Mon, 17 Dec 2012 13:04:15 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (20~rc2-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release candidate 2 for ngIRCd Release 20.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Sun, 02 Dec 2012 18:51:06 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (20~rc1-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release candidate 1 for ngIRCd Release 20.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Sun, 11 Nov 2012 16:03:32 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (19.2-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release: ngIRCd 19.2.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Tue, 19 Jun 2012 11:03:12 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (19.2~rc1-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release candidate 1 for ngIRC Release 19.2.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Wed, 13 Jun 2012 10:59:34 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (19.1-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release: ngIRCd 19.1.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Mon, 19 Mar 2012 19:18:28 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (19-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release: ngIRCd 19.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Wed, 29 Feb 2012 17:34:08 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (19~rc1-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release candidate 1 for ngIRCd Release 19.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Sun, 12 Feb 2012 17:47:51 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (18-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release: ngIRCd 18.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Sun, 10 Jul 2011 20:03:20 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (18~rc2-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release candidate 2 for ngIRCd Release 18.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Wed, 29 Jun 2011 10:20:51 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (18~rc1-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release candidate 1 for ngIRCd Release 18.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Mon, 27 Jun 2011 22:58:36 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (17.1-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release: ngIRCd 17.1.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Sun, 19 Dec 2010 15:56:42 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (17-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release: ngIRCd 17.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Sun, 07 Nov 2010 17:23:07 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (17~rc3-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release candidate 3 for ngIRCd Release 17.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Wed, 27 Oct 2010 22:30:08 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (17~rc2-0ab2) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Install /etc/pam.d/ngircd including "auth required pam_permit.so" when
 | 
				
			||||||
 | 
					    installing -full or -full-dbg variant to keep backwards compatibility.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Tue, 26 Oct 2010 23:34:56 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (17~rc2-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release candidate 2 for ngIRCd Release 17.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Mon, 25 Oct 2010 18:51:15 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (17~rc1-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release candidate 1 for ngIRCd Release 17.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Mon, 11 Oct 2010 16:57:47 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (16-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release: ngIRCd 16.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Sun, 02 May 2010 13:32:41 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (16~rc2-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release candidate 2 for ngIRCd Release 16.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Sun, 25 Apr 2010 13:12:42 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (16~rc1-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release candidate 1 for ngIRCd Release 16.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Thu, 25 Mar 2010 15:56:03 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (15-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release: ngIRCd 15.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Thu,  7 Nov 2009 12:07:08 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (15~rc1-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release candidate 1 for ngIRCd Release 15.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Thu, 15 Oct 2009 10:01:08 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (14.1-0ab1) unstable; urgency=high
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release ngIRCd 14.1, fixing a security-related bug.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Tue,  5 May 2009 13:13:38 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (14-0ab3) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Fixed "Conflicts:" line in debian/control: missing comma.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Mon,  4 May 2009 11:21:55 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (14-0ab2) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Add new "ngircd-full-dbg" package including degug code and both
 | 
				
			||||||
 | 
					    the --debug and --sniffer options, and containing debug symbols.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Wed, 29 Apr 2009 01:13:03 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (14-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release: ngIRCd 14.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Mon, 20 Apr 2009 11:09:12 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (14~rc1-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release candidate 1 for ngIRCd Release 14.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Sun, 29 Mar 2009 17:09:17 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (13-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release: ngIRCd 13.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Thu, 25 Dec 2008 23:09:58 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (13~rc1-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release candidate 1 for ngIRCd Release 13.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Fri, 21 Nov 2008 22:04:41 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.12.1-0ab1+dev) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Update package for testing the new "upstream" features:
 | 
				
			||||||
 | 
					     - Support for IRC services (see http://www.ircservices.za.net),
 | 
				
			||||||
 | 
					     - Encrypted connections using GNU TLS (ngircd-full),
 | 
				
			||||||
 | 
					     - Support for the IPv6 protocol (ngircd-full).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Fri, 03 Oct 2008 16:22:55 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.12.1-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release ngIRCd 0.12.1.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Wed,  9 Jul 2008 11:27:00 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.12.0-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release ngIRCd 0.12.0.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Tue, 13 May 2008 12:30:31 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.12.0-0ab0-pre2) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Second prerelease of upcoming new "upstrem" release 0.12.0-pre1.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Tue, 29 Apr 2008 23:06:14 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.12.0-0ab0-pre1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Prereloease of upcoming new "upstrem" release 0.12.0-pre1.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Sun, 20 Apr 2008 15:43:34 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.11.0-0ab0-pre2) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Second prerelease of upcoming new "upstream release".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Mon,  7 Jan 2008 15:32:42 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.11.0-0ab0-pre1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Prerelease of upcoming new "upstream release".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Wed,  2 Jan 2008 21:33:15 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.10.4-0ab1) unstable; urgency=high
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release: 0.10.4 - fixing a security bug.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Mon,  7 Jan 2008 22:04:44 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.10.0-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release: 0.10.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Sun,  1 Oct 2006 18:14:21 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.10.0-0ab0-pre2-1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Bumped standards version to 3.7.2.1.
 | 
				
			||||||
 | 
					  * Added "Provides: ircd" to Debian control file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Sun,  1 Oct 2006 16:25:33 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.10.0-0ab0-pre2) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Second "upstream" prerelease of upcoming 0.10.0 release.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Sat,  9 Sep 2006 20:57:52 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.10.0-0ab0-pre1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Prerelease of upcoming new "upstream release".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Wed,  2 Aug 2006 12:01:07 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.9.2-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream release" fixing a few bugs in 0.9.1.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Sat, 15 Oct 2005 14:10:34 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.9.1-0ab1) unstable; urgency=medium
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream release" addressing two problems in ngIRCd 0.9.0.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Wed,  3 Aug 2005 15:10:41 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.9.0-0ab2) unstable; urgency=medium
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Init script: fixed a problem with symbolic links in runlevel directories
 | 
				
			||||||
 | 
					    that could prevent the init script from working correctly.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Tue, 26 Jul 2005 21:31:18 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.9.0-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream release".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@Arthur.Ath.CX>  Sat,  24 Jul 2005 23:30:00 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.8.3-0ab1) unstable; urgency=high
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream release", including security fixes.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@Arthur.Ath.CX>  Thu,  3 Feb 2005 10:41:55 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.8.2-0ab1) unstable; urgency=high
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream release", including security fixes.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@Arthur.Ath.CX>  Wed, 26 Jan 2005 23:14:12 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.8.1-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream release".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@Arthur.Ath.CX>  Sat, 25 Dec 2004 01:18:32 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.8.0-0ab2) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Added missing commas to debian control file, fixes bug #56.
 | 
				
			||||||
 | 
					    Thanks to Kevin Otte.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@Arthur.Ath.CX>  Thu, 15 Jul 2004 10:53:39 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.8.0-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New upstream version.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@Arthur.Ath.CX>  Sat, 26 Jun 2004 11:25:59 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.7.7+HEAD-0ab6) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Incorporated actual CVS HEAD version which includes all features of
 | 
				
			||||||
 | 
					    version 0.8.0-pre1 and patches for the resolver and logger.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@Arthur.Ath.CX>  Tue, 11 May 2004 02:18:50 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.7.7+HEAD-0ab5) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Updates from CVS HEAD branch, most notably: "INVITE- and BAN-lists
 | 
				
			||||||
 | 
					    become synchronized between IRC+ servers when establishing new
 | 
				
			||||||
 | 
					    connections, if the peer supports this as well."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@Arthur.Ath.CX>  Mon, 26 Apr 2004 01:53:15 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.7.7+HEAD-0ab4) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * This version includes fixes for INVITE command and the handling of the
 | 
				
			||||||
 | 
					    invite and ban lists from CVS-HEAD.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@Arthur.Ath.CX>  Fri,  9 Apr 2004 23:55:13 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.7.7+HEAD-0ab3) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Included MODE fix from CVS-HEAD branch.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@Arthur.Ath.CX>  Mon,  5 Apr 2004 13:09:24 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.7.7+HEAD-0ab2) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Incorporated more fixes and enhancements of CVS-HEAD version,
 | 
				
			||||||
 | 
					    e. g. better connection logging and fixed TRACE command.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@Arthur.Ath.CX>  Sat, 28 Feb 2004 03:20:32 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.7.7+HEAD-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New upstream version. This debian package includes all features of
 | 
				
			||||||
 | 
					    ngIRCd 0.7.7 and changes of the CVS-HEAD development tree.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@Arthur.Ath.CX>  Thu,  5 Feb 2004 15:23:22 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.7.6+HEAD-0ab2) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Included new fixes and additions from the CVS-HEAD upstream branch,
 | 
				
			||||||
 | 
					    e. g. the setting of type of service (TOS) on sockets.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@Arthur.Ath.CX>  Mon, 26 Jan 2004 04:05:41 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.7.6+HEAD-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Included all changes from the CVS-HEAD upstream version.
 | 
				
			||||||
 | 
					  * Restructured debian packaging system: now there are two packages, a
 | 
				
			||||||
 | 
					    "standard" version that includes all the default options and a "full"
 | 
				
			||||||
 | 
					    version that additionally includes support for TCP wrappers and IDENT
 | 
				
			||||||
 | 
					    lookups.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@Arthur.Ath.CX>  Thu,  1 Jan 2004 23:12:11 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.7.6-0ab1) unstable; urgency=medium
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New upstream version.
 | 
				
			||||||
 | 
					  * Changed version numvering scheme of debian package.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@Arthur.Ath.CX>  Fri,  5 Dec 2003 14:26:41 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.7.5-0.2ab) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Updated RPM and Debian package description and configuration.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@Arthur.Ath.CX>  Sat, 29 Nov 2003 21:24:32 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.7.5-0.1ab) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New upstream version.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@Arthur.Ath.CX>  Fri,  7 Nov 2003 21:59:58 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.7.1-0.1ab) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New upstream version :-)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@Arthur.Ath.CX>  Fri, 18 Jul 2003 22:53:02 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.7.0-0.7ab) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Fixed up post installation script (added interpreter, fixed chmod call).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@Arthur.Ath.CX>  Sun, 13 Jul 2003 00:52:38 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.7.0-0.6ab) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Added /etc/default/ngircd.
 | 
				
			||||||
 | 
					  * Included own post installation script.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@Arthur.Ath.CX>  Sat, 12 Jul 2003 20:31:09 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.7.0-0.5ab) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Enhanced init script.
 | 
				
			||||||
 | 
					  * Included NJOIN fix from actual CVS "HEAD" branch.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@Arthur.Ath.CX>  Wed,  9 Jul 2003 22:40:49 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.7.0-0.4ab) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Reverted use of dh_installexamples.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@Arthur.Ath.CX>  Thu, 22 May 2003 00:15:03 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.7.0-0.3ab) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Removed "debian/docs" and "debian/conffiles"; debhelper takes care of
 | 
				
			||||||
 | 
					    this for us automagically.
 | 
				
			||||||
 | 
					  * Excluded "etc/ngircd.conf" from dh_fixperms.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@Arthur.Ath.CX>  Wed, 21 May 2003 23:25:05 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.7.0-0.2ab) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Fixed wrong variable substitution in init script.
 | 
				
			||||||
 | 
					  * Added some CVS "Id-Tags" (but not checked in, yet).
 | 
				
			||||||
 | 
					  * Removed own "Provides:" from control file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Wed, 21 May 2003 12:32:34 +0200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.7.0-0.1ab) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Initial Release.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Wed, 21 May 2003 02:36:52 +0200
 | 
				
			||||||
							
								
								
									
										46
									
								
								contrib/Debian/control
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								contrib/Debian/control
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,46 @@
 | 
				
			|||||||
 | 
					Source: ngircd
 | 
				
			||||||
 | 
					Section: net
 | 
				
			||||||
 | 
					Priority: optional
 | 
				
			||||||
 | 
					Maintainer: Alexander Barton <alex@barton.de>
 | 
				
			||||||
 | 
					Rules-Requires-Root: binary-targets
 | 
				
			||||||
 | 
					Build-Depends: debhelper-compat (= 13),
 | 
				
			||||||
 | 
					 expect,
 | 
				
			||||||
 | 
					 libident-dev,
 | 
				
			||||||
 | 
					 libpam0g-dev,
 | 
				
			||||||
 | 
					 libssl-dev,
 | 
				
			||||||
 | 
					 libz-dev,
 | 
				
			||||||
 | 
					 openssl,
 | 
				
			||||||
 | 
					 procps,
 | 
				
			||||||
 | 
					 telnet | telnet-ssl,
 | 
				
			||||||
 | 
					Standards-Version: 4.6.2
 | 
				
			||||||
 | 
					Homepage: https://ngircd.barton.de
 | 
				
			||||||
 | 
					Vcs-Browser: https://github.com/ngircd/ngircd
 | 
				
			||||||
 | 
					Vcs-Git: https://github.com/ngircd/ngircd.git
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Package: ngircd
 | 
				
			||||||
 | 
					Architecture: any
 | 
				
			||||||
 | 
					Depends:
 | 
				
			||||||
 | 
					 ${shlibs:Depends},
 | 
				
			||||||
 | 
					 ${misc:Depends},
 | 
				
			||||||
 | 
					Conflicts:
 | 
				
			||||||
 | 
					 ircd,
 | 
				
			||||||
 | 
					Provides:
 | 
				
			||||||
 | 
					 ircd,
 | 
				
			||||||
 | 
					Description: lightweight Internet Relay Chat (IRC) server
 | 
				
			||||||
 | 
					 ngIRCd is a free, portable and lightweight Internet Relay Chat (IRC) server
 | 
				
			||||||
 | 
					 for small or private networks, developed under the terms of the GNU General
 | 
				
			||||||
 | 
					 Public License (GPL).
 | 
				
			||||||
 | 
					 .
 | 
				
			||||||
 | 
					 The server is quite easy to configure and runs as a single-node server or can
 | 
				
			||||||
 | 
					 be part of a network of ngIRCd servers in a LAN or across the internet. It
 | 
				
			||||||
 | 
					 optionally supports the IPv6 protocol, SSL/TLS-protected client-server and
 | 
				
			||||||
 | 
					 server-server links, the Pluggable Authentication Modules (PAM) system for
 | 
				
			||||||
 | 
					 user authentication, IDENT requests, and character set conversion for legacy
 | 
				
			||||||
 | 
					 clients.
 | 
				
			||||||
 | 
					 .
 | 
				
			||||||
 | 
					 The name ngIRCd stands for next-generation IRC daemon, which is a little bit
 | 
				
			||||||
 | 
					 exaggerated: lightweight Internet Relay Chat server most probably would have
 | 
				
			||||||
 | 
					 been a better name :-)
 | 
				
			||||||
 | 
					 .
 | 
				
			||||||
 | 
					 This package is built with support for all optional features and uses the
 | 
				
			||||||
 | 
					 OpenSSL library for SSL/TLS support.
 | 
				
			||||||
							
								
								
									
										58
									
								
								contrib/Debian/copyright
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								contrib/Debian/copyright
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,58 @@
 | 
				
			|||||||
 | 
					Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
 | 
				
			||||||
 | 
					Source: https://ngircd.barton.de
 | 
				
			||||||
 | 
					Upstream-Name: ngircd
 | 
				
			||||||
 | 
					Upstream-Contact: ngIRCd Mailing List <ngircd@lists.barton.de>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Files:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					Copyright:
 | 
				
			||||||
 | 
					 2001-2024 Alexander Barton <alex@barton.de> and Contributors.
 | 
				
			||||||
 | 
					License: GPL-2.0+
 | 
				
			||||||
 | 
					Comment:
 | 
				
			||||||
 | 
					 See /usr/share/doc/ngircd/AUTHORS.md for the full list of authors and
 | 
				
			||||||
 | 
					 contributors.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Files:
 | 
				
			||||||
 | 
					 contrib/de.barton.ngircd.metainfo.xml
 | 
				
			||||||
 | 
					Copyright:
 | 
				
			||||||
 | 
					 2001-2024 Alexander Barton <alex@barton.de> and Contributors.
 | 
				
			||||||
 | 
					License: MIT
 | 
				
			||||||
 | 
					Comment:
 | 
				
			||||||
 | 
					 See /usr/share/doc/ngircd/AUTHORS.md for the full list of authors and
 | 
				
			||||||
 | 
					 contributors.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					License: GPL-2.0+
 | 
				
			||||||
 | 
					 This package is free software; you can redistribute it and/or modify
 | 
				
			||||||
 | 
					 it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					 the Free Software Foundation; either version 2 of the License, or
 | 
				
			||||||
 | 
					 (at your option) any later version.
 | 
				
			||||||
 | 
					 .
 | 
				
			||||||
 | 
					 This package is distributed in the hope that it will be useful,
 | 
				
			||||||
 | 
					 but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
				
			||||||
 | 
					 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
				
			||||||
 | 
					 GNU General Public License for more details.
 | 
				
			||||||
 | 
					 .
 | 
				
			||||||
 | 
					 You should have received a copy of the GNU General Public License
 | 
				
			||||||
 | 
					 along with this program. If not, see <https://www.gnu.org/licenses/>
 | 
				
			||||||
 | 
					Comment:
 | 
				
			||||||
 | 
					 On Debian systems, the complete text of the GNU General
 | 
				
			||||||
 | 
					 Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					License: MIT
 | 
				
			||||||
 | 
					 Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 | 
					 of this software and associated documentation files (the "Software"), to
 | 
				
			||||||
 | 
					 deal in the Software without restriction, including without limitation the
 | 
				
			||||||
 | 
					 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
 | 
				
			||||||
 | 
					 sell copies of the Software, and to permit persons to whom the Software is
 | 
				
			||||||
 | 
					 furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					 .
 | 
				
			||||||
 | 
					 The above copyright notice and this permission notice shall be included in
 | 
				
			||||||
 | 
					 all copies or substantial portions of the Software.
 | 
				
			||||||
 | 
					 .
 | 
				
			||||||
 | 
					 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
				
			||||||
 | 
					 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
				
			||||||
 | 
					 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 | 
				
			||||||
 | 
					 IN THE SOFTWARE.
 | 
				
			||||||
							
								
								
									
										7
									
								
								contrib/Debian/ngircd.default
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								contrib/Debian/ngircd.default
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# Defaults for the ngIRCd daemon
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Parameters to pass to the ngircd daemon on startup, see ngircd(8) for
 | 
				
			||||||
 | 
					# possible options (default: empty).
 | 
				
			||||||
 | 
					PARAMS=""
 | 
				
			||||||
							
								
								
									
										10
									
								
								contrib/Debian/ngircd.pam
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								contrib/Debian/ngircd.pam
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,10 @@
 | 
				
			|||||||
 | 
					# /etc/pam.d/ngircd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# You have to adjust this configuration to your local setup and needs. Keep in
 | 
				
			||||||
 | 
					# mind that all PAM modules are run with the privileges of the user account the
 | 
				
			||||||
 | 
					# ngIRCd daemon runs as ("irc" by default, not root!), so you can't use PAM
 | 
				
			||||||
 | 
					# modules requiring root privileges (like pam_unix, for example)!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Log and deny all connections to ngIRCd:
 | 
				
			||||||
 | 
					auth required pam_warn.so
 | 
				
			||||||
 | 
					auth required pam_deny.so
 | 
				
			||||||
							
								
								
									
										67
									
								
								contrib/Debian/rules
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										67
									
								
								contrib/Debian/rules
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,67 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/make -f
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# See FEATURE AREAS in dpkg-buildflags(1).
 | 
				
			||||||
 | 
					export DEB_BUILD_MAINT_OPTIONS = hardening=+all
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%:
 | 
				
			||||||
 | 
						dh $@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Disable dh_autoreconf since we are using de-ANSI-fication which was removed
 | 
				
			||||||
 | 
					# from automake a while ago. See <https://github.com/ngircd/ngircd/issues/261>.
 | 
				
			||||||
 | 
					override_dh_autoreconf:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					override_dh_auto_configure:
 | 
				
			||||||
 | 
						dh_auto_configure -- \
 | 
				
			||||||
 | 
						    --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) \
 | 
				
			||||||
 | 
						    --prefix=/usr \
 | 
				
			||||||
 | 
						    --mandir=\$${prefix}/share/man \
 | 
				
			||||||
 | 
						    --sysconfdir=/etc/ngircd \
 | 
				
			||||||
 | 
						    --with-iconv \
 | 
				
			||||||
 | 
						    --with-ident \
 | 
				
			||||||
 | 
						    --with-openssl \
 | 
				
			||||||
 | 
						    --with-pam \
 | 
				
			||||||
 | 
						    --with-syslog \
 | 
				
			||||||
 | 
						    --with-zlib
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					execute_before_dh_auto_install:
 | 
				
			||||||
 | 
						ln -fs $(CURDIR)/contrib/ngircd.service $(CURDIR)/debian/ngircd.service
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					execute_after_dh_auto_install:
 | 
				
			||||||
 | 
					#	Generate the default ngircd.conf:
 | 
				
			||||||
 | 
						install -o root -g irc -m 0640 -D /dev/null \
 | 
				
			||||||
 | 
						 $(CURDIR)/debian/ngircd/etc/ngircd/ngircd.conf
 | 
				
			||||||
 | 
						sed \
 | 
				
			||||||
 | 
						 -e "s|;ServerUID = 65534|ServerUID = irc|g" \
 | 
				
			||||||
 | 
						 -e "s|;ServerGID = 65534|ServerGID = irc|g" \
 | 
				
			||||||
 | 
						 -e "s|;PidFile = /var/run/ngircd/ngircd.pid|PidFile = /run/ircd/ngircd.pid|g" \
 | 
				
			||||||
 | 
						 -e "s|;PAM = yes|PAM = no|g" \
 | 
				
			||||||
 | 
						 -e "s|;\[SSL\]|[SSL]|g" \
 | 
				
			||||||
 | 
						 -e "s|;CAFile = /etc/ssl/CA/cacert.pem|CAFile = /etc/ssl/certs/ca-certificates.crt|g" \
 | 
				
			||||||
 | 
						 $(CURDIR)/debian/ngircd/usr/share/doc/ngircd/sample-ngircd.conf \
 | 
				
			||||||
 | 
						 >>$(CURDIR)/debian/ngircd/etc/ngircd/ngircd.conf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#	Create drop-in configuration directory:
 | 
				
			||||||
 | 
						install -o root -g irc -m 0750 -d \
 | 
				
			||||||
 | 
						 $(CURDIR)/debian/ngircd/etc/ngircd/ngircd.conf.d
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#	Install an empty MOTD file.
 | 
				
			||||||
 | 
						install -o root -g irc -m 0640 -D /dev/null \
 | 
				
			||||||
 | 
						 $(CURDIR)/debian/ngircd/etc/ngircd/ngircd.motd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#	Install the logcheck(8) configuration.
 | 
				
			||||||
 | 
						install -o root -g root -m 0644 -D \
 | 
				
			||||||
 | 
						 $(CURDIR)/contrib/ngircd.logcheck \
 | 
				
			||||||
 | 
						 $(CURDIR)/debian/ngircd/etc/logcheck/ignore.d.paranoid/ngircd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#	Make lintian happy :-)
 | 
				
			||||||
 | 
						rm $(CURDIR)/debian/ngircd/usr/share/doc/ngircd/COPYING
 | 
				
			||||||
 | 
						mv $(CURDIR)/debian/ngircd/usr/share/doc/ngircd/ChangeLog \
 | 
				
			||||||
 | 
						    $(CURDIR)/debian/ngircd/usr/share/doc/ngircd/changelog
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					override_dh_fixperms:
 | 
				
			||||||
 | 
					#	Preserve the permissions of files installed in /etc/ngircd!
 | 
				
			||||||
 | 
						dh_fixperms -X/etc/ngircd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					override_dh_compress:
 | 
				
			||||||
 | 
					#	The Commands.txt file is read by the daemon, don't compress it!
 | 
				
			||||||
 | 
						dh_compress -XCommands.txt
 | 
				
			||||||
							
								
								
									
										1
									
								
								contrib/Debian/source/format
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								contrib/Debian/source/format
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					3.0 (quilt)
 | 
				
			||||||
							
								
								
									
										10
									
								
								contrib/Debian/watch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								contrib/Debian/watch
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,10 @@
 | 
				
			|||||||
 | 
					# Watch control file for uscan.
 | 
				
			||||||
 | 
					# See uscan(1) for format.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Compulsory line, this is a version 4 file.
 | 
				
			||||||
 | 
					version=4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# PGP signature mangle, so foo.tar.gz has foo.tar.gz.sig.
 | 
				
			||||||
 | 
					opts="pgpsigurlmangle=s%$%.sig%"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					https://arthur.barton.de/pub/@PACKAGE@/@PACKAGE@-([0-9\.]+)@ARCHIVE_EXT@
 | 
				
			||||||
							
								
								
									
										62
									
								
								contrib/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								contrib/Dockerfile
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,62 @@
 | 
				
			|||||||
 | 
					# ngIRCd -- The Next Generation IRC Daemon
 | 
				
			||||||
 | 
					# Copyright (c)2001-2024 Alexander Barton (alex@barton.de) and Contributors
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Build Container
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FROM docker.io/library/debian:stable-slim AS build
 | 
				
			||||||
 | 
					USER root
 | 
				
			||||||
 | 
					RUN apt-get -y update \
 | 
				
			||||||
 | 
						&& apt-get -y install --no-install-recommends \
 | 
				
			||||||
 | 
							autoconf \
 | 
				
			||||||
 | 
							automake \
 | 
				
			||||||
 | 
							build-essential \
 | 
				
			||||||
 | 
							expect \
 | 
				
			||||||
 | 
							gawk \
 | 
				
			||||||
 | 
							git \
 | 
				
			||||||
 | 
							libgnutls28-dev \
 | 
				
			||||||
 | 
							libident-dev \
 | 
				
			||||||
 | 
							libpam0g-dev \
 | 
				
			||||||
 | 
							openssl \
 | 
				
			||||||
 | 
							pkg-config \
 | 
				
			||||||
 | 
							telnet \
 | 
				
			||||||
 | 
							zlib1g-dev \
 | 
				
			||||||
 | 
						&& mkdir -p /usr/local/src/ngircd /opt/ngircd \
 | 
				
			||||||
 | 
						&& chown bin:bin /usr/local/src/ngircd /opt/ngircd
 | 
				
			||||||
 | 
					WORKDIR /usr/local/src/ngircd
 | 
				
			||||||
 | 
					COPY . /usr/local/src/ngircd
 | 
				
			||||||
 | 
					RUN chown -R bin /usr/local/src/ngircd
 | 
				
			||||||
 | 
					USER bin
 | 
				
			||||||
 | 
					RUN ./autogen.sh --prefix=/opt/ngircd \
 | 
				
			||||||
 | 
							--with-gnutls \
 | 
				
			||||||
 | 
							--with-iconv \
 | 
				
			||||||
 | 
							--with-ident \
 | 
				
			||||||
 | 
							--with-pam \
 | 
				
			||||||
 | 
						&& make all \
 | 
				
			||||||
 | 
						&& make -C src/ngircd check \
 | 
				
			||||||
 | 
						&& make install \
 | 
				
			||||||
 | 
						&& printf \
 | 
				
			||||||
 | 
							"# ngircd.conf\n\n[Global]\nServerGID=irc\nServerUID=irc\n\n[Options]\nIdent=no\nPAM=no\n\n[SSL]\nCAFile=/etc/ssl/certs/ca-certificates.crt\n" \
 | 
				
			||||||
 | 
							>/opt/ngircd/etc/ngircd.conf \
 | 
				
			||||||
 | 
						&& chmod -R a+rX /opt/ngircd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Run container
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FROM docker.io/library/debian:stable-slim
 | 
				
			||||||
 | 
					USER root
 | 
				
			||||||
 | 
					RUN apt-get -y update \
 | 
				
			||||||
 | 
						&& apt-get -y install --no-install-recommends --no-install-suggests \
 | 
				
			||||||
 | 
							ca-certificates \
 | 
				
			||||||
 | 
							catatonit \
 | 
				
			||||||
 | 
							libgnutls30 \
 | 
				
			||||||
 | 
							libident \
 | 
				
			||||||
 | 
							libpam0g \
 | 
				
			||||||
 | 
							libwrap0 \
 | 
				
			||||||
 | 
							zlib1g \
 | 
				
			||||||
 | 
						&& apt-get -y clean \
 | 
				
			||||||
 | 
						&& rm -rf /var/cache/debconf/*-old /var/lib/apt/lists/*
 | 
				
			||||||
 | 
					COPY --from=build /opt/ngircd /opt/ngircd
 | 
				
			||||||
 | 
					USER irc
 | 
				
			||||||
 | 
					ENTRYPOINT [ "/usr/bin/catatonit", "--", "/opt/ngircd/sbin/ngircd", "--nodaemon" ]
 | 
				
			||||||
 | 
					EXPOSE 6667 6697
 | 
				
			||||||
 | 
					HEALTHCHECK --interval=30s --timeout=5s --retries=1 --start-period=5s \
 | 
				
			||||||
 | 
						CMD [ "/usr/bin/grep", "-F", ":1A0B ", "/proc/net/tcp" ]
 | 
				
			||||||
							
								
								
									
										32
									
								
								contrib/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								contrib/Makefile.am
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,32 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# ngIRCd -- The Next Generation IRC Daemon
 | 
				
			||||||
 | 
					# Copyright (c)2001-2024 Alexander Barton (alex@barton.de) and Contributors
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This program is free software; you can redistribute it and/or modify
 | 
				
			||||||
 | 
					# it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					# the Free Software Foundation; either version 2 of the License, or
 | 
				
			||||||
 | 
					# (at your option) any later version.
 | 
				
			||||||
 | 
					# Please read the file COPYING, README and AUTHORS for more information.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SUBDIRS = Debian
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXTRA_DIST = README.md \
 | 
				
			||||||
 | 
						de.barton.ngircd.metainfo.xml \
 | 
				
			||||||
 | 
						de.barton.ngircd.plist \
 | 
				
			||||||
 | 
						Dockerfile \
 | 
				
			||||||
 | 
						ngindent.sh \
 | 
				
			||||||
 | 
						ngircd-bsd.sh \
 | 
				
			||||||
 | 
						ngIRCd-Logo.gif \
 | 
				
			||||||
 | 
						ngircd-redhat.init \
 | 
				
			||||||
 | 
						ngircd.logcheck \
 | 
				
			||||||
 | 
						ngircd.service \
 | 
				
			||||||
 | 
						ngircd.socket \
 | 
				
			||||||
 | 
						ngircd.spec \
 | 
				
			||||||
 | 
						nglog.sh \
 | 
				
			||||||
 | 
						platformtest.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					maintainer-clean-local:
 | 
				
			||||||
 | 
						rm -f Makefile Makefile.in
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -eof-
 | 
				
			||||||
							
								
								
									
										38
									
								
								contrib/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								contrib/README.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,38 @@
 | 
				
			|||||||
 | 
					# [ngIRCd](https://ngircd.barton.de) - Supplemental Files
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This `contrib/` directory contains the following sub-folders and files:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `Debian/` folder: This subfolder contains the _rules_ file and additional
 | 
				
			||||||
 | 
					  assets for building Debian packages.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `de.barton.ngircd.metainfo.xml`: AppStream metadata file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `de.barton.ngircd.plist[.tmpl]`: launchd(8) property list file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `Dockerfile`: Container definition file, for Docker or Podman for example.
 | 
				
			||||||
 | 
					  More information can be found in the `doc/Container.md` file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `ngindent.sh`: Script to indent the code of ngIRCd in the "standard way".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `ngircd-bsd.sh`: Start/stop script for FreeBSD.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `ngircd-redhat.init`: Start/stop script for old(er) RedHat-based
 | 
				
			||||||
 | 
					  distributions (like CentOS and Fedora), which did _not_ use systemd(8).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `ngIRCd-Logo.gif`: The ngIRCd logo as GIF file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `ngircd.logcheck`: Sample rules for logcheck(8) to ignore "normal" log
 | 
				
			||||||
 | 
					  messages of ngIRCd.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `ngircd.service`: systemd(8) service unit configuration file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `ngircd.socket`: systemd(8) socket unit configuration file for "socket
 | 
				
			||||||
 | 
					  activation".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `ngircd.spec`: RPM "spec" file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `nglog.sh`: Script for colorizing the log messages of ngircd(8) according to
 | 
				
			||||||
 | 
					  their log level. Example: `./src/ngircd/ngircd -n | ./contrib/nglog.sh`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `platformtest.sh`: Build ngIRCd and output a "result line" suitable for
 | 
				
			||||||
 | 
					  the `doc/Platforms.txt` file.
 | 
				
			||||||
							
								
								
									
										128
									
								
								contrib/de.barton.ngircd.metainfo.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										128
									
								
								contrib/de.barton.ngircd.metainfo.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,128 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					<component type="service">
 | 
				
			||||||
 | 
						<id>de.barton.ngircd</id>
 | 
				
			||||||
 | 
						<name>ngIRCd</name>
 | 
				
			||||||
 | 
						<summary>Lightweight Internet Relay Chat server</summary>
 | 
				
			||||||
 | 
						<metadata_license>MIT</metadata_license>
 | 
				
			||||||
 | 
						<project_license>GPL-2.0-or-later</project_license>
 | 
				
			||||||
 | 
						<developer_name>Alexander Barton and Contributors</developer_name>
 | 
				
			||||||
 | 
						<update_contact>alex@barton.de</update_contact>
 | 
				
			||||||
 | 
						<description>
 | 
				
			||||||
 | 
							<p>ngIRCd is a free, portable and lightweight Internet Relay Chat server for small or private networks, developed under the GNU General Public License (GPL).</p>
 | 
				
			||||||
 | 
							<p>The server is quite easy to configure and runs as a single-node server or can be part of a network of ngIRCd servers in a LAN or across the internet. It optionally supports the IPv6 protocol, SSL/TLS-protected client-server and server-server links, the Pluggable Authentication Modules (PAM) system for user authentication, IDENT requests, and character set conversion for legacy clients.</p>
 | 
				
			||||||
 | 
							<p>The name ngIRCd stands for next-generation IRC daemon, which is a little bit exaggerated: lightweight Internet Relay Chat server most probably would have been a better name :-)</p>
 | 
				
			||||||
 | 
						</description>
 | 
				
			||||||
 | 
						<icon type="remote" width="300" height="300">https://ngircd.barton.de/common/ngircd-300x300.png</icon>
 | 
				
			||||||
 | 
						<categories>
 | 
				
			||||||
 | 
							<category>Network</category>
 | 
				
			||||||
 | 
						</categories>
 | 
				
			||||||
 | 
						<url type="homepage">https://ngircd.barton.de</url>
 | 
				
			||||||
 | 
						<url type="bugtracker">https://ngircd.barton.de/bugtracker</url>
 | 
				
			||||||
 | 
						<url type="help">https://ngircd.barton.de/support</url>
 | 
				
			||||||
 | 
						<provides>
 | 
				
			||||||
 | 
							<binary>ngircd</binary>
 | 
				
			||||||
 | 
						</provides>
 | 
				
			||||||
 | 
						<launchable type="service">ngircd</launchable>
 | 
				
			||||||
 | 
						<releases>
 | 
				
			||||||
 | 
							<release version="27~rc1" date="2024-04-13" />
 | 
				
			||||||
 | 
							<release version="26.1" date="2021-01-02" />
 | 
				
			||||||
 | 
							<release version="26" date="2020-06-20" />
 | 
				
			||||||
 | 
							<release version="26~rc2" date="2020-06-11" type="development" />
 | 
				
			||||||
 | 
							<release version="26~rc1" date="2020-05-10" type="development" />
 | 
				
			||||||
 | 
							<release version="25" date="2019-01-23" />
 | 
				
			||||||
 | 
							<release version="25~rc1" date="2018-08-11" type="development" />
 | 
				
			||||||
 | 
							<release version="24" date="2017-01-20" />
 | 
				
			||||||
 | 
							<release version="24~rc1" date="2017-01-07" type="development" />
 | 
				
			||||||
 | 
							<release version="23" date="2015-11-16" />
 | 
				
			||||||
 | 
							<release version="23~rc1" date="2015-09-06" type="development" />
 | 
				
			||||||
 | 
							<release version="22.1" date="2015-04-06" />
 | 
				
			||||||
 | 
							<release version="22" date="2014-10-11" />
 | 
				
			||||||
 | 
							<release version="22~rc1" date="2014-09-29" type="development" />
 | 
				
			||||||
 | 
							<release version="21.1" date="2014-03-25" />
 | 
				
			||||||
 | 
							<release version="21" date="2013-10-30" />
 | 
				
			||||||
 | 
							<release version="21~rc2" date="2013-10-20" type="development" />
 | 
				
			||||||
 | 
							<release version="21~rc1" date="2013-10-05" type="development" />
 | 
				
			||||||
 | 
							<release version="20.3" date="2013-08-23" />
 | 
				
			||||||
 | 
							<release version="20.2" date="2013-02-15" />
 | 
				
			||||||
 | 
							<release version="20.1" date="2013-01-02" />
 | 
				
			||||||
 | 
							<release version="20" date="2012-12-17" />
 | 
				
			||||||
 | 
							<release version="20~rc2" date="2012-12-02" type="development" />
 | 
				
			||||||
 | 
							<release version="20~rc1" date="2012-11-11" type="development" />
 | 
				
			||||||
 | 
							<release version="19.2" date="2012-06-19" />
 | 
				
			||||||
 | 
							<release version="19.2~rc1" date="2012-06-13" type="development" />
 | 
				
			||||||
 | 
							<release version="19.1" date="2012-03-19" />
 | 
				
			||||||
 | 
							<release version="19" date="2012-02-29" />
 | 
				
			||||||
 | 
							<release version="19~rc1" date="2012-02-12" type="development" />
 | 
				
			||||||
 | 
							<release version="18" date="2011-07-10" />
 | 
				
			||||||
 | 
							<release version="18~rc2" date="2011-06-29" type="development" />
 | 
				
			||||||
 | 
							<release version="18~rc1" date="2011-06-27" type="development" />
 | 
				
			||||||
 | 
							<release version="17.1" date="2010-12-19" />
 | 
				
			||||||
 | 
							<release version="17" date="2010-11-07" />
 | 
				
			||||||
 | 
							<release version="17~rc3" date="2010-10-27" type="development" />
 | 
				
			||||||
 | 
							<release version="17~rc2" date="2010-10-25" type="development" />
 | 
				
			||||||
 | 
							<release version="17~rc1" date="2010-10-11" type="development" />
 | 
				
			||||||
 | 
							<release version="16" date="2010-05-02" />
 | 
				
			||||||
 | 
							<release version="16~rc2" date="2010-04-25" type="development" />
 | 
				
			||||||
 | 
							<release version="16~rc1" date="2010-03-25" type="development" />
 | 
				
			||||||
 | 
							<release version="15" date="2009-11-07" />
 | 
				
			||||||
 | 
							<release version="15~rc1" date="2009-10-15" type="development" />
 | 
				
			||||||
 | 
							<release version="14.1" date="2009-05-05" />
 | 
				
			||||||
 | 
							<release version="14" date="2009-04-20" />
 | 
				
			||||||
 | 
							<release version="14~rc1" date="2009-03-29" type="development" />
 | 
				
			||||||
 | 
							<release version="13" date="2008-12-25" />
 | 
				
			||||||
 | 
							<release version="0.12.1" date="2008-07-09" />
 | 
				
			||||||
 | 
							<release version="0.12.0" date="2008-05-13" />
 | 
				
			||||||
 | 
							<release version="0.12.0-pre2" date="2008-04-29" type="development" />
 | 
				
			||||||
 | 
							<release version="0.12.0-pre1" date="2008-04-20" type="development" />
 | 
				
			||||||
 | 
							<release version="0.11.1" date="2008-02-26" />
 | 
				
			||||||
 | 
							<release version="0.11.0" date="2008-01-15" />
 | 
				
			||||||
 | 
							<release version="0.11.0-pre2" date="2008-01-07" type="development" />
 | 
				
			||||||
 | 
							<release version="0.11.0-pre1" date="2008-01-02" type="development" />
 | 
				
			||||||
 | 
							<release version="0.10.4" date="2008-01-07" />
 | 
				
			||||||
 | 
							<release version="0.10.3" date="2007-08-01" />
 | 
				
			||||||
 | 
							<release version="0.10.2" date="2007-06-08" />
 | 
				
			||||||
 | 
							<release version="0.10.2-pre2" date="2007-05-19" type="development" />
 | 
				
			||||||
 | 
							<release version="0.10.2-pre1" date="2007-05-05" type="development" />
 | 
				
			||||||
 | 
							<release version="0.10.1" date="2006-12-17" />
 | 
				
			||||||
 | 
							<release version="0.10.0" date="2006-10-01" />
 | 
				
			||||||
 | 
							<release version="0.10.0-pre2" date="2006-09-09" type="development" />
 | 
				
			||||||
 | 
							<release version="0.10.0-pre1" date="2006-08-02" type="development" />
 | 
				
			||||||
 | 
							<release version="0.9.2" date="2005-10-15" />
 | 
				
			||||||
 | 
							<release version="0.9.1" date="2005-08-03" />
 | 
				
			||||||
 | 
							<release version="0.9.0" date="2005-07-24" />
 | 
				
			||||||
 | 
							<release version="0.9.0-pre1" date="2005-07-09" type="development" />
 | 
				
			||||||
 | 
							<release version="0.8.3" date="2005-02-03" />
 | 
				
			||||||
 | 
							<release version="0.8.2" date="2005-01-26" />
 | 
				
			||||||
 | 
							<release version="0.8.1" date="2004-12-25" />
 | 
				
			||||||
 | 
							<release version="0.8.0" date="2004-06-26" />
 | 
				
			||||||
 | 
							<release version="0.8.0-pre1" date="2004-05-07" type="development" />
 | 
				
			||||||
 | 
							<release version="0.7.7" date="2004-02-05" />
 | 
				
			||||||
 | 
							<release version="0.7.6" date="2003-12-05" />
 | 
				
			||||||
 | 
							<release version="0.7.5" date="2003-11-07" />
 | 
				
			||||||
 | 
							<release version="0.7.1" date="2003-07-18" />
 | 
				
			||||||
 | 
							<release version="0.7.0" date="2003-05-01" />
 | 
				
			||||||
 | 
							<release version="0.7.0-pre2" date="2003-04-27" type="development" />
 | 
				
			||||||
 | 
							<release version="0.7.0-pre1" date="2003-04-22" type="development" />
 | 
				
			||||||
 | 
							<release version="0.6.0" date="2002-12-24" />
 | 
				
			||||||
 | 
							<release version="0.6.0-pre2" date="2002-12-23" type="development" />
 | 
				
			||||||
 | 
							<release version="0.6.0-pre1" date="2002-12-18" type="development" />
 | 
				
			||||||
 | 
							<release version="0.5.4" date="2002-11-24" />
 | 
				
			||||||
 | 
							<release version="0.5.3" date="2002-11-08" />
 | 
				
			||||||
 | 
							<release version="0.5.2" date="2002-10-04" />
 | 
				
			||||||
 | 
							<release version="0.5.1" date="2002-10-03" />
 | 
				
			||||||
 | 
							<release version="0.5.0" date="2002-09-20" />
 | 
				
			||||||
 | 
							<release version="0.5.0-pre2" date="2002-09-17" type="development" />
 | 
				
			||||||
 | 
							<release version="0.5.0-pre1" date="2002-09-16" type="development" />
 | 
				
			||||||
 | 
							<release version="0.4.3" date="2002-06-11" />
 | 
				
			||||||
 | 
							<release version="0.4.2" date="2002-04-29" />
 | 
				
			||||||
 | 
							<release version="0.4.1" date="2002-04-08" />
 | 
				
			||||||
 | 
							<release version="0.4.0" date="2002-04-01" />
 | 
				
			||||||
 | 
							<release version="0.3.0" date="2002-03-02" />
 | 
				
			||||||
 | 
							<release version="0.2.1" date="2002-02-17" />
 | 
				
			||||||
 | 
							<release version="0.2.0" date="2002-02-15" />
 | 
				
			||||||
 | 
							<release version="0.1.0" date="2002-01-29" />
 | 
				
			||||||
 | 
							<release version="0.0.3" date="2002-01-16" />
 | 
				
			||||||
 | 
							<release version="0.0.2" date="2002-01-06" />
 | 
				
			||||||
 | 
							<release version="0.0.1" date="2001-12-31" />
 | 
				
			||||||
 | 
						</releases>
 | 
				
			||||||
 | 
					</component>
 | 
				
			||||||
							
								
								
									
										23
									
								
								contrib/de.barton.ngircd.plist
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								contrib/de.barton.ngircd.plist
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 | 
				
			||||||
 | 
					<plist version="1.0">
 | 
				
			||||||
 | 
					<dict>
 | 
				
			||||||
 | 
						<key>Disabled</key>
 | 
				
			||||||
 | 
						<true/>
 | 
				
			||||||
 | 
						<key>KeepAlive</key>
 | 
				
			||||||
 | 
						<true/>
 | 
				
			||||||
 | 
						<key>Label</key>
 | 
				
			||||||
 | 
						<string>de.barton.ngIRCd</string>
 | 
				
			||||||
 | 
						<key>ProgramArguments</key>
 | 
				
			||||||
 | 
						<array>
 | 
				
			||||||
 | 
							<string>/opt/ngircd/sbin/ngircd</string>
 | 
				
			||||||
 | 
							<string>--nodaemon</string>
 | 
				
			||||||
 | 
						</array>
 | 
				
			||||||
 | 
						<key>RunAtLoad</key>
 | 
				
			||||||
 | 
						<true/>
 | 
				
			||||||
 | 
						<key>StandardErrorPath</key>
 | 
				
			||||||
 | 
						<string>/Library/Logs/ngIRCd.log</string>
 | 
				
			||||||
 | 
						<key>StandardOutPath</key>
 | 
				
			||||||
 | 
						<string>/Library/Logs/ngIRCd.log</string>
 | 
				
			||||||
 | 
					</dict>
 | 
				
			||||||
 | 
					</plist>
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								contrib/ngIRCd-Logo.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								contrib/ngIRCd-Logo.gif
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 1.9 KiB  | 
							
								
								
									
										46
									
								
								contrib/ngindent.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										46
									
								
								contrib/ngindent.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,46 @@
 | 
				
			|||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# ngIRCd -- The Next Generation IRC Daemon
 | 
				
			||||||
 | 
					# Copyright (c)2001-2019 Alexander Barton (alex@barton.de) and Contributors
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This program is free software; you can redistribute it and/or modify
 | 
				
			||||||
 | 
					# it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					# the Free Software Foundation; either version 2 of the License, or
 | 
				
			||||||
 | 
					# (at your option) any later version.
 | 
				
			||||||
 | 
					# Please read the file COPYING, README and AUTHORS for more information.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This script uses GNU indent(1) to format C source code files of ngIRCd.
 | 
				
			||||||
 | 
					# Usage:
 | 
				
			||||||
 | 
					#  - ./contrib/ngindent.sh [<file> [<file> [...]]]
 | 
				
			||||||
 | 
					#  - cat ./src/ngircd/<c_file> | ./contrib/ngindent.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Use a coding-style based on "Kernighan & Ritchie" (-kr):
 | 
				
			||||||
 | 
					INDENTARGS="-kr
 | 
				
			||||||
 | 
						-bad
 | 
				
			||||||
 | 
						-c3
 | 
				
			||||||
 | 
						-cd41
 | 
				
			||||||
 | 
						-i8
 | 
				
			||||||
 | 
						-l80
 | 
				
			||||||
 | 
						-ncs
 | 
				
			||||||
 | 
						-psl
 | 
				
			||||||
 | 
						-sob
 | 
				
			||||||
 | 
						-ss
 | 
				
			||||||
 | 
						-ts8
 | 
				
			||||||
 | 
						-blf
 | 
				
			||||||
 | 
						-il0
 | 
				
			||||||
 | 
					"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# check if indent(1) is available
 | 
				
			||||||
 | 
					command -v indent >/dev/null 2>&1 && INDENT="indent"
 | 
				
			||||||
 | 
					command -v gindent >/dev/null 2>&1 && INDENT="gindent"
 | 
				
			||||||
 | 
					command -v gnuindent >/dev/null 2>&1 && INDENT="gnuindent"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ -z "$INDENT" ]; then
 | 
				
			||||||
 | 
						echo "Error: GNU \"indent\" not found!"
 | 
				
			||||||
 | 
						exit 1
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# shellcheck disable=SC2086
 | 
				
			||||||
 | 
					$INDENT -v $INDENTARGS "$@"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -eof-
 | 
				
			||||||
							
								
								
									
										51
									
								
								contrib/ngircd-bsd.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										51
									
								
								contrib/ngircd-bsd.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,51 @@
 | 
				
			|||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# PROVIDE: ngircd
 | 
				
			||||||
 | 
					# REQUIRE: NETWORKING SERVERS
 | 
				
			||||||
 | 
					# BEFORE: DAEMON
 | 
				
			||||||
 | 
					# KEYWORD: FreeBSD shutdown
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Add the following line to /etc/rc.conf to enable `ngircd':
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#ngircd_enable="YES"
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					. "/etc/rc.subr"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					name="ngircd"
 | 
				
			||||||
 | 
					rcvar=`set_rcvar`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					command="/usr/local/sbin/ngircd"
 | 
				
			||||||
 | 
					command_args=""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					load_rc_config "$name"
 | 
				
			||||||
 | 
					: ${ngircd_enable="NO"}
 | 
				
			||||||
 | 
					: ${ngircd_flags=""}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					required_files="/usr/local/etc/$name.conf"
 | 
				
			||||||
 | 
					pidfile="${ngircd_pidfile:-/var/run/${name}/${name}.pid}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ ! x"${ngircd_chrootdir}" = x ];then
 | 
				
			||||||
 | 
						# Mount a devfs in the chroot directory if needed
 | 
				
			||||||
 | 
						if [ ! -c ${ngircd_chrootdir}/dev/random \
 | 
				
			||||||
 | 
						  -o ! -c ${ngircd_chrootdir}/dev/null ]; then
 | 
				
			||||||
 | 
							umount ${ngircd_chrootdir}/dev 2>/dev/null
 | 
				
			||||||
 | 
							mount_devfs devfs ${ngircd_chrootdir}/dev
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						devfs -m ${ngircd_chrootdir}/dev rule apply hide
 | 
				
			||||||
 | 
						devfs -m ${ngircd_chrootdir}/dev rule apply path null unhide
 | 
				
			||||||
 | 
						devfs -m ${ngircd_chrootdir}/dev rule apply path random unhide
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Copy local timezone information if it is not up to date.
 | 
				
			||||||
 | 
						if [ -f /etc/localtime ]; then
 | 
				
			||||||
 | 
							cmp -s /etc/localtime "${named_chrootdir}/etc/localtime" || \
 | 
				
			||||||
 | 
								cp -p /etc/localtime "${named_chrootdir}/etc/localtime"
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						pidfile="${ngircd_chrootdir}${pidfile}"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					run_rc_command "$1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -eof-
 | 
				
			||||||
							
								
								
									
										119
									
								
								contrib/ngircd-redhat.init
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										119
									
								
								contrib/ngircd-redhat.init
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,119 @@
 | 
				
			|||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# ngIRCd start and stop script for RedHat based distributions.
 | 
				
			||||||
 | 
					# Written by Naoya Nakazawa <naoya.n@gmail.com> for CentOS 5.2, 2009.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# chkconfig: 2345 01
 | 
				
			||||||
 | 
					# description: ngIRCd is an Open Source server for \
 | 
				
			||||||
 | 
					#              the Internet Relay Chat (IRC), which \
 | 
				
			||||||
 | 
					#              is developed and published under \
 | 
				
			||||||
 | 
					#              the terms of the GNU General Public
 | 
				
			||||||
 | 
					#              Licence (URL: http://www.gnu.org/licenses/gpl.html). \
 | 
				
			||||||
 | 
					#              ngIRCd means "next generation IRC daemon", \
 | 
				
			||||||
 | 
					#              it's written from scratch and not deduced from the \
 | 
				
			||||||
 | 
					#              "grandfather of IRC daemons", the daemon of the IRCNet.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# processname: /usr/sbin/ngircd
 | 
				
			||||||
 | 
					# config: /etc/ngircd
 | 
				
			||||||
 | 
					# pidfile: /var/run/ngircd.pid
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
 | 
				
			||||||
 | 
					DAEMON=/usr/sbin/ngircd
 | 
				
			||||||
 | 
					NAME=ngIRCd
 | 
				
			||||||
 | 
					BASENAME=ngircd
 | 
				
			||||||
 | 
					CONF=/etc/$BASENAME.conf
 | 
				
			||||||
 | 
					DESC="IRC daemon"
 | 
				
			||||||
 | 
					PARAMS="-f $CONF"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Source function library.
 | 
				
			||||||
 | 
					. /etc/init.d/functions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Get config.
 | 
				
			||||||
 | 
					test -f /etc/sysconfig/network && . /etc/sysconfig/network
 | 
				
			||||||
 | 
					test -f /etc/sysconfig/makuosan && . /etc/sysconfig/makuosan
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Check that networking is up.
 | 
				
			||||||
 | 
					[ "${NETWORKING}" = "yes" ] || exit 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[ -x $DAEMON ] || exit 1
 | 
				
			||||||
 | 
					[ -f $CONF ] || exit 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					RETVAL=0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					start(){
 | 
				
			||||||
 | 
					    echo -n $"Starting $NAME: "
 | 
				
			||||||
 | 
					    daemon $DAEMON $PARAMS
 | 
				
			||||||
 | 
					    RETVAL=$?
 | 
				
			||||||
 | 
					    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$BASENAME
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
 | 
					    return $RETVAL
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					stop(){
 | 
				
			||||||
 | 
					    echo -n $"Stopping $NAME: "
 | 
				
			||||||
 | 
					    killproc $DAEMON
 | 
				
			||||||
 | 
					    RETVAL=$?
 | 
				
			||||||
 | 
					    if [ $RETVAL -eq 0 ] ; then
 | 
				
			||||||
 | 
					        rm -f /var/lock/subsys/$BASENAME
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
 | 
					    return $RETVAL
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					reload(){
 | 
				
			||||||
 | 
					    echo -n $"Reloading configuration: "
 | 
				
			||||||
 | 
					    killproc $DAEMON -HUP
 | 
				
			||||||
 | 
					    RETVAL=$?
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
 | 
					    return $RETVAL
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					restart(){
 | 
				
			||||||
 | 
					    stop
 | 
				
			||||||
 | 
					    start
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					condrestart(){
 | 
				
			||||||
 | 
					    [ -e /var/lock/subsys/$BASENAME ] && restart
 | 
				
			||||||
 | 
					    return 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					check_config(){
 | 
				
			||||||
 | 
					     $DAEMON $PARAMS --configtest >/dev/null 2>&1
 | 
				
			||||||
 | 
					     [ $? -eq 0 ] && return 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     echo -n $"Configuration of $NAME is not valid, won't (re)start!"
 | 
				
			||||||
 | 
					     echo -n $"Run \"$DAEMON --configtest\" and fix it up ..."
 | 
				
			||||||
 | 
					     exit 6
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# See how we were called.
 | 
				
			||||||
 | 
					case "$1" in
 | 
				
			||||||
 | 
					    start)
 | 
				
			||||||
 | 
					        check_config
 | 
				
			||||||
 | 
						start
 | 
				
			||||||
 | 
						;;
 | 
				
			||||||
 | 
					    stop)
 | 
				
			||||||
 | 
						stop
 | 
				
			||||||
 | 
						;;
 | 
				
			||||||
 | 
					    status)
 | 
				
			||||||
 | 
						status $NAME
 | 
				
			||||||
 | 
						;;
 | 
				
			||||||
 | 
					    restart)
 | 
				
			||||||
 | 
						restart
 | 
				
			||||||
 | 
						;;
 | 
				
			||||||
 | 
					    reload)
 | 
				
			||||||
 | 
						reload
 | 
				
			||||||
 | 
						;;
 | 
				
			||||||
 | 
					    condrestart)
 | 
				
			||||||
 | 
						condrestart
 | 
				
			||||||
 | 
						;;
 | 
				
			||||||
 | 
					    test)
 | 
				
			||||||
 | 
					        check_config
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    *)
 | 
				
			||||||
 | 
						echo $"Usage: $0 {start|stop|status|restart|condrestart|reload|test}"
 | 
				
			||||||
 | 
						RETVAL=1
 | 
				
			||||||
 | 
					esac
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					exit $RETVAL
 | 
				
			||||||
							
								
								
									
										54
									
								
								contrib/ngircd.logcheck
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								contrib/ngircd.logcheck
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,54 @@
 | 
				
			|||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: ".*" added ".*" to G-Line list: ".*" \([0-9]+ seconds\)\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: (GnuTLS|OpenSSL) .* initialized\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Accepted connection [0-9]+ from ".*:[0-9]+" on socket [0-9]+\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Address mismatch:
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Can't create pre-defined channel ".*": name already in use\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Can't resolve( address)? ".*": (Name or service not known|No address associated with hostname|Temporary failure in name resolution)( \[.*\]\.)?$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Client( ".*")? unregistered \(connection [0-9]+\): (Can't connect|Client closed connection|Got QUIT command|Read error|Server configuration already in use|SSL accept error, closing socket|Timeout|Write error)\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Connection [0-9]+ \(socket [0-9]+\) with ".*:[0-9]+" established\. Now logging in \.\.\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Connection [0-9]+ with ".*:[0-9]+" closed \(in: .*, out: .*\)\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Connection [0-9]+: initialized TLSv?1\.[0123] using cipher .*\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Created pre-defined channel ".*", mode ".*" \((channel key set|no channel key), user limit [0-9]+\)\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Deleted ".*" \(".*"\) from G-Line list \(expired\)\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Enabled link compression \(zlib\) on connection [0-9]+\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Establishing connection for ".*" to ".*:[0-9]+" \(.*\), socket [0-9]+ \.\.\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: File descriptor limit is [0-9]+; "MaxConnections" is (not set|set to [0-9]+)\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Got (valid server|unchecked peer) certificate: .*\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Got signal "(Hangup|Terminated)" \.\.\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Got valid OPER for ".*" from ".*", user is an IRC operator now\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: IDENT lookup for connection [0-9]+: (no result|".*")\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: IO subsystem: epoll \(hint size 100, initial maxfd 100, masterfd [0-9]+\)\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Not running with changed root directory\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Now listening on .*:[0-9]+ \(socket [0-9]+\)\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Peer did not present a certificate\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Peer on connection [0-9]+ announces itself as .* using protocol .* \(flags: ".*"\)\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Possible forgery: .* resolved to ".*", which (has no IP address|points to a different address)!$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Preparing to establish a new server link for ".*" \.\.\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Re-reading configuration NOW!$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Re-reading of configuration done\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Read error on connection [0-9]+ \(socket [0-9]+\): Connection reset by peer!$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Running as user .*, group .*, with PID [0-9]+\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: SSL connection on socket [0-9]+ failed!$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: SSL error, client disconnected \[in .*\(\)\]!$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: SSL error: (Connection reset by peer|Broken pipe) \[in .*\]!$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: SSL protocol error: (ConnSSL_Read|ConnSSL_Write|SSL_accept) \(.*\)$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Server ".*" \(on ".*"\) ready\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Server ".*" registered \(connection [0-9]+, 1 hop - direct link\)\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Server ".*" registered \(via .*, connected to .*, [0-9]+ hops\)\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Server ".*" unregistered \(connection [0-9]+\): Ping timeout: [0-9]+ seconds\.
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Server ".*" unregistered( \(connection [0-9]+\))?: .* \(Server going down\)\.
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Server ".*" unregistered: .* .*\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Server \".*\" \(on ".*"\) ready\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Server going down NOW!$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Shutting down all listening sockets \([0-9]+ total\) \.\.\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Shutting down connection [0-9]+ \(Can't connect|Client closed connection|Closing connection: .* \(Server going down\)|Got QUIT command|ID ".*" already registered|Ping timeout: [0-9]+ seconds|Read error|SSL accept error, closing socket|Server configuration already in use|Server going down|Timeout|Write error|".*" \((G-Line|SQUIT from .*)\)\) with ".*:[0-9]+" \.\.\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Synchronization with ".*" done \(connection [0-9]+\): [0-9]+ seconds? \[[0-9]+ users, [0-9]+ channels\]\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: User ".*!.*@.*" changed nick \(connection [0-9]+\): ".*" -> ".*"\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: User ".*!.*@.*" registered \(connection [0-9]+\)\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: User ".*!.*@.*" unregistered \(connection [0-9]+\): (Client closed connection|Got QUIT command|Ping timeout: [0-9]+ seconds|Read error|Server going down)\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Using (default|specified) configuration file ".*" \.\.\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Write error on connection [0-9]+ \(socket [0-9]+\): (Broken pipe|Connection reset by peer)!$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: ngIRCd [0-9].* starting \.\.\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: ngIRCd done, served [0-9]+ connections?\.$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: warning: /etc/hosts\.allow, line [0-9]+: (can't verify hostname|host name/address mismatch): getaddrinfo\(.*, AF_INET\) failed$
 | 
				
			||||||
 | 
					^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: warning: can't get client address: Connection reset by peer$
 | 
				
			||||||
							
								
								
									
										48
									
								
								contrib/ngircd.service
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								contrib/ngircd.service
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,48 @@
 | 
				
			|||||||
 | 
					# ngIRCd systemd service unit.
 | 
				
			||||||
 | 
					# See systemd(1), systemd.unit(5), systemd.service(5), systemd.exec(5).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Unit]
 | 
				
			||||||
 | 
					Description=Next Generation IRC Daemon
 | 
				
			||||||
 | 
					Documentation=man:ngircd(8) man:ngircd.conf(5) https://ngircd.barton.de
 | 
				
			||||||
 | 
					After=network.target
 | 
				
			||||||
 | 
					Wants=anope.service atheme.service irc-services.service
 | 
				
			||||||
 | 
					Wants=bopm.service hopm.service
 | 
				
			||||||
 | 
					Before=anope.service atheme.service irc-services.service
 | 
				
			||||||
 | 
					Before=bopm.service hopm.service
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Service]
 | 
				
			||||||
 | 
					Type=notify
 | 
				
			||||||
 | 
					User=irc
 | 
				
			||||||
 | 
					Group=irc
 | 
				
			||||||
 | 
					# Settings & limits:
 | 
				
			||||||
 | 
					CapabilityBoundingSet=CAP_SYS_CHROOT CAP_NET_BIND_SERVICE
 | 
				
			||||||
 | 
					MemoryDenyWriteExecute=yes
 | 
				
			||||||
 | 
					NoNewPrivileges=yes
 | 
				
			||||||
 | 
					PrivateDevices=yes
 | 
				
			||||||
 | 
					PrivateTmp=yes
 | 
				
			||||||
 | 
					ProtectControlGroups=yes
 | 
				
			||||||
 | 
					ProtectHome=yes
 | 
				
			||||||
 | 
					ProtectKernelModules=yes
 | 
				
			||||||
 | 
					ProtectKernelTunables=yes
 | 
				
			||||||
 | 
					ProtectSystem=full
 | 
				
			||||||
 | 
					RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX
 | 
				
			||||||
 | 
					RestrictRealtime=yes
 | 
				
			||||||
 | 
					RuntimeDirectory=ircd
 | 
				
			||||||
 | 
					RuntimeDirectoryMode=750
 | 
				
			||||||
 | 
					StandardError=journal
 | 
				
			||||||
 | 
					StandardOutput=journal
 | 
				
			||||||
 | 
					# Try to load "default files" from any Debian package variant to keep this
 | 
				
			||||||
 | 
					# unit generic.
 | 
				
			||||||
 | 
					EnvironmentFile=-/etc/default/ngircd
 | 
				
			||||||
 | 
					EnvironmentFile=-/etc/default/ngircd-full
 | 
				
			||||||
 | 
					EnvironmentFile=-/etc/default/ngircd-full-dbg
 | 
				
			||||||
 | 
					# Start ngIRCd. Note: systemd doesn't allow to use $DAEMON here!
 | 
				
			||||||
 | 
					ExecStart=/usr/sbin/ngircd --nodaemon --syslog $PARAMS
 | 
				
			||||||
 | 
					ExecReload=/bin/kill -HUP $MAINPID
 | 
				
			||||||
 | 
					# Error handling:
 | 
				
			||||||
 | 
					# ngIRCd tries to "ping" the service manager every 3 seconds.
 | 
				
			||||||
 | 
					WatchdogSec=10
 | 
				
			||||||
 | 
					Restart=on-failure
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Install]
 | 
				
			||||||
 | 
					WantedBy=multi-user.target
 | 
				
			||||||
							
								
								
									
										12
									
								
								contrib/ngircd.socket
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								contrib/ngircd.socket
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					[Unit]
 | 
				
			||||||
 | 
					Description=Next Generation IRC Daemon (Socket)
 | 
				
			||||||
 | 
					Documentation=man:ngircd(8) man:ngircd.conf(5)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Socket]
 | 
				
			||||||
 | 
					BindIPv6Only=ipv6-only
 | 
				
			||||||
 | 
					ListenStream=0.0.0.0:6667
 | 
				
			||||||
 | 
					#ListenStream=[::]:6667
 | 
				
			||||||
 | 
					IPTOS=low-delay
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Install]
 | 
				
			||||||
 | 
					WantedBy=sockets.target
 | 
				
			||||||
							
								
								
									
										57
									
								
								contrib/ngircd.spec
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								contrib/ngircd.spec
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,57 @@
 | 
				
			|||||||
 | 
					%define name    ngircd
 | 
				
			||||||
 | 
					%define version 27~rc1
 | 
				
			||||||
 | 
					%define release 1
 | 
				
			||||||
 | 
					%define prefix  %{_prefix}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Summary:      A lightweight daemon for the Internet Relay Chat (IRC)
 | 
				
			||||||
 | 
					Name:         %{name}
 | 
				
			||||||
 | 
					Version:      %{version}
 | 
				
			||||||
 | 
					Release:      %{release}
 | 
				
			||||||
 | 
					License:      GPLv2+
 | 
				
			||||||
 | 
					Group:        System Environment/Daemons
 | 
				
			||||||
 | 
					URL:          http://ngircd.barton.de/
 | 
				
			||||||
 | 
					Source:       %{name}-%{version}.tar.gz
 | 
				
			||||||
 | 
					BuildRoot:    %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 | 
				
			||||||
 | 
					BuildRequires:  zlib-devel, openssl-devel
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%description
 | 
				
			||||||
 | 
					ngIRCd is a free, portable and lightweight Internet Relay Chat server for small
 | 
				
			||||||
 | 
					or private networks, developed under the GNU General Public License (GPL).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The server is quite easy to configure, can handle dynamic IP addresses, and
 | 
				
			||||||
 | 
					optionally supports IDENT, IPv6 connections, SSL-protected links, and PAM for
 | 
				
			||||||
 | 
					user authentication as well as character set conversion for legacy clients. The
 | 
				
			||||||
 | 
					server has been written from scratch and is not based on the forefather, the
 | 
				
			||||||
 | 
					daemon of IRCNet.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%prep
 | 
				
			||||||
 | 
					%setup -q
 | 
				
			||||||
 | 
					%build
 | 
				
			||||||
 | 
					%configure \
 | 
				
			||||||
 | 
					  --with-zlib \
 | 
				
			||||||
 | 
					  --with-openssl
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					make %{?_smp_mflags}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%install
 | 
				
			||||||
 | 
					[ -n "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != / ] && rm -rf "$RPM_BUILD_ROOT"
 | 
				
			||||||
 | 
					%makeinstall
 | 
				
			||||||
 | 
					(
 | 
				
			||||||
 | 
					   cd "$RPM_BUILD_ROOT"
 | 
				
			||||||
 | 
					   ( cd usr/sbin; mv *-ngircd ngircd )
 | 
				
			||||||
 | 
					   ( cd usr/share/man/man5; mv *-ngircd.conf.5 ngircd.conf.5 )
 | 
				
			||||||
 | 
					   ( cd usr/share/man/man8; mv *-ngircd.8 ngircd.8 )
 | 
				
			||||||
 | 
					   rm -fr usr/share/doc/ngircd
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%clean
 | 
				
			||||||
 | 
					[ -n "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != / ] && rm -rf "$RPM_BUILD_ROOT"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%files
 | 
				
			||||||
 | 
					%defattr(755,root,root)
 | 
				
			||||||
 | 
					%doc AUTHORS.md COPYING ChangeLog INSTALL.md NEWS README.md doc/*
 | 
				
			||||||
 | 
					%config(noreplace) /etc
 | 
				
			||||||
 | 
					%{_prefix}/sbin
 | 
				
			||||||
 | 
					%{_mandir}/man5/ngircd.conf*
 | 
				
			||||||
 | 
					%{_mandir}/man8/ngircd.8*
 | 
				
			||||||
							
								
								
									
										28
									
								
								contrib/nglog.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										28
									
								
								contrib/nglog.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,28 @@
 | 
				
			|||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# ngIRCd -- The Next Generation IRC Daemon
 | 
				
			||||||
 | 
					# Copyright (c)2001-2020 Alexander Barton (alex@barton.de) and Contributors
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This program is free software; you can redistribute it and/or modify
 | 
				
			||||||
 | 
					# it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					# the Free Software Foundation; either version 2 of the License, or
 | 
				
			||||||
 | 
					# (at your option) any later version.
 | 
				
			||||||
 | 
					# Please read the file COPYING, README and AUTHORS for more information.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This script parses the log output of ngircd(8), and colorizes the messages
 | 
				
			||||||
 | 
					# according to their log level. Example usage:
 | 
				
			||||||
 | 
					# ./src/ngircd/ngircd -f $PWD/doc/sample-ngircd.conf -np | ./contrib/nglog.sh
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					gawk '
 | 
				
			||||||
 | 
					  /^\[[[:digit:]]+:0 / {print "\033[1;95m" $0 "\033[0m"}
 | 
				
			||||||
 | 
					  /^\[[[:digit:]]+:1 / {print "\033[1;35m" $0 "\033[0m"}
 | 
				
			||||||
 | 
					  /^\[[[:digit:]]+:2 / {print "\033[1;91m" $0 "\033[0m"}
 | 
				
			||||||
 | 
					  /^\[[[:digit:]]+:3 / {print "\033[1;31m" $0 "\033[0m"}
 | 
				
			||||||
 | 
					  /^\[[[:digit:]]+:4 / {print "\033[1;33m" $0 "\033[0m"}
 | 
				
			||||||
 | 
					  /^\[[[:digit:]]+:5 / {print "\033[1m" $0 "\033[0m"}
 | 
				
			||||||
 | 
					  /^\[[[:digit:]]+:6 / {print $0}
 | 
				
			||||||
 | 
					  /^\[[[:digit:]]+:7 / {print "\033[90m" $0 "\033[0m"}
 | 
				
			||||||
 | 
					' </dev/stdin &
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wait
 | 
				
			||||||
							
								
								
									
										257
									
								
								contrib/platformtest.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										257
									
								
								contrib/platformtest.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,257 @@
 | 
				
			|||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# ngIRCd -- The Next Generation IRC Daemon
 | 
				
			||||||
 | 
					# Copyright (c)2001-2016 Alexander Barton (alex@barton.de) and Contributors
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This program is free software; you can redistribute it and/or modify
 | 
				
			||||||
 | 
					# it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					# the Free Software Foundation; either version 2 of the License, or
 | 
				
			||||||
 | 
					# (at your option) any later version.
 | 
				
			||||||
 | 
					# Please read the file COPYING, README and AUTHORS for more information.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# This script analyzes the build process of ngIRCd and generates output
 | 
				
			||||||
 | 
					# suitable for inclusion in doc/Platforms.txt -- please send reports
 | 
				
			||||||
 | 
					# to the ngIRCd mailing list: <ngircd@lists.barton.de>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NAME=$(basename "$0")
 | 
				
			||||||
 | 
					VERBOSE=
 | 
				
			||||||
 | 
					CLEAN=1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PLATFORM=
 | 
				
			||||||
 | 
					COMPILER="unknown"
 | 
				
			||||||
 | 
					VERSION="unknown"
 | 
				
			||||||
 | 
					DATE=$(date "+%y-%m-%d")
 | 
				
			||||||
 | 
					COMMENT=
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					R_CONFIGURE=
 | 
				
			||||||
 | 
					R_MAKE=
 | 
				
			||||||
 | 
					R_CHECK=
 | 
				
			||||||
 | 
					R_CHECK_Y="?"
 | 
				
			||||||
 | 
					R_RUN=
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SRC_D=$(dirname "$0")
 | 
				
			||||||
 | 
					MY_D="$PWD"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[ -n "$MAKE" ] || MAKE="make"
 | 
				
			||||||
 | 
					export MAKE CC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					while [ $# -gt 0 ]; do
 | 
				
			||||||
 | 
						case "$1" in
 | 
				
			||||||
 | 
							"-v")
 | 
				
			||||||
 | 
								VERBOSE=1
 | 
				
			||||||
 | 
								;;
 | 
				
			||||||
 | 
							"-x")
 | 
				
			||||||
 | 
								CLEAN=
 | 
				
			||||||
 | 
								;;
 | 
				
			||||||
 | 
							*)
 | 
				
			||||||
 | 
								echo "Usage: $NAME [-v] [-x]"
 | 
				
			||||||
 | 
								echo
 | 
				
			||||||
 | 
								echo "  -v   Verbose output"
 | 
				
			||||||
 | 
								echo "  -x   Don't regenerate build system, even when possible"
 | 
				
			||||||
 | 
								echo
 | 
				
			||||||
 | 
								exit 2
 | 
				
			||||||
 | 
						esac
 | 
				
			||||||
 | 
						shift
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for cmd in telnet expect; do
 | 
				
			||||||
 | 
						command -v "$cmd" >/dev/null 2>&1 \
 | 
				
			||||||
 | 
							|| echo "$NAME: WARNING: $cmd(1) not found, \"make check\" won't run all tests!"
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo "$NAME: Checking ngIRCd base source directory ..."
 | 
				
			||||||
 | 
					grep "ngIRCd" "$SRC_D/ChangeLog" >/dev/null 2>&1
 | 
				
			||||||
 | 
					if [ $? -ne 0 ]; then
 | 
				
			||||||
 | 
						grep "ngIRCd" "$SRC_D/../ChangeLog" >/dev/null 2>&1
 | 
				
			||||||
 | 
						if [ $? -ne 0 ]; then
 | 
				
			||||||
 | 
							echo "$NAME: ngIRCd base source directory not found!?"
 | 
				
			||||||
 | 
							exit 1
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
						SRC_D="$SRC_D/.."
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					echo "$NAME:  - source directory: $SRC_D"
 | 
				
			||||||
 | 
					echo "$NAME:  - working directory: $MY_D"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo "$NAME: Checking for GIT tree ..."
 | 
				
			||||||
 | 
					if [ -d "$SRC_D/.git" ]; then
 | 
				
			||||||
 | 
						echo "$NAME: Checking for \"git\" command ..."
 | 
				
			||||||
 | 
						git version >/dev/null 2>&1
 | 
				
			||||||
 | 
						if [ $? -eq 0 ] && [ -n "$CLEAN" ]; then
 | 
				
			||||||
 | 
							echo "$NAME: Running \"git clean\" ..."
 | 
				
			||||||
 | 
							cd "$SRC_D" || exit 1
 | 
				
			||||||
 | 
							if [ -n "$VERBOSE" ]; then
 | 
				
			||||||
 | 
								git clean -dxf
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
								git clean -dxf >/dev/null
 | 
				
			||||||
 | 
							fi
 | 
				
			||||||
 | 
							cd "$MY_D" || exit 1
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo "$NAME: Checking for \"$SRC_D/configure\" script ..."
 | 
				
			||||||
 | 
					if [ ! -r "$SRC_D/configure" ]; then
 | 
				
			||||||
 | 
						echo "$NAME: Running \"$SRC_D/autogen.sh\" ..."
 | 
				
			||||||
 | 
						cd "$SRC_D" || exit 1
 | 
				
			||||||
 | 
						if [ -n "$VERBOSE" ]; then
 | 
				
			||||||
 | 
							./autogen.sh
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							./autogen.sh >/dev/null
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
						if [ $? -ne 0 ]; then
 | 
				
			||||||
 | 
							echo "$NAME: \"$SRC_D/autogen.sh\" script failed, aborting!"
 | 
				
			||||||
 | 
							exit 1
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
						cd "$MY_D" || exit 1
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ -r "$SRC_D/configure" ]; then
 | 
				
			||||||
 | 
						echo "$NAME: Running \"$SRC_D/configure\" script ..."
 | 
				
			||||||
 | 
						if [ -n "$VERBOSE" ]; then
 | 
				
			||||||
 | 
							"$SRC_D/configure" -C
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							"$SRC_D/configure" -C >/dev/null
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
						if [ $? -eq 0 ] && [ -r ./Makefile ]; then
 | 
				
			||||||
 | 
							R_CONFIGURE=1
 | 
				
			||||||
 | 
							rm -f "src/ngircd/ngircd"
 | 
				
			||||||
 | 
							echo "$NAME: Running \"$MAKE\" ..."
 | 
				
			||||||
 | 
							if [ -n "$VERBOSE" ]; then
 | 
				
			||||||
 | 
								"$MAKE"
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
								"$MAKE" >/dev/null
 | 
				
			||||||
 | 
							fi
 | 
				
			||||||
 | 
							if [ $? -eq 0 ] && [ -x src/ngircd/ngircd ]; then
 | 
				
			||||||
 | 
								R_MAKE=1
 | 
				
			||||||
 | 
								echo "$NAME: Running \"$MAKE check\" ..."
 | 
				
			||||||
 | 
								if [ -n "$VERBOSE" ]; then
 | 
				
			||||||
 | 
									"$MAKE" check
 | 
				
			||||||
 | 
								else
 | 
				
			||||||
 | 
									"$MAKE" check >/dev/null
 | 
				
			||||||
 | 
								fi
 | 
				
			||||||
 | 
								if [ $? -eq 0 ]; then
 | 
				
			||||||
 | 
									R_CHECK=1
 | 
				
			||||||
 | 
									R_RUN=$R_CHECK
 | 
				
			||||||
 | 
									[ -r ./src/testsuite/tests-skipped.lst ] \
 | 
				
			||||||
 | 
										&& R_CHECK_Y="y" || R_CHECK_Y="Y"
 | 
				
			||||||
 | 
								else
 | 
				
			||||||
 | 
									./src/ngircd/ngircd --help 2>/dev/null \
 | 
				
			||||||
 | 
									 | grep "^ngIRCd" >/dev/null
 | 
				
			||||||
 | 
									[ $? -eq 0 ] && R_RUN=1
 | 
				
			||||||
 | 
								fi
 | 
				
			||||||
 | 
							fi
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Get target platform information
 | 
				
			||||||
 | 
					if [ -r "src/config.h" ]; then
 | 
				
			||||||
 | 
						CPU=$(grep "HOST_CPU" "src/config.h" | cut -d'"' -f2)
 | 
				
			||||||
 | 
						OS=$(grep "HOST_OS" "src/config.h" | cut -d'"' -f2)
 | 
				
			||||||
 | 
						VENDOR=$(grep "HOST_VENDOR" "src/config.h" | cut -d'"' -f2)
 | 
				
			||||||
 | 
						PLATFORM="$CPU/$VENDOR/$OS"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					if [ -z "$PLATFORM" ]; then
 | 
				
			||||||
 | 
						PLATFORM="$(uname 2>/dev/null) $(uname -r 2>/dev/null), $(uname -m 2>/dev/null)"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Get compiler information
 | 
				
			||||||
 | 
					if [ -r "Makefile" ]; then
 | 
				
			||||||
 | 
						CC=$(grep "^CC = " Makefile | cut -d' ' -f3)
 | 
				
			||||||
 | 
						$CC --version 2>&1 | grep -i "GCC" >/dev/null
 | 
				
			||||||
 | 
						if [ $? -eq 0 ]; then
 | 
				
			||||||
 | 
							# GCC, or compiler that mimics GCC
 | 
				
			||||||
 | 
							$CC --version 2>&1 | grep -i "Open64" >/dev/null
 | 
				
			||||||
 | 
							if [ $? -eq 0 ]; then
 | 
				
			||||||
 | 
								COMPILER="Open64"
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
								COMPILER=$($CC --version | head -1 \
 | 
				
			||||||
 | 
								  | cut -d')' -f2 | cut -d' ' -f2)
 | 
				
			||||||
 | 
								COMPILER="gcc $COMPILER"
 | 
				
			||||||
 | 
							fi
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							# Non-GCC compiler
 | 
				
			||||||
 | 
							$CC --version 2>&1 | grep -i "clang" >/dev/null
 | 
				
			||||||
 | 
							if [ $? -eq 0 ]; then
 | 
				
			||||||
 | 
								COMPILER=$($CC --version 2>/dev/null | head -1 \
 | 
				
			||||||
 | 
								  | cut -d'(' -f1 | cut -d'-' -f1 \
 | 
				
			||||||
 | 
								  | sed -e 's/version //g; s/^\([A-Z]\)[A-Za-z]* clang/\1-clang/g; s/LLVM /clang /g')
 | 
				
			||||||
 | 
							fi
 | 
				
			||||||
 | 
							$CC -version 2>&1 | grep -i "tcc" >/dev/null
 | 
				
			||||||
 | 
							if [ $? -eq 0 ]; then
 | 
				
			||||||
 | 
								COMPILER=$($CC -version 2>/dev/null | head -1 \
 | 
				
			||||||
 | 
								  | cut -d'(' -f1 | sed -e 's/version //g')
 | 
				
			||||||
 | 
							fi
 | 
				
			||||||
 | 
							if [ "$COMPILER" = "unknown" ]; then
 | 
				
			||||||
 | 
								v="$($CC --version 2>/dev/null | head -1)"
 | 
				
			||||||
 | 
								[ -z "$v" ] && v="$($CC -version 2>/dev/null | head -1)"
 | 
				
			||||||
 | 
								[ -n "$v" ] && COMPILER="$v"
 | 
				
			||||||
 | 
							fi
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Get ngIRCd version information
 | 
				
			||||||
 | 
					eval "$(grep "^VERSION = " Makefile | sed -e 's/ //g')"
 | 
				
			||||||
 | 
					case "$VERSION" in
 | 
				
			||||||
 | 
						*~*-*)
 | 
				
			||||||
 | 
							VERSION=$(echo "$VERSION" | cut -b1-10)
 | 
				
			||||||
 | 
							;;
 | 
				
			||||||
 | 
					esac
 | 
				
			||||||
 | 
					[ -n "$VERSION" ] || VERSION="unknown"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Get IO interface information
 | 
				
			||||||
 | 
					if [ "$OS" = "linux-gnu" ]; then
 | 
				
			||||||
 | 
						COMMENT="1"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
						grep "^#define HAVE_SYS_DEVPOLL_H 1" src/config.h >/dev/null 2>&1
 | 
				
			||||||
 | 
						[ $? -eq 0 ] && COMMENT="4"
 | 
				
			||||||
 | 
						grep "^#define HAVE_EPOLL_CREATE 1" src/config.h >/dev/null 2>&1
 | 
				
			||||||
 | 
						[ $? -eq 0 ] && COMMENT="5"
 | 
				
			||||||
 | 
						grep "^#define HAVE_KQUEUE 1" src/config.h >/dev/null 2>&1
 | 
				
			||||||
 | 
						[ $? -eq 0 ] && COMMENT="3"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[ -n "$R_CONFIGURE" ] && C="Y" || C="N"
 | 
				
			||||||
 | 
					[ -n "$R_MAKE" ] && M="Y" || M="N"
 | 
				
			||||||
 | 
					[ -n "$R_CHECK" ] && T="$R_CHECK_Y" || T="N"
 | 
				
			||||||
 | 
					if [ -n "$R_RUN" ]; then
 | 
				
			||||||
 | 
						# Mark "runs" with "Y" only when the test suite succeeded:
 | 
				
			||||||
 | 
						[ "$T" = "N" ] && R="?" || R="Y"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
						R="N"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					[ -n "$COMMENT" ] && COMMENT=" $COMMENT"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo
 | 
				
			||||||
 | 
					echo "                                the executable works (\"runs\") as expected --+"
 | 
				
			||||||
 | 
					echo "                                  tests run successfully (\"make check\") --+ |"
 | 
				
			||||||
 | 
					echo "                                             ngIRCd compiles (\"make\") --+ | |"
 | 
				
			||||||
 | 
					echo "                                                  ./configure works --+ | | |"
 | 
				
			||||||
 | 
					echo "                                                                      | | | |"
 | 
				
			||||||
 | 
					echo "Platform                    Compiler     ngIRCd     Date     Tester   C M T R *"
 | 
				
			||||||
 | 
					echo "--------------------------- ------------ ---------- -------- -------- - - - - -"
 | 
				
			||||||
 | 
					command -v printf >/dev/null 2>&1
 | 
				
			||||||
 | 
					if [ $? -eq 0 ]; then
 | 
				
			||||||
 | 
						printf "%-27s %-12s %-10s %s %-8s %s %s %s %s%s\n" \
 | 
				
			||||||
 | 
						 "$PLATFORM" "$COMPILER" "$VERSION" "$DATE" "$LOGNAME" \
 | 
				
			||||||
 | 
						 "$C" "$M" "$T" "$R" "$COMMENT"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
						echo "$PLATFORM $COMPILER $VERSION $DATE $LOGNAME" \
 | 
				
			||||||
 | 
						 "$C" "$M" "$T" "$R" "$COMMENT"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					echo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					double_check() {
 | 
				
			||||||
 | 
						echo "Please double check that the ngIRCd daemon starts up, runs and handles IRC"
 | 
				
			||||||
 | 
						echo "connections successfully!"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ "$R_CHECK_Y" = "y" ]; then
 | 
				
			||||||
 | 
						echo "WARNING: Some tests have been skipped!"
 | 
				
			||||||
 | 
						double_check
 | 
				
			||||||
 | 
						echo
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					if [ "$R" = "?" ]; then
 | 
				
			||||||
 | 
						echo "WARNING: The resulting binary passed simple tests, but the test suite failed!"
 | 
				
			||||||
 | 
						double_check
 | 
				
			||||||
 | 
						echo
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
							
								
								
									
										53
									
								
								doc/Bopm.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								doc/Bopm.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,53 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					                     ngIRCd - Next Generation IRC Server
 | 
				
			||||||
 | 
					                           http://ngircd.barton.de/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					               (c)2001-2014 Alexander Barton and Contributors.
 | 
				
			||||||
 | 
					               ngIRCd is free software and published under the
 | 
				
			||||||
 | 
					                   terms of the GNU General Public License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                -- BOPM.txt --
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					I. Introduction
 | 
				
			||||||
 | 
					~~~~~~~~~~~~~~~~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Citing <http://wiki.blitzed.org/BOPM>: "BOPM is an open source open proxy
 | 
				
			||||||
 | 
					monitor, designed for use with hybrid-based ircds, although it can be used
 | 
				
			||||||
 | 
					with slight modification on any server which has the ability to show connects
 | 
				
			||||||
 | 
					to opers and that supports KLINEs."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Starting with Release 17, ngIRCd supports all required log messages that
 | 
				
			||||||
 | 
					BOPM requires to be useful.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					II. Installation
 | 
				
			||||||
 | 
					~~~~~~~~~~~~~~~~~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Install BOPM as usual, please see the BOPM documentation for details.
 | 
				
			||||||
 | 
					Afterwards adjust the following configuration parameters that are important
 | 
				
			||||||
 | 
					for ngIRCd:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					a) BOPM "IRC" section:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  1) Set "server" and "port" accordingly,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  2) adjust the "oper" line to match an [Operator] block in ngircd.conf,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  3) change "mode" to "+ci" or "+c".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  4) Set "connregex" to the following string, everything in one line(!):
 | 
				
			||||||
 | 
					     "Client connecting: ([^ ]+) \\(([^@]+)@([^\\)]+)\\) \\[([0-9\\.]+)\\].*";
 | 
				
			||||||
 | 
					     and comment out all the other "connregex" examples (that is, prepend a
 | 
				
			||||||
 | 
					     "#" character).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  5) Set "kline" to "GLINE *@%h :Open proxy found on your host!";
 | 
				
			||||||
 | 
					     and comment out all the other "kline" examples.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					b) BOPM "scanner" section:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Make sure you configure a valid "target_ip" and "target_port" for the
 | 
				
			||||||
 | 
					  configured scanners to test. And please note that you CAN'T USE the port
 | 
				
			||||||
 | 
					  of ngIRCd, because ngIRCd doesn't send any banner message by default!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  So you need a service what sends a banner, so for example POP3, SMTP,
 | 
				
			||||||
 | 
					  IMAP, or SSH daemons should work ...
 | 
				
			||||||
@@ -1,27 +0,0 @@
 | 
				
			|||||||
 | 
					 | 
				
			||||||
                     ngIRCd - Next Generation IRC Server
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                      (c)2001,2002 by Alexander Barton,
 | 
					 | 
				
			||||||
                    alex@barton.de, http://www.barton.de/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                  ngIRCd ist freie Software und steht unter
 | 
					 | 
				
			||||||
                       der GNU General Public License.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                             -- CC-Speed.txt --
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
ngIRCd-0.2.1-pre (2002-02-25):
 | 
					 | 
				
			||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
					 | 
				
			||||||
[nach make-Zeiten sortiert]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Intel PIII, 1 GHz, 256 MB Ram, FreeBSD 4.4:         configure: 00:10, make: 00:05
 | 
					 | 
				
			||||||
Intel PIII, 1 GHz, 256 MB Ram, Linux 2.4.10:        configure: 00:06, make: 00:06
 | 
					 | 
				
			||||||
Intel PIII, 1 GHz, 256 MB Ram, BeOS R5:             configure: 00:19, make: 00:07
 | 
					 | 
				
			||||||
Intel PIII, 1 GHz, 256 MB Ram, Win2k+CygWin:        configure: 00:27, make: 00:08
 | 
					 | 
				
			||||||
AMD K6/2, 400 Mhz, 256 MB Ram, Linux 2.4.12:        configure: 00:14, make: 00:12
 | 
					 | 
				
			||||||
PowerMac G4, 400 Mhz, 768 MB Ram, Mac OS X 10.1.2:  configure: 00:32, make: 00:19
 | 
					 | 
				
			||||||
Macintosh SE/30, 68030 16 MHz, 32 MB, A/UX 3.0.1:   configure: 07:33, make: 12:02
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
-- 
 | 
					 | 
				
			||||||
$Id: CC-Speed.txt,v 1.1 2002/02/25 14:02:32 alex Exp $
 | 
					 | 
				
			||||||
							
								
								
									
										64
									
								
								doc/CVS.txt
									
									
									
									
									
								
							
							
						
						
									
										64
									
								
								doc/CVS.txt
									
									
									
									
									
								
							@@ -1,64 +0,0 @@
 | 
				
			|||||||
 | 
					 | 
				
			||||||
                     ngIRCd - Next Generation IRC Server
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                      (c)2001,2002 by Alexander Barton,
 | 
					 | 
				
			||||||
                    alex@barton.de, http://www.barton.de/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                  ngIRCd ist freie Software und steht unter
 | 
					 | 
				
			||||||
                       der GNU General Public License.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                                 -- CVS.txt --
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Die Sourcen des ngIRCd werden mit dem "Concurrent Versions System" (CVS)
 | 
					 | 
				
			||||||
verwaltet. Somit koennen ohne Probleme mehrere Leute gleichzeitig die Sourcen
 | 
					 | 
				
			||||||
bearbeitet.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
I. Anonymer "Nur-Lesen"-Zugang
 | 
					 | 
				
			||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
					 | 
				
			||||||
Anonymer Zugriff auf die CVS-Repository von ngIRCd ist im "nur-lesen"-Modus
 | 
					 | 
				
			||||||
moeglich. Dazu sind folgende Schritte noetig:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Beim CVS-Server anmelden
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 $ cvs -d:pserver:anonymous@arthur.ath.cx:/usr/local/CVS/ngircd login
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Als Benutzername wird "anonymous" mit einem leeren Passwort verwendet.
 | 
					 | 
				
			||||||
Nun ein "Check-Out" der Quellcodes durchfuehren:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 $ cvs -d:pserver:anonymous@arthur.ath.cx:/usr/local/CVS/ngircd checkout ngircd
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Dadurch wird im aktuellen Verzeichnis der neue Ordner "ngircd" mit allen
 | 
					 | 
				
			||||||
Quell-Dateien des ngIRCd erzeugt.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Dieses ist der "Arbeitsordner", alle CVS-Befehle werden in Zukunft aus
 | 
					 | 
				
			||||||
diesem Ordner bzw. einem Unterordner davon ausgefuehrt.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Wichtig: wenn ngIRCd "frisch" aus dem CVS compiliert werden soll, so
 | 
					 | 
				
			||||||
existiert das configure-Script noch nicht. Dieses muss zunaechst mit dem
 | 
					 | 
				
			||||||
Script "autogen.sh" erzeugt werden. Letzteres setzt ein installiertes GNU
 | 
					 | 
				
			||||||
automake und GNU autoconf voraus!
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
CVS-Tree aktualisieren:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 $ cvs update
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Dieser Befehl aktualisiert alle Dateien im aktuellen Verzeichnis sowie allen
 | 
					 | 
				
			||||||
Unterverzeichnissen.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 $ cvs update <filename>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
So kann eine einzelne Datei aktualisiert werden (auch dann, wenn sie lokal
 | 
					 | 
				
			||||||
z.B. geloescht wurde -- praktisch, um eigene "Experimente" rueckgaengig zu
 | 
					 | 
				
			||||||
machen ;-))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
III. Schreibzugriff
 | 
					 | 
				
			||||||
~~~~~~~~~~~~~~~~~~~
 | 
					 | 
				
			||||||
Wer Schreibzugriff auf die CVS-Repository wuenscht, der moege sich bitte
 | 
					 | 
				
			||||||
mit Alex Barton, <alex@barton.de> in Verbindung setzen.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
-- 
 | 
					 | 
				
			||||||
$Id: CVS.txt,v 1.5 2002/02/15 15:15:22 alex Exp $
 | 
					 | 
				
			||||||
							
								
								
									
										28
									
								
								doc/Capabilities.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								doc/Capabilities.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					                     ngIRCd - Next Generation IRC Server
 | 
				
			||||||
 | 
					                           http://ngircd.barton.de/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					               (c)2001-2012 Alexander Barton and Contributors.
 | 
				
			||||||
 | 
					               ngIRCd is free software and published under the
 | 
				
			||||||
 | 
					                   terms of the GNU General Public License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            -- Capabilities.txt --
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This document lists and describes the "IRC capabilities" that ngIRCd supports
 | 
				
			||||||
 | 
					and can be requested by a IRC/IRCv3 client that supports the "CAP" command.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngIRCd implements the "IRC Client Capabilities Extension" as described here:
 | 
				
			||||||
 | 
					<http://ircv3.net/specs/core/capability-negotiation-3.1.html>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					I. Supported Capabilities
 | 
				
			||||||
 | 
					~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* "multi-prefix"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   When requested, the multi-prefix client capability will cause the IRC
 | 
				
			||||||
 | 
					   server to send all possible prefixes which apply to a user in NAMES and
 | 
				
			||||||
 | 
					   WHO output.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   See <http://ircv3.net/specs/extensions/multi-prefix-3.1.html>.
 | 
				
			||||||
							
								
								
									
										996
									
								
								doc/Commands.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										996
									
								
								doc/Commands.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,996 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					                     ngIRCd - Next Generation IRC Server
 | 
				
			||||||
 | 
					                           http://ngircd.barton.de/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					               (c)2001-2019 Alexander Barton and Contributors.
 | 
				
			||||||
 | 
					               ngIRCd is free software and published under the
 | 
				
			||||||
 | 
					                   terms of the GNU General Public License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                              -- Commands.txt --
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This file lists all commands available on ngIRCd. It is written in a format
 | 
				
			||||||
 | 
					that is human readable as well as machine parseable and therefore can be used
 | 
				
			||||||
 | 
					as "help text file" of the daemon.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					In short, the daemon reads this file on startup and parses it as following
 | 
				
			||||||
 | 
					when an user issues a "HELP <cmd>" command:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 1. Search the file for a line "- <cmd>",
 | 
				
			||||||
 | 
					 2. Output all subsequent lines that start with a TAB (ASCII 9) character
 | 
				
			||||||
 | 
					    to the client using NOTICE commands, treat lines containing a single "."
 | 
				
			||||||
 | 
					    after the TAB as empty lines.
 | 
				
			||||||
 | 
					 3. Break at the first line not starting with a TAB character.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This format allows to have information to each command stored in this file
 | 
				
			||||||
 | 
					which will not be sent to an IRC user requesting help which enables us to
 | 
				
			||||||
 | 
					have additional annotations stored here which further describe the origin,
 | 
				
			||||||
 | 
					implementation details, or limits of the specific command which are not
 | 
				
			||||||
 | 
					relevant to an end-user but administrators and developers.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					A special "Intro" block is returned to the user when the HELP command is
 | 
				
			||||||
 | 
					used without a command name:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Intro
 | 
				
			||||||
 | 
						This is ngIRCd, a server software for Internet Relay Chat (IRC)
 | 
				
			||||||
 | 
						networks. You can find more information about ngIRCd on its homepage:
 | 
				
			||||||
 | 
							<http://ngircd.barton.de>
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Use "HELP COMMANDS" to get a list of all available commands and
 | 
				
			||||||
 | 
						"HELP <command-name>" to get help for a specific IRC command, for
 | 
				
			||||||
 | 
						example "HELP quit" or "HELP privmsg".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Connection Handling Commands
 | 
				
			||||||
 | 
					~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- CAP
 | 
				
			||||||
 | 
						CAP LS
 | 
				
			||||||
 | 
						CAP LIST
 | 
				
			||||||
 | 
						CAP REQ <capabilities>
 | 
				
			||||||
 | 
						CAP ACK <capabilities>
 | 
				
			||||||
 | 
						CAP NAK <capabilities>
 | 
				
			||||||
 | 
						CAP CLEAR
 | 
				
			||||||
 | 
						CAP END
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						List, request, and clear "IRC Capabilities".
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Using this command, an IRC client can request additional "IRC
 | 
				
			||||||
 | 
						capabilities" during login or later on, which influences the
 | 
				
			||||||
 | 
						communication between server and client. Normally, these commands
 | 
				
			||||||
 | 
						aren't directly used by humans, but automatically by their client
 | 
				
			||||||
 | 
						software. And please note that issuing such commands manually can
 | 
				
			||||||
 | 
						irritate the client software used, because of the "non-standard"
 | 
				
			||||||
 | 
						behavior of the server!
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						- CAP LS: list all available capabilities.
 | 
				
			||||||
 | 
						- CAP LIST: list active capabilities of this connection.
 | 
				
			||||||
 | 
						- CAP REQ: Request particular capabilities.
 | 
				
			||||||
 | 
						- CAP ACK: Acknowledge a set of capabilities to be enabled/disabled.
 | 
				
			||||||
 | 
						- CAP NAK: Reject a set of capabilities.
 | 
				
			||||||
 | 
						- CAP CLEAR: Clear all set capabilities.
 | 
				
			||||||
 | 
						- CAP END: Indicate end of capability negotiation during login,
 | 
				
			||||||
 | 
						  ignored in an fully registered session.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Please note that the <capabilities> must be given in a single
 | 
				
			||||||
 | 
						parameter but whitespace separated, therefore a command could look
 | 
				
			||||||
 | 
						like this: "CAP REQ :capability1 capability2 capability3" for example.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - <http://ircv3.net/specs/core/capability-negotiation-3.1.html>
 | 
				
			||||||
 | 
						 - <http://ngircd.barton.de/doc/Capabilities.txt>
 | 
				
			||||||
 | 
						 - doc/Capabilities.txt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- CHARCONV
 | 
				
			||||||
 | 
						CHARCONV <client-charset>
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Set client character set encoding to <client-charset>.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						After receiving such a command, the server translates all message
 | 
				
			||||||
 | 
						data received from the client using the set <client-charset> to the
 | 
				
			||||||
 | 
						server encoding (UTF-8), and all message data which is to be sent to
 | 
				
			||||||
 | 
						the client from the server encoding (UTF-8) to <client-charset>.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						This enables older clients and clients using "strange" character sets
 | 
				
			||||||
 | 
						to transparently participate in channels and direct messages to
 | 
				
			||||||
 | 
						clients using UTF-8, which should be the default today.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - IRC+, <http://ngircd.barton.de/doc/Protocol.txt>
 | 
				
			||||||
 | 
						 - IRC+, doc/Protocol.txt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- NICK
 | 
				
			||||||
 | 
						NICK <nickname>
 | 
				
			||||||
 | 
						NICK <nickname> [<hops>]
 | 
				
			||||||
 | 
						NICK <nickname> <hops> <username> <host> <servertoken> <usermodes> <realname>
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Set or change the <nickname> of a client (first form) and register
 | 
				
			||||||
 | 
						remote clients (second and third form; servers only).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 1459, 4.1.2 "Nick message" (old client and server protocol)
 | 
				
			||||||
 | 
						 - RFC 2812, 3.1.2 "Nick message" (client protocol)
 | 
				
			||||||
 | 
						 - RFC 2813, 4.1.3 "Nick" (server protocol)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- PASS
 | 
				
			||||||
 | 
						PASS <password>
 | 
				
			||||||
 | 
						PASS <password> <version> <flags> [<options>]
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Set a connection <password>. This command must be the first command
 | 
				
			||||||
 | 
						sent to the server, even before the NICK/USER or SERVER commands.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						The first form is used by user sessions or (old) RFC 1459 servers,
 | 
				
			||||||
 | 
						the second form is used by RFC 2812 or IRC+ compliant servers and
 | 
				
			||||||
 | 
						enables the server to indicate its version and supported protocol
 | 
				
			||||||
 | 
						features.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 1459, 4.1.1 "Password message" (old client and server protocol)
 | 
				
			||||||
 | 
						 - RFC 2812, 3.1.1 "Password message" (client protocol)
 | 
				
			||||||
 | 
						 - RFC 2813, 4.1.1 "Password message" (server protocol)
 | 
				
			||||||
 | 
						 - IRC+, <http://ngircd.barton.de/doc/Protocol.txt>
 | 
				
			||||||
 | 
						 - IRC+, doc/Protocol.txt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- PING
 | 
				
			||||||
 | 
						PING <token> [<target>]
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Tests the presence of a connection to a client or server.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						If no <target> has been given, the local server is used. User clients
 | 
				
			||||||
 | 
						can only use other servers as <target>, no user clients.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						A PING message results in a PONG reply containing the <token>, which
 | 
				
			||||||
 | 
						can be arbitrary text.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Please note:
 | 
				
			||||||
 | 
						The RFCs state that the <token> parameter is used to specify the
 | 
				
			||||||
 | 
						origin of the PING command when forwarded in the network, but this
 | 
				
			||||||
 | 
						is not the case: the sender is specified using the prefix as usual,
 | 
				
			||||||
 | 
						and the parameter is used to identify the PONG reply in practice.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 3.7.2 "Ping message"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- PONG
 | 
				
			||||||
 | 
						PONG <target> [<token>]
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Reply to a "PING" command, indicate that the connection is alive.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						The <token> is the arbitrary text received in the "PING" command and
 | 
				
			||||||
 | 
						can be used to identify the correct PONG sent as answer.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						When the "PONG" command is received from a user session, the <target>
 | 
				
			||||||
 | 
						parameter is ignored; otherwise the PONG is forwarded to this client.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 3.7.3 "Pong message"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- QUIT
 | 
				
			||||||
 | 
						QUIT [<quit-message>]
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Terminate a user session.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						When received from a user, the server acknowledges this by sending
 | 
				
			||||||
 | 
						an "ERROR" message back to the client and terminates the connection.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						When a <quit-message> has been given, it is sent to all the channels
 | 
				
			||||||
 | 
						that the client is a member of when leaving.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 3.1.7 "Quit"
 | 
				
			||||||
 | 
						 - RFC 2813, 4.1.5 "Quit"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- USER
 | 
				
			||||||
 | 
						USER <username> <hostname> <unused> <realname>
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Register (and authenticate) a new user session with a short <username>
 | 
				
			||||||
 | 
						and a human-readable <realname>.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						The parameter <hostname> is only used when received by an other server
 | 
				
			||||||
 | 
						and ignored otherwise; and the parameter <unused> is always ignored.
 | 
				
			||||||
 | 
						But both parameters are required on each invocation by the protocol
 | 
				
			||||||
 | 
						and can be set to arbitrary characters/text when not used.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						If <username> contains an "@" character, the full <username> is used
 | 
				
			||||||
 | 
						for authentication, but only the first part up to this character is
 | 
				
			||||||
 | 
						set as "user name" for this session.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 3.1.3 "User message"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- WEBIRC
 | 
				
			||||||
 | 
						WEBIRC <password> <username> <hostname> <ip-address>
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Allow Web-to-IRC gateway software (for example) to set the correct
 | 
				
			||||||
 | 
						user name and host name of users instead of their own.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						It must be the very first command sent to the server, even before
 | 
				
			||||||
 | 
						USER and NICK commands!
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						The <password> must be set in the server configuration file to prevent
 | 
				
			||||||
 | 
						unauthorized clients to fake their identity; it is an arbitrary string.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - IRC+, <http://ngircd.barton.de/doc/Protocol.txt>
 | 
				
			||||||
 | 
						 - IRC+, doc/Protocol.txt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					General Commands
 | 
				
			||||||
 | 
					~~~~~~~~~~~~~~~~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- AWAY
 | 
				
			||||||
 | 
						AWAY [<message>]
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Provides the server with a message to automatically send in reply to a
 | 
				
			||||||
 | 
						PRIVMSG directed at the user, but not to a channel they are on.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						If <message> is omitted, the away status is removed.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 4.1 "Away"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- HELP
 | 
				
			||||||
 | 
						HELP [<command>]
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Show help information for a specific IRC <command>. The <command> name
 | 
				
			||||||
 | 
						is case-insensitive.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Use the command "HELP Commands" to get a list of all available commands.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						The HELP command isn't specified by any RFC but implemented by most
 | 
				
			||||||
 | 
						daemons. If no help text could be read in, ngIRCd outputs a list of all
 | 
				
			||||||
 | 
						implemented commands when receiving a plain "HELP" command as well as
 | 
				
			||||||
 | 
						on "HELP Commands".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ngIRCd replies using "NOTICE" commands like ircd 2.10/2.11; other
 | 
				
			||||||
 | 
						implementations are using numerics 704, 705, and 706.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- MODE
 | 
				
			||||||
 | 
						MODE <nickname> [{+|-}<mode>[<mode>] [{+|-}<mode>[<mode>] [...]]]
 | 
				
			||||||
 | 
						MODE <channel> [{+|-}<mode>[<mode>] [<arg> [<arg> [...]]] [{+|-}<mode>[<mode>] [<arg> [<arg> [...]]] [...]]]
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Set and get user and channel modes.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						When no mode parameters are given, the currently set user or channel
 | 
				
			||||||
 | 
						modes are returned. Otherwise the modes are adjusted accordingly
 | 
				
			||||||
 | 
						and the changes will be reported back to the client.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						All user and channel "modes" are indicated by single case-sensitive
 | 
				
			||||||
 | 
						characters.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Please note that a user can only get and set his own modes, and not
 | 
				
			||||||
 | 
						all user "levels" are allowed to change all channel modes ...
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						The mode parameters can become quite complex, especially when dealing
 | 
				
			||||||
 | 
						with channel modes that require additional arguments:
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						  {+|-}<mode(s}>  -- set or unset one or more modes.
 | 
				
			||||||
 | 
						  +<mode(s)> -<mode(s)>  -- set some modes and unset others.
 | 
				
			||||||
 | 
						  +<modes> <arg1> <arg2>  -- set (at least) two modes with arguments.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Some examples:
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						  MODE nick +i  -- set user to "invisible".
 | 
				
			||||||
 | 
						  MODE #chan +tn  -- set "topic lock" and "no external messages".
 | 
				
			||||||
 | 
						  MODE #chan -t +l 50  -- remove "topic lock", set "user limit" to 50.
 | 
				
			||||||
 | 
						  MODE #chan +ov nick1 nick2  -- set "channel op" and "voice" mode
 | 
				
			||||||
 | 
						                                 to nick1 and nick2 in channel #chan.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						A complete list of all modes supported by ngIRCd can be found online
 | 
				
			||||||
 | 
						here: <http://ngircd.barton.de/doc/Modes.txt>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2811, 4. "Channel Modes"
 | 
				
			||||||
 | 
						 - RFC 2812, 3.1.5 "User mode message"
 | 
				
			||||||
 | 
						 - RFC 2812, 3.2.3 "Channel mode message"
 | 
				
			||||||
 | 
						 - <http://ngircd.barton.de/doc/Modes.txt>
 | 
				
			||||||
 | 
						 - doc/Modes.txt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- NOTICE
 | 
				
			||||||
 | 
						NOTICE <target>[,<target>[,...]] <message>
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Send a <message> to a given <target>, which can be a user or a
 | 
				
			||||||
 | 
						channel, but DON'T report any error.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						The "NOTICE" command exactly behaves like the "PRIVMSG" command, but
 | 
				
			||||||
 | 
						doesn't report any errors it encounters (like an unknown <target>).
 | 
				
			||||||
 | 
						Please see the help text of the "PRIVMSG" command for a detailed
 | 
				
			||||||
 | 
						description of the parameters!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 2.3.1 "Message format in Augmented BNF"
 | 
				
			||||||
 | 
						 - RFC 2812, 3.3 "Sending messages"
 | 
				
			||||||
 | 
						 - RFC 2812, 3.3.2 "Notice"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- PRIVMSG
 | 
				
			||||||
 | 
						PRIVMSG <target>[,<target>[,...]] <message>
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Send a <message> to a given <target>, which can be a user or a
 | 
				
			||||||
 | 
						channel, and report all errors.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						The <target> must follow one of these syntax variants:
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						 - <nickname>
 | 
				
			||||||
 | 
						 - <channel>
 | 
				
			||||||
 | 
						 - <user>[%<host>]@<server>
 | 
				
			||||||
 | 
						 - <user>%<host>
 | 
				
			||||||
 | 
						 - <nickname>!<user>@<host>
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						If the <target> is a user, a private message is sent directly to this
 | 
				
			||||||
 | 
						user; if it resolves to a channel name, a public message is sent
 | 
				
			||||||
 | 
						to all the members of that channel.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						In addition, IRC Ops can use these two forms to specify the <target>:
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						 - #<hostmask>
 | 
				
			||||||
 | 
						 - $<servermask>
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						The <mask> can contain the wildcard characters "*" and "?", but must
 | 
				
			||||||
 | 
						contain at least one dot (".") and no wildcard after the last one.
 | 
				
			||||||
 | 
						Then, the <message> is sent to all users matching this <mask>.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						All warnings and errors are reported back to the initiator using
 | 
				
			||||||
 | 
						numeric status codes, which is the only difference to the "NOTICE"
 | 
				
			||||||
 | 
						command, which doesn't report back any errors or warnings at all.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Please note that clients often use "MSG" as an alias to PRIVMSG, and
 | 
				
			||||||
 | 
						a command "QUERY <nick> [<message>]" to initiate private chats. Both
 | 
				
			||||||
 | 
						are command extensions of the client and never sent to the server.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 2.3.1 "Message format in Augmented BNF"
 | 
				
			||||||
 | 
						 - RFC 2812, 3.3 "Sending messages"
 | 
				
			||||||
 | 
						 - RFC 2812, 3.3.1 "Private messages"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Status and Informational Commands
 | 
				
			||||||
 | 
					~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- ADMIN
 | 
				
			||||||
 | 
						ADMIN [<target>]
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Show administrative information about an IRC server in the network.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						<target> can be a server name, the nickname of a client connected to
 | 
				
			||||||
 | 
						a specific server, or a mask matching a server name in the network.
 | 
				
			||||||
 | 
						The server of the current connection is used when <target> is omitted.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 3.4.9 "Admin command"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- INFO
 | 
				
			||||||
 | 
						INFO [<target>]
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Show the version, birth & online time of an IRC server in the network.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						<target> can be a server name, the nickname of a client connected to
 | 
				
			||||||
 | 
						a specific server, or a mask matching a server name in the network.
 | 
				
			||||||
 | 
						The server of the current connection is used when <target> is omitted.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 3.4.10 "Info command"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- ISON
 | 
				
			||||||
 | 
						ISON <nickname> [<nickname> [...]]
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Query online status of a list of nicknames. The server replies with
 | 
				
			||||||
 | 
						a list only containing nicknames actually connected to a server in
 | 
				
			||||||
 | 
						the network. If no nicknames of the given list are online, an empty
 | 
				
			||||||
 | 
						list is returned to the client requesting the information.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Please note that "all" IRC daemons even parse separate nicknames in
 | 
				
			||||||
 | 
						a single parameter (like ":nick1 nick2"), and therefore ngIRCd
 | 
				
			||||||
 | 
						implements this behavior, too.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 4.9 "Ison message"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- LINKS
 | 
				
			||||||
 | 
						LINKS [[<target>] <mask>]
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						List all servers currently registered in the network matching <mask>,
 | 
				
			||||||
 | 
						or all servers if <mask> has been omitted, as seen by the server
 | 
				
			||||||
 | 
						specified by <target> or the local server when <target> is omitted.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						<target> can be a server name, the nickname of a client connected to
 | 
				
			||||||
 | 
						a specific server, or a mask matching a server name in the network.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 3.4.5 "Links message"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- LUSERS
 | 
				
			||||||
 | 
						LUSERS [<mask> [<target>]]
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Return statistics about the number of clients (users, servers,
 | 
				
			||||||
 | 
						services, ...) in the network as seen by the server <target>.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						<target> can be a server name, the nickname of a client connected to
 | 
				
			||||||
 | 
						a specific server, or a mask matching a server name in the network.
 | 
				
			||||||
 | 
						The server of the current connection is used when <target> is omitted.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Please note that ngIRCd ignores the <mask> parameter entirely: it
 | 
				
			||||||
 | 
						is not possible to get information for a part of the network only.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 3.4.2 "Lusers message"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- MOTD
 | 
				
			||||||
 | 
						MOTD [<target>]
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Show the "Message of the Day" (MOTD) of an IRC server in the network.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						<target> can be a server name, the nickname of a client connected to
 | 
				
			||||||
 | 
						a specific server, or a mask matching a server name in the network.
 | 
				
			||||||
 | 
						The server of the current connection is used when <target> is omitted.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 3.4.1 "Motd message"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- NAMES
 | 
				
			||||||
 | 
						NAMES [<channel>[,<channel>[,...]] [<target>]]
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Show the list of users that are members of a particular <channel>
 | 
				
			||||||
 | 
						(and that are visible for the client requesting this information) as
 | 
				
			||||||
 | 
						seen by the server <target>. More than one <channel> can be given
 | 
				
			||||||
 | 
						separated by "," (but not whitespaces!).
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						If <channel> has been omitted, all visible users are shown, grouped
 | 
				
			||||||
 | 
						by channel name, and all visible users not being members of at least
 | 
				
			||||||
 | 
						one channel are shown as members of the pseudo channel "*".
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						<target> can be a server name, the nickname of a client connected to
 | 
				
			||||||
 | 
						a specific server, or a mask matching a server name in the network.
 | 
				
			||||||
 | 
						The server of the current connection is used when <target> is omitted.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 3.2.5 "Names message"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- STATS
 | 
				
			||||||
 | 
						STATS [<query> [<target>]]
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Show statistics and other information of type <query> of a particular
 | 
				
			||||||
 | 
						IRC server in the network.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						The following <query> types are supported (case-insensitive where
 | 
				
			||||||
 | 
						applicable):
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						 - g  Network-wide bans ("G-Lines").
 | 
				
			||||||
 | 
						 - k  Server-local bans ("K-Lines").
 | 
				
			||||||
 | 
						 - L  Link status (servers and user links).
 | 
				
			||||||
 | 
						 - l  Link status (servers and own link).
 | 
				
			||||||
 | 
						 - m  Command usage count.
 | 
				
			||||||
 | 
						 - u  Server uptime.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						<target> can be a server name, the nickname of a client connected to
 | 
				
			||||||
 | 
						a specific server, or a mask matching a server name in the network.
 | 
				
			||||||
 | 
						The server of the current connection is used when <target> is omitted.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						To use "STATS L" the user must be an IRC Operator.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 3.4.4 "Stats message"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- TIME
 | 
				
			||||||
 | 
						TIME [<target>]
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Show the local time of an IRC server in the network.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						<target> can be a server name, the nickname of a client connected to
 | 
				
			||||||
 | 
						a specific server, or a mask matching a server name in the network.
 | 
				
			||||||
 | 
						The server of the current connection is used when <target> is omitted.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References
 | 
				
			||||||
 | 
						 - RFC 2812, 3.4.6 "Time message"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- TRACE
 | 
				
			||||||
 | 
						TRACE [<target>]
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Find the route to a specific server and send information about its
 | 
				
			||||||
 | 
						peers. Each server that processes this command reports back to the
 | 
				
			||||||
 | 
						sender about it: the replies from pass-through servers form a chain
 | 
				
			||||||
 | 
						which shows the route to the destination.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						<target> can be a server name, the nickname of a client connected to
 | 
				
			||||||
 | 
						a specific server, or a mask matching a server name in the network.
 | 
				
			||||||
 | 
						The server of the current connection is used when <target> is omitted.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 3.4.8 "Trace message"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- USERHOST
 | 
				
			||||||
 | 
						USERHOST <nickname> [<nickname> [...]]
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Show flags and the hostmasks (<user>@<host>) of the <nickname>s,
 | 
				
			||||||
 | 
						separated by spaces. The following flags are used:
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						 - "-"  The client is "away" (the mode "+a" is set on this client).
 | 
				
			||||||
 | 
						 - "+"  Client seems to be available, at least it isn't marked "away".
 | 
				
			||||||
 | 
						 - "*"  The client is an IRC operator (the mode "+o" is set).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 4.8 "Userhost message"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- VERSION
 | 
				
			||||||
 | 
						VERSION [<target>]
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Show version information about a particular IRC server in the network.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						<target> can be a server name, the nickname of a client connected to
 | 
				
			||||||
 | 
						a specific server, or a mask matching a server name in the network.
 | 
				
			||||||
 | 
						The server of the current connection is used when <target> is omitted.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Please note: in normal operation, the version number ends in a dot
 | 
				
			||||||
 | 
						(".", for example "ngIRCd-20.1."). If it ends in ".1" (for example
 | 
				
			||||||
 | 
						"ngIRCd-20.1.1", same version than before!), the server is running in
 | 
				
			||||||
 | 
						debug-mode; and if it ends in ".2", the "network sniffer" is active!
 | 
				
			||||||
 | 
						Keep your privacy in mind ...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 3.4.3 "Version message"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- WHO
 | 
				
			||||||
 | 
						WHO [<mask> ["o"]]
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Show a list of users who match the <mask>, or all visible users when
 | 
				
			||||||
 | 
						the <mask> has been omitted. (Special case: the <mask> "0" is
 | 
				
			||||||
 | 
						equivalent to "*")
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						If the flag "o" is given, the server will only return information about
 | 
				
			||||||
 | 
						IRC Operators.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 3.6.1 "Who query"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- WHOIS
 | 
				
			||||||
 | 
						WHOIS [<target>] <mask>[,<mask>[,...]]
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Query information about users matching the <mask> parameter(s) as seen
 | 
				
			||||||
 | 
						by the server <target>; up to 3 <masks> are supported.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						<target> can be a server name, the nickname of a client connected to a
 | 
				
			||||||
 | 
						specific server, or a mask matching a server name in the network. The
 | 
				
			||||||
 | 
						server of the current connection is used when <target> is omitted.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 3.6.2 "Whois query"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- WHOWAS
 | 
				
			||||||
 | 
						WHOWAS <nickname>[,<nickname>[,...]] [<count> [<target>]]
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Query information about nicknames no longer in use in the network,
 | 
				
			||||||
 | 
						either because of nickname changes or disconnects. The history is
 | 
				
			||||||
 | 
						searched backwards, returning the most recent entry first. If there
 | 
				
			||||||
 | 
						are multiple entries, up to <count> entries will be shown (or all of
 | 
				
			||||||
 | 
						them, if no <count> has been given).
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						<target> can be a server name, the nickname of a client connected to a
 | 
				
			||||||
 | 
						specific server, or a mask matching a server name in the network. The
 | 
				
			||||||
 | 
						server of the current connection is used when <target> is omitted.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 3.6.3 "Whowas"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Channel Commands
 | 
				
			||||||
 | 
					~~~~~~~~~~~~~~~~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- INVITE
 | 
				
			||||||
 | 
						INVITE <nickname> <channel>
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Invite <nickname> to join channel <channel>.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						<channel> does not have to exist, but if it does, only members of the
 | 
				
			||||||
 | 
						channel are allowed to invite other users. If the channel mode "+i"
 | 
				
			||||||
 | 
						is set, only channel "half-ops" (and above) may invite other clients,
 | 
				
			||||||
 | 
						and if channel mode "+V" is set, nobody can invite other users.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 3.2.7 "Invite message"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- JOIN
 | 
				
			||||||
 | 
						JOIN {<channel>[,<channel>[,...]] [<key>[,<key>[,...]]] | 0}
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Makes the client join the <channel> (comma-separated list), specifying
 | 
				
			||||||
 | 
						the channel keys ("passwords"). A <channel-key> is only needed if the
 | 
				
			||||||
 | 
						<channel> has the mode "+k" set.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						If the channel(s) do not exist, then they will be created.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Using "JOIN 0" parts all channels at once.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 3.2.1 "Join message" (client protocol)
 | 
				
			||||||
 | 
						 - RFC 2813, 4.2.1 "Join message" (server protocol)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- KICK
 | 
				
			||||||
 | 
						KICK <channel>[,<channel>[,...]] <nickname>[,<nickname>[,...]] [<reason>]
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Remove users(s) with <nickname>(s) from <channel>(s).
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						There must be either exactly one <channel> parameter and multiple
 | 
				
			||||||
 | 
						<nickname> parameters, or as many <channel> parameters as there are
 | 
				
			||||||
 | 
						<nickname> parameters. The <reason> is shown to the users being
 | 
				
			||||||
 | 
						kicked, and the nickname of the current user is used when <reason>
 | 
				
			||||||
 | 
						is omitted.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 3.2.8 "Kick command"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- LIST
 | 
				
			||||||
 | 
						LIST [<mask>[,<mask>[,...]] [<server>]]
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						List all visible channels matching the <mask> (comma-separated list),
 | 
				
			||||||
 | 
						or all channels when no <mask> was specified.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						If <server> is given, the command will be forwarded to <server> for
 | 
				
			||||||
 | 
						evaluation.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 3.2.6 "List message"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- PART
 | 
				
			||||||
 | 
						PART <channel>[,<channel>[,...]] [<part-message>]
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Leave <channel> (comma-separated list), optionally with sending a
 | 
				
			||||||
 | 
						<part-message> to all the other channel members.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 3.2.2 "Part message"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- TOPIC
 | 
				
			||||||
 | 
						TOPIC <channel> [<topic>]
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Change or view the topic of a channel.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						The topic for channel <channel> is returned if there is no <topic>
 | 
				
			||||||
 | 
						given. If the <topic> parameter is present, the topic for that
 | 
				
			||||||
 | 
						channel will be changed, if this action is allowed for the user
 | 
				
			||||||
 | 
						requesting it. If the <topic> parameter is an empty string, the
 | 
				
			||||||
 | 
						topic for that channel will be removed.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 3.2.4 "Topic message"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Administrative Commands
 | 
				
			||||||
 | 
					~~~~~~~~~~~~~~~~~~~~~~~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- CONNECT
 | 
				
			||||||
 | 
						CONNECT <server> [<port> [<remote-server> [<my-pwd> <peer-pwd>]]]
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Instructs the current server, or <remote-server> if specified,
 | 
				
			||||||
 | 
						to connect to the server named <server>, which must be configured
 | 
				
			||||||
 | 
						in the server configuration file.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						To use this command, the user must be an IRC Operator. To establish
 | 
				
			||||||
 | 
						a connection on a <remote-server>, you must have remote IRC operator
 | 
				
			||||||
 | 
						privileges.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						If <port>, <my-pwd> and <peer-pwd> are given, these values override
 | 
				
			||||||
 | 
						the ones specified in the server configuration file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 3.4.7 "Connect message"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- DIE
 | 
				
			||||||
 | 
						DIE [<message>]
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Instructs the server to shut down.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						The optional (and non-standard) <message> text is sent to each client
 | 
				
			||||||
 | 
						connected to this server before all connections are closed.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						To use this command, the user must be an IRC Operator.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 4.3 "Die message"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- DISCONNECT
 | 
				
			||||||
 | 
						DISCONNECT <server>
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Disconnect and disable a locally linked server.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						To use this command, the user must be an IRC Operator.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - This command is not specified in the IRC RFCs, it is an extension
 | 
				
			||||||
 | 
						   of ngIRCd.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- GLINE
 | 
				
			||||||
 | 
						GLINE <nick!user@hostmask> [<timeout> :<reason>]
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						This command provides timed G-Lines (network-wide bans).
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						If a client matches a G-Line, it cannot connect to any server on
 | 
				
			||||||
 | 
						the IRC network for <timeout> seconds. When <timeout> is 0, it make
 | 
				
			||||||
 | 
						the G-Line permanent.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						If no <timeout> and no <reason> is given, the G-Line is removed.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						To use this command, the user must be an IRC Operator.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						"STATS g" can be used to list all currently active G-Lines.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - This command is not specified in the IRC RFCs, it is an extension
 | 
				
			||||||
 | 
						   of ngIRCd.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- KILL
 | 
				
			||||||
 | 
						KILL <nickname> <reason>
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Forcibly remove all users with a given <nickname> from the IRC
 | 
				
			||||||
 | 
						network and display the given <reason> to them.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						This command is used internally between servers, too, for example
 | 
				
			||||||
 | 
						to disconnect duplicate <nickname>'s after a "net split".
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						To use this command, the user must be an IRC Operator.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 3.7.1 "Kill message"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- KLINE
 | 
				
			||||||
 | 
						KLINE <nick!user@hostmask> [<timeout> :<reason>]
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						This command provides timed K-Lines (server-local bans).
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						If a client matches a K-Line, it cannot connect to this server for
 | 
				
			||||||
 | 
						<timeout> seconds. When <timeout> is 0, it makes the K-Line permanent.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						If no <timeout> and no <reason> is given, the K-Line is removed.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						To use this command, the user must be an IRC Operator.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						"STATS k" can be used to list all currently active K-Lines.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - This command is not specified in the IRC RFCs, it is an extension
 | 
				
			||||||
 | 
						   of ngIRCd.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- OPER
 | 
				
			||||||
 | 
						OPER <name> <password>
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Authenticates a user named <name> as an IRC operator on the current
 | 
				
			||||||
 | 
						server/network.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						This operator <name> must be configured in the server configuration.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Please note that <name> is NOT related to a nickname at all!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 3.1.4 "Oper message"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- REHASH
 | 
				
			||||||
 | 
						REHASH
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Causes the server to re-read and re-process its configuration file(s).
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						While rehashing, no new connections are accepted, but all already
 | 
				
			||||||
 | 
						established connections stay connected.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						To use this command, the user must be an IRC Operator.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 4.2 "Rehash message"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- RESTART
 | 
				
			||||||
 | 
						RESTART
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Restart the server.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						While restarting, all connections are reset and no new connections
 | 
				
			||||||
 | 
						are accepted.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						To use this command, the user must be an IRC Operator.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 4.4 "Restart message"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- WALLOPS
 | 
				
			||||||
 | 
						WALLOPS <message>
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Sends <message> to all users with user mode "+w".
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						To use this command, the user must be an IRC Operator.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 4.7 "Operwall message"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					IRC Service Commands
 | 
				
			||||||
 | 
					~~~~~~~~~~~~~~~~~~~~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- SERVICE
 | 
				
			||||||
 | 
						SERVICE <name> <reserved1> <distribution> <type> <reserved2> <info>
 | 
				
			||||||
 | 
						SERVICE <name> <servertoken> <distribution> {<type>|+<modes>} <hops> <info>
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Register a new service in the network.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						The first form is used by directly linked services and isn't supported
 | 
				
			||||||
 | 
						by ngIRCd at the moment. The second form announces services connected
 | 
				
			||||||
 | 
						to remote "pseudo-servers" ("services hubs").
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						The <distribution> and <type> parameters are ignored by ngIRCd.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 3.1.6 "Service message"
 | 
				
			||||||
 | 
						 - RFC 2813, 4.1.4 "Service message"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- SERVLIST
 | 
				
			||||||
 | 
						SERVLIST [<mask> [<type>]]
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						List all IRC services currently registered in the network.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						The optional <mask> and <type> parameters can be used to limit the
 | 
				
			||||||
 | 
						listing to services matching the <mask> and that are of type <type>.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Please note that ngIRCd doesn't use any service types at the moment
 | 
				
			||||||
 | 
						and therefore all services are of type "0".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 3.5.1 "Servlist message"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- SQUERY
 | 
				
			||||||
 | 
						SQUERY <target>[,<target>[,...]] <message>
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Send a <message> to a given <target> IRC service, and report all
 | 
				
			||||||
 | 
						errors.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						The "SQUERY" command exactly behaves like the "PRIVMSG" command, but
 | 
				
			||||||
 | 
						enforces that the <target> of the <message> is an IRC service.
 | 
				
			||||||
 | 
						Please see the help text of the "PRIVMSG" command for a detailed
 | 
				
			||||||
 | 
						description of the parameters!
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						If a user wants to interact with IRC services, he should use "SQUERY"
 | 
				
			||||||
 | 
						instead of "PRIVMSG" or "NOTICE": only "SQUERY makes sure that no
 | 
				
			||||||
 | 
						regular user, which uses the nickname of an IRC service, receives
 | 
				
			||||||
 | 
						the command in error, for example during a "net split"!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 2.3.1 "Message format in Augmented BNF"
 | 
				
			||||||
 | 
						 - RFC 2812, 3.3 "Sending messages"
 | 
				
			||||||
 | 
						 - RFC 2812, 3.3.2 "Notice"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- SVSNICK
 | 
				
			||||||
 | 
						SVSNICK <oldnick> <newnick>
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Forcefully change foreign user nicknames. This command is allowed
 | 
				
			||||||
 | 
						for servers only.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						The "SVSNICK" command is forwarded to the server to which the user
 | 
				
			||||||
 | 
						with nickname <oldnick> is connected to, which in turn generates a
 | 
				
			||||||
 | 
						regular "NICK" command that then is sent to the client, so no special
 | 
				
			||||||
 | 
						support in the client software is required.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - ngIRCd GIT commit e3f300d3231f
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Server Protocol Commands
 | 
				
			||||||
 | 
					~~~~~~~~~~~~~~~~~~~~~~~~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- CHANINFO
 | 
				
			||||||
 | 
						CHANINFO <channel> +<modes> [[<key> <limit>] <topic>]
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						CHANINFO is used by servers to inform each other about a channel:
 | 
				
			||||||
 | 
						its modes, channel key, user limits and its topic.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Note: even when <modes> don't include "k" (key) or "l" (limit), both
 | 
				
			||||||
 | 
						parameters must be given when used; use "*" for "no key" and 0 for
 | 
				
			||||||
 | 
						"no limit" for the unused parameter in this case.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						The CHANINFO command is allowed on server-links only.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - IRC+, <http://ngircd.barton.de/doc/Protocol.txt>
 | 
				
			||||||
 | 
						 - IRC+, doc/Protocol.txt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- ERROR
 | 
				
			||||||
 | 
						ERROR [<message> [<> [...]]]
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Inform a client or a server about an error condition. The first
 | 
				
			||||||
 | 
						parameter, if given, is logged by the server receiving the message,
 | 
				
			||||||
 | 
						all other parameters are silently ignored.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						This command is silently ignored on non-server and non-service links
 | 
				
			||||||
 | 
						and shouldn't be used by regular IRC clients.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						The ERROR message is also sent before terminating a regular client
 | 
				
			||||||
 | 
						connection.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 3.7.4 "Error message"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- METADATA
 | 
				
			||||||
 | 
						METADATA <target> <key> <value>
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						The METADATA command is used on server-links to update "metadata"
 | 
				
			||||||
 | 
						information of clients, like the hostname, the info text ("real name"),
 | 
				
			||||||
 | 
						or the user name.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						The METADATA command is allowed on server-links only.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - IRC+, <http://ngircd.barton.de/doc/Protocol.txt>
 | 
				
			||||||
 | 
						 - IRC+, doc/Protocol.txt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- NJOIN
 | 
				
			||||||
 | 
						NJOIN <channel> [<mode>]<nick>[,[<mode>]<nick>[,...]]
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						The NJOIN command is used on server-links to add users with <nick>
 | 
				
			||||||
 | 
						and <mode> to a <channel> while peering.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						The NJOIN command is allowed on server-links only.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2813, 4.2.2 "Njoin message"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- SERVER
 | 
				
			||||||
 | 
						SERVER <servername> <info>
 | 
				
			||||||
 | 
						SERVER <servername> <hopcount> <info>
 | 
				
			||||||
 | 
						SERVER <servername> <hopcount> <token> <info>
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						The first form registers the local connection as a new server in the
 | 
				
			||||||
 | 
						network, the second (RFC 1459) and third (RFC 2812) form announce a
 | 
				
			||||||
 | 
						new remote server in the network.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						The SERVER command is allowed on unregistered or server-links only.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 1459, 4.1.4 "Server message"
 | 
				
			||||||
 | 
						 - RFC 2813, 4.1.2 "Server message"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- SQUIT
 | 
				
			||||||
 | 
						SQUIT <server> <comment>
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Disconnects an IRC Server from the network.
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						This command is used on server-links, but can be used by IRC Operators
 | 
				
			||||||
 | 
						to forcefully disconnect servers from the network, too.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 3.1.8 "Squit"
 | 
				
			||||||
 | 
						 - RFC 2813, 4.1.6 "Server quit message"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Dummy Commands
 | 
				
			||||||
 | 
					~~~~~~~~~~~~~~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- SUMMON
 | 
				
			||||||
 | 
						SUMMON <user> [<target> [<channel>]]
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						This command was intended to call people into IRC who are directly
 | 
				
			||||||
 | 
						connected to the terminal console of the IRC server -- but is
 | 
				
			||||||
 | 
						deprecated today. Therefore ngIRCd doesn't really implement this
 | 
				
			||||||
 | 
						command and always returns an error message, regardless of the
 | 
				
			||||||
 | 
						parameters given.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 4.5 "Summon message"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- USERS
 | 
				
			||||||
 | 
						USERS [<target>]
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						This command was intended to list users directly logged in into the
 | 
				
			||||||
 | 
						console of the IRC server -- but is deprecated today. Therefore ngIRCd
 | 
				
			||||||
 | 
						doesn't really implement this command and always returns an error
 | 
				
			||||||
 | 
						message, regardless of the parameters given.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - RFC 2812, 4.6 "Users"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- GET
 | 
				
			||||||
 | 
						GET [...]
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Fake HTTP GET command. When received, the connection is shut down
 | 
				
			||||||
 | 
						immediately again to protect against crazy web browsers ...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - ngIRCd GIT commit 33e8c2480649
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- POST
 | 
				
			||||||
 | 
						POST [...]
 | 
				
			||||||
 | 
						.
 | 
				
			||||||
 | 
						Fake HTTP POST command. When received, the connection is shut down
 | 
				
			||||||
 | 
						immediately again to protect against crazy web browsers ...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						References:
 | 
				
			||||||
 | 
						 - ngIRCd GIT commit 33e8c2480649
 | 
				
			||||||
							
								
								
									
										83
									
								
								doc/Container.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								doc/Container.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,83 @@
 | 
				
			|||||||
 | 
					# [ngIRCd](https://ngircd.barton.de) - Container How-To
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The ngIRCd daemon can be run as a containerized application, for example using
 | 
				
			||||||
 | 
					Docker or Podman (the latter being preferred and used in the examples below).
 | 
				
			||||||
 | 
					The container definition file, also known as "Docker file", is bundled with this
 | 
				
			||||||
 | 
					distribution as `contrib/Dockerfile` and based on the official "stable-slim"
 | 
				
			||||||
 | 
					container of the Debian project (see https://hub.docker.com/_/debian).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Building the container
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					You can use the following command to build the ngIRCd container image:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					podman build --format=docker -f contrib/Dockerfile .
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The `Dockerfile` includes a `HEALTHCHECK` directive, which is not supported by
 | 
				
			||||||
 | 
					the default OCI 1.0 image format, therefore we use the "docker" format here.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If you are using Git, you can tag the built image like this (use the ID of the
 | 
				
			||||||
 | 
					newly built image!):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					tag=$(git describe --tags | sed 's/rel-//g')
 | 
				
			||||||
 | 
					podman tag <container_id> "ngircd:${tag}"
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Running the container
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					You can use this command to run the ngIRCd container using Podman, for example:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					podman run --name=ngircd --detach \
 | 
				
			||||||
 | 
					  -p 127.0.0.1:6667:6667 \
 | 
				
			||||||
 | 
					  ngircd:<tag>
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This creates and starts a new container named "ngircd" from the image
 | 
				
			||||||
 | 
					"ngircd:<tag>" (you habe to substitute _<tag>_ with the real tag name here!) and
 | 
				
			||||||
 | 
					maps the host port 6667 on localhost to the port 6667 inside of the container.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Configuring the container
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The ngIRCd inside of the container is installed inside of `/opt/ngircd/` and the
 | 
				
			||||||
 | 
					default drop-in directory is `/opt/ngircd/etc/ngircd.conf.d`. Therefore you can
 | 
				
			||||||
 | 
					map a host folder to this drop-in directory inside of the container and place
 | 
				
			||||||
 | 
					drop-in configuration file(s) in the host path like this:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					mkdir -p /host/path/to/ngircd/conf.d
 | 
				
			||||||
 | 
					touch /host/path/to/ngircd/conf.d/my.conf
 | 
				
			||||||
 | 
					podman run --name=ngircd --detach \
 | 
				
			||||||
 | 
					  -p 127.0.0.1:6667:6667 \
 | 
				
			||||||
 | 
					  -v "/host/path/to/ngircd/conf.d:/opt/ngircd/etc/ngircd.conf.d" \
 | 
				
			||||||
 | 
					  ngircd:<tag>
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Testing the configuration
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					As with the native daemon, it is a very good idea to validate the configuration
 | 
				
			||||||
 | 
					of the daemon after making changes.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					With Docker and Podman, you can pass arguments to the `ngircd` binary inside of
 | 
				
			||||||
 | 
					the container by simply appending it to the "run" command line like this:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					podman run --rm -it \
 | 
				
			||||||
 | 
					  -v "/host/path/to/ngircd/conf.d:/opt/ngircd/etc/ngircd.conf.d" \
 | 
				
			||||||
 | 
					  ngircd:<tag> \
 | 
				
			||||||
 | 
					  --configtest
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Reloading the daemon configuration in a running container
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					To activate changed configuration of ngIRCd, you can either restart the
 | 
				
			||||||
 | 
					container (which will disconnect all currently connected clients) or signal
 | 
				
			||||||
 | 
					`ngircd`(8) inside of the running container to reload its configuration file(s).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The latter can be done with this command, for example:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					podman exec -it ngircd /bin/bash -c 'kill -HUP $(/usr/bin/pidof -s ngircd)'
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
							
								
								
									
										60
									
								
								doc/Contributing.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								doc/Contributing.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,60 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					                     ngIRCd - Next Generation IRC Server
 | 
				
			||||||
 | 
					                           http://ngircd.barton.de/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					               (c)2001-2015 Alexander Barton and Contributors.
 | 
				
			||||||
 | 
					               ngIRCd is free software and published under the
 | 
				
			||||||
 | 
					                   terms of the GNU General Public License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            -- Contributing.txt --
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If you want to contribute to ngIRCd, please read the following paragraphs to
 | 
				
			||||||
 | 
					get an idea of how to do it the best :-)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 - Use GIT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   The source code of ngIRCd is maintained using GIT, see doc/GIT.txt. So if
 | 
				
			||||||
 | 
					   remotely possible, use GIT for your work, too. It makes your and our lives
 | 
				
			||||||
 | 
					   much easier ;-)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 - Don't forget to include documentation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   When adding features and new configuration options, don't forget to not
 | 
				
			||||||
 | 
					   only code the features but to describe them in doc/sample-ngircd.conf,
 | 
				
			||||||
 | 
					   man/ngircd.8.tmp and/or man/ngircd.conf.5.tmpl as well!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 - Be present on IRC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   If you intend to code some new features or do some code cleanups or better
 | 
				
			||||||
 | 
					   documentation, please be present on <irc://irc.barton.de/#ngircd> and
 | 
				
			||||||
 | 
					   discuss your plans early! So other developers have an idea on what others
 | 
				
			||||||
 | 
					   are working on, can offer help, and can synchronize their own work.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 - Check and validate your work!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   Use "make check" to validate your work, and use "make distcheck" to
 | 
				
			||||||
 | 
					   validate the resulting archives, especially when adding/removing files!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 - Send patches in "unified diff" format
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   Please send patches in "unified" format, that is, use "diff -u".
 | 
				
			||||||
 | 
					   Or even better: use GIT ("git diff"), see above.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 - Send patches to the mailing list
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   If you have some code to present, send the patch(es) and/or pointers to
 | 
				
			||||||
 | 
					   your GIT repository to the official ngIRCd mailing list for review, not
 | 
				
			||||||
 | 
					   only to #ngircd: so it becomes archived and more people have a chance to
 | 
				
			||||||
 | 
					   review your patch.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   Sure it is a good idea to post some notes to #ngircd, too! :-)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   And this is open source, your work must not be 100% finished and perfect,
 | 
				
			||||||
 | 
					   work in progress is interesting, too: "release early, release often"!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Use GitHub to create "Pull Requests"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ngIRCd is hosted on GitHub (<https://github.com/ngircd>), so please use the
 | 
				
			||||||
 | 
					  tools available there and open issues (comment!) and create pull requests!
 | 
				
			||||||
 | 
					  See <https://help.github.com/articles/using-pull-requests/> for details.
 | 
				
			||||||
							
								
								
									
										176
									
								
								doc/FAQ.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										176
									
								
								doc/FAQ.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,176 @@
 | 
				
			|||||||
 | 
					# [ngIRCd](https://ngircd.barton.de) - FAQ, Tips & Tricks
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# General
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Is it possible to link ngIRCd with other non-ngIRCd servers?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Yes and no. Back in the beginning (2001, 2002, ...) the server-server protocol
 | 
				
			||||||
 | 
					used by ngIRCd was compatible to the original ircd used by IRCNet at that time,
 | 
				
			||||||
 | 
					version 2.10.3p3. And most probably this is still the case today, although not
 | 
				
			||||||
 | 
					actively tested for a long time.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Please note that newer ircd versions (2.11.x) are *not* compatible any more!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					And other server-server protocols were never supported.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Is there a homepage with further information and downloads?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Yes. Please visit https://ngircd.barton.de :-)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Why should I use ngIRCd instead of the original one?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The `README.md` file and the [homepage](https://ngircd.barton.de) list a few
 | 
				
			||||||
 | 
					advantages of ngIRCd:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Well arranged (lean) configuration file.
 | 
				
			||||||
 | 
					- Simple to build, install, configure, and maintain.
 | 
				
			||||||
 | 
					- Supports IPv6 and SSL.
 | 
				
			||||||
 | 
					- Can use PAM for user authentication.
 | 
				
			||||||
 | 
					- Lots of popular user and channel modes are implemented.
 | 
				
			||||||
 | 
					- Supports "cloaking" of users.
 | 
				
			||||||
 | 
					- No problems with servers that have dynamic IP addresses.
 | 
				
			||||||
 | 
					- Freely available, modern, portable and tidy C source.
 | 
				
			||||||
 | 
					- Wide field of supported platforms, including AIX, A/UX, FreeBSD, HP-UX,
 | 
				
			||||||
 | 
					  IRIX, Linux, macOS, NetBSD, OpenBSD, Solaris and Windows with WSL or Cygwin.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Building and Compilation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## The `./configure` script is missing in the source directory!?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					When using sources checked out via *Git*, the `configure` script as well as the
 | 
				
			||||||
 | 
					`Makefile.in` templates must be generated using the GNU *automake*, *autoconf*
 | 
				
			||||||
 | 
					and *pkg-config* tools. To simplify this task run the `./autogen.sh` script
 | 
				
			||||||
 | 
					which will execute the required commands for you; then continue with executing
 | 
				
			||||||
 | 
					the `./configure` script as usual.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Please see the `INSTALL.md` file for details!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Error message `aclocal: command not found`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GNU *automake* is missing on your system but required for building Git versions
 | 
				
			||||||
 | 
					of ngIRCd. Install GNU automake 1.6 or later and try again.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Error message `autoheader: command not found`?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GNU *autoconf* is missing on your system but required for building Git versions
 | 
				
			||||||
 | 
					of ngIRCd. Install GNU autoconf 2.52 or later and try again.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Error message `automake: configure.in: AM_INIT_AUTOMAKE must be used`?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Most probably you are using version 1.5 of GNU automake which seems to be
 | 
				
			||||||
 | 
					incompatible to the build system of ngIRCd. Solution: upgrade to at least
 | 
				
			||||||
 | 
					version 1.6 of GNU automake.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(If you are using Debian 3.0 "Woody" you can try to downgrade to version 1.4 of
 | 
				
			||||||
 | 
					GNU automake shipped with this distribution; it should work, too.)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Troubleshooting ngIRCd Runtime Issues
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Always start with:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1.  Make sure that ngIRCd parsed its configuration file as it was intended!
 | 
				
			||||||
 | 
					    Run `ngircd --configest` and double-check its output!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					2.  Check the logs of your system, especially the entries generated by ngIRCd!
 | 
				
			||||||
 | 
					    Where you can find the log messages depends on your system and your setup:
 | 
				
			||||||
 | 
					    it can be plain text files in `/var/log/` (syslog) or the systemd journal
 | 
				
			||||||
 | 
					    database, for example.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					3.  Ensure that the daemon started up successfully, is actually running and did
 | 
				
			||||||
 | 
					    not stop/crash in the meantime. You can check this with your service
 | 
				
			||||||
 | 
					    manager (like `systemctl status ngircd` on Linux systems using systemd) or
 | 
				
			||||||
 | 
					    using `pgrep -l ngircd` to check for "ngircd" processes. If ngIRCd is not
 | 
				
			||||||
 | 
					    running, try to restart the service and check the service status and the
 | 
				
			||||||
 | 
					    logs (syslog, systemd journal) again!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Where is the log file stored?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See introduction to this section above :-)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## "Connection refused" errors
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1.  Is the daemon really running? See introduction to this section above!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					2.  Does ngIRCd listen on the correct interface(s) and port(s)? On Linux, you
 | 
				
			||||||
 | 
					    can check this with `sudo ss -ltnp|awk '/ngircd/{print $4}`, for example.
 | 
				
			||||||
 | 
					    Check your `Listen` and `Ports` settings in the `[Global]` (and `[SSL]`)
 | 
				
			||||||
 | 
					    sections and the startup messages of the daemon, especially the lines
 | 
				
			||||||
 | 
					    stating "Now listening on xxx:yyy (socket zzz)"!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					3.  Are you able to connect to the ngIRCd service locally from the system the
 | 
				
			||||||
 | 
					    daemon runs on? Test all the interface IP addresses you expect ngIRCd to
 | 
				
			||||||
 | 
					    listen on, for example with a regular IRC client or tools like `telnet` or
 | 
				
			||||||
 | 
					    `nc` ("net cat"): `telnet localhost 6667`, `nc 192.168.1.2 6667`, ...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    If all the above works as expected, the issue most probably is not with
 | 
				
			||||||
 | 
					    ngIRCd or its configuration but the network layer.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					4.  Are the port(s) ngIRCd listens on open and not blocked by a firewall? Check
 | 
				
			||||||
 | 
					    the logs of your firewall solution (on the server itself and all firewalls
 | 
				
			||||||
 | 
					    "in front of it") and use tools like `tcpdump` to check the network layer!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Issues related to running ngIRCd inside of a `chroot` environment
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**I cannot connect to remote peers when I use the chroot option, the following
 | 
				
			||||||
 | 
					is logged: `Can't resolve example.com: unknown error!`**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See next question blow ...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**When running ngIRCd inside a chroot, no IP addresses can be translated in DNS
 | 
				
			||||||
 | 
					names, errors like "Name or service not known" are logged!**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					On Linux/glibc with chroot enabled you need to put some libraries inside
 | 
				
			||||||
 | 
					the chroot as well, notably `libnss_dns`; maybe others. Unfortunately, even
 | 
				
			||||||
 | 
					linking ngIRCd statically does not help this. So you can either copy
 | 
				
			||||||
 | 
					all the required files into the chroot directory:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					``` bash
 | 
				
			||||||
 | 
					mkdir -p ./chroot/etc ./chroot/lib
 | 
				
			||||||
 | 
					cp -a /etc/hosts /etc/resolv.conf /etc/nsswitch.conf ./chroot/etc/
 | 
				
			||||||
 | 
					cp -a /lib/libresolv* /lib/libnss_* ./chroot/lib/
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Or you can try to link ngIRCd against an other C library (like dietlibc) that do
 | 
				
			||||||
 | 
					not depend on NSS modules and these files.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# IRC Features
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## I have added an `[Oper]` section, but how do I log in as an IRC operator?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					You can use the `/OPER <name> <password>` command in your IRC client to become
 | 
				
			||||||
 | 
					an IRC operator as defined in an `[Oper]` block in your configuration file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngIRCd will also log all OPER requests (using syslog), and if an OPER command
 | 
				
			||||||
 | 
					fails you can look there to determine why it did not work (bad password,
 | 
				
			||||||
 | 
					unauthorized host mask, ...).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Please keep in mind that the "name" in the `/OPER` command is *not* related to
 | 
				
			||||||
 | 
					your nick name at all!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## I am an IRC operator, but MODE doesn't work!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					By default, IRC operators are still not allowed to use `/MODE` globally.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If you set `OperCanUseMode = yes` in your configuration, then IRC operators can
 | 
				
			||||||
 | 
					use the `/MODE` command for changing modes even when they are not joined to the
 | 
				
			||||||
 | 
					specific channel.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## How can I "auto-op" users in channels?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngIRCd can't do this: you would have to use some "IRC Services", like
 | 
				
			||||||
 | 
					[Atheme](http://atheme.net/atheme.html) or [Anope](http://www.anope.org).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See `doc/Services.txt` for setup instructions.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Bugs!?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Is there a list of known bugs and desired feature enhancements?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Yes. Have a look at the bug tracking system (GitHub issues) for ngIRCd located
 | 
				
			||||||
 | 
					at <https://github.com/ngircd/ngircd/issues>. There you can file bug reports and
 | 
				
			||||||
 | 
					feature requests as well as search the bug database.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## What should I do if I found a bug?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Please file a bug report at <https://github.com/ngircd/ngircd/issues/new>!
 | 
				
			||||||
 | 
					The authors will be notified automagically :-)
 | 
				
			||||||
							
								
								
									
										61
									
								
								doc/FAQ.txt
									
									
									
									
									
								
							
							
						
						
									
										61
									
								
								doc/FAQ.txt
									
									
									
									
									
								
							@@ -1,61 +0,0 @@
 | 
				
			|||||||
 | 
					 | 
				
			||||||
                     ngIRCd - Next Generation IRC Server
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                      (c)2001,2002 by Alexander Barton,
 | 
					 | 
				
			||||||
                    alex@barton.de, http://www.barton.de/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                  ngIRCd ist freie Software und steht unter
 | 
					 | 
				
			||||||
                       der GNU General Public License.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    -- FAQ: Frequently Asked Questions --
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
I. Allgemein
 | 
					 | 
				
			||||||
~~~~~~~~~~~~
 | 
					 | 
				
			||||||
Q: Kann der ngIRCd im Netz zusammen mit "normalen" Servern betrieben werden?
 | 
					 | 
				
			||||||
A: Ja. ngIRCd ist zum Original kompatibel, getestet wird dies zur Zeit mit
 | 
					 | 
				
			||||||
   der Version 2.10.3p3 des ircd.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Q: Gibt es eine Homepage mit Informationen und Downloads?
 | 
					 | 
				
			||||||
A: Ja. Die URL ist <http://arthur.ath.cx/~alex/ngircd/>.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
II. Compilieren
 | 
					 | 
				
			||||||
~~~~~~~~~~~~~~~
 | 
					 | 
				
			||||||
Q: Ich habe die Sourcen von ngIRCd ueber CVS installiert. Nun kann ich
 | 
					 | 
				
			||||||
   ./configure nicht ausfuehren, da es nicht existiert!?
 | 
					 | 
				
			||||||
A: Bei Builds direkt aus dem CVS-Tree muss das configure-Script zunaechst
 | 
					 | 
				
			||||||
   durch GNU autoconf sowie die Makefile.in's durch GNU automake generiert
 | 
					 | 
				
			||||||
   werden. Um dies zu vereinfachen existiert das Script "./autogen.sh".
 | 
					 | 
				
			||||||
   GNU automake und GNU autoconf werden -- im Gegensatz zu Builds aus den
 | 
					 | 
				
			||||||
   Sourcen eines .tar.gz-Archivs -- hierbei benoetigt!
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Q: ./autogen.sh bricht mit der Meldung "autoheader: command not found" ab.
 | 
					 | 
				
			||||||
A: GNU autoconf ist nicht installiert, wird jedoch bei Builds direkt aus
 | 
					 | 
				
			||||||
   dem CVS-Tree benoetigt.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Q: ./autogen.sh bricht mit der Meldung "autoconf: Undefined macros:
 | 
					 | 
				
			||||||
   AC_FUNC_MALLOC" bzw. "AC_CONFIG_SRCDIR" ab.
 | 
					 | 
				
			||||||
A: Auf dem System ist eine zu alte Version von GNU autoconf installiert.
 | 
					 | 
				
			||||||
   Ein Update auf z.B. Version 2.52 loest dieses Problem (eine installiete
 | 
					 | 
				
			||||||
   alte Version sollte ggf. zunaechst entfernt werden, bei RPM-Paketen z.B.
 | 
					 | 
				
			||||||
   mit dem Befehl "rpm -e autoconf").
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
III. Bugs!?
 | 
					 | 
				
			||||||
~~~~~~~~~~~
 | 
					 | 
				
			||||||
Q: Gibt es eine Liste der bekannten Bugs bzw. Feature-Wuensche?
 | 
					 | 
				
			||||||
A: Ja. Es existiert ein Bug-Tracking-System fuer den ngIRCd (Bugzilla):
 | 
					 | 
				
			||||||
   URL: <http://arthur.ath.cx/bugzilla/ngircd/>. Dort koennen Bugs ge-
 | 
					 | 
				
			||||||
   meldet und Feature-Wunsche kundgetan werden. Bekannte Bugs koennen in
 | 
					 | 
				
			||||||
   der Datenbank gesucht und aufgelistet werden.
 | 
					 | 
				
			||||||
   Einen Account zum Suchen und Melden von Bugs bzw. Feature-Wuenschen
 | 
					 | 
				
			||||||
   kannst du dir dort selber anlegen.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Q: Was mache ich, wenn ich einen Bug gefunden habe?
 | 
					 | 
				
			||||||
A: Am besten traegst du ihn in das Bug-Tracking-System des ngIRCd ein:
 | 
					 | 
				
			||||||
   URL: <http://arthur.ath.cx/bugzilla/ngircd/>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
-- 
 | 
					 | 
				
			||||||
$Id: FAQ.txt,v 1.2 2002/02/19 20:05:02 alex Exp $
 | 
					 | 
				
			||||||
							
								
								
									
										89
									
								
								doc/HowToRelease.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								doc/HowToRelease.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,89 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					                     ngIRCd - Next Generation IRC Server
 | 
				
			||||||
 | 
					                           http://ngircd.barton.de/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					               (c)2001-2024 Alexander Barton and Contributors.
 | 
				
			||||||
 | 
					               ngIRCd is free software and published under the
 | 
				
			||||||
 | 
					                   terms of the GNU General Public License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            -- HowToRelease.txt --
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					I. Introduction
 | 
				
			||||||
 | 
					~~~~~~~~~~~~~~~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Creating a new ngIRCd release requires a few steps to follow: the source
 | 
				
			||||||
 | 
					tree must be in a releasable state (be up to date, include all required
 | 
				
			||||||
 | 
					patches, be tested on as many platforms as possible), a name for the new
 | 
				
			||||||
 | 
					release must be chosen, and all the files describing the release must be
 | 
				
			||||||
 | 
					updated accordingly.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Since ngIRCd release 13 (2009-12-25) we use "simple" release numbers for
 | 
				
			||||||
 | 
					major releases (e.g. "13", "17", "42", ...) introducing new features and
 | 
				
			||||||
 | 
					sub-releases for bug fixes only (e.g. "14.1", "22.3", ...).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					When creating pre-releases or release candidates, please use the tilde ("~")
 | 
				
			||||||
 | 
					character to separate the "postfix" in the release number (e.g. "17~rc2"
 | 
				
			||||||
 | 
					or "123.4~rc6").
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The release/version number of a build is automatically generated using the
 | 
				
			||||||
 | 
					GIT "describe" command, see git-describe(1). Therefore it is required that
 | 
				
			||||||
 | 
					a new release is tagged in the GIT tree and that the configure script is
 | 
				
			||||||
 | 
					up-to-date (e.g. using ./autogen.sh) before generating the archives!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					II. How to prepare a new ngIRCd release?
 | 
				
			||||||
 | 
					~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					a) Make sure you have working versions of GNU autoconf and GNU automake
 | 
				
			||||||
 | 
					   installed on the system you use for generating the release:
 | 
				
			||||||
 | 
					   as of May 2020 we are using GNU autoconf 2.69 and GNU automake 1.11.6
 | 
				
			||||||
 | 
					   which seem to work just fine.
 | 
				
			||||||
 | 
					   NOTE: new releases of GNU automake DO NOT work, as they lack support for
 | 
				
			||||||
 | 
					   the "ansi2knr" wrapper and "de-ANSI-fication" support!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					b) Make sure the source tree is in a releasable state ;-)
 | 
				
			||||||
 | 
					    - Are all branches & patches merged? Check GitHub issues, pull requests
 | 
				
			||||||
 | 
					      and milestones!
 | 
				
			||||||
 | 
					    - Run as many tests as you can!
 | 
				
			||||||
 | 
					    - Is the AUTHORS.md file up to date? This command may be helpful:
 | 
				
			||||||
 | 
					      "( grep '>$' AUTHORS.md; git shortlog -se|cut -c8-|sed 's/^/- /' ) \
 | 
				
			||||||
 | 
					        | grep -Ev '(alex@barton.de|fw@strlen.de)' \
 | 
				
			||||||
 | 
					        | LC_ALL=de_DE.UTF-8 sort -u"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					c) Update the files describing the new release:
 | 
				
			||||||
 | 
					    - ChangeLog
 | 
				
			||||||
 | 
					    - NEWS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					d) Update the version numbers in the following files:
 | 
				
			||||||
 | 
					    - contrib/de.barton.ngircd.metainfo.xml
 | 
				
			||||||
 | 
					    - contrib/ngircd.spec
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					e) Generate a new Debian change log entry in the following file, e.g. using
 | 
				
			||||||
 | 
					   the Debian "dch" tool of the "devscripts" package:
 | 
				
			||||||
 | 
					    - contrib/Debian/changelog
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					f) Commit the above changes to GIT: "git add", "git commit"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					g) Create a new signed GIT tag for the new release: "git tag -s".
 | 
				
			||||||
 | 
					   Please note that we don't use the tilde ("~") here, instead use a simple
 | 
				
			||||||
 | 
					   hyphen ("-") as delimiter: e.g. "rel-16" "rel-17-rc1", "rel-18-pre2", ...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					h) Run "./autogen.sh" to update the ./configure script with the correct
 | 
				
			||||||
 | 
					   release number (autogenerated using "git describe", see above).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					i) Run "./configure" to rebuild all generated Makefiles.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					j) Run "make distcheck" (and "make dist-tarZ && make dist-xz") to generate all
 | 
				
			||||||
 | 
					   of the distribution archives.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					k) Sign the distribution archive(s) using GnuPG: "gpg -b <archivefile>"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					l) Upload and distribute the newly generated ngIRCd release archive(s)
 | 
				
			||||||
 | 
					   and GnuPG signatures (to the website, its mirrors, and GitHub).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					m) Update the ngIRCd website and its mirrors!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					n) Write an announcement to the mailing list, Twitter, ...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					o) Relax :-)
 | 
				
			||||||
@@ -1,27 +1,92 @@
 | 
				
			|||||||
#
 | 
					#
 | 
				
			||||||
# ngIRCd -- The Next Generation IRC Daemon
 | 
					# ngIRCd -- The Next Generation IRC Daemon
 | 
				
			||||||
# Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
 | 
					# Copyright (c)2001-2024 Alexander Barton (alex@barton.de) and Contributors
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
 | 
					# This program is free software; you can redistribute it and/or modify
 | 
				
			||||||
# der GNU General Public License (GPL), wie von der Free Software Foundation
 | 
					# it under the terms of the GNU General Public License as published by
 | 
				
			||||||
# herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2
 | 
					# the Free Software Foundation; either version 2 of the License, or
 | 
				
			||||||
# der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version.
 | 
					# (at your option) any later version.
 | 
				
			||||||
# Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
 | 
					# Please read the file COPYING, README and AUTHORS for more information.
 | 
				
			||||||
# der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# $Id: Makefile.am,v 1.7 2002/03/30 15:33:14 alex Exp $
 | 
					 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EXTRA_DIST = CC-Speed.txt CVS.txt FAQ.txt README-AUX.txt README-BeOS.txt \
 | 
					.tmpl:
 | 
				
			||||||
	RFC.txt sample-ngircd.conf
 | 
						$(AM_V_GEN)sed \
 | 
				
			||||||
 | 
						    -e "s@:ETCDIR:@${sysconfdir}@" \
 | 
				
			||||||
 | 
						    -e "s@:DOCDIR:@${docdir}@" \
 | 
				
			||||||
 | 
						    <$< >$@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SUFFIXES = .tmpl
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static_docs = \
 | 
				
			||||||
 | 
						Bopm.txt \
 | 
				
			||||||
 | 
						Capabilities.txt \
 | 
				
			||||||
 | 
						Commands.txt \
 | 
				
			||||||
 | 
						Container.md \
 | 
				
			||||||
 | 
						Contributing.txt \
 | 
				
			||||||
 | 
						FAQ.md \
 | 
				
			||||||
 | 
						HowToRelease.txt \
 | 
				
			||||||
 | 
						Modes.txt \
 | 
				
			||||||
 | 
						PAM.txt \
 | 
				
			||||||
 | 
						Platforms.txt \
 | 
				
			||||||
 | 
						Protocol.txt \
 | 
				
			||||||
 | 
						README-AUX.txt \
 | 
				
			||||||
 | 
						README-BeOS.txt \
 | 
				
			||||||
 | 
						README-Interix.txt \
 | 
				
			||||||
 | 
						RFC.txt \
 | 
				
			||||||
 | 
						Services.txt \
 | 
				
			||||||
 | 
						SSL.md
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					doc_templates = sample-ngircd.conf.tmpl
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					generated_docs = sample-ngircd.conf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					toplevel_docs = ../AUTHORS.md ../COPYING ../ChangeLog ../INSTALL.md ../NEWS ../README.md
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SUBDIRS = src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXTRA_DIST = $(static_docs) $(doc_templates)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CLEANFILES = $(generated_docs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
maintainer-clean-local:
 | 
					maintainer-clean-local:
 | 
				
			||||||
	rm -f Makefile Makefile.in
 | 
						rm -f Makefile Makefile.in
 | 
				
			||||||
 | 
					
 | 
				
			||||||
install-data-hook:
 | 
					all: $(generated_docs)
 | 
				
			||||||
	$(mkinstalldirs) $(DESTDIR)$(sysconfdir)
 | 
					
 | 
				
			||||||
	if [ ! -f $(DESTDIR)$(sysconfdir)/ngircd.conf ]; then \
 | 
					install-data-hook: $(static_docs) $(toplevel_docs) $(generated_docs)
 | 
				
			||||||
	  $(INSTALL) -m 600 -c $(srcdir)/sample-ngircd.conf $(DESTDIR)$(sysconfdir)/ngircd.conf; \
 | 
						$(MKDIR_P) -m 755 $(DESTDIR)$(sysconfdir)
 | 
				
			||||||
	  fi
 | 
						@if [ ! -f $(DESTDIR)$(sysconfdir)/ngircd.conf ]; then \
 | 
				
			||||||
 | 
						  ${MAKE} install-config; \
 | 
				
			||||||
 | 
						 fi
 | 
				
			||||||
 | 
						$(MKDIR_P) -m 755 $(DESTDIR)$(docdir)
 | 
				
			||||||
 | 
						for f in $(static_docs) $(toplevel_docs); do \
 | 
				
			||||||
 | 
						  $(INSTALL) -m 644 -c $(srcdir)/$$f $(DESTDIR)$(docdir)/; \
 | 
				
			||||||
 | 
						 done
 | 
				
			||||||
 | 
						for f in $(generated_docs); do \
 | 
				
			||||||
 | 
						  $(INSTALL) -m 644 -c $$f $(DESTDIR)$(docdir)/; \
 | 
				
			||||||
 | 
						 done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					install-config:
 | 
				
			||||||
 | 
						$(INSTALL) -m 600 -c sample-ngircd.conf $(DESTDIR)$(sysconfdir)/ngircd.conf
 | 
				
			||||||
 | 
						@echo; \
 | 
				
			||||||
 | 
						 echo " ** NOTE: Installed sample configuration file:"; \
 | 
				
			||||||
 | 
						 echo " ** \"$(DESTDIR)$(sysconfdir)/ngircd.conf\""; \
 | 
				
			||||||
 | 
						 echo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					uninstall-hook:
 | 
				
			||||||
 | 
						rm -rf $(DESTDIR)$(docdir)
 | 
				
			||||||
 | 
						@if cmp --silent sample-ngircd.conf $(DESTDIR)$(sysconfdir)/ngircd.conf; then \
 | 
				
			||||||
 | 
						  ${MAKE} uninstall-config; \
 | 
				
			||||||
 | 
						 else \
 | 
				
			||||||
 | 
						  echo; \
 | 
				
			||||||
 | 
						  echo " ** NOTE: Not uninstalling changed configuration file:"; \
 | 
				
			||||||
 | 
						  echo " ** \"$(DESTDIR)$(sysconfdir)/ngircd.conf\""; \
 | 
				
			||||||
 | 
						  echo; \
 | 
				
			||||||
 | 
						 fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					uninstall-config:
 | 
				
			||||||
 | 
						rm -f $(DESTDIR)$(sysconfdir)/ngircd.conf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.PHONY: install-config uninstall-config
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# -eof-
 | 
					# -eof-
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										95
									
								
								doc/Modes.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										95
									
								
								doc/Modes.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,95 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					                     ngIRCd - Next Generation IRC Server
 | 
				
			||||||
 | 
					                           http://ngircd.barton.de/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					               (c)2001-2015 Alexander Barton and Contributors.
 | 
				
			||||||
 | 
					               ngIRCd is free software and published under the
 | 
				
			||||||
 | 
					                   terms of the GNU General Public License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                               -- Modes.txt --
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This document lists the different user modes, channel modes, and channel
 | 
				
			||||||
 | 
					user modes that ngIRCd supports.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					I. User Modes
 | 
				
			||||||
 | 
					~~~~~~~~~~~~~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					User modes are attributes a user has in the network, regardless of the
 | 
				
			||||||
 | 
					channels he is using at the moment.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  mode	since	description
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  a	0.3.0	User is away.
 | 
				
			||||||
 | 
					  b	20	User blocks private messages and notices.
 | 
				
			||||||
 | 
					  B	20	User is flagged as a "bot".
 | 
				
			||||||
 | 
					  c	17	IRC operator wants to receive connect/disconnect NOTICEs.
 | 
				
			||||||
 | 
					  C	19	Only users that share a channel are allowed to send messages.
 | 
				
			||||||
 | 
					  F	22	Relaxed flood protection (only settable by IRC Operators).
 | 
				
			||||||
 | 
					  i	0.0.1	User is "invisible".
 | 
				
			||||||
 | 
					  I	23	No channels are shown on WHOIS (IRC Ops can always see those).
 | 
				
			||||||
 | 
					  o	0.0.1	User is IRC operator.
 | 
				
			||||||
 | 
					  q	20	User is protected, can not be kicked from a channel.
 | 
				
			||||||
 | 
					  r	0.0.1	User is restricted.
 | 
				
			||||||
 | 
					  R (1)	19	User is registered (e.g. by NickServ).
 | 
				
			||||||
 | 
					  s	0.4.0	User wants to receive server notices.
 | 
				
			||||||
 | 
					  w	0.11.0	User wants to receive WALLOPS messages.
 | 
				
			||||||
 | 
					  x	17	Hostname of this user is "cloaked".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					II. Channel Modes
 | 
				
			||||||
 | 
					~~~~~~~~~~~~~~~~~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Channel modes are attributes of specific channels which are valid for all
 | 
				
			||||||
 | 
					users joined (or trying to join) to this channel. Some modes add and remove
 | 
				
			||||||
 | 
					users to lists (e.g. "invite list", "ban list"), others have parameters
 | 
				
			||||||
 | 
					(like "channel key"), most are simple flags (like "moderated").
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  mode	since	description
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  b	0.5.0	Add/remove a host mask to the ban list.
 | 
				
			||||||
 | 
					  e	19	Add/remove a host mask to the exception list.
 | 
				
			||||||
 | 
					  i	0.5.0	Channel is "invite only".
 | 
				
			||||||
 | 
					  I	0.5.0	Add/remove a host mask to the invite list.
 | 
				
			||||||
 | 
					  k	0.6.0	Channel has a "key" (a password).
 | 
				
			||||||
 | 
					  l	0.6.0	Channel has a user limit.
 | 
				
			||||||
 | 
					  m	0.3.0	Channel is moderated, only "voiced" users can send messages.
 | 
				
			||||||
 | 
					  M	20	Only registered users (and IRC Ops) can send messages.
 | 
				
			||||||
 | 
					  n	0.3.0	Channel doesn't allow messages of users not being members.
 | 
				
			||||||
 | 
					  N     23      Users can't change their nickname while on this channel.
 | 
				
			||||||
 | 
					  O	18	Only IRC operators are allowed to join this channel.
 | 
				
			||||||
 | 
					  P	0.5.0	Channel is "persistent".
 | 
				
			||||||
 | 
					  Q	20	Nobody can be kicked from the channel.
 | 
				
			||||||
 | 
					  r (1)	19	Channel is "registered" (e.g. by ChanServ).
 | 
				
			||||||
 | 
					  R	19	Only registered users are allowed to join this channel.
 | 
				
			||||||
 | 
					  s	0.9.0	Channel is "secret".
 | 
				
			||||||
 | 
					  t	0.3.0	Only ChanOps are allowed to modify the channel topic.
 | 
				
			||||||
 | 
					  V	20	Channel doesn't allow invites.
 | 
				
			||||||
 | 
					  z	16	Only users connected via SSL are allowed to join the channel.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					III. Channel User Modes
 | 
				
			||||||
 | 
					~~~~~~~~~~~~~~~~~~~~~~~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Channel user modes are attributes that a particular user has in a specific
 | 
				
			||||||
 | 
					channel of which he is a member.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  mode	since	description
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  q	20	User is channel owner. This mode can only be set by an IRC
 | 
				
			||||||
 | 
							service, other owner or IRC operator. Channel owners can
 | 
				
			||||||
 | 
							promote other users to all levels: q, a, o, h, v. Prefix: "~".
 | 
				
			||||||
 | 
					  a	20	User is channel admin and can promote other users to v, h, o.
 | 
				
			||||||
 | 
							Prefix: "&".
 | 
				
			||||||
 | 
					  o	0.2.0	User is channel operator and can op/kick/... other members.
 | 
				
			||||||
 | 
							Prefix: "@".
 | 
				
			||||||
 | 
					  h	20	User is half op and can set channel modes imntvIbek and kick
 | 
				
			||||||
 | 
							voiced and normal users. Prefix: "%".
 | 
				
			||||||
 | 
					  v	0.2.0	User is "voiced" and can speak even if channel is moderated.
 | 
				
			||||||
 | 
							Prefix: "+".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Notes
 | 
				
			||||||
 | 
					~~~~~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(1) This mode is not set by ngIRCd itself but by services. ngIRCd handles
 | 
				
			||||||
 | 
					    the mode transparently and possibly adjusts its behavior.
 | 
				
			||||||
							
								
								
									
										49
									
								
								doc/PAM.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								doc/PAM.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,49 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					                     ngIRCd - Next Generation IRC Server
 | 
				
			||||||
 | 
					                           http://ngircd.barton.de/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					               (c)2001-2013 Alexander Barton and Contributors.
 | 
				
			||||||
 | 
					               ngIRCd is free software and published under the
 | 
				
			||||||
 | 
					                   terms of the GNU General Public License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                 -- PAM.txt --
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngIRCd can optionally be compiled to use PAM, the Pluggable Authentication
 | 
				
			||||||
 | 
					Modules library, for user authentication. When compiled with PAM support,
 | 
				
			||||||
 | 
					ngIRCd will authenticate all users connecting to the daemon using the
 | 
				
			||||||
 | 
					configured PAM modules in an asynchronous child process.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					To enable PAM, you have to pass the command line parameter "--with-pam" to
 | 
				
			||||||
 | 
					the "configure" script. Please see the PAM documentation ("man 7 pam") for
 | 
				
			||||||
 | 
					details and information about configuring PAM and its individual modules.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					A very simple -- and quite useless ;-) -- example would be:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/etc/pam.d/ngircd:
 | 
				
			||||||
 | 
						  auth  required  pam_debug.so
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Here the "pam_debug" module will be called each time a client connects to
 | 
				
			||||||
 | 
					the ngIRCd and has sent its PASS, NICK, and USER commands.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The PAM library used by the ngIRCd daemon must be able to access its
 | 
				
			||||||
 | 
					configuration file, so don't forget to check permissions and run something
 | 
				
			||||||
 | 
					like this: "chmod 644 /etc/pam.d/ngircd".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Please note ONE VERY IMPORTANT THING:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					All the PAM modules are executed with the privileges of the user ngIRCd
 | 
				
			||||||
 | 
					is running as. Therefore a lot of PAM modules aren't working as expected,
 | 
				
			||||||
 | 
					because they need root privileges ("pam_unix", for example)!
 | 
				
			||||||
 | 
					Only PAM modules not(!) requiring root privileges (such as "pam_pgsql",
 | 
				
			||||||
 | 
					"pam_mysql", "pam_opendirectory" ...) can be used in conjunction with ngIRCd.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					More Examples:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 * Use an own "password file" for ngIRCd:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   Note: you can use the htpasswd(1) utility of Apache to manage password
 | 
				
			||||||
 | 
					   files used by pam_pwdfile, see "man htpasswd"!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/etc/pam.d/ngircd:
 | 
				
			||||||
 | 
						  auth  required  pam_pwdfile.so pwdfile=/etc/ngircd/ngircd.passwd
 | 
				
			||||||
							
								
								
									
										175
									
								
								doc/Platforms.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										175
									
								
								doc/Platforms.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,175 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					                     ngIRCd - Next Generation IRC Server
 | 
				
			||||||
 | 
					                           http://ngircd.barton.de/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					               (c)2001-2020 Alexander Barton and Contributors.
 | 
				
			||||||
 | 
					               ngIRCd is free software and published under the
 | 
				
			||||||
 | 
					                   terms of the GNU General Public License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                              -- Platforms.txt --
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This file lists the status of all platforms on which ngIRCd has been tested.
 | 
				
			||||||
 | 
					Included is the date and version of the last test and the name of the tester
 | 
				
			||||||
 | 
					or maintainer.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If you successfully compiled and tested ngIRCd on a platform that isn't listed
 | 
				
			||||||
 | 
					here, please write to the mailing list so that this list can be updated.  The
 | 
				
			||||||
 | 
					script "./contrib/platformtest.sh" should output a summary that is suitable
 | 
				
			||||||
 | 
					for inclusion here. Thanks for your help!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                the executable works ("runs") as expected --+
 | 
				
			||||||
 | 
					                                  tests run successfully ("make check") --+ |
 | 
				
			||||||
 | 
					                                             ngIRCd compiles ("make") --+ | |
 | 
				
			||||||
 | 
					                                                  ./configure works --+ | | |
 | 
				
			||||||
 | 
					                                                                      | | | |
 | 
				
			||||||
 | 
					Platform                    Compiler     ngIRCd     Date     Tester   C M T R *
 | 
				
			||||||
 | 
					--------------------------- ------------ ---------- -------- -------- - - - - -
 | 
				
			||||||
 | 
					aarch64/apple/darwin        A-clang 12.0 26         20-12-10 goetz    N Y Y Y 3
 | 
				
			||||||
 | 
					aarch64/apple/darwin23.4.0  A-clang 15.0 26.1~131   24-04-01 alex     Y Y Y Y 3
 | 
				
			||||||
 | 
					alpha/unknown/netbsd3.0     gcc 3.3.3    CVSHEAD    06-05-07 fw       Y Y Y Y 3
 | 
				
			||||||
 | 
					armv6l/unk./linux-gnueabi   gcc 4.7.2    20.2       13-03-08 goetz    Y Y Y Y 5
 | 
				
			||||||
 | 
					armv6l/unk./linux-gnueabihf gcc 4.6.3    21~rc2     13-10-26 pi       Y Y Y Y 5
 | 
				
			||||||
 | 
					armv7l/unk./linux-gnueabi   gcc 4.4.3    19.1       12-04-29 goetz    Y Y Y Y 5
 | 
				
			||||||
 | 
					armv7l/unk./linux-gnueabihf gcc 4.6.3    22~rc1-3   14-10-10 alex     Y Y Y Y 5
 | 
				
			||||||
 | 
					armv7l/unk./linux-gnueabihf gcc 4.8.2    21.1       14-07-15 goetz    Y Y Y Y 5
 | 
				
			||||||
 | 
					armv7l/unk./linux-gnueabihf gcc 4.9.2    23         16-01-10 alex     Y Y Y Y 5
 | 
				
			||||||
 | 
					hppa/unknown/openbsd3.5     gcc 2.95.3   CVSHEAD    04-05-25 alex     Y Y Y Y
 | 
				
			||||||
 | 
					hppa/unknown/openbsd5.4     gcc 4.2.1    22~rc1-3   14-10-10 alex     Y Y y Y 3
 | 
				
			||||||
 | 
					hppa1.1/unknown/linux-gnu   gcc 3.3.3    0.8.0      04-05-30 alex     Y Y Y Y
 | 
				
			||||||
 | 
					hppa2.0/unknown/linux-gnu   gcc 3.3.5    13~rc1     08-12-02 alex     Y Y Y Y
 | 
				
			||||||
 | 
					hppa2.0w-hp-hpux11.11       gcc 4.2.3    14.1       09-07-22 goetz    Y Y Y Y
 | 
				
			||||||
 | 
					i386/apple/darwin9.7.0      gcc 4.0.1    14.1       09-08-04 alex     Y Y Y Y 3
 | 
				
			||||||
 | 
					i386/apple/darwin10.8.0     gcc 4.2.1    19         12-02-26 alex     Y Y Y Y 3
 | 
				
			||||||
 | 
					i386/apple/darwin11.3.0     gcc 4.2.1    19         12-02-26 alex     Y Y Y Y 3
 | 
				
			||||||
 | 
					i386/pc/linux-gnu           gcc 4.1.2    13~rc1     08-12-05 alex     Y Y Y Y 1
 | 
				
			||||||
 | 
					i386/pc/linux-gnu           gcc 4.4.5    22~rc1-3   14-10-10 alex     Y Y Y Y 1
 | 
				
			||||||
 | 
					i386/pc/minix               clang 3.4    23         16-01-06 goetz    Y Y N Y
 | 
				
			||||||
 | 
					i386/pc/solaris2.9          gcc 3.2.2    CVSHEAD    04-02-24 alex     Y Y Y Y
 | 
				
			||||||
 | 
					i386/pc/solaris2.11         gcc 4.8.2    24         17-01-21 goetz    Y Y Y Y 4
 | 
				
			||||||
 | 
					i386/unknown/freebsd5.2.1   gcc 3.3.3    0.8.0      04-05-30 alex     Y Y Y Y
 | 
				
			||||||
 | 
					i386/unknown/freebsd6.2     gcc 3.4.6    20~rc1     12-11-13 alex     Y Y Y Y 3
 | 
				
			||||||
 | 
					i386/unknown/freebsd7.3     gcc 4.2.1    24~rc1-7   17-01-20 alex     Y Y Y Y 3
 | 
				
			||||||
 | 
					i386/unknown/netbsdelf1.5.2 egcs-1.1.2   21         13-11-25 goetz    Y Y N Y
 | 
				
			||||||
 | 
					i386/unknown/netbsdelf1.6.2 gcc 2.95.3   18         11-07-10 goetz    Y Y Y Y
 | 
				
			||||||
 | 
					i386/unknown/netbsdelf3.0.1 gcc 3.3.3    0.10.0-p1  06-08-30 alex     Y Y Y Y 3
 | 
				
			||||||
 | 
					i386/unknown/netbsdelf4.0   gcc 4.1.2    24~rc1-7   17-01-20 alex     Y Y Y Y 3
 | 
				
			||||||
 | 
					i386/unknown/netbsdelf5.0.2 gcc 4.1.3    19         12-02-26 alex     Y Y Y Y 3
 | 
				
			||||||
 | 
					i386/unknown/openbsd3.5     gcc 2.95.3   23         15-11-27 goetz    Y Y y Y 3
 | 
				
			||||||
 | 
					i386/unknown/openbsd3.9     gcc 3.3.5    0.10.0-p1  06-08-30 alex     Y Y Y Y 3
 | 
				
			||||||
 | 
					i386/unknown/openbsd4.1     gcc 3.3.5    16         10-04-11 alex     Y Y Y Y 3
 | 
				
			||||||
 | 
					i386/unknown/openbsd5.3     gcc 4.2.1    21         13-11-28 goetz    Y Y Y Y 3
 | 
				
			||||||
 | 
					i386/unknown/openbsd5.4     gcc 4.2.1    21         13-11-28 goetz    Y Y Y Y 3
 | 
				
			||||||
 | 
					i586/pc/haiku               gcc 2.95.3   19.2~138   12-10-11 user     Y Y N N
 | 
				
			||||||
 | 
					i586/pc/interix3.5          gcc 3.3      23         16-01-29 alex     Y Y N Y
 | 
				
			||||||
 | 
					i686/pc/cygwin              gcc 4.9.3    23         16-01-06 alex     Y Y Y Y
 | 
				
			||||||
 | 
					i686/pc/linux-gnu           gcc 2.6.3    23         16-01-06 goetz    Y Y y Y 1
 | 
				
			||||||
 | 
					i686/pc/linux-gnu           gcc 2.7.2.1  23         15-11-30 goetz    Y Y N Y 1
 | 
				
			||||||
 | 
					i686/pc/linux-gnu           gcc 2.95.2   23         15-12-23 goetz    Y Y Y Y 1
 | 
				
			||||||
 | 
					i686/pc/linux-gnu           gcc 2.95.4   0.8.0      04-05-30 alex     Y Y Y Y 1
 | 
				
			||||||
 | 
					i686/pc/linux-gnu           gcc 3.3.5    14.1       09-08-04 alex     Y Y Y Y 1
 | 
				
			||||||
 | 
					i686/pc/linux-gnu           gcc 4.3.2    14.1       09-08-04 alex     Y Y Y Y 1
 | 
				
			||||||
 | 
					i686/pc/minix               gcc 4.4.6    21~rc2     13-10-27 alex     Y Y N N
 | 
				
			||||||
 | 
					i686/unknown/gnu0.3         gcc 4.4.5    19         12-02-29 alex     Y Y Y Y
 | 
				
			||||||
 | 
					i686/unknown/gnu0.5         gcc 4.9.1    22~rc1-3   14-10-11 alex     Y Y Y Y
 | 
				
			||||||
 | 
					i686/unknown/gnu0.9         gcc 12.2.0   26.1~131-g 24-04-01 alex     Y Y Y Y
 | 
				
			||||||
 | 
					i686/unkn./kfreebsd7.2-gnu  gcc 4.3.4    15         09-12-02 alex     Y Y Y Y 3
 | 
				
			||||||
 | 
					m68k/apple/aux3.0.1         gcc 2.7.2    17         10-11-07 alex     Y Y N Y
 | 
				
			||||||
 | 
					m68k/apple/aux3.0.1         Orig. A/UX   17         10-11-07 alex     Y Y N Y 2
 | 
				
			||||||
 | 
					m68k/apple/aux3.1.1         gcc 2.7.2    19         12-02-26 alex     Y Y N Y
 | 
				
			||||||
 | 
					m68k/apple/aux3.1.1         Orig. A/UX   19         12-02-26 alex     Y Y N Y 2
 | 
				
			||||||
 | 
					m68k/hp/hp-ux9.10           Orig. HPUX   0.7.x-CVS  03-04-30 goetz    Y Y Y Y
 | 
				
			||||||
 | 
					m88k/dg/dgux5.4R3.10        gcc 2.5.8    CVSHEAD    04-03-15 alex     Y Y ? ?
 | 
				
			||||||
 | 
					mips/sgi/irix6.5            SGI          25         19-12-29 goetz    Y Y ? ?
 | 
				
			||||||
 | 
					mipsel/openwrt/linux-uclibc gcc 4.8      24~9-g619a 18-01-28 goetz    - - - Y 6
 | 
				
			||||||
 | 
					mipsel/unknown/linux-gnu    gcc 4.1.2    18         11-07-05 goetz    Y Y N Y 1
 | 
				
			||||||
 | 
					mipsel/unknown/linux-gnu    gcc 4.4.5    21         13-11-24 goetz    Y Y Y Y 1
 | 
				
			||||||
 | 
					mipsel/unknown/netbsd8.0    gcc 5.5.0    25         19-08-09 root     Y Y y Y 3
 | 
				
			||||||
 | 
					powerpc/apple/darwin6.8     gcc 3.1      21         14-01-03 goetz    Y Y Y Y
 | 
				
			||||||
 | 
					powerpc/apple/darwin7.9.0   gcc 3.3      22         15-03-22 goetz    Y Y Y Y 3
 | 
				
			||||||
 | 
					powerpc/apple/darwin8.11.0  gcc 4.0.1    26         20-07-08 goetz    Y Y Y Y 3
 | 
				
			||||||
 | 
					powerpc/apple/darwin9.8.0   gcc 4.0.1    21         14-01-04 goetz    Y Y Y Y 3
 | 
				
			||||||
 | 
					powerpc/unknown/linux-gnu   gcc 3.3.3    0.8.0      04-05-30 alex     Y Y Y Y
 | 
				
			||||||
 | 
					powerpc/unknown/openbsd3.6  gcc 2.95.3   0.10.0     06-10-08 alex     Y Y N Y
 | 
				
			||||||
 | 
					sparc/sun/solaris2.6        gcc 2.95.3   0.7.x-CVS  03-04-22 alex     Y Y Y Y
 | 
				
			||||||
 | 
					sparc/sun/solaris2.7        gcc 3.3      0.8.0      04-05-30 alex     Y Y Y Y
 | 
				
			||||||
 | 
					sparc/unkn./netbsdelf1.6.1  gcc 2.95.3   0.8.0      04-05-30 alex     Y Y Y Y
 | 
				
			||||||
 | 
					sparc/unknown/openbsd5.5    gcc 4.2.1    21.1       14-05-03 goetz    Y Y Y Y 3
 | 
				
			||||||
 | 
					x86_64/apple/darwin10.8.0   gcc 4.2.1    21~rc2     13-10-30 alex     Y Y Y Y 3
 | 
				
			||||||
 | 
					x86_64/apple/darwin12.3.0   gcc 4.2.1    20.2       13-04-01 alex     Y Y Y Y 3
 | 
				
			||||||
 | 
					x86_64/apple/darwin13.0.0   A-clang 5.0  21         14-01-02 alex     Y Y Y Y 3
 | 
				
			||||||
 | 
					x86_64/apple/darwin14.5.0   A-clang 6.1  23~rc1     15-09-06 alex     Y Y Y Y 3
 | 
				
			||||||
 | 
					x86_64/apple/darwin15.6.0   A-clang 8.0  23~38-g455 16-11-04 alex     Y Y Y Y 3
 | 
				
			||||||
 | 
					x86_64/apple/darwin16.5.0   A-clang 8.1  25~rc1-7-g 18-11-04 alex     Y Y Y Y 3
 | 
				
			||||||
 | 
					x86_64/apple/darwin17.7.0   A-clang 10.0 25~rc1     18-11-04 alex     Y Y Y Y 3
 | 
				
			||||||
 | 
					x86_64/apple/darwin18.2.0   A-clang 10.0 25~rc1-11  19-01-23 alex     Y Y Y Y 3
 | 
				
			||||||
 | 
					x86_64/apple/darwin19.4.0   A-clang 11.0 26~rc1     20-05-10 alex     Y Y Y Y 3
 | 
				
			||||||
 | 
					x86_64/apple/darwin19.6.0   A-clang 12.0 26         20-10-20 alex     Y Y Y Y 3
 | 
				
			||||||
 | 
					x86_64/apple/darwin20.1.0   A-clang 12.0 26         21-01-01 alex     Y Y Y Y 3
 | 
				
			||||||
 | 
					x86_64/apple/darwin23.4.0   A-clang 15.0 26.1~133-g 24-04-03 alex     Y Y Y Y 3
 | 
				
			||||||
 | 
					x86_64/unknown/dragonfly3.4 gcc 4.7.2    21         13-11-12 goetz    Y Y N Y 3
 | 
				
			||||||
 | 
					x86_64/unkn./freebsd8.1-gnu gcc 4.4.5    19         12-02-26 alex     Y Y Y Y 3
 | 
				
			||||||
 | 
					x86_64/unknown/freebsd8.4   gcc 4.2.1    24~rc1-7   17-01-20 alex     Y Y Y Y 3
 | 
				
			||||||
 | 
					x86_64/unknown/freebsd9.2   gcc 4.2.1    22~rc1-3   14-10-10 alex     Y Y Y Y 3
 | 
				
			||||||
 | 
					x86_64/unknown/freebsd10.3  F-clang 3.4  24         17-01-20 goetz    Y Y Y Y 3
 | 
				
			||||||
 | 
					x86_64/unknown/freebsd11.0  F-clang 3.8  24         17-01-21 goetz    Y Y Y Y 3
 | 
				
			||||||
 | 
					x86_64/unknown/freebsd12.1  F-clang 8.0  26         20-08-28 alex     Y Y Y Y 3
 | 
				
			||||||
 | 
					x86_64/unknown/freebsd14.0  F-clang 16.0 26.1~131   24-04-01 alex     Y Y Y Y 3
 | 
				
			||||||
 | 
					x86_64/unknown/haiku        gcc 7.3.0    25~rc1-11  19-01-06 alex     Y Y N Y
 | 
				
			||||||
 | 
					x86_64/unknown/haiku        gcc 13.2.0   26.1~132-g 24-04-02 alex     Y Y Y Y
 | 
				
			||||||
 | 
					x86_64/unknown/linux-gnu    clang 3.3    21         14-01-07 alex     Y Y Y Y 1
 | 
				
			||||||
 | 
					x86_64/unknown/linux-gnu    clang 3.4    22~rc1-3   14-10-11 alex     Y Y Y Y 1
 | 
				
			||||||
 | 
					x86_64/pc/linux-gnu         gcc 4.4.5    24~rc1-7   17-01-20 alex     Y Y Y Y 1
 | 
				
			||||||
 | 
					x86_64/unknown/linux-gnu    gcc 4.7.2    23~rc1-3   15-11-15 alex     Y Y Y Y 1
 | 
				
			||||||
 | 
					x86_64/pc/linux-gnu         gcc 4.8.4    24~rc1-7   17-01-20 alex     Y Y Y Y 1
 | 
				
			||||||
 | 
					x86_64/pc/linux-gnu         gcc 4.9.2    24~rc1-7   17-01-20 alex     Y Y Y Y 1
 | 
				
			||||||
 | 
					x86_64/unknown/linux-gnu    gcc 5.3.0    23         15-12-14 goetz    Y Y Y Y 1
 | 
				
			||||||
 | 
					x86_64/pc/linux-gnu [WSL]   gcc 5.4.0    24         18-03-07 goetz    Y Y y Y 7
 | 
				
			||||||
 | 
					x86_64/pc/linux-gnu         gcc 6.2.1    24~rc1-7   17-01-20 alex     Y Y Y Y 1
 | 
				
			||||||
 | 
					x86_64/pc/linux-gnu         gcc 6.3.0    25~rc1-11  19-01-23 alex     Y Y Y Y 1
 | 
				
			||||||
 | 
					x86_64/pc/linux-gnu         gcc 8.3.0    26         20-08-28 alex     Y Y Y Y 1
 | 
				
			||||||
 | 
					x86_64/pc/linux-gnu         gcc 11.4.0   26.1~133-g 24-04-03 alex     Y Y Y Y 1
 | 
				
			||||||
 | 
					x86_64/pc/linux-gnu         gcc 12.2.0   26.1~132-g 24-04-02 alex     Y Y Y Y 1
 | 
				
			||||||
 | 
					x86_64/unknown/linux-gnu    icc 16       23         16-01-13 goetz    Y Y Y Y 1
 | 
				
			||||||
 | 
					x86_64/unknown/linux-gnu    nwcc 0.8.2   21         13-12-01 goetz    Y Y Y Y 1
 | 
				
			||||||
 | 
					x86_64/unknown/linux-gnu    Open64       21.1       14-03-27 goetz    Y Y Y Y 1
 | 
				
			||||||
 | 
					x86_64/unknown/linux-gnu    Sun C 5.12   21.1       14-03-27 goetz    Y Y Y Y 1
 | 
				
			||||||
 | 
					x86_64/unknown/netbsd9.0    gcc 7.4.0    26         20-08-28 alex     Y Y y Y 3
 | 
				
			||||||
 | 
					x86_64/unknown/netbsd10.0   gcc 10.5.0   26.1~131-g 24-04-01 alex     Y Y Y Y 3
 | 
				
			||||||
 | 
					x86_64/unknown/openbsd4.7   gcc 3.3.5    20~rc1     12-02-26 alex     Y Y Y Y 3
 | 
				
			||||||
 | 
					x86_64/unknown/openbsd4.8   gcc 4.2.1    22~rc1-3   14-10-10 alex     Y Y y Y 3
 | 
				
			||||||
 | 
					x86_64/unknown/openbsd5.1   gcc 4.2.1    21         13-12-28 alex     Y Y Y Y 3
 | 
				
			||||||
 | 
					x86_64/unknown/openbsd5.5   gcc 4.2.1    22~rc1-3   14-10-10 alex     Y Y Y Y 3
 | 
				
			||||||
 | 
					x86_64/unknown/openbsd6.6   gcc 4.2.1    26         20-08-28 alex     Y Y Y Y 3
 | 
				
			||||||
 | 
					x86_64/unknown/openbsd6.6   O-clang 8.0  26         20-08-28 alex     Y Y Y Y 3
 | 
				
			||||||
 | 
					x86_64/unknown/openbsd6.7   gcc 4.2.1    26         20-09-26 goetz    Y Y y Y 3
 | 
				
			||||||
 | 
					x86_64/unknown/openbsd7.4   O-clang 13.0 26.1~131-g 24-04-01 alex     Y Y Y Y 3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Notes
 | 
				
			||||||
 | 
					~~~~~~~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(1) */*/linux-gnu (Linux platforms):
 | 
				
			||||||
 | 
					    ngIRCd has been tested with various Linux distributions, such as ArchLinux,
 | 
				
			||||||
 | 
					    Debian, Gentoo, Red Hat (Fedora) and SuSE using Linux kernels 2.2.x, 2.4.x,
 | 
				
			||||||
 | 
					    2.6.x, 3.x, 4.x and 5.x, with various versions of the GNU C compiler
 | 
				
			||||||
 | 
					    (starting with 2.95.x) and Clang. The eldest glibc used was glibc-2.0.7.
 | 
				
			||||||
 | 
					    ngIRCd compiled and ran on all of these systems successfully.
 | 
				
			||||||
 | 
					    Current Linux kernels (starting with 2.6.x) and glibc's support the more
 | 
				
			||||||
 | 
					    efficient epoll() IO interface, see (5) below.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(2) This compiler is a pre-ANSI C compiler (K&R), therefore the source code is
 | 
				
			||||||
 | 
					    automatically converted using the included ansi2knr tool while building.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(3) Using the kqueue() IO interface.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(4) Using the /dev/poll IO interface.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(5) Using the epoll() IO interface.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(6) ngIRCd has been cross-compiled with gcc 4.8 on Ubuntu x86-64 for
 | 
				
			||||||
 | 
					    MIPSEL Linux OpenWRT distribution (uclibc), for the target computer
 | 
				
			||||||
 | 
					    Vocore2, where the created binary ran well.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(7) This actually is Windows 10 running Windows Subsystem for Linux (WSL).
 | 
				
			||||||
							
								
								
									
										265
									
								
								doc/Protocol.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										265
									
								
								doc/Protocol.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,265 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					                     ngIRCd - Next Generation IRC Server
 | 
				
			||||||
 | 
					                           http://ngircd.barton.de/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					               (c)2001-2019 Alexander Barton and Contributors.
 | 
				
			||||||
 | 
					               ngIRCd is free software and published under the
 | 
				
			||||||
 | 
					                   terms of the GNU General Public License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                              -- Protocol.txt --
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					I. Compatibility
 | 
				
			||||||
 | 
					~~~~~~~~~~~~~~~~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The ngIRCd implements the Internet Relay Chat (IRC) protocol version 2.10
 | 
				
			||||||
 | 
					as defined in RFC ("request for comment") 1459 and 2810-2813. These (and
 | 
				
			||||||
 | 
					probably further relevant RFCs) are listed in doc/RFC.txt.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Unfortunately, even the "original" ircd doesn't follow these specifications
 | 
				
			||||||
 | 
					in all details. But because the ngIRCd should be a fully compatible
 | 
				
			||||||
 | 
					replacement for this server ("ircd") it tries to emulate these differences.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If you don't like this behavior please ./configure the ngIRCd using the
 | 
				
			||||||
 | 
					"--enable-strict-rfc" command line option. But keep in mind: not all IRC
 | 
				
			||||||
 | 
					clients are compatible with a server configured that way, some can't even
 | 
				
			||||||
 | 
					connect at all! Therefore this option usually isn't desired for "normal
 | 
				
			||||||
 | 
					server operation".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					In addition, ngIRCd implements some "IRCv3" features. This includes:
 | 
				
			||||||
 | 
					 - IRCv3 Client Capability Negotiation
 | 
				
			||||||
 | 
					 - IRCv3.1 multi-prefix Extension
 | 
				
			||||||
 | 
					 - IRCv3.2 userhost-in-names Extension
 | 
				
			||||||
 | 
					Please see the IRCv3 homepage for more information: <https://ircv3.net>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					II. The IRC+ Protocol
 | 
				
			||||||
 | 
					~~~~~~~~~~~~~~~~~~~~~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Starting with version 0.5.0, the ngIRCd extends the original IRC protocol
 | 
				
			||||||
 | 
					as defined in RFC 2810-2813. This enhanced protocol is named "IRC+". It is
 | 
				
			||||||
 | 
					backwards compatible to the "plain" IRC protocol and will only be used by
 | 
				
			||||||
 | 
					the ngIRCd if it detects that the peer supports it as well.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The "PASS" command is used to detect the protocol and peer versions see
 | 
				
			||||||
 | 
					RFC 2813 (section 4.1.1) and below.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					II.1 Register new server link
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     Command: PASS
 | 
				
			||||||
 | 
					  Parameters: <password> <version> <flags> [<options>]
 | 
				
			||||||
 | 
					     Used by: servers only (with these parameters)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<password> is the password for this new server link as defined in the server
 | 
				
			||||||
 | 
					configuration which is sent to the peer or received from it.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<version> consists of two parts and is at least 4, at most 14 characters
 | 
				
			||||||
 | 
					long: the first four bytes contain the IRC protocol version number, whereas
 | 
				
			||||||
 | 
					the first two bytes represent the major version, the last two bytes the
 | 
				
			||||||
 | 
					minor version (the string "0210" indicates version 2.10, e.g.).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The following optional(!) 10 bytes contain an implementation-dependent
 | 
				
			||||||
 | 
					version number. Servers supporting the IRC+ protocol as defined in this
 | 
				
			||||||
 | 
					document provide the string "-IRC+" here.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Example for <version>: "0210-IRC+".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<flags> consists of two parts separated with the character "|" and is at
 | 
				
			||||||
 | 
					most 100 bytes long. The first part contains the name of the implementation
 | 
				
			||||||
 | 
					(ngIRCd sets this to "ngircd", the original ircd to "IRC", e.g.). The second
 | 
				
			||||||
 | 
					part is implementation-dependent and should only be parsed if the peer
 | 
				
			||||||
 | 
					supports the IRC+ protocol as well. In this case the following syntax is
 | 
				
			||||||
 | 
					used: "<serverversion>[:<serverflags>]".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<serverversion> is an ASCII representation of the clear-text server version
 | 
				
			||||||
 | 
					number, <serverflags> indicates the supported IRC+ protocol extensions (and
 | 
				
			||||||
 | 
					may be empty!).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The following <serverflags> are defined at the moment:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- C: The server supports the CHANINFO command.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- L: INVITE- and BAN-lists should be synchronized between servers: if the
 | 
				
			||||||
 | 
					     peer understands this flag, it will send "MODE +I" and "MODE +b"
 | 
				
			||||||
 | 
					     commands after the server link has been established.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- H: The server supports the "enhanced server handshake", see section II.2
 | 
				
			||||||
 | 
					     for a detailed description.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- M: Changing client "metadata" (hostname, real name, ...) using the
 | 
				
			||||||
 | 
					     METADATA command is supported.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- o: IRC operators are allowed to change channel- and channel-user-modes
 | 
				
			||||||
 | 
					     even if they aren't channel-operator of the affected channel.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- S: The server supports the SERVICE command (on this link).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- X: Server supports XOP channel modes (owner, admin, halfop) and supports
 | 
				
			||||||
 | 
					     these user prefixes in CHANINFO commands, for example.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Z: Compressed server links are supported by the server.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Example for a complete <flags> string: "ngircd|0.7.5:CZ".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The optional parameter <options> is used to propagate server options as
 | 
				
			||||||
 | 
					defined in RFC 2813, section 4.1.1.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					II.2 Enhanced Server Handshake
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The "enhanced server handshake" is used when both servers support this IRC+
 | 
				
			||||||
 | 
					extension, which is indicated by the 'H' flag in the <serverflags> sent with
 | 
				
			||||||
 | 
					the PASS command, see section II.1.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					It basically means, that after exchanging the PASS and SERVER commands the
 | 
				
			||||||
 | 
					server is not registered in the network (as usual), but that IRC numerics
 | 
				
			||||||
 | 
					are exchanged until the numeric 376 (ENDOFMOTD) is received. Afterwards the
 | 
				
			||||||
 | 
					peer is registered in the network as with the regular IRC protocol.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					A server implementing the enhanced server handshake (and indicating this
 | 
				
			||||||
 | 
					using 'H' in the <serverflags>) MUST ignore all unknown numerics to it
 | 
				
			||||||
 | 
					silently.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					In addition, such a server should at least send the numeric 005 (ISUPPORT)
 | 
				
			||||||
 | 
					to its peer, containing the following information. Syntax: <key>=<value>,
 | 
				
			||||||
 | 
					one token per IRC parameter. If the server has to send more than 12 token
 | 
				
			||||||
 | 
					it must send separate ISUPPORT numerics (this is a limitation of the IRC
 | 
				
			||||||
 | 
					protocol which allows at max 15 arguments per command).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 - NICKLEN: Maximum nickname length. Default: 9.
 | 
				
			||||||
 | 
					 - CASEMAPPING: Case mapping used for nick- and channel name comparing.
 | 
				
			||||||
 | 
					   Default: "ascii", the chars [a-z] are lowercase of [A-Z].
 | 
				
			||||||
 | 
					 - PREFIX: List of channel modes a person can get and the respective prefix
 | 
				
			||||||
 | 
					   a channel or nickname will get in case the person has it. The order of the
 | 
				
			||||||
 | 
					   modes goes from most powerful to least powerful. Default: "(ov)@+"
 | 
				
			||||||
 | 
					 - CHANTYPES: Supported channel prefixes. Default: "#".
 | 
				
			||||||
 | 
					 - CHANMODES: List of channel modes for 4 types, separated by comma (","):
 | 
				
			||||||
 | 
					   Mode that adds or removes a nick or address to a list, mode that changes
 | 
				
			||||||
 | 
					   a setting (both have always has a parameter), mode that changes a setting
 | 
				
			||||||
 | 
					   and only has a parameter when set, and mode that changes a setting and
 | 
				
			||||||
 | 
					   never has a parameter. For example "bI,k,l,imnPst".
 | 
				
			||||||
 | 
					 - CHANLIMIT: Maximum number of channels allowed to join by channel prefix,
 | 
				
			||||||
 | 
					   for example "#:10".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Please see <http://www.irc.org/tech_docs/005.html> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The information exchanged using ISUPPORT can be used to detect configuration
 | 
				
			||||||
 | 
					incompatibilities (different maximum nickname length, for example) and
 | 
				
			||||||
 | 
					therefore to disconnect the peer prior to registering it in the network.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					II.3 Exchange channel-modes, topics, and persistent channels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     Command: CHANINFO
 | 
				
			||||||
 | 
					  Parameters: <channel> +<modes> [[<key> <limit>] <topic>]
 | 
				
			||||||
 | 
					     Used by: servers only
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CHANINFO is used by servers to inform each other about a channel: its
 | 
				
			||||||
 | 
					modes, channel key, user limits and its topic. The parameter combination
 | 
				
			||||||
 | 
					<key> and <limit> is optional, as well as the <topic> parameter, so that
 | 
				
			||||||
 | 
					there are three possible forms of this command:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  CHANINFO <channel> +<modes>
 | 
				
			||||||
 | 
					  CHANINFO <channel> +<modes> <topic>
 | 
				
			||||||
 | 
					  CHANINFO <channel> +<modes> <key> <limit> <topic>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If the channel already exists on the server receiving the CHANINFO command,
 | 
				
			||||||
 | 
					it only adopts the <modes> (or the <topic>) if there are no modes (or topic)
 | 
				
			||||||
 | 
					already set. It there are already values set the server ignores the
 | 
				
			||||||
 | 
					corresponding parameter.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If the channel doesn't exists at all it will be created.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The parameter <key> must be ignored if a channel has no key (the parameter
 | 
				
			||||||
 | 
					<modes> doesn't list the "k" channel mode). In this case <key> should
 | 
				
			||||||
 | 
					contain "*" because the parameter <key> is required by the CHANINFO syntax
 | 
				
			||||||
 | 
					and therefore can't be omitted. The parameter <limit> must be ignored when
 | 
				
			||||||
 | 
					a channel has no user limit (the parameter <modes> doesn't list the "l"
 | 
				
			||||||
 | 
					channel mode). In this case <limit> should be "0".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					II.4 Update webchat/proxy client information
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     Command: WEBIRC
 | 
				
			||||||
 | 
					  Parameters: <password> <username> <hostname> <ip-address> [<ignored>]
 | 
				
			||||||
 | 
					     Used by: unregistered clients only
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The WEBIRC command is used by some Web-to-IRC gateways to set the correct
 | 
				
			||||||
 | 
					user name and host name of users instead of their own. It must be the very
 | 
				
			||||||
 | 
					first command sent to the server, even before USER and NICK commands!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The <password> must be set in the server configuration file to prevent
 | 
				
			||||||
 | 
					unauthorized clients to fake their identity; it is an arbitrary string.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Optionally, a 5th parameter is accepted to comply with an IRCv3 extension,
 | 
				
			||||||
 | 
					see <https://github.com/ircv3/ircv3-ideas/issues/12>, but ignored.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					II.5 Client character encoding conversion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     Command: CHARCONV
 | 
				
			||||||
 | 
					  Parameters: <client-charset>
 | 
				
			||||||
 | 
					     Used by: registered clients
 | 
				
			||||||
 | 
					     Replies: RPL_IP_CHARCONV, ERR_IP_CHARCONV
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					A client can set its character set encoding using the CHARCONV command:
 | 
				
			||||||
 | 
					after receiving such a command, the server translates all message data
 | 
				
			||||||
 | 
					received from the client using the set <client-charset> to the server
 | 
				
			||||||
 | 
					encoding (UTF-8), and all message data which is to be sent to the client
 | 
				
			||||||
 | 
					from the server encoding (UTF-8) to <client-charset>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The list of supported client character sets is implementation dependent.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If a client sets its <client-charset> to the server encoding (UTF-8),
 | 
				
			||||||
 | 
					it disables all conversions; the connection behaves as if no CHARCONV
 | 
				
			||||||
 | 
					command has been sent at all in this session.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					II.6 Update client "metadata"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     Command: METADATA
 | 
				
			||||||
 | 
					  Parameters: <target> <key> <value>
 | 
				
			||||||
 | 
					     Used by: servers only
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The METADATA command is used on server-links to update "metadata" information
 | 
				
			||||||
 | 
					of clients, like the hostname, the info text ("real name"), or the user name.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The server updates its client database according to the received <key> and
 | 
				
			||||||
 | 
					<value> parameters, and passes the METADATA command on to all the other
 | 
				
			||||||
 | 
					servers in the network that support this command (see section II.1 "Register
 | 
				
			||||||
 | 
					new server link", <serverflag> "M"), even if it doesn't support the given
 | 
				
			||||||
 | 
					<key> itself: unknown <key> names are ignored silently!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The following <key> names are defined:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 - "accountname": the account name of a client (can't be empty)
 | 
				
			||||||
 | 
					 - "certfp": the certificate fingerprint of a client (can't be empty)
 | 
				
			||||||
 | 
					 - "cloakhost": the cloaked hostname of a client
 | 
				
			||||||
 | 
					 - "host": the hostname of a client (can't be empty)
 | 
				
			||||||
 | 
					 - "info": info text ("real name") of a client
 | 
				
			||||||
 | 
					 - "user": the user name of a client (can't be empty)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					III. Numerics used by IRC+ Protocol
 | 
				
			||||||
 | 
					~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The IRC+ protocol uses numerics in the range 800-899 which aren't used by
 | 
				
			||||||
 | 
					RFC 2812 and hopefully don't clash with other implementations ...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Numerics 800-849 are used for status and success messages, and numerics
 | 
				
			||||||
 | 
					850-899 are failure and error messages.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					III.1 IRC+ status and success numerics
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					801 - RPL_IP_CHARCONV
 | 
				
			||||||
 | 
						%1 :Client encoding set"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							%1	client character set
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					III.2 IRC+ failure and error numerics
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					851 - ERR_IP_CHARCONV
 | 
				
			||||||
 | 
						:Can't initialize client encoding
 | 
				
			||||||
							
								
								
									
										126
									
								
								doc/QuickStart.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										126
									
								
								doc/QuickStart.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,126 @@
 | 
				
			|||||||
 | 
					# [ngIRCd](https://ngircd.barton.de) - Quick Start
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This *Quick Start* document explains how to configure ngIRCd, the lightweight
 | 
				
			||||||
 | 
					Internet Relay Chat (IRC) server, using some "real world" scenarios.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Introduction
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The ngIRCd daemon can be run without any configuration file using built-in
 | 
				
			||||||
 | 
					defaults. These defaults are probably sufficient for very simple single-node
 | 
				
			||||||
 | 
					setups, but most probably need further tweaking for more "advanced" setups.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					You can check the current settings by running `ngircd --configtest`. This
 | 
				
			||||||
 | 
					command not only shows the settings, it shows error, warning and hints, if it
 | 
				
			||||||
 | 
					detects any.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Therefore it is definitely best practice to *always run this check* after
 | 
				
			||||||
 | 
					making any changes to the configuration file(s) and double-check that
 | 
				
			||||||
 | 
					everything was parsed as expected!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Configuration File and Drop-in Directory
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					After installing ngIRCd, a sample configuration file should have been set up if
 | 
				
			||||||
 | 
					none existed already. By default, when installing from sources, the file is
 | 
				
			||||||
 | 
					named `/usr/local/etc/ngircd.conf` (other common names, especially for
 | 
				
			||||||
 | 
					distribution packages, are `/etc/ngircd.conf` or `/etc/ngircd/ngircd.conf`).
 | 
				
			||||||
 | 
					Run the command `ngircd --configtest` to check the name of the configuration
 | 
				
			||||||
 | 
					file which is used by default on your local system.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					In addition, ngIRCd supports configuration file snippets in a "drop-in"
 | 
				
			||||||
 | 
					directory which is configured with the `IncludeDir` variable in the `[Options]`
 | 
				
			||||||
 | 
					section and has a built-in default value (like `/etc/ngircd/ngircd.conf.d/`).
 | 
				
			||||||
 | 
					All configuration files matching the `*.conf` pattern are read-in from this
 | 
				
			||||||
 | 
					directory after the main `ngircd.conf` file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					It is a good idea to not edit the default `ngircd.conf` file but to create one
 | 
				
			||||||
 | 
					ore more new files in this include directory, overriding the defaults as
 | 
				
			||||||
 | 
					needed. This way you don't get any clashes when updating ngIRCd to newer
 | 
				
			||||||
 | 
					releases.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					You can find the template of the sample configuration file in the `doc/`
 | 
				
			||||||
 | 
					directory as `sample-ngircd.conf` and
 | 
				
			||||||
 | 
					[online](https://ngircd.barton.de/doc/sample-ngircd.conf) on the homepage. It
 | 
				
			||||||
 | 
					contains all available options.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Configuration File Syntax
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The configuration consists of sections and parameters.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					A section begins with the name of the section in square brackets (like
 | 
				
			||||||
 | 
					`[Example]`) and continues until the next section begins. Sections contain
 | 
				
			||||||
 | 
					parameters of the form `name = value`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Section and parameter names are not case sensitive.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Please see the `ngircd.conf`(5) manual page for an in-depth description of the
 | 
				
			||||||
 | 
					configuration file, its syntax and all supported configuration options.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The sample configuration file uses comments beginning with `#` *or* `;` -- this
 | 
				
			||||||
 | 
					is only for the better understanding of the file, both comment styles are
 | 
				
			||||||
 | 
					equal. The lines commented out with `;` show example or default settings,
 | 
				
			||||||
 | 
					whereas the lines using `#` are descriptions of the options.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Simple Single-Instance Server
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					A good starting point is to configure a valid (and unique!) IRC server name
 | 
				
			||||||
 | 
					(which is *not* related to a host name, it is purely a unique *server ID* that
 | 
				
			||||||
 | 
					must contain at least one dot ".").
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This looks like this:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					``` ini
 | 
				
			||||||
 | 
					[Global]
 | 
				
			||||||
 | 
					Name = my.irc.server
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This results in the following *warning* in the logs when starting the daemon:
 | 
				
			||||||
 | 
					`No administrative information configured but required by RFC!` -- which works,
 | 
				
			||||||
 | 
					but is a bit ugly. So let's fix that by adding some *admin info*:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					``` ini
 | 
				
			||||||
 | 
					[Global]
 | 
				
			||||||
 | 
					Name = irc.example.net
 | 
				
			||||||
 | 
					AdminInfo1 = Example IRC Server
 | 
				
			||||||
 | 
					AdminInfo2 = Anywhere On Earth
 | 
				
			||||||
 | 
					AdminEMail = admin@irc.example.net
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*Please Note*: The server `Name` looks like a DNS host name, but it is not: in
 | 
				
			||||||
 | 
					fact it is not related to your server's fully qualified domain name (FQDN) in
 | 
				
			||||||
 | 
					any way and can be an arbitrary string -- but it *must* contain at least
 | 
				
			||||||
 | 
					one dot (".") character!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Add a Local IRC Operator
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Some IRC commands, like `REHASH` which reloads the server configuration on the
 | 
				
			||||||
 | 
					fly, require the user to authenticate to the daemon to become an *IRC
 | 
				
			||||||
 | 
					Operator* first.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					So let's configure an *Operator* account in the configuration file (in
 | 
				
			||||||
 | 
					addition to what we configured above):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					``` ini
 | 
				
			||||||
 | 
					[Operator]
 | 
				
			||||||
 | 
					# ID of the operator (may be different of the nickname)
 | 
				
			||||||
 | 
					Name = BigOp
 | 
				
			||||||
 | 
					# Password of the IRC operator
 | 
				
			||||||
 | 
					Password = secret
 | 
				
			||||||
 | 
					# Optional Mask from which /OPER will be accepted
 | 
				
			||||||
 | 
					;Mask = *!ident@somewhere.example.com
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Now you can use the IRC command `OPER BigOp secret` to get *IRC Operator*
 | 
				
			||||||
 | 
					status on that server.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Please choose a sensible password, and keep in mind that the *name* is not
 | 
				
			||||||
 | 
					related to the *nickname* used by the user at all!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					We don't make use of the `Mask` setting in the example above (commented out
 | 
				
			||||||
 | 
					with the `;` character), but it is a good idea to enable it whenever possible!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					And you can have as many *Operator blocks* as you like, configuring multiple
 | 
				
			||||||
 | 
					different IRC Operators.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Configuring SSL/TLS Encryption
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Please see the file `SSL.md` for details.
 | 
				
			||||||
@@ -1,47 +1,67 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                     ngIRCd - Next Generation IRC Server
 | 
					                    ngIRCd - Next Generation IRC Server
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                      (c)2001,2002 by Alexander Barton,
 | 
					                      (c)2001-2005 Alexander Barton,
 | 
				
			||||||
                    alex@barton.de, http://www.barton.de/
 | 
					                   alex@barton.de, http://www.barton.de/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                  ngIRCd ist freie Software und steht unter
 | 
					               ngIRCd is free software and published under the
 | 
				
			||||||
                       der GNU General Public License.
 | 
					                  terms of the GNU General Public License.
 | 
				
			||||||
 | 
					 | 
				
			||||||
                             -- README-AUX.txt --
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Seit Version 0.2.2-pre gehoert Apple A/UX zu den offiziell unterstuetzten
 | 
					                           -- README-AUX.txt --
 | 
				
			||||||
Platformen. Er ist im vollen Funktionsumfang nutzbar.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Folgende Software wird jedoch benoetigt:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  - GNU C Compiler (gcc)
 | 
					 | 
				
			||||||
    Bezugsquellen:
 | 
					 | 
				
			||||||
    http://www.rezepte-im-web.de/appleux/gcc281.tar.gz
 | 
					 | 
				
			||||||
    ftp://arthur.ath.cx/pub/AUX/Software/Development/gcc281.tar.gz
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  - GNU make
 | 
					 | 
				
			||||||
    Bezugsquellen:
 | 
					 | 
				
			||||||
    http://www.rezepte-im-web.de/appleux/make-3.79.tar.gz
 | 
					 | 
				
			||||||
    ftp://arthur.ath.cx/pub/AUX/Software/Development/make-3.79.tar.gz
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  - GNU sed
 | 
					 | 
				
			||||||
    Bezugsquellen:
 | 
					 | 
				
			||||||
    http://www.rezepte-im-web.de/appleux/sed-3.02.tar.gz
 | 
					 | 
				
			||||||
    ftp://arthur.ath.cx/pub/AUX/Software/Tools/sed-3.02.tar.gz
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  - libUTIL.a
 | 
					 | 
				
			||||||
    Bezugsquellen:
 | 
					 | 
				
			||||||
    http://ftp.mayn.de/pub/apple/apple_unix/Sys_stuff/libUTIL-2.1.tar.gz
 | 
					 | 
				
			||||||
    ftp://arthur.ath.cx/pub/AUX/Software/Libraries/libUTIL-2.1.tar.gz
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Nachdem diese Pakete entsprechend installiert sind, reicht ein ganz normales
 | 
					 | 
				
			||||||
"./configure" und "make" aus, um den ngIRCd unter A/UX zu compilieren.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Hier die Zeiten von Alex System (Macintosh SE/30, 32 MB, A/UX 3.0.1):
 | 
					Since version 0.2.2-pre Apple's A/UX belongs to the officially supported 
 | 
				
			||||||
configure: 7:33, make: 12:02
 | 
					platforms. It is not restricted in any way.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Since version 0.5.0 ngIRCd's source compiles with the native A/UX c 
 | 
				
			||||||
 | 
					compiler. GNU C isn't a must-have anymore.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The following software packages are needed:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 - GNU sed
 | 
				
			||||||
 | 
					   Source:
 | 
				
			||||||
 | 
					   http://www.rezepte-im-web.de/appleux/sed-3.02.tar.gz
 | 
				
			||||||
 | 
					   http://arthur.barton.de/pub/unix/aux/tools/sed-3.02.tar.gz
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   A/UX comes with /bin/sed which isn't supporting all functions needed
 | 
				
			||||||
 | 
					   by GNU automake/autoconf.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   Warning: When installing GNU sed please make sure that A/UX doesn't
 | 
				
			||||||
 | 
					   use the old one anymore which means set the $PATH or replace /bin/sed
 | 
				
			||||||
 | 
					   at all.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 - libUTIL.a
 | 
				
			||||||
 | 
					   Source:
 | 
				
			||||||
 | 
					   ftp://ftp.mayn.de/pub/really_old_stuff/apple/apple_unix/Sys_stuff/libUTIL-2.1.tar.gz>
 | 
				
			||||||
 | 
					   http://arthur.barton.de/pub/unix/aux/libraries/libUTIL-2.1.tar.gz
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   This library contains functions that are common on other UNIX
 | 
				
			||||||
 | 
					   systems but not on A/UX e.g. memmove(), strerror() and strdup().
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					After installation of these packages just do a "./configure" and "make" to
 | 
				
			||||||
 | 
					compile ngIRCd on A/UX.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					A few hints in case of errors:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 - Either there's an 'install' on your system which is completely broken
 | 
				
			||||||
 | 
					   (so 'configure' uses its own shell script) or use a fully functionable one.
 | 
				
			||||||
 | 
					   There's at least one binary "out there" causing problems. The one
 | 
				
			||||||
 | 
					   of the GNU fileutils works fine:
 | 
				
			||||||
 | 
					   http://arthur.barton.de/pub/unix/aux/tools/fileutils-4.0.tar.gz
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 - The precompiled binary of the old 'bash' shouldn't be installed within
 | 
				
			||||||
 | 
					   /bin (better do this in /usr/local/bin) because 'configure' would
 | 
				
			||||||
 | 
					   choose it as its shell which wouldn't work.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 - Because of limitations of /bin/sh on A/UX it can't be used to create
 | 
				
			||||||
 | 
					   the 'config.status' script. Better rename /bin/sh to /bin/sh.AUX and
 | 
				
			||||||
 | 
					   replace it by a symbolic link to /bin/ksh (ln -s /bin/ksh /bin/sh as
 | 
				
			||||||
 | 
					   root).
 | 
				
			||||||
 | 
					   These procedure shouldn't cause you into problems and is recommended
 | 
				
			||||||
 | 
					   even if you don't use ngIRCd.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- 
 | 
					-- 
 | 
				
			||||||
$Id: README-AUX.txt,v 1.1 2002/02/25 14:02:32 alex Exp $
 | 
					$Id: README-AUX.txt,v 1.10 2006/07/23 12:19:57 alex Exp $
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,15 +1,21 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                     ngIRCd - Next Generation IRC Server
 | 
					                     ngIRCd - Next Generation IRC Server
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                      (c)2001,2002 by Alexander Barton,
 | 
					                      (c)2001-2003 by Alexander Barton,
 | 
				
			||||||
                    alex@barton.de, http://www.barton.de/
 | 
					                    alex@barton.de, http://www.barton.de/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                  ngIRCd ist freie Software und steht unter
 | 
					               ngIRCd is free software and published under the
 | 
				
			||||||
                       der GNU General Public License.
 | 
					                   terms of the GNU General Public License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                             -- README-BeOS.txt --
 | 
					                             -- README-BeOS.txt --
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      +-------------------------------------------------------------+
 | 
				
			||||||
 | 
					      | This text is only available in german at the moment, sorry! |
 | 
				
			||||||
 | 
					      | Contributors for this text or the BeOS port are welcome :-) |
 | 
				
			||||||
 | 
					      +-------------------------------------------------------------+
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
BeOS gehoert im Moment (noch?) nicht zu den offiziell unterstuetzten Plat-
 | 
					BeOS gehoert im Moment (noch?) nicht zu den offiziell unterstuetzten Plat-
 | 
				
			||||||
formen: der ngIRCd enthaelt zwar bereits einige Anpassungen an BeOS und
 | 
					formen: der ngIRCd enthaelt zwar bereits einige Anpassungen an BeOS und
 | 
				
			||||||
compiliert auch, jedoch bricht er bei jedem Connect-Versuch eines Clients
 | 
					compiliert auch, jedoch bricht er bei jedem Connect-Versuch eines Clients
 | 
				
			||||||
@@ -18,11 +24,11 @@ mit diesem Fehler ab:
 | 
				
			|||||||
   select(): Bad file descriptor!
 | 
					   select(): Bad file descriptor!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Es sieht leider so aus, als ob das select() von BeOS nicht mit File-Handles
 | 
					Es sieht leider so aus, als ob das select() von BeOS nicht mit File-Handles
 | 
				
			||||||
von Pipes verschiedener Prozesse umgehen kann: sobald der Resolver asyncron
 | 
					von Pipes verschiedener Prozesse umgehen kann: sobald der Resolver asynchron
 | 
				
			||||||
gestartet wird, also Pipe-Handles im select() vorhanden sind, fuehrt das zu
 | 
					gestartet wird, also Pipe-Handles im select() vorhanden sind, fuehrt das zu
 | 
				
			||||||
obiger Meldung.
 | 
					obiger Meldung.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Theoretische "L<EFBFBD>sung"/Workaround:
 | 
					Theoretische "Loesung"/Workaround:
 | 
				
			||||||
Den Resolver unter BeOS nicht verwenden, sondern mit IP-Adressen arbeiten.
 | 
					Den Resolver unter BeOS nicht verwenden, sondern mit IP-Adressen arbeiten.
 | 
				
			||||||
Nachteil: der ngIRCd koennte sich nicht zu Servern verbinden, die dynamische
 | 
					Nachteil: der ngIRCd koennte sich nicht zu Servern verbinden, die dynamische
 | 
				
			||||||
Adressen benutzen -- dazu muesste er den Namen aufloesen. Ansonsten sollte
 | 
					Adressen benutzen -- dazu muesste er den Namen aufloesen. Ansonsten sollte
 | 
				
			||||||
@@ -32,5 +38,16 @@ Also: wenn es jemand implementieren will ... ;-))
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Vielleicht mache ich es auch irgendwann mal selber. Mal sehen.
 | 
					Vielleicht mache ich es auch irgendwann mal selber. Mal sehen.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					2002-05-19:
 | 
				
			||||||
 | 
					Ich habe gerade damit ein wenig gespielt und den Source hier so geaendert,
 | 
				
			||||||
 | 
					dass unter BeOS keine Resolver-Subprozesse mehr erzeugt werden, sondern mit
 | 
				
			||||||
 | 
					den "rohen" IP-Adressen gearbeitet wird. Das funktioniert so weit auch,
 | 
				
			||||||
 | 
					allerdings verschluckt sich BeOS nun bei anderen Funktionen, so zum Beispiel
 | 
				
			||||||
 | 
					bei close(), wenn ein Socket eines Clients geschlossen werden soll!?
 | 
				
			||||||
 | 
					Sehr komisch.
 | 
				
			||||||
 | 
					Wer Interesse daran hat, das weiter zu verfolgen, der moege sich bitte mit
 | 
				
			||||||
 | 
					mir in Verbindung setzen (alex@barton.de), ich maile gerne meine Patches zu.
 | 
				
			||||||
 | 
					Fuer eine Aenderung im CVS ist es aber meiner Meinung nach noch zu frueh ...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- 
 | 
					-- 
 | 
				
			||||||
$Id: README-BeOS.txt,v 1.1 2002/02/25 14:02:32 alex Exp $
 | 
					$Id: README-BeOS.txt,v 1.7 2003/05/15 21:47:57 alex Exp $
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										44
									
								
								doc/README-Interix.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								doc/README-Interix.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,44 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					                     ngIRCd - Next Generation IRC Server
 | 
				
			||||||
 | 
					                           http://ngircd.barton.de/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					               (c)2001-2012 Alexander Barton and Contributors.
 | 
				
			||||||
 | 
					               ngIRCd is free software and published under the
 | 
				
			||||||
 | 
					                   terms of the GNU General Public License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                         -- README-Interix.txt --
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngIRCd release 15 has successfully been tested on Microsoft Windows XP
 | 
				
			||||||
 | 
					Professional using the Services for UNIX (SFU) version 3.5 and Microsoft
 | 
				
			||||||
 | 
					Windows 7 with the bundled Subsystem for UNIX Applications (SUA).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SFU are supported on Windows 2000, Windows 2000 Server, Windows XP, and
 | 
				
			||||||
 | 
					Windows Server 2003. SUA is supported on Windows Server 2003 R2, Windows
 | 
				
			||||||
 | 
					Server 2008 & 2008 R2, Windows Vista, and Windows 7 -- so ngIRCd should be
 | 
				
			||||||
 | 
					able to run on all of these platforms.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					But please note that two things:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1. Don't use the poll() IO API
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The poll() API function is not fully implemented by SFU/SUA and therefore
 | 
				
			||||||
 | 
					can't be used by ngIRCd -- which normally would be the default. Please see
 | 
				
			||||||
 | 
					<http://www.suacommunity.com/faqs.aspx> section 4.25 for details:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  "If you do try to use the poll() API your program will block on the
 | 
				
			||||||
 | 
					  API call forever. You must direct your program to build using the
 | 
				
			||||||
 | 
					  select() API."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					So when running the ./configure script, you HAVE TO DISABLE poll() support:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ./configure --without-poll
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngIRCd then defaults to using the select() API function which works fine.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					2. Use GNU make(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Starting with ngIRCd 18, our build system doesn't work with the default
 | 
				
			||||||
 | 
					make(1) binary of Interix, you should use GNU make instead (tested with
 | 
				
			||||||
 | 
					version 3.82 built from source).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										18
									
								
								doc/RFC.txt
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								doc/RFC.txt
									
									
									
									
									
								
							@@ -1,16 +1,17 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                     ngIRCd - Next Generation IRC Server
 | 
					                     ngIRCd - Next Generation IRC Server
 | 
				
			||||||
 | 
					                           http://ngircd.barton.de/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                      (c)2001,2002 by Alexander Barton,
 | 
					               (c)2001-2017 Alexander Barton and Contributors.
 | 
				
			||||||
                    alex@barton.de, http://www.barton.de/
 | 
					               ngIRCd is free software and published under the
 | 
				
			||||||
 | 
					                   terms of the GNU General Public License.
 | 
				
			||||||
                  ngIRCd ist freie Software und steht unter
 | 
					 | 
				
			||||||
                       der GNU General Public License.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                 -- RFC.txt --
 | 
					                                 -- RFC.txt --
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Das IRC-Protokoll ist in diesen RFC's (Request For Comments) dokumentiert:
 | 
					The Internet Relay Chat (IRC) protocol is documented in these Request for
 | 
				
			||||||
 | 
					Comments (RFCs), which you can get via <http://www.faqs.org/rfcs/> or
 | 
				
			||||||
 | 
					<https://www.ietf.org/rfc.html> for example.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  1459	Oikarinen, J. & D. Reed, "Internet Relay Chat Protocol",
 | 
					  1459	Oikarinen, J. & D. Reed, "Internet Relay Chat Protocol",
 | 
				
			||||||
	May 1993, [IRC].
 | 
						May 1993, [IRC].
 | 
				
			||||||
@@ -27,6 +28,5 @@ Das IRC-Protokoll ist in diesen RFC's (Request For Comments) dokumentiert:
 | 
				
			|||||||
  2813	Kalt, C., "Internet Relay Chat: Server Protocol",
 | 
					  2813	Kalt, C., "Internet Relay Chat: Server Protocol",
 | 
				
			||||||
	April 2000, [IRC-SERVER].
 | 
						April 2000, [IRC-SERVER].
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  7194	Hartmann, R., "Default Port for Internet Relay Chat (IRC) via TLS/SSL",
 | 
				
			||||||
-- 
 | 
						August 2014.
 | 
				
			||||||
$Id: RFC.txt,v 1.4 2002/01/23 18:20:04 alex Exp $
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										80
									
								
								doc/SSL.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								doc/SSL.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,80 @@
 | 
				
			|||||||
 | 
					# [ngIRCd](https://ngircd.barton.de) - SSL/TLS Encrypted Connections
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngIRCd supports SSL/TLS encrypted connections using the *OpenSSL* or *GnuTLS*
 | 
				
			||||||
 | 
					libraries. Both encrypted server-server links as well as client-server links
 | 
				
			||||||
 | 
					are supported.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SSL is a compile-time option which is disabled by default. Use one of these
 | 
				
			||||||
 | 
					options of the ./configure script to enable it:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `--with-openssl`: enable SSL support using OpenSSL.
 | 
				
			||||||
 | 
					- `--with-gnutls`: enable SSL support using GnuTLS.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					You can check the output of `ngircd --version` to validate if your executable
 | 
				
			||||||
 | 
					includes support for SSL or not: "+SSL" must be listed in the feature flags.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					You also need a SSL key and certificate, for example using Let's Encrypt, which
 | 
				
			||||||
 | 
					is out of the scope of this document.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					From a feature point of view, ngIRCds support for both libraries is
 | 
				
			||||||
 | 
					comparable. The only major difference (at this time) is that ngIRCd with GnuTLS
 | 
				
			||||||
 | 
					does not support password protected private keys.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Configuration
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SSL-encrypted connections and plain-text connects can't run on the same network
 | 
				
			||||||
 | 
					port (which is a limitation of the IRC protocol); therefore you have to define
 | 
				
			||||||
 | 
					separate port(s) in your `[SSL]` block in the configuration file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					A minimal configuration for *accepting* SSL-encrypted client & server
 | 
				
			||||||
 | 
					connections looks like this:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					``` ini
 | 
				
			||||||
 | 
					[SSL]
 | 
				
			||||||
 | 
					CertFile = /etc/ssl/certs/my-fullchain.pem
 | 
				
			||||||
 | 
					KeyFile = /etc/ssl/certs/my-privkey.pem
 | 
				
			||||||
 | 
					Ports = 6697, 6698
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					In this case, the server only deals with *incoming* connections and never has to
 | 
				
			||||||
 | 
					validate SSL certificates itself, and therefore no "Certificate Authorities" are
 | 
				
			||||||
 | 
					needed.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If you want to use *outgoing* SSL-connections to other servers, you need to add:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					``` ini
 | 
				
			||||||
 | 
					[SSL]
 | 
				
			||||||
 | 
					...
 | 
				
			||||||
 | 
					CAFile = /etc/ssl/certs/ca-certificates.crt
 | 
				
			||||||
 | 
					DHFile = /etc/ngircd/dhparams.pem
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[SERVER]
 | 
				
			||||||
 | 
					...
 | 
				
			||||||
 | 
					SSLConnect = yes
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The `CAFile` option configures a file listing all the certificates of the
 | 
				
			||||||
 | 
					trusted Certificate Authorities.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The Diffie-Hellman parameters file `dhparams.pem` can be created like this:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- OpenSSL: `openssl dhparam -2 -out /etc/ngircd/dhparams.pem 4096`
 | 
				
			||||||
 | 
					- GnuTLS: `certtool --generate-dh-params --bits 4096 --outfile /etc/ngircd/dhparams.pem`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Note that enabling `SSLConnect` not only enforces SSL-encrypted links for
 | 
				
			||||||
 | 
					*outgoing* connections to other servers, but for *incoming* connections as well:
 | 
				
			||||||
 | 
					If a server configured with `SSLConnect = yes` tries to connect on a plain-text
 | 
				
			||||||
 | 
					connection, it won't be accepted to prevent data leakage! Therefore you should
 | 
				
			||||||
 | 
					set this for *all* servers you expect to use SSL-encrypted connections!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Accepting untrusted Remote Certificates
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If you are using self-signed certificates or otherwise invalid certificates,
 | 
				
			||||||
 | 
					which ngIRCd would reject by default, you can force ngIRCd to skip certificate
 | 
				
			||||||
 | 
					validation on a per-server basis and continue establishing outgoing connections
 | 
				
			||||||
 | 
					to the respective peer by setting `SSLVerify = no` in the `[SERVER]` block of
 | 
				
			||||||
 | 
					this remote server in your configuration.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					But please think twice before doing so: the established connection is still
 | 
				
			||||||
 | 
					encrypted but the remote site is *not verified at all* and man-in-the-middle
 | 
				
			||||||
 | 
					attacks are possible!
 | 
				
			||||||
							
								
								
									
										152
									
								
								doc/Services.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										152
									
								
								doc/Services.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,152 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					                     ngIRCd - Next Generation IRC Server
 | 
				
			||||||
 | 
					                           http://ngircd.barton.de/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					               (c)2001-2011 Alexander Barton and Contributors.
 | 
				
			||||||
 | 
					               ngIRCd is free software and published under the
 | 
				
			||||||
 | 
					                   terms of the GNU General Public License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                              -- Services.txt --
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngIRCd doesn't implement a "special IRC services interface", but services
 | 
				
			||||||
 | 
					acting as a "regular servers" ("pseudo servers") are supported, either
 | 
				
			||||||
 | 
					using the IRC protocol as defined in RFC 1459 or RFC 2812.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Support for Services has been tested using
 | 
				
			||||||
 | 
					 - Anope 1.9.8 or later (<http://www.anope.org/>)
 | 
				
			||||||
 | 
					 - Atheme 7.0.2 or later (<https://atheme.org/>)
 | 
				
			||||||
 | 
					 - "IRC Services" 5.1.x by Andrew Church (<http://achurch.org/services/>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This document describes setting up ngIRCd and these services.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Please let us know if you are successfully using other IRC service packages or
 | 
				
			||||||
 | 
					which problems you encounter -- thanks!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Setting up ngIRCd
 | 
				
			||||||
 | 
					~~~~~~~~~~~~~~~~~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The "pseudo server" handling the IRC services is configured as a regular
 | 
				
			||||||
 | 
					remote server in the ngircd.conf(5). In addition the variable "ServiceMask"
 | 
				
			||||||
 | 
					should be set, enabling this ngIRCd to recognize the "pseudo users" as IRC
 | 
				
			||||||
 | 
					services instead of regular IRC users.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Example:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [GLOBAL]
 | 
				
			||||||
 | 
					     Name = server.irc.net
 | 
				
			||||||
 | 
					     Ports = 6667
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [SERVER]
 | 
				
			||||||
 | 
					     Name = services.irc.net
 | 
				
			||||||
 | 
					     MyPassword = 123abc
 | 
				
			||||||
 | 
					     PeerPassword = 123abc
 | 
				
			||||||
 | 
					     ServiceMask = *Serv
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Setting up Anope 1.9.x & 2.x
 | 
				
			||||||
 | 
					~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Anope 1.9.8 or later (<http://www.anope.org/>) can be used with ngIRCd using
 | 
				
			||||||
 | 
					the "ngircd" protocol module.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					At least the following settings have to be tweaked, in addition to all the
 | 
				
			||||||
 | 
					settings marked as required by Anope:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					In conf/services.conf:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  define
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
						name = "services.host"
 | 
				
			||||||
 | 
						value = "services.irc.net"
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  uplink
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
						host = "server.irc.net"
 | 
				
			||||||
 | 
						port = 6667
 | 
				
			||||||
 | 
						password = "123abc"
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # Load ngIRCd protocol module
 | 
				
			||||||
 | 
					  module
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
						name = "ngircd"
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  networkinfo
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
						# Must be set to the "MaxNickLength" setting of ngIRCd!
 | 
				
			||||||
 | 
						nicklen = 9
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# When not using "strict mode", which is the default:
 | 
				
			||||||
 | 
						userlen = 20
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						chanlen = 50
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					In conf/nickserv.conf:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  module
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
						name = "nickserv"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# not required if you are running ngIRCd with a higher nickname limit
 | 
				
			||||||
 | 
						# ("MaxNickLength") than 11 characters, but REQUIRED by default!
 | 
				
			||||||
 | 
						guestnickprefix = "G-"
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Setting up Atheme 7.0.2 or later
 | 
				
			||||||
 | 
					~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Atheme 7.0.2 or later (<https://atheme.org/>) may be used with ngIRCd using
 | 
				
			||||||
 | 
					the "ngircd" protocol module.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The following settings need to be in atheme.conf:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  loadmodule "modules/protocol/ngircd";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  serverinfo {
 | 
				
			||||||
 | 
						name = "services.irc.net";
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  uplink "server.irc.net" {
 | 
				
			||||||
 | 
						password = "123abc";
 | 
				
			||||||
 | 
						port = 6667;
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The documentation of Atheme can be found in the doc/ directory of the
 | 
				
			||||||
 | 
					Atheme source distribution.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Setting up IRC Services 5.1.x
 | 
				
			||||||
 | 
					~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					IRC Services 5.1.3 and above can be used with ngIRCd using the "rfc1459"
 | 
				
			||||||
 | 
					protocol module.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Please note that versions up to and including 5.1.3 contain a bug that
 | 
				
			||||||
 | 
					sometimes causes IRC Services to hang on startup. There are two workarounds:
 | 
				
			||||||
 | 
					 a) send the services process a HUP signal ("killall -HUP ircservices")
 | 
				
			||||||
 | 
					 b) apply this patch to the IRC Services source tree:
 | 
				
			||||||
 | 
					    <http://arthur.barton.de/pub/ngircd/contrib/IRCServices513-FlushBuffer.patch>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					At least the following settings have to be tweaked, in addition to all the
 | 
				
			||||||
 | 
					settings marked as required by IRC Services:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					In ircservices.conf:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Variable		Example value
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  RemoteServer		server.irc.net 6667 "123abc"
 | 
				
			||||||
 | 
					  ServerName		"services.irc.net"
 | 
				
			||||||
 | 
					  LoadModule		protocol/rfc1459
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					In modules.conf:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Module		protocol/rfc1459
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The documentation of IRC Services can be found here:
 | 
				
			||||||
 | 
					<http://www.ircservices.za.net/docs/>
 | 
				
			||||||
@@ -1,108 +0,0 @@
 | 
				
			|||||||
# $Id: sample-ngircd.conf,v 1.8 2002/03/30 13:03:12 alex Exp $
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# Das ist eine Beispiel-Konfiguration fuer den ngIRCd, die an die
 | 
					 | 
				
			||||||
# jeweiligen Beduerfnisse angepasst werden kann/muss.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# Kommentare werden mit "#" oder ";" eingeleitet.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Global]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	#
 | 
					 | 
				
			||||||
	# Im [Global]-Abschnitt der Konfigurationsdatei wird der Server
 | 
					 | 
				
			||||||
	# "an sich" konfiguriert. Notwendig ist nur die Variable "Name",
 | 
					 | 
				
			||||||
	# Info ist in der Regel ebengalls anzupassen. Fuer alle uebrigen
 | 
					 | 
				
			||||||
	# Variablen koennen oft die Defaults benutzt werden.
 | 
					 | 
				
			||||||
	#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	# Servername im IRC-Netz
 | 
					 | 
				
			||||||
	Name = irc.the.net
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	# Info-Text des Servers
 | 
					 | 
				
			||||||
	Info = Server Info Text
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	# Ports, auf denen Verbindungen angenommen werden sollen. Es koennen
 | 
					 | 
				
			||||||
	# mehrere Ports mit "," getrennt angegeben werden. (Default: 6667)
 | 
					 | 
				
			||||||
	;Ports = 6667, 6668, 6669
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	# Textdatei mit der "Message of the Day" (MOTD)
 | 
					 | 
				
			||||||
	;MotdFile = /usr/local/etc/ngircd.motd
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	# User-ID, unter der der Daemon laufen soll (dazu muss der Server
 | 
					 | 
				
			||||||
	# jedoch mit root-Rechten gestartet werden).
 | 
					 | 
				
			||||||
	# ACHTUNG: Die Konfigurations- und MOTD-Datei muessen fuer diesen
 | 
					 | 
				
			||||||
	# Benutzer lesbar sein, ansonsten schlaegt ein RESTART fehl!
 | 
					 | 
				
			||||||
	;ServerUID = 65534
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	# Group-ID, zu der der Daemon wechseln soll (hierzu muss der Server
 | 
					 | 
				
			||||||
	# jedoch mit root-Rechten gestartet werden)
 | 
					 | 
				
			||||||
	;ServerGID = 65534
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	# Nach <PingTimeout> Sekunden verschickt der Server bei Inaktivitaet
 | 
					 | 
				
			||||||
	# von einem Client diesem ein PING.
 | 
					 | 
				
			||||||
	;PingTimeout = 120
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	# Antwortet ein Client, der ein PING bekam, nicht innerhalb von
 | 
					 | 
				
			||||||
	# <PongTimeout> Sekunden mit einem PONG, so wird er disconnectiert.
 | 
					 | 
				
			||||||
	;PongTimeout = 20
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	# Der Server versucht alle <ConnectRetry> Sekunden, noch nicht bzw.
 | 
					 | 
				
			||||||
	# nicht mehr connectierte Server-Links aufzubauen.
 | 
					 | 
				
			||||||
	;ConnectRetry = 60
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Operator]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	#
 | 
					 | 
				
			||||||
	# Mit einem [Operator]-Block wird der Name und das Passwort eines
 | 
					 | 
				
			||||||
	# IRC-Operators konfiguriert. Es darf mehrere [Operator]-Bloecke
 | 
					 | 
				
			||||||
	# geben (fuer jeden Operator einen).
 | 
					 | 
				
			||||||
	#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	# ID des IRC-Operators (muss nicht mit dem Nick identisch sein).
 | 
					 | 
				
			||||||
	;Name = TheOper
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	# Passwort des IRC-Operators
 | 
					 | 
				
			||||||
	;Password = ThePwd
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Server]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	#
 | 
					 | 
				
			||||||
	# In [Server]-Bloecken werden Server konfiguriert, zu denen dieser
 | 
					 | 
				
			||||||
	# Server sich verbinden soll bzw. von denen Verbindungen angekommen
 | 
					 | 
				
			||||||
	# werden duerfen.
 | 
					 | 
				
			||||||
	# Es koennen mehrere Server konfiguriert werden, d.h. [Server]-
 | 
					 | 
				
			||||||
	# Bloecke koennen mehrfach vorkommen.
 | 
					 | 
				
			||||||
	# Ist fuer einen Server ein Port konfiguriert, so versucht dieser
 | 
					 | 
				
			||||||
	# Server die Gegenseite zu connectieren. Ist kein Port vorgegeben,
 | 
					 | 
				
			||||||
	# so wartet dieser Server auf eine Verbindung der Gegenseite.
 | 
					 | 
				
			||||||
	#
 | 
					 | 
				
			||||||
	# Server-Gruppen:
 | 
					 | 
				
			||||||
	# Fuer jeden Server kann (optinal!) eine Gruppe konfiguriert werden,
 | 
					 | 
				
			||||||
	# zu der er gehoert (wird nur beachtet, wenn ein Port konfiguriert
 | 
					 | 
				
			||||||
	# ist!): eine solche Server-Gruppe wird quasi als ein Server ange-
 | 
					 | 
				
			||||||
	# sehen, der ngIRCd baut also nur eine Verbindung auf. Schlaegt die
 | 
					 | 
				
			||||||
	# Verbindung zu einem Server in einer Gruppe fehl, so wird der
 | 
					 | 
				
			||||||
	# naechste Server in der Gruppe probiert.
 | 
					 | 
				
			||||||
	#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	# Hostname des Servers
 | 
					 | 
				
			||||||
	;Host = connect-to-host.the.net
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	# IRC-Name des Servers
 | 
					 | 
				
			||||||
	;Name = irc2.the.net
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	# Port, zu dem dieser Server eine Verbindung herstellen soll. Wird
 | 
					 | 
				
			||||||
	# kein Port angegeben, so wird auf eine Verbindung der Gegenseite
 | 
					 | 
				
			||||||
	# gewartet.
 | 
					 | 
				
			||||||
	;Port = 6666
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	# Passwort fuer diese Verbindung
 | 
					 | 
				
			||||||
	;Password = ThePwd1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	# Gruppe, zu der dieser Server gehoert (optional).
 | 
					 | 
				
			||||||
	;Group = 123
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# -eof-
 | 
					 | 
				
			||||||
							
								
								
									
										424
									
								
								doc/sample-ngircd.conf.tmpl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										424
									
								
								doc/sample-ngircd.conf.tmpl
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,424 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# This is a sample configuration file for the ngIRCd IRC daemon, which must
 | 
				
			||||||
 | 
					# be customized to the local preferences and needs.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Comments are started with "#" or ";".
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# A lot of configuration options in this file start with a ";". You have
 | 
				
			||||||
 | 
					# to remove the ";" in front of each variable to actually set a value!
 | 
				
			||||||
 | 
					# The disabled variables are shown with example values for completeness only
 | 
				
			||||||
 | 
					# and the daemon is using compiled-in default settings.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Use "ngircd --configtest" (see manual page ngircd(8)) to validate that the
 | 
				
			||||||
 | 
					# server interprets the configuration file as expected!
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Please see ngircd.conf(5) for a complete list of configuration options
 | 
				
			||||||
 | 
					# and their descriptions.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Global]
 | 
				
			||||||
 | 
						# The [Global] section of this file is used to define the main
 | 
				
			||||||
 | 
						# configuration of the server, like the server name and the ports
 | 
				
			||||||
 | 
						# on which the server should be listening.
 | 
				
			||||||
 | 
						# These settings depend on your personal preferences, so you should
 | 
				
			||||||
 | 
						# make sure that they correspond to your installation and setup!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Server name in the IRC network, must contain at least one dot
 | 
				
			||||||
 | 
						# (".") and be unique in the IRC network. When not set, ngIRCd tries
 | 
				
			||||||
 | 
						# to deduce a valid IRC server name from the local host name.
 | 
				
			||||||
 | 
						;Name = irc.example.net
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Information about the server and the administrator, used by the
 | 
				
			||||||
 | 
						# ADMIN command. Not required by server but by RFC!
 | 
				
			||||||
 | 
						;AdminInfo1 = Description
 | 
				
			||||||
 | 
						;AdminInfo2 = Location
 | 
				
			||||||
 | 
						;AdminEMail = admin@irc.server
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Text file which contains the ngIRCd help text. This file is required
 | 
				
			||||||
 | 
						# to display help texts when using the "HELP <cmd>" command. Default: a
 | 
				
			||||||
 | 
						# built-in standard path (check "ngircd --configtest").
 | 
				
			||||||
 | 
						;HelpFile = :DOCDIR:/Commands.txt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Info text of the server. This will be shown by WHOIS and
 | 
				
			||||||
 | 
						# LINKS requests for example. Set to the server software name and
 | 
				
			||||||
 | 
						# version by default.
 | 
				
			||||||
 | 
						;Info = Server Info Text
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Comma separated list of IP addresses on which the server should
 | 
				
			||||||
 | 
						# listen. Default values are:
 | 
				
			||||||
 | 
						# "0.0.0.0" or (if compiled with IPv6 support) "::,0.0.0.0"
 | 
				
			||||||
 | 
						# so the server listens on all IP addresses of the system by default.
 | 
				
			||||||
 | 
						;Listen = 127.0.0.1,192.168.0.1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Text file with the "message of the day" (MOTD). This message will
 | 
				
			||||||
 | 
						# be shown to all users connecting to the server: Default: a built-in
 | 
				
			||||||
 | 
						# standard path (check "ngircd --configtest").
 | 
				
			||||||
 | 
						;MotdFile = :ETCDIR:/ngircd.motd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# A simple Phrase (<127 chars) if you don't want to use a motd file.
 | 
				
			||||||
 | 
						;MotdPhrase = "Hello world!"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# The name of the IRC network to which this server belongs. This name
 | 
				
			||||||
 | 
						# is optional, should only contain ASCII characters, and can't contain
 | 
				
			||||||
 | 
						# spaces. It is only used to inform clients. The default is empty,
 | 
				
			||||||
 | 
						# so no network name is announced to clients.
 | 
				
			||||||
 | 
						;Network = aIRCnetwork
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Global password for all users needed to connect to the server.
 | 
				
			||||||
 | 
						# (Default: not set)
 | 
				
			||||||
 | 
						;Password = abc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# This tells ngIRCd to write its current process ID to a file.
 | 
				
			||||||
 | 
						# Note that the pidfile is written AFTER chroot and switching the
 | 
				
			||||||
 | 
						# user ID, e.g. the directory the pidfile resides in must be
 | 
				
			||||||
 | 
						# writable by the ngIRCd user and exist in the chroot directory.
 | 
				
			||||||
 | 
						;PidFile = /var/run/ngircd/ngircd.pid
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Ports on which the server should listen. There may be more than
 | 
				
			||||||
 | 
						# one port, separated with ",". (Default: 6667)
 | 
				
			||||||
 | 
						;Ports = 6667, 6668, 6669
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Group ID under which the ngIRCd should run; you can use the name
 | 
				
			||||||
 | 
						# of the group or the numerical ID. ATTENTION: For this to work the
 | 
				
			||||||
 | 
						# server must have been started with root privileges!
 | 
				
			||||||
 | 
						;ServerGID = 65534
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# User ID under which the server should run; you can use the name
 | 
				
			||||||
 | 
						# of the user or the numerical ID. ATTENTION: For this to work the
 | 
				
			||||||
 | 
						# server must have been started with root privileges! In addition,
 | 
				
			||||||
 | 
						# the configuration and MOTD files must be readable by this user,
 | 
				
			||||||
 | 
						# otherwise RESTART and REHASH won't work!
 | 
				
			||||||
 | 
						;ServerUID = 65534
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Limits]
 | 
				
			||||||
 | 
						# Define some limits and timeouts for this ngIRCd instance. Default
 | 
				
			||||||
 | 
						# values should be safe, but it is wise to double-check :-)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# The server tries every <ConnectRetry> seconds to establish a link
 | 
				
			||||||
 | 
						# to not yet (or no longer) connected servers.
 | 
				
			||||||
 | 
						;ConnectRetry = 60
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Number of seconds after which the whole daemon should shutdown when
 | 
				
			||||||
 | 
						# no connections are left active after handling at least one client
 | 
				
			||||||
 | 
						# (0: never, which is the default).
 | 
				
			||||||
 | 
						# This can be useful for testing or when ngIRCd is started using
 | 
				
			||||||
 | 
						# "socket activation" with systemd(8), for example.
 | 
				
			||||||
 | 
						;IdleTimeout = 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Maximum number of simultaneous in- and outbound connections the
 | 
				
			||||||
 | 
						# server is allowed to accept (0: unlimited):
 | 
				
			||||||
 | 
						;MaxConnections = 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Maximum number of simultaneous connections from a single IP address
 | 
				
			||||||
 | 
						# the server will accept (0: unlimited):
 | 
				
			||||||
 | 
						;MaxConnectionsIP = 5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Maximum number of channels a user can be member of (0: no limit):
 | 
				
			||||||
 | 
						;MaxJoins = 10
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Maximum length of an user nickname (Default: 9, as in RFC 2812).
 | 
				
			||||||
 | 
						# Please note that all servers in an IRC network MUST use the same
 | 
				
			||||||
 | 
						# maximum nickname length!
 | 
				
			||||||
 | 
						;MaxNickLength = 9
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Maximum penalty time increase in seconds, per penalty event. Set to -1
 | 
				
			||||||
 | 
						# for no limit (the default), 0 to disable penalties altogether. The
 | 
				
			||||||
 | 
						# daemon doesn't use penalty increases higher than 2 seconds during
 | 
				
			||||||
 | 
						# normal operation, so values greater than 1 rarely make sense.
 | 
				
			||||||
 | 
						;MaxPenaltyTime = -1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Maximum number of channels returned in response to a /list
 | 
				
			||||||
 | 
						# command (0: unlimited):
 | 
				
			||||||
 | 
						;MaxListSize = 100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# After <PingTimeout> seconds of inactivity the server will send a
 | 
				
			||||||
 | 
						# PING to the peer to test whether it is alive or not.
 | 
				
			||||||
 | 
						;PingTimeout = 120
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# If a client fails to answer a PING with a PONG within <PongTimeout>
 | 
				
			||||||
 | 
						# seconds, it will be disconnected by the server.
 | 
				
			||||||
 | 
						;PongTimeout = 20
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Options]
 | 
				
			||||||
 | 
						# Optional features and configuration options to further tweak the
 | 
				
			||||||
 | 
						# behavior of ngIRCd. If you want to get started quickly, you most
 | 
				
			||||||
 | 
						# probably don't have to make changes here -- they are all optional.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# List of allowed channel types (channel prefixes) for newly created
 | 
				
			||||||
 | 
						# channels on the local server. By default, all supported channel
 | 
				
			||||||
 | 
						# types are allowed. Set this variable to the empty string to disallow
 | 
				
			||||||
 | 
						# creation of new channels by local clients at all.
 | 
				
			||||||
 | 
						;AllowedChannelTypes = #&+
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Are remote IRC operators allowed to control this server, e.g.
 | 
				
			||||||
 | 
						# use commands like CONNECT, SQUIT, DIE, ...?
 | 
				
			||||||
 | 
						;AllowRemoteOper = no
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# A directory to chroot in when everything is initialized. It
 | 
				
			||||||
 | 
						# doesn't need to be populated if ngIRCd is compiled as a static
 | 
				
			||||||
 | 
						# binary. By default ngIRCd won't use the chroot() feature.
 | 
				
			||||||
 | 
						# ATTENTION: For this to work the server must have been started
 | 
				
			||||||
 | 
						# with root privileges!
 | 
				
			||||||
 | 
						;ChrootDir = /var/empty
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Set this hostname for every client instead of the real one.
 | 
				
			||||||
 | 
						# Use %x to add the hashed value of the original hostname.
 | 
				
			||||||
 | 
						;CloakHost = cloaked.host
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Use this hostname for hostname cloaking on clients that have the
 | 
				
			||||||
 | 
						# user mode "+x" set, instead of the name of the server.
 | 
				
			||||||
 | 
						# Use %x to add the hashed value of the original hostname.
 | 
				
			||||||
 | 
						;CloakHostModeX = cloaked.user
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# The Salt for cloaked hostname hashing. When undefined a random
 | 
				
			||||||
 | 
						# hash is generated after each server start.
 | 
				
			||||||
 | 
						;CloakHostSalt = abcdefghijklmnopqrstuvwxyz
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Set every clients' user name to their nickname
 | 
				
			||||||
 | 
						;CloakUserToNick = yes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Try to connect to other IRC servers using IPv4 and IPv6, if possible.
 | 
				
			||||||
 | 
						;ConnectIPv6 = yes
 | 
				
			||||||
 | 
						;ConnectIPv4 = yes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Default user mode(s) to set on new local clients. Please note that
 | 
				
			||||||
 | 
						# only modes can be set that the client could set using regular MODE
 | 
				
			||||||
 | 
						# commands, you can't set "a" (away) for example! Default: none.
 | 
				
			||||||
 | 
						;DefaultUserModes = i
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Do DNS lookups when a client connects to the server.
 | 
				
			||||||
 | 
						;DNS = yes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Do IDENT lookups if ngIRCd has been compiled with support for it.
 | 
				
			||||||
 | 
						# Users identified using IDENT are registered without the "~" character
 | 
				
			||||||
 | 
						# prepended to their user name.
 | 
				
			||||||
 | 
						;Ident = yes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Directory containing configuration snippets (*.conf), that should
 | 
				
			||||||
 | 
						# be read in after parsing this configuration file.
 | 
				
			||||||
 | 
						# Default: a built-in directory name when no configuration file was
 | 
				
			||||||
 | 
						# explicitly given on the command line (check "ngircd --configtest"),
 | 
				
			||||||
 | 
						# none (empty) otherwise.
 | 
				
			||||||
 | 
						;IncludeDir = :ETCDIR:/conf.d
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Enhance user privacy slightly (useful for IRC server on TOR or I2P)
 | 
				
			||||||
 | 
						# by censoring some information like idle time, logon time, etc.
 | 
				
			||||||
 | 
						;MorePrivacy = no
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Normally ngIRCd doesn't send any messages to a client until it is
 | 
				
			||||||
 | 
						# registered. Enable this option to let the daemon send "NOTICE *"
 | 
				
			||||||
 | 
						# messages to clients while connecting.
 | 
				
			||||||
 | 
						;NoticeBeforeRegistration = no
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Should IRC Operators be allowed to use the MODE command even if
 | 
				
			||||||
 | 
						# they are not(!) channel-operators?
 | 
				
			||||||
 | 
						;OperCanUseMode = no
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Should IRC Operators get AutoOp (+o) in persistent (+P) channels?
 | 
				
			||||||
 | 
						;OperChanPAutoOp = yes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Mask IRC Operator mode requests as if they were coming from the
 | 
				
			||||||
 | 
						# server? (This is a compatibility hack for ircd-irc2 servers)
 | 
				
			||||||
 | 
						;OperServerMode = no
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Use PAM if ngIRCd has been compiled with support for it.
 | 
				
			||||||
 | 
						# Users identified using PAM are registered without the "~" character
 | 
				
			||||||
 | 
						# prepended to their user name.
 | 
				
			||||||
 | 
						;PAM = yes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# When PAM is enabled, all clients are required to be authenticated
 | 
				
			||||||
 | 
						# using PAM; connecting to the server without successful PAM
 | 
				
			||||||
 | 
						# authentication isn't possible.
 | 
				
			||||||
 | 
						# If this option is set, clients not sending a password are still
 | 
				
			||||||
 | 
						# allowed to connect: they won't become "identified" and keep the "~"
 | 
				
			||||||
 | 
						# character prepended to their supplied user name.
 | 
				
			||||||
 | 
						# Please note: To make some use of this behavior, it most probably
 | 
				
			||||||
 | 
						# isn't useful to enable "Ident", "PAM" and "PAMIsOptional" at the
 | 
				
			||||||
 | 
						# same time, because you wouldn't be able to distinguish between
 | 
				
			||||||
 | 
						# Ident'ified and PAM-authenticated users: both don't have a "~"
 | 
				
			||||||
 | 
						# character prepended to their respective user names!
 | 
				
			||||||
 | 
						;PAMIsOptional = no
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# When PAM is enabled, this value determines the used PAM
 | 
				
			||||||
 | 
						# configuration.
 | 
				
			||||||
 | 
						# This setting allows to run multiple ngIRCd instances with
 | 
				
			||||||
 | 
						# different PAM configurations on each instance.
 | 
				
			||||||
 | 
						# If you set it to "ngircd-foo", PAM will use
 | 
				
			||||||
 | 
						# /etc/pam.d/ngircd-foo instead of the default
 | 
				
			||||||
 | 
						# /etc/pam.d/ngircd.
 | 
				
			||||||
 | 
						;PAMServiceName = ngircd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Let ngIRCd send an "authentication PING" when a new client connects,
 | 
				
			||||||
 | 
						# and register this client only after receiving the corresponding
 | 
				
			||||||
 | 
						# "PONG" reply.
 | 
				
			||||||
 | 
						;RequireAuthPing = no
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Silently drop all incoming CTCP requests.
 | 
				
			||||||
 | 
						;ScrubCTCP = no
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Syslog "facility" to which ngIRCd should send log messages.
 | 
				
			||||||
 | 
						# Possible values are system dependent, but most probably auth, daemon,
 | 
				
			||||||
 | 
						# user and local1 through local7 are possible values; see syslog(3).
 | 
				
			||||||
 | 
						# Default is "local5" for historical reasons, you probably want to
 | 
				
			||||||
 | 
						# change this to "daemon", for example.
 | 
				
			||||||
 | 
						;SyslogFacility = local1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Password required for using the WEBIRC command used by some
 | 
				
			||||||
 | 
						# Web-to-IRC gateways. If not set/empty, the WEBIRC command can't
 | 
				
			||||||
 | 
						# be used. (Default: not set)
 | 
				
			||||||
 | 
						;WebircPassword = xyz
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;[SSL]
 | 
				
			||||||
 | 
						# SSL-related configuration options. Please note that this section
 | 
				
			||||||
 | 
						# is only available when ngIRCd is compiled with support for SSL!
 | 
				
			||||||
 | 
						# So don't forget to remove the ";" above if this is the case ...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# SSL Trusted CA Certificates File (for verifying peer certificates)
 | 
				
			||||||
 | 
						;CAFile = /etc/ssl/CA/cacert.pem
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Certificate Revocation File (for marking otherwise valid
 | 
				
			||||||
 | 
						# certficates as invalid)
 | 
				
			||||||
 | 
						;CRLFile = /etc/ssl/CA/crl.pem
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# SSL Server Key Certificate
 | 
				
			||||||
 | 
						;CertFile = :ETCDIR:/ssl/server-cert.pem
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Select cipher suites allowed for SSL/TLS connections. This defaults
 | 
				
			||||||
 | 
						# to HIGH:!aNULL:@STRENGTH (OpenSSL) or SECURE128 (GnuTLS).
 | 
				
			||||||
 | 
						# See 'man 1ssl ciphers' (OpenSSL) or 'man 3 gnutls_priority_init'
 | 
				
			||||||
 | 
						# (GnuTLS) for details.
 | 
				
			||||||
 | 
						# For OpenSSL:
 | 
				
			||||||
 | 
						;CipherList = HIGH:!aNULL:@STRENGTH:!SSLv3
 | 
				
			||||||
 | 
						# For GnuTLS:
 | 
				
			||||||
 | 
						;CipherList = SECURE128:-VERS-SSL3.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Diffie-Hellman parameters
 | 
				
			||||||
 | 
						;DHFile = :ETCDIR:/ssl/dhparams.pem
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# SSL Server Key
 | 
				
			||||||
 | 
						;KeyFile = :ETCDIR:/ssl/server-key.pem
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# password to decrypt SSLKeyFile (OpenSSL only)
 | 
				
			||||||
 | 
						;KeyFilePassword = secret
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Additional Listen Ports that expect SSL/TLS encrypted connections
 | 
				
			||||||
 | 
						;Ports = 6697, 9999
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Operator]
 | 
				
			||||||
 | 
						# [Operator] sections are used to define IRC Operators. There may be
 | 
				
			||||||
 | 
						# more than one [Operator] block, one for each local operator.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# ID of the operator (may be different of the nickname)
 | 
				
			||||||
 | 
						;Name = TheOper
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Password of the IRC operator
 | 
				
			||||||
 | 
						;Password = ThePwd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Optional Mask from which /OPER will be accepted
 | 
				
			||||||
 | 
						;Mask = *!ident@somewhere.example.com
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Operator]
 | 
				
			||||||
 | 
						# More [Operator] sections, if you like ...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Server]
 | 
				
			||||||
 | 
						# Other servers are configured in [Server] sections. If you
 | 
				
			||||||
 | 
						# configure a port for the connection, then this ngircd tries to
 | 
				
			||||||
 | 
						# connect to the other server on the given port; if not it waits
 | 
				
			||||||
 | 
						# for the other server to connect.
 | 
				
			||||||
 | 
						# There may be more than one server block, one for each server.
 | 
				
			||||||
 | 
						#
 | 
				
			||||||
 | 
						# Server Groups:
 | 
				
			||||||
 | 
						# The ngIRCd allows "server groups": You can assign an "ID" to every
 | 
				
			||||||
 | 
						# server with which you want this ngIRCd to link. If a server of a
 | 
				
			||||||
 | 
						# group won't answer, the ngIRCd tries to connect to the next server
 | 
				
			||||||
 | 
						# in the given group. But the ngircd never tries to connect to two
 | 
				
			||||||
 | 
						# servers with the same group ID.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# IRC name of the remote server, must match the "Name" variable in
 | 
				
			||||||
 | 
						# the [Global] section of the other server (when using ngIRCd).
 | 
				
			||||||
 | 
						;Name = irc2.example.net
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Internet host name or IP address of the peer (only required when
 | 
				
			||||||
 | 
						# this server should establish the connection).
 | 
				
			||||||
 | 
						;Host = connect-to-host.example.net
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# IP address to use as _source_ address for the connection. if
 | 
				
			||||||
 | 
						# unspecified, ngircd will let the operating system pick an address.
 | 
				
			||||||
 | 
						;Bind = 10.0.0.1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Port of the server to which the ngIRCd should connect. If you
 | 
				
			||||||
 | 
						# assign no port the ngIRCd waits for incoming connections.
 | 
				
			||||||
 | 
						;Port = 6667
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Own password for the connection. This password has to be configured
 | 
				
			||||||
 | 
						# as "PeerPassword" on the other server.
 | 
				
			||||||
 | 
						;MyPassword = MySecret
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Foreign password for this connection. This password has to be
 | 
				
			||||||
 | 
						# configured as "MyPassword" on the other server.
 | 
				
			||||||
 | 
						;PeerPassword = PeerSecret
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Group of this server (optional)
 | 
				
			||||||
 | 
						;Group = 123
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Set the "Passive" option to "yes" if you don't want this ngIRCd to
 | 
				
			||||||
 | 
						# connect to the configured peer (same as leaving the "Port" variable
 | 
				
			||||||
 | 
						# empty). The advantage of this option is that you can actually
 | 
				
			||||||
 | 
						# configure a port an use the IRC command CONNECT more easily to
 | 
				
			||||||
 | 
						# manually connect this specific server later.
 | 
				
			||||||
 | 
						;Passive = no
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Connect to the remote server using TLS/SSL (Default: false)
 | 
				
			||||||
 | 
						;SSLConnect = yes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Verify the TLS certificate presented by the remote server
 | 
				
			||||||
 | 
						# (Default: yes)
 | 
				
			||||||
 | 
						;SSLVerify = yes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Define a (case insensitive) list of masks matching nicknames that
 | 
				
			||||||
 | 
						# should be treated as IRC services when introduced via this remote
 | 
				
			||||||
 | 
						# server, separated by commas (",").
 | 
				
			||||||
 | 
						# REGULAR SERVERS DON'T NEED this parameter, so leave it empty
 | 
				
			||||||
 | 
						# (which is the default).
 | 
				
			||||||
 | 
						# When you are connecting IRC services which mask as a IRC server
 | 
				
			||||||
 | 
						# and which use "virtual users" to communicate with, for example
 | 
				
			||||||
 | 
						# "NickServ" and "ChanServ", you should set this parameter to
 | 
				
			||||||
 | 
						# something like "*Serv" or "NickServ,ChanServ,XyzServ".
 | 
				
			||||||
 | 
						;ServiceMask = *Serv,Global
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Server]
 | 
				
			||||||
 | 
						# More [Server] sections, if you like ...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Channel]
 | 
				
			||||||
 | 
						# Pre-defined channels can be configured in [Channel] sections.
 | 
				
			||||||
 | 
						# Such channels are created by the server when starting up and even
 | 
				
			||||||
 | 
						# persist when there are no more members left.
 | 
				
			||||||
 | 
						# Persistent channels are marked with the mode 'P', which can be set
 | 
				
			||||||
 | 
						# and unset by IRC operators like other modes on the fly.
 | 
				
			||||||
 | 
						# There may be more than one [Channel] block, one for each channel.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Name of the channel
 | 
				
			||||||
 | 
						;Name = #TheName
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Topic for this channel
 | 
				
			||||||
 | 
						;Topic = a great topic
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Initial channel modes, as used in "MODE" commands. Modifying lists
 | 
				
			||||||
 | 
						# (ban list, invite list, exception list) is supported.
 | 
				
			||||||
 | 
						# This option can be specified multiple times, evaluated top to bottom.
 | 
				
			||||||
 | 
						;Modes = +tnk mykey +l 5
 | 
				
			||||||
 | 
						;Modes = +b nick!~user@bad.host.example.com
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Should ngIRCd automatically join ("autojoin") all users to this
 | 
				
			||||||
 | 
						# channel on connect? Note: The users must have permissions to access
 | 
				
			||||||
 | 
						# the channel, otherwise joining them will fail!
 | 
				
			||||||
 | 
						;Autojoin = yes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Key file, syntax for each line: "<user>:<nick>:<key>".
 | 
				
			||||||
 | 
						# Default: none.
 | 
				
			||||||
 | 
						;KeyFile = :ETCDIR:/#chan.key
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Channel]
 | 
				
			||||||
 | 
						# More [Channel] sections, if you like ...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -eof-
 | 
				
			||||||
							
								
								
									
										93
									
								
								doc/src/Doxyfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										93
									
								
								doc/src/Doxyfile
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,93 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# ngIRCd -- The Next Generation IRC Daemon
 | 
				
			||||||
 | 
					# Copyright (c)2001-2010 Alexander Barton (alex@barton.de)
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This program is free software; you can redistribute it and/or modify
 | 
				
			||||||
 | 
					# it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					# the Free Software Foundation; either version 2 of the License, or
 | 
				
			||||||
 | 
					# (at your option) any later version.
 | 
				
			||||||
 | 
					# Please read the file COPYING, README and AUTHORS for more information.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This file describes the settings to be used by the documentation system
 | 
				
			||||||
 | 
					# doxygen (www.doxygen.org) for ngIRCd.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					# Project related configuration options
 | 
				
			||||||
 | 
					#---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DOXYFILE_ENCODING      = UTF-8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PROJECT_NAME           = ngIRCd
 | 
				
			||||||
 | 
					PROJECT_BRIEF          = "Lightweight Internet Relay Chat server"
 | 
				
			||||||
 | 
					PROJECT_LOGO           = "../../contrib/ngIRCd-Logo.gif"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					OUTPUT_DIRECTORY       = .
 | 
				
			||||||
 | 
					STRIP_FROM_PATH        = ../..
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					JAVADOC_AUTOBRIEF      = YES
 | 
				
			||||||
 | 
					OPTIMIZE_OUTPUT_FOR_C  = YES
 | 
				
			||||||
 | 
					TYPEDEF_HIDES_STRUCT   = YES
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TAB_SIZE               = 8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					# Build related configuration options
 | 
				
			||||||
 | 
					#---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXTRACT_ALL            = YES
 | 
				
			||||||
 | 
					EXTRACT_STATIC         = YES
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SHOW_DIRECTORIES       = YES
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					# configuration options related to warning and progress messages
 | 
				
			||||||
 | 
					#---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					QUIET                  = NO
 | 
				
			||||||
 | 
					WARNINGS               = YES
 | 
				
			||||||
 | 
					WARN_IF_UNDOCUMENTED   = YES
 | 
				
			||||||
 | 
					WARN_IF_DOC_ERROR      = YES
 | 
				
			||||||
 | 
					WARN_NO_PARAMDOC       = YES
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					# configuration options related to the input files
 | 
				
			||||||
 | 
					#---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					INPUT                  = ../../src
 | 
				
			||||||
 | 
					INPUT_ENCODING         = UTF-8
 | 
				
			||||||
 | 
					RECURSIVE              = YES
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					# configuration options related to source browsing
 | 
				
			||||||
 | 
					#---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE_BROWSER         = YES
 | 
				
			||||||
 | 
					STRIP_CODE_COMMENTS    = NO
 | 
				
			||||||
 | 
					REFERENCED_BY_RELATION = YES
 | 
				
			||||||
 | 
					REFERENCES_RELATION    = YES
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					# Output formats
 | 
				
			||||||
 | 
					#---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GENERATE_HTML          = YES
 | 
				
			||||||
 | 
					HTML_FOOTER            = footer.inc.html
 | 
				
			||||||
 | 
					HTML_DYNAMIC_SECTIONS  = YES
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GENERATE_DOCSET        = NO
 | 
				
			||||||
 | 
					GENERATE_HTMLHELP      = NO
 | 
				
			||||||
 | 
					GENERATE_LATEX         = NO
 | 
				
			||||||
 | 
					GENERATE_RTF           = NO
 | 
				
			||||||
 | 
					GENERATE_MAN           = NO
 | 
				
			||||||
 | 
					GENERATE_XML           = NO
 | 
				
			||||||
 | 
					GENERATE_AUTOGEN_DEF   = NO
 | 
				
			||||||
 | 
					GENERATE_PERLMOD       = NO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					# Configuration options related to the preprocessor   
 | 
				
			||||||
 | 
					#---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PREDEFINED             = DEBUG ZLIB PAM ZEROCONF CONN_MODULE __client_c__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -eof-
 | 
				
			||||||
							
								
								
									
										25
									
								
								doc/src/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								doc/src/Makefile.am
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,25 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# ngIRCd -- The Next Generation IRC Daemon
 | 
				
			||||||
 | 
					# Copyright (c)2001-2011 Alexander Barton (alex@barton.de) and Contributors.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This program is free software; you can redistribute it and/or modify
 | 
				
			||||||
 | 
					# it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					# the Free Software Foundation; either version 2 of the License, or
 | 
				
			||||||
 | 
					# (at your option) any later version.
 | 
				
			||||||
 | 
					# Please read the file COPYING, README and AUTHORS for more information.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXTRA_DIST = Doxyfile footer.inc.html
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					maintainer-clean-local:
 | 
				
			||||||
 | 
						rm -f Makefile Makefile.in
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					distclean-local:
 | 
				
			||||||
 | 
						rm -rf html
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					srcdoc:
 | 
				
			||||||
 | 
						@doxygen --version >/dev/null 2>&1 \
 | 
				
			||||||
 | 
						  || ( echo; echo "Error: \"doxygen\" not found!"; echo; exit 1 )
 | 
				
			||||||
 | 
						doxygen
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -eof-
 | 
				
			||||||
							
								
								
									
										12
									
								
								doc/src/footer.inc.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								doc/src/footer.inc.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					<hr class="footer">
 | 
				
			||||||
 | 
					<p style="text-align: center">
 | 
				
			||||||
 | 
					  ngIRCd
 | 
				
			||||||
 | 
					  <a href="https://ngircd.barton.de/">Homepage</a>.
 | 
				
			||||||
 | 
					  GitHub:
 | 
				
			||||||
 | 
					  <a href="https://github.com/ngircd/ngircd">Code Repository</a>,
 | 
				
			||||||
 | 
					  <a href="https://github.com/ngircd/ngircd/issues">Bug-Tracker</a>.
 | 
				
			||||||
 | 
					</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</body>
 | 
				
			||||||
 | 
					</html>
 | 
				
			||||||
							
								
								
									
										32
									
								
								man/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								man/Makefile.am
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,32 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# ngIRCd -- The Next Generation IRC Daemon
 | 
				
			||||||
 | 
					# Copyright (c)2001-2012 Alexander Barton (alex@barton.de) and Contributors
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This program is free software; you can redistribute it and/or modify
 | 
				
			||||||
 | 
					# it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					# the Free Software Foundation; either version 2 of the License, or
 | 
				
			||||||
 | 
					# (at your option) any later version.
 | 
				
			||||||
 | 
					# Please read the file COPYING, README and AUTHORS for more information.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TEMPLATE_MANS = ngircd.conf.5.tmpl ngircd.8.tmpl
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SUFFIXES = .tmpl .
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.tmpl:
 | 
				
			||||||
 | 
						$(AM_V_GEN)sed \
 | 
				
			||||||
 | 
						    -e "s@:SBINDIR:@${sbindir}@" \
 | 
				
			||||||
 | 
						    -e "s@:BINDIR:@${bindir}@" \
 | 
				
			||||||
 | 
						    -e "s@:ETCDIR:@${sysconfdir}@" \
 | 
				
			||||||
 | 
						    <$< >$@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					man_MANS = ngircd.conf.5 ngircd.8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CLEANFILES = $(man_MANS)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXTRA_DIST = $(TEMPLATE_MANS)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					maintainer-clean-local:
 | 
				
			||||||
 | 
						rm -f Makefile Makefile.in
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -eof-
 | 
				
			||||||
							
								
								
									
										147
									
								
								man/ngircd.8.tmpl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										147
									
								
								man/ngircd.8.tmpl
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,147 @@
 | 
				
			|||||||
 | 
					.\"
 | 
				
			||||||
 | 
					.\" ngircd(8) manual page template
 | 
				
			||||||
 | 
					.\"
 | 
				
			||||||
 | 
					.TH ngircd 8 "Sep 2023" ngIRCd "ngIRCd Manual"
 | 
				
			||||||
 | 
					.SH NAME
 | 
				
			||||||
 | 
					ngIRCd \- the "next generation" IRC daemon
 | 
				
			||||||
 | 
					.SH SYNOPSIS
 | 
				
			||||||
 | 
					.B ngircd
 | 
				
			||||||
 | 
					[
 | 
				
			||||||
 | 
					.I Options
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					.SH DESCRIPTION
 | 
				
			||||||
 | 
					.BR ngIRCd
 | 
				
			||||||
 | 
					is a free, portable and lightweight Internet Relay Chat (IRC) server for small
 | 
				
			||||||
 | 
					or private networks, developed under the GNU General Public License (GPL).
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					The server is quite easy to configure and runs as a single-node server or can
 | 
				
			||||||
 | 
					be part of a network of ngIRCd servers in a LAN or across the internet. It
 | 
				
			||||||
 | 
					optionally supports the IPv6 protocol, SSL/TLS-protected client-server and
 | 
				
			||||||
 | 
					server-server links, the Pluggable Authentication Modules (PAM) system for user
 | 
				
			||||||
 | 
					authentication, IDENT requests, and character set conversion for legacy
 | 
				
			||||||
 | 
					clients.
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					The name ngIRCd stands for
 | 
				
			||||||
 | 
					.IR "next-generation IRC daemon",
 | 
				
			||||||
 | 
					which is a little bit exaggerated:
 | 
				
			||||||
 | 
					.IR "lightweight Internet Relay Chat server"
 | 
				
			||||||
 | 
					most probably would have been a better name :-)
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					By default ngIRCd logs diagnostic and informational messages using the syslog
 | 
				
			||||||
 | 
					mechanism, or writes directly to the console when running in the foreground
 | 
				
			||||||
 | 
					(see below).
 | 
				
			||||||
 | 
					.SH OPTIONS
 | 
				
			||||||
 | 
					The default behavior of
 | 
				
			||||||
 | 
					.BR ngircd
 | 
				
			||||||
 | 
					is to read its standard configuration file (see below), to detach from the
 | 
				
			||||||
 | 
					controlling terminal and to wait for clients.
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					You can use these options to modify this default:
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fB\-f\fR \fIfile\fR, \fB\-\-config\fR \fIfile\fR
 | 
				
			||||||
 | 
					Use
 | 
				
			||||||
 | 
					.I file
 | 
				
			||||||
 | 
					as configuration file.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fB\-n\fR, \fB\-\-nodaemon\fR
 | 
				
			||||||
 | 
					Don't fork a child and don't detach from controlling terminal.
 | 
				
			||||||
 | 
					All log messages go to the console and you can use CTRL-C to
 | 
				
			||||||
 | 
					terminate the server.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fB\-p\fR, \fB\-\-passive\fR
 | 
				
			||||||
 | 
					Disable automatic connections to other servers. You can use the IRC command
 | 
				
			||||||
 | 
					CONNECT later on as IRC Operator to link this ngIRCd to other servers.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fB\-y\fR, \fB\-\-syslog\fR
 | 
				
			||||||
 | 
					Write log messages to the syslog even when running in the foreground. This only
 | 
				
			||||||
 | 
					makes sense when
 | 
				
			||||||
 | 
					.I \-n/\-\-nodaemon
 | 
				
			||||||
 | 
					was given on the command line
 | 
				
			||||||
 | 
					.I before
 | 
				
			||||||
 | 
					this option!
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					The following options prevent ngIRCd from starting regularly, but perform a
 | 
				
			||||||
 | 
					specific action and then exit the daemon again:
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fB\-h\fR, \fB\-\-help\fR
 | 
				
			||||||
 | 
					Display a brief help text and exit.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fB\-t\fR, \fB\-\-configtest\fR
 | 
				
			||||||
 | 
					Read, validate and display the configuration; then exit.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fB\-V\fR, \fB\-\-version\fR
 | 
				
			||||||
 | 
					Output version information and exit.
 | 
				
			||||||
 | 
					.SH FILES
 | 
				
			||||||
 | 
					.I :ETCDIR:/ngircd.conf
 | 
				
			||||||
 | 
					.RS
 | 
				
			||||||
 | 
					The system wide default configuration file.
 | 
				
			||||||
 | 
					.RE
 | 
				
			||||||
 | 
					.I :ETCDIR:/ngircd.motd
 | 
				
			||||||
 | 
					.RS
 | 
				
			||||||
 | 
					Default "message of the day" (MOTD).
 | 
				
			||||||
 | 
					.RE
 | 
				
			||||||
 | 
					.SH SIGNALS
 | 
				
			||||||
 | 
					The daemon understands the following signals:
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBTERM\fR
 | 
				
			||||||
 | 
					Shut down all connections and terminate the daemon.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBHUP\fR
 | 
				
			||||||
 | 
					Shut down all listening sockets, re-read the configuration file and
 | 
				
			||||||
 | 
					re-initialize the daemon.
 | 
				
			||||||
 | 
					.SH HINTS
 | 
				
			||||||
 | 
					It is
 | 
				
			||||||
 | 
					.I always wise
 | 
				
			||||||
 | 
					to use "ngircd \-\-configtest" to validate the configuration of ngIRCd after
 | 
				
			||||||
 | 
					making changes to the configuration files!
 | 
				
			||||||
 | 
					.SH DEBUGGING
 | 
				
			||||||
 | 
					ngIRCd can log additional debug messages, which can be enabled with the command
 | 
				
			||||||
 | 
					line option \-\-debug (\-d) or by sending the USR1 signal to the running daemon.
 | 
				
			||||||
 | 
					Some of those messages may leak personal information, be very technical and can
 | 
				
			||||||
 | 
					be very verbose. Therefore the debug mode is meant for troubleshooting only and
 | 
				
			||||||
 | 
					should definitely be disabled during normal operation!
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					In addition, a "protocol sniffer" can be enabled on build time by passing the
 | 
				
			||||||
 | 
					"\-\-enable\-sniffer" option to the ./configure script which enables the
 | 
				
			||||||
 | 
					"\-\-sniffer" (\-s) command line option (which is not available by default):
 | 
				
			||||||
 | 
					this "sniffer" logs all incoming and outgoing IRC commands on all connections,
 | 
				
			||||||
 | 
					which can be handy to debug problems with the daemon itself or IRC clients.
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					Both modes are indicated in the version string shown by the IRC "VERSION"
 | 
				
			||||||
 | 
					command: if the version ends in a dot (like in "26.1."), the daemon operates in
 | 
				
			||||||
 | 
					"normal" mode (the version used in the example is "26.1"). If it ends in ".1"
 | 
				
			||||||
 | 
					(like in "26.1.1") the "debug-mode" is enabled; and if it ends in ".2" (like in
 | 
				
			||||||
 | 
					"26.1.2") the "IRC sniffer" is enabled, too.
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					\fBOptions:\fR
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fB\-d\fR, \fB\-\-debug\fR
 | 
				
			||||||
 | 
					Enable debug mode and log extra messages.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fB\-s\fR, \fB\-\-sniffer\fR
 | 
				
			||||||
 | 
					Enable IRC protocol sniffer, which logs all sent and received IRC commands to
 | 
				
			||||||
 | 
					the console/syslog. This option requires that ngIRCd has been ./configure'd
 | 
				
			||||||
 | 
					with "\-\-enable\-sniffer" and enables debug mode automatically, too.
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					\fBSignals:\fR
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					Note: Usage of these signals is broadcasted to all users with the +s ("receive
 | 
				
			||||||
 | 
					server notices") mode set!
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBUSR1\fR
 | 
				
			||||||
 | 
					Toggle debug mode on and off during runtime.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBUSR2\fR
 | 
				
			||||||
 | 
					Dump internal server state to the console/syslog when debug mode is on (use
 | 
				
			||||||
 | 
					command line option \-\-debug or signal USR1).
 | 
				
			||||||
 | 
					.SH AUTHORS
 | 
				
			||||||
 | 
					Alexander Barton, <alex@barton.de>
 | 
				
			||||||
 | 
					.br
 | 
				
			||||||
 | 
					Florian Westphal, <fw@strlen.de>
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					Homepage: http://ngircd.barton.de/
 | 
				
			||||||
 | 
					.SH "SEE ALSO"
 | 
				
			||||||
 | 
					.BR ngircd.conf (5),
 | 
				
			||||||
 | 
					.BR ircd (8)
 | 
				
			||||||
 | 
					.\"
 | 
				
			||||||
 | 
					.\" -eof-
 | 
				
			||||||
							
								
								
									
										603
									
								
								man/ngircd.conf.5.tmpl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										603
									
								
								man/ngircd.conf.5.tmpl
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,603 @@
 | 
				
			|||||||
 | 
					.\"
 | 
				
			||||||
 | 
					.\" ngircd.conf(5) manual page template
 | 
				
			||||||
 | 
					.\"
 | 
				
			||||||
 | 
					.TH ngircd.conf 5 "Sep 2023" ngIRCd "ngIRCd Manual"
 | 
				
			||||||
 | 
					.SH NAME
 | 
				
			||||||
 | 
					ngircd.conf \- configuration file of ngIRCd
 | 
				
			||||||
 | 
					.SH SYNOPSIS
 | 
				
			||||||
 | 
					.B :ETCDIR:/ngircd.conf
 | 
				
			||||||
 | 
					.SH DESCRIPTION
 | 
				
			||||||
 | 
					.BR ngircd.conf
 | 
				
			||||||
 | 
					is the configuration file of the
 | 
				
			||||||
 | 
					.BR ngircd (8)
 | 
				
			||||||
 | 
					Internet Relay Chat (IRC) daemon, which must be customized to the local
 | 
				
			||||||
 | 
					preferences and needs.
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					Most variables can be modified while the ngIRCd daemon is already running:
 | 
				
			||||||
 | 
					It will reload its configuration file when a HUP signal or REHASH command
 | 
				
			||||||
 | 
					is received.
 | 
				
			||||||
 | 
					.SH "FILE FORMAT"
 | 
				
			||||||
 | 
					The file consists of sections and parameters. A section begins with the name
 | 
				
			||||||
 | 
					of the section in square brackets and continues until the next section
 | 
				
			||||||
 | 
					begins.
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					Sections contain parameters of the form
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					.RS
 | 
				
			||||||
 | 
					.I name
 | 
				
			||||||
 | 
					=
 | 
				
			||||||
 | 
					.I value
 | 
				
			||||||
 | 
					.RE
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					Empty lines and any line beginning with a semicolon (';') or a hash ('#')
 | 
				
			||||||
 | 
					character are treated as a comment and will be ignored. Leading and trailing
 | 
				
			||||||
 | 
					whitespaces are trimmed before any processing takes place.
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					The file format is line-based - that means, each non-empty newline-terminated
 | 
				
			||||||
 | 
					line represents either a comment, a section name, or a parameter.
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					Section and parameter names are not case sensitive.
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					There are three types of variables:
 | 
				
			||||||
 | 
					.I booleans,
 | 
				
			||||||
 | 
					.I text strings,
 | 
				
			||||||
 | 
					and
 | 
				
			||||||
 | 
					.I numbers.
 | 
				
			||||||
 | 
					Boolean values are
 | 
				
			||||||
 | 
					.I true
 | 
				
			||||||
 | 
					if they are "yes", "true", or any non-null integer. Text strings are used 1:1
 | 
				
			||||||
 | 
					without leading and following spaces; there is no way to quote strings. And
 | 
				
			||||||
 | 
					for numbers all decimal integer values are valid.
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					In addition, some string or numerical variables accept lists of values,
 | 
				
			||||||
 | 
					separated by commas (",").
 | 
				
			||||||
 | 
					.SH "SECTION OVERVIEW"
 | 
				
			||||||
 | 
					The file can contain blocks of seven types: [Global], [Limits], [Options],
 | 
				
			||||||
 | 
					[SSL], [Operator], [Server], and [Channel].
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					The main configuration of the server is stored in the
 | 
				
			||||||
 | 
					.I [Global]
 | 
				
			||||||
 | 
					section, like the server name, administrative information and the ports on
 | 
				
			||||||
 | 
					which the server should be listening. The variables in this section have to be
 | 
				
			||||||
 | 
					adjusted to the local requirements most of the time, whereas all the variables
 | 
				
			||||||
 | 
					in the other sections can be left on their defaults very often.
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					Options in the
 | 
				
			||||||
 | 
					.I [Limits]
 | 
				
			||||||
 | 
					block are used to tweak different limits and timeouts of the daemon, like the
 | 
				
			||||||
 | 
					maximum number of clients allowed to connect to this server. Variables in the
 | 
				
			||||||
 | 
					.I [Options]
 | 
				
			||||||
 | 
					section can be used to enable or disable specific features of ngIRCd, like
 | 
				
			||||||
 | 
					support for IDENT, PAM, IPv6, and protocol and cloaking features. The
 | 
				
			||||||
 | 
					.I [SSL]
 | 
				
			||||||
 | 
					block contains all SSL-related configuration variables. These three sections
 | 
				
			||||||
 | 
					are all optional.
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					IRC operators of this server are defined in
 | 
				
			||||||
 | 
					.I [Operator]
 | 
				
			||||||
 | 
					blocks. Links to remote servers are configured in
 | 
				
			||||||
 | 
					.I [Server]
 | 
				
			||||||
 | 
					sections. And
 | 
				
			||||||
 | 
					.I [Channel]
 | 
				
			||||||
 | 
					blocks are used to configure pre-defined ("persistent") IRC channels.
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					There can be more than one [Operator], [Server] and [Channel] section per
 | 
				
			||||||
 | 
					configuration file, one for each operator, server, and channel. [Global],
 | 
				
			||||||
 | 
					[Limits], [Options], and [SSL] sections can occur multiple times, too, but
 | 
				
			||||||
 | 
					each variable overwrites itself, only the last assignment is relevant.
 | 
				
			||||||
 | 
					.SH [GLOBAL]
 | 
				
			||||||
 | 
					The
 | 
				
			||||||
 | 
					.I [Global]
 | 
				
			||||||
 | 
					section is used to define the main configuration of the server,
 | 
				
			||||||
 | 
					like the server name and the ports on which the server should be listening.
 | 
				
			||||||
 | 
					These settings depend on your personal preferences, so you should make sure
 | 
				
			||||||
 | 
					that they correspond to your installation and setup!
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBName\fR (string)
 | 
				
			||||||
 | 
					Server name in the IRC network. This is an individual name of the IRC
 | 
				
			||||||
 | 
					server, it is not related to the DNS host name. It must be unique in the
 | 
				
			||||||
 | 
					IRC network and must contain at least one dot (".") character. When not set,
 | 
				
			||||||
 | 
					ngIRCd tries to deduce a valid IRC server name from the local host name.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBAdminInfo1\fR, \fBAdminInfo2\fR, \fBAdminEMail\fR (string)
 | 
				
			||||||
 | 
					Information about the server and the administrator, used by the ADMIN
 | 
				
			||||||
 | 
					command. This information is not required by the server but by RFC!
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBHelpFile\fR (string)
 | 
				
			||||||
 | 
					Text file which contains the ngIRCd help text. This file is required
 | 
				
			||||||
 | 
					to display help texts when using the "HELP <cmd>" command.
 | 
				
			||||||
 | 
					Please note: Changes made to this file take effect when ngircd starts up
 | 
				
			||||||
 | 
					or is instructed to re-read its configuration file. Default: a built-in
 | 
				
			||||||
 | 
					standard path.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBInfo\fR (string)
 | 
				
			||||||
 | 
					Info text of the server. This will be shown by WHOIS and LINKS requests for
 | 
				
			||||||
 | 
					example. Set to the server software name and version by default.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBListen\fR (list of strings)
 | 
				
			||||||
 | 
					A comma separated list of IP address on which the server should listen.
 | 
				
			||||||
 | 
					If unset, the defaults value is "0.0.0.0" or, if ngIRCd was compiled
 | 
				
			||||||
 | 
					with IPv6 support, "::,0.0.0.0". So the server listens on all configured
 | 
				
			||||||
 | 
					IP addresses and interfaces by default.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBMotdFile\fR (string)
 | 
				
			||||||
 | 
					Text file with the "message of the day" (MOTD). This message will be shown to
 | 
				
			||||||
 | 
					all users connecting to the server. Please note: Changes made to this file
 | 
				
			||||||
 | 
					take effect when ngircd starts up or is instructed to re-read its
 | 
				
			||||||
 | 
					configuration file. Default: a built-in standard path.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBMotdPhrase\fR (string)
 | 
				
			||||||
 | 
					A simple Phrase (<127 chars) if you don't want to use a MOTD file.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBNetwork\fR (string)
 | 
				
			||||||
 | 
					The name of the IRC network to which this server belongs. This name is
 | 
				
			||||||
 | 
					optional, should only contain ASCII characters, and can't contain spaces.
 | 
				
			||||||
 | 
					It is only used to inform clients. The default is empty, so no network
 | 
				
			||||||
 | 
					name is announced to clients.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBPassword\fR (string)
 | 
				
			||||||
 | 
					Global password for all users needed to connect to the server. The default is
 | 
				
			||||||
 | 
					empty, so no password is required. Please note: This feature is not available
 | 
				
			||||||
 | 
					if ngIRCd is using PAM!
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBPidFile\fR (string)
 | 
				
			||||||
 | 
					This tells ngIRCd to write its current process ID to a file. Note that the
 | 
				
			||||||
 | 
					"PID file" is written AFTER chroot and switching the user ID, therefore the
 | 
				
			||||||
 | 
					directory the file resides in must be writable by the ngIRCd user and exist
 | 
				
			||||||
 | 
					in the chroot directory (if configured, see above).
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBPorts\fR (list of numbers)
 | 
				
			||||||
 | 
					Port number(s) on which the server should listen for unencrypted connections.
 | 
				
			||||||
 | 
					There may be more than one port, separated with commas (","). Default: 6667.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBServerGID\fR (string or number)
 | 
				
			||||||
 | 
					Group ID under which the ngIRCd daemon should run; you can use the name of the
 | 
				
			||||||
 | 
					group or the numerical ID.
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					.RS
 | 
				
			||||||
 | 
					.B Attention:
 | 
				
			||||||
 | 
					.br
 | 
				
			||||||
 | 
					For this to work the server must have been started with root privileges!
 | 
				
			||||||
 | 
					.RE
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBServerUID\fR (string or number)
 | 
				
			||||||
 | 
					User ID under which the ngIRCd daemon should run; you can use the name of the
 | 
				
			||||||
 | 
					user or the numerical ID.
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					.RS
 | 
				
			||||||
 | 
					.B Attention:
 | 
				
			||||||
 | 
					.br
 | 
				
			||||||
 | 
					For this to work the server must have been started with root privileges! In
 | 
				
			||||||
 | 
					addition, the configuration and MOTD files must be readable by this user,
 | 
				
			||||||
 | 
					otherwise RESTART and REHASH won't work!
 | 
				
			||||||
 | 
					.RE
 | 
				
			||||||
 | 
					.SH [LIMITS]
 | 
				
			||||||
 | 
					This section is used to define some limits and timeouts for this ngIRCd
 | 
				
			||||||
 | 
					instance. Default values should be safe, but it is wise to double-check :-)
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBConnectRetry\fR (number)
 | 
				
			||||||
 | 
					The server tries every <ConnectRetry> seconds to establish a link to not yet
 | 
				
			||||||
 | 
					(or no longer) connected servers. Default: 60.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBIdleTimeout\fR (number)
 | 
				
			||||||
 | 
					Number of seconds after which the whole daemon should shutdown when no
 | 
				
			||||||
 | 
					connections are left active after handling at least one client (0: never). This
 | 
				
			||||||
 | 
					can be useful for testing or when ngIRCd is started using "socket activation"
 | 
				
			||||||
 | 
					with systemd(8), for example. Default: 0.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBMaxConnections\fR (number)
 | 
				
			||||||
 | 
					Maximum number of simultaneous in- and outbound connections the server is
 | 
				
			||||||
 | 
					allowed to accept (0: unlimited). Default: 0.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBMaxConnectionsIP\fR (number)
 | 
				
			||||||
 | 
					Maximum number of simultaneous connections from a single IP address that
 | 
				
			||||||
 | 
					the server will accept (0: unlimited). This configuration options lowers
 | 
				
			||||||
 | 
					the risk of denial of service attacks (DoS). Default: 5.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBMaxJoins\fR (number)
 | 
				
			||||||
 | 
					Maximum number of channels a user can be member of (0: no limit).
 | 
				
			||||||
 | 
					Default: 10.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBMaxNickLength\fR (number)
 | 
				
			||||||
 | 
					Maximum length of an user nickname (Default: 9, as in RFC 2812). Please
 | 
				
			||||||
 | 
					note that all servers in an IRC network MUST use the same maximum nickname
 | 
				
			||||||
 | 
					length!
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBMaxPenaltyTime\fR (number)
 | 
				
			||||||
 | 
					Maximum penalty time increase in seconds, per penalty event. Set to -1 for no
 | 
				
			||||||
 | 
					limit (the default), 0 to disable penalties altogether. ngIRCd doesn't use
 | 
				
			||||||
 | 
					penalty increases higher than 2 seconds during normal operation, so values
 | 
				
			||||||
 | 
					greater than 1 rarely make sense.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBMaxListSize\fR (number)
 | 
				
			||||||
 | 
					Maximum number of channels returned in response to a LIST command. Default: 100.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBPingTimeout\fR (number)
 | 
				
			||||||
 | 
					After <PingTimeout> seconds of inactivity the server will send a PING to
 | 
				
			||||||
 | 
					the peer to test whether it is alive or not. Default: 120.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBPongTimeout\fR (number)
 | 
				
			||||||
 | 
					If a client fails to answer a PING with a PONG within <PongTimeout>
 | 
				
			||||||
 | 
					seconds, it will be disconnected by the server. Default: 20.
 | 
				
			||||||
 | 
					.SH [OPTIONS]
 | 
				
			||||||
 | 
					Optional features and configuration options to further tweak the behavior of
 | 
				
			||||||
 | 
					ngIRCd are configured in this section. If you want to get started quickly, you
 | 
				
			||||||
 | 
					most probably don't have to make changes here -- they are all optional.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBAllowedChannelTypes\fR (string)
 | 
				
			||||||
 | 
					List of allowed channel types (channel prefixes) for newly created channels
 | 
				
			||||||
 | 
					on the local server. By default, all supported channel types are allowed.
 | 
				
			||||||
 | 
					Set this variable to the empty string to disallow creation of new channels
 | 
				
			||||||
 | 
					by local clients at all. Default: #&+
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBAllowRemoteOper\fR (boolean)
 | 
				
			||||||
 | 
					If this option is active, IRC operators connected to remote servers are allowed
 | 
				
			||||||
 | 
					to control this local server using administrative commands, for example like
 | 
				
			||||||
 | 
					CONNECT, DIE, SQUIT etc. Default: no.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBChrootDir\fR (string)
 | 
				
			||||||
 | 
					A directory to chroot in when everything is initialized. It doesn't need
 | 
				
			||||||
 | 
					to be populated if ngIRCd is compiled as a static binary. By default ngIRCd
 | 
				
			||||||
 | 
					won't use the chroot() feature.
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					.RS
 | 
				
			||||||
 | 
					.B Attention:
 | 
				
			||||||
 | 
					.br
 | 
				
			||||||
 | 
					For this to work the server must have been started with root privileges!
 | 
				
			||||||
 | 
					.RE
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBCloakHost\fR (string)
 | 
				
			||||||
 | 
					Set this hostname for every client instead of the real one. Default: empty,
 | 
				
			||||||
 | 
					don't change. Use %x to add the hashed value of the original hostname.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBCloakHostModeX\fR (string)
 | 
				
			||||||
 | 
					Use this hostname for hostname cloaking on clients that have the user mode
 | 
				
			||||||
 | 
					"+x" set, instead of the name of the server. Default: empty, use the name
 | 
				
			||||||
 | 
					of the server. Use %x to add the hashed value of the original hostname
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBCloakHostSalt\fR (string)
 | 
				
			||||||
 | 
					The Salt for cloaked hostname hashing. When undefined a random hash is
 | 
				
			||||||
 | 
					generated after each server start.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBCloakUserToNick\fR (boolean)
 | 
				
			||||||
 | 
					Set every clients' user name and real name to their nickname and hide the one
 | 
				
			||||||
 | 
					supplied by the IRC client. Default: no.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBConnectIPv4\fR (boolean)
 | 
				
			||||||
 | 
					Set this to no if you do not want ngIRCd to connect to other IRC servers using
 | 
				
			||||||
 | 
					the IPv4 protocol. This allows the usage of ngIRCd in IPv6-only setups.
 | 
				
			||||||
 | 
					Default: yes.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBConnectIPv6\fR (boolean)
 | 
				
			||||||
 | 
					Set this to no if you do not want ngIRCd to connect to other IRC servers using
 | 
				
			||||||
 | 
					the IPv6 protocol.
 | 
				
			||||||
 | 
					Default: yes.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBDefaultUserModes\fR (string)
 | 
				
			||||||
 | 
					Default user mode(s) to set on new local clients. Please note that only modes
 | 
				
			||||||
 | 
					can be set that the client could set using regular MODE commands, you can't
 | 
				
			||||||
 | 
					set "a" (away) for example!
 | 
				
			||||||
 | 
					Default: none.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBDNS\fR (boolean)
 | 
				
			||||||
 | 
					If set to false, ngIRCd will not make any DNS lookups when clients connect.
 | 
				
			||||||
 | 
					If you configure the daemon to connect to other servers, ngIRCd may still
 | 
				
			||||||
 | 
					perform a DNS lookup if required.
 | 
				
			||||||
 | 
					Default: yes.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBIdent\fR (boolean)
 | 
				
			||||||
 | 
					If ngIRCd is compiled with IDENT support this can be used to disable IDENT
 | 
				
			||||||
 | 
					lookups at run time.
 | 
				
			||||||
 | 
					Users identified using IDENT are registered without the "~" character
 | 
				
			||||||
 | 
					prepended to their user name.
 | 
				
			||||||
 | 
					Default: yes.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBIncludeDir\fR (string)
 | 
				
			||||||
 | 
					Directory containing configuration snippets (*.conf), that should be read in
 | 
				
			||||||
 | 
					after parsing the current configuration file.
 | 
				
			||||||
 | 
					Default: a built-in directory name when no configuration file was explicitly
 | 
				
			||||||
 | 
					given on the command line (check "ngircd --configtest"), none (empty)
 | 
				
			||||||
 | 
					otherwise.
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					.RS
 | 
				
			||||||
 | 
					This way no default include directory is used when a possibly non-default
 | 
				
			||||||
 | 
					configuration file was explicitly specified using "--config"/"-f" on the
 | 
				
			||||||
 | 
					command line which (intentionally) did not specify an
 | 
				
			||||||
 | 
					.I "IncludeDir"
 | 
				
			||||||
 | 
					directive.
 | 
				
			||||||
 | 
					.RE
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBMorePrivacy\fR (boolean)
 | 
				
			||||||
 | 
					This will cause ngIRCd to censor user idle time, logon time as well as the
 | 
				
			||||||
 | 
					PART/QUIT messages (that are sometimes used to inform everyone about which
 | 
				
			||||||
 | 
					client software is being used). WHOWAS requests are also silently ignored,
 | 
				
			||||||
 | 
					and NAMES output doesn't list any clients for non-members.
 | 
				
			||||||
 | 
					This option is most useful when ngIRCd is being used together with
 | 
				
			||||||
 | 
					anonymizing software such as TOR or I2P and one does not wish to make it
 | 
				
			||||||
 | 
					too easy to collect statistics on the users.
 | 
				
			||||||
 | 
					Default: no.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBNoticeBeforeRegistration\fR (boolean)
 | 
				
			||||||
 | 
					Normally ngIRCd doesn't send any messages to a client until it is registered.
 | 
				
			||||||
 | 
					Enable this option to let the daemon send "NOTICE *" messages to clients
 | 
				
			||||||
 | 
					while connecting. Default: no.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBOperCanUseMode\fR (boolean)
 | 
				
			||||||
 | 
					Should IRC Operators be allowed to use the MODE command even if they are
 | 
				
			||||||
 | 
					not(!) channel-operators? Default: no.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBOperChanPAutoOp\fR (boolean)
 | 
				
			||||||
 | 
					Should IRC Operators get AutoOp (+o) in persistent (+P) channels?
 | 
				
			||||||
 | 
					Default: yes.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBOperServerMode\fR (boolean)
 | 
				
			||||||
 | 
					If \fBOperCanUseMode\fR is enabled, this may lead the compatibility problems
 | 
				
			||||||
 | 
					with Servers that run the ircd-irc2 Software. This Option "masks" mode
 | 
				
			||||||
 | 
					requests by non-chanops as if they were coming from the server. Default: no;
 | 
				
			||||||
 | 
					only enable it if you have ircd-irc2 servers in your IRC network.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBPAM\fR (boolean)
 | 
				
			||||||
 | 
					If ngIRCd is compiled with PAM support this can be used to disable all calls
 | 
				
			||||||
 | 
					to the PAM library at runtime; all users connecting without password are
 | 
				
			||||||
 | 
					allowed to connect, all passwords given will fail.
 | 
				
			||||||
 | 
					Users identified using PAM are registered without the "~" character
 | 
				
			||||||
 | 
					prepended to their user name.
 | 
				
			||||||
 | 
					Default: yes.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBPAMIsOptional\fR (boolean)
 | 
				
			||||||
 | 
					When PAM is enabled, all clients are required to be authenticated using PAM;
 | 
				
			||||||
 | 
					connecting to the server without successful PAM authentication isn't possible.
 | 
				
			||||||
 | 
					If this option is set, clients not sending a password are still allowed to
 | 
				
			||||||
 | 
					connect: they won't become "identified" and keep the "~" character prepended
 | 
				
			||||||
 | 
					to their supplied user name.
 | 
				
			||||||
 | 
					Please note:
 | 
				
			||||||
 | 
					To make some use of this behavior, it most probably isn't useful to enable
 | 
				
			||||||
 | 
					"Ident", "PAM" and "PAMIsOptional" at the same time, because you wouldn't be
 | 
				
			||||||
 | 
					able to distinguish between Ident'ified and PAM-authenticated users: both
 | 
				
			||||||
 | 
					don't have a "~" character prepended to their respective user names!
 | 
				
			||||||
 | 
					Default: no.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBPAMServiceName\fR (string)
 | 
				
			||||||
 | 
					When PAM is enabled, this value determines the used PAM configuration.
 | 
				
			||||||
 | 
					This setting allows running multiple ngIRCd instances with different
 | 
				
			||||||
 | 
					PAM configurations on each instance. If you set it to "ngircd-foo",
 | 
				
			||||||
 | 
					PAM will use /etc/pam.d/ngircd-foo instead of the default
 | 
				
			||||||
 | 
					/etc/pam.d/ngircd.
 | 
				
			||||||
 | 
					Default: ngircd.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBRequireAuthPing\fR (boolean)
 | 
				
			||||||
 | 
					Let ngIRCd send an "authentication PING" when a new client connects, and
 | 
				
			||||||
 | 
					register this client only after receiving the corresponding "PONG" reply.
 | 
				
			||||||
 | 
					Default: no.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBScrubCTCP\fR (boolean)
 | 
				
			||||||
 | 
					If set to true, ngIRCd will silently drop all CTCP requests sent to it from
 | 
				
			||||||
 | 
					both clients and servers. It will also not forward CTCP requests to any
 | 
				
			||||||
 | 
					other servers. CTCP requests can be used to query user clients about which
 | 
				
			||||||
 | 
					software they are using and which versions said software is. CTCP can also be
 | 
				
			||||||
 | 
					used to reveal clients IP numbers. ACTION CTCP requests are not blocked,
 | 
				
			||||||
 | 
					this means that /me commands will not be dropped, but please note that
 | 
				
			||||||
 | 
					blocking CTCP will disable file sharing between users!
 | 
				
			||||||
 | 
					Default: no.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBSyslogFacility\fR (string)
 | 
				
			||||||
 | 
					Syslog "facility" to which ngIRCd should send log messages. Possible
 | 
				
			||||||
 | 
					values are system dependent, but most probably "auth", "daemon", "user"
 | 
				
			||||||
 | 
					and "local1" through "local7" are possible values; see syslog(3).
 | 
				
			||||||
 | 
					Default is "local5" for historical reasons, you probably want to
 | 
				
			||||||
 | 
					change this to "daemon", for example.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBWebircPassword\fR (string)
 | 
				
			||||||
 | 
					Password required for using the WEBIRC command used by some Web-to-IRC
 | 
				
			||||||
 | 
					gateways. If not set or empty, the WEBIRC command can't be used.
 | 
				
			||||||
 | 
					Default: not set.
 | 
				
			||||||
 | 
					.SH [SSL]
 | 
				
			||||||
 | 
					All SSL-related configuration variables are located in the
 | 
				
			||||||
 | 
					.I [SSL]
 | 
				
			||||||
 | 
					section. Please note that this whole section is only recognized by ngIRCd
 | 
				
			||||||
 | 
					when it is compiled with support for SSL using OpenSSL or GnuTLS!
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBCAFile\fR (string)
 | 
				
			||||||
 | 
					Filename pointing to the Trusted CA Certificates. This is required for
 | 
				
			||||||
 | 
					verifying peer certificates.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBCertFile\fR (string)
 | 
				
			||||||
 | 
					SSL Certificate file of the private server key.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBCipherList\fR (string)
 | 
				
			||||||
 | 
					Select cipher suites allowed for SSL/TLS connections.  This defaults to
 | 
				
			||||||
 | 
					"HIGH:!aNULL:@STRENGTH:!SSLv3" (OpenSSL) or "SECURE128:-VERS-SSL3.0" (GnuTLS).
 | 
				
			||||||
 | 
					Please see 'man 1ssl ciphers' (OpenSSL) and 'man 3 gnutls_priority_init'
 | 
				
			||||||
 | 
					(GnuTLS) for details.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBCRLFile\fR (string)
 | 
				
			||||||
 | 
					Filename of Certificate Revocation List.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBDHFile\fR (string)
 | 
				
			||||||
 | 
					Name of the Diffie-Hellman Parameter file. Can be created with GnuTLS
 | 
				
			||||||
 | 
					"certtool \-\-generate-dh-params" or "openssl dhparam". If this file is not
 | 
				
			||||||
 | 
					present, it will be generated on startup when ngIRCd was compiled with GnuTLS
 | 
				
			||||||
 | 
					support (this may take some time). If ngIRCd was compiled with OpenSSL, then
 | 
				
			||||||
 | 
					(Ephemeral)-Diffie-Hellman Key Exchanges and several Cipher Suites will not be
 | 
				
			||||||
 | 
					available.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBKeyFile\fR (string)
 | 
				
			||||||
 | 
					Filename of SSL Server Key to be used for SSL connections. This is required
 | 
				
			||||||
 | 
					for SSL/TLS support.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBKeyFilePassword\fR (string)
 | 
				
			||||||
 | 
					OpenSSL only: Password to decrypt the private key file.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBPorts\fR (list of numbers)
 | 
				
			||||||
 | 
					Same as \fBPorts\fR , except that ngIRCd will expect incoming connections
 | 
				
			||||||
 | 
					to be SSL/TLS encrypted. Common port numbers for SSL-encrypted IRC are 6669
 | 
				
			||||||
 | 
					and 6697. Default: none.
 | 
				
			||||||
 | 
					.SH [OPERATOR]
 | 
				
			||||||
 | 
					.I [Operator]
 | 
				
			||||||
 | 
					sections are used to define IRC Operators. There may be more than one
 | 
				
			||||||
 | 
					.I [Operator]
 | 
				
			||||||
 | 
					block, one for each local operator.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBName\fR (string)
 | 
				
			||||||
 | 
					ID of the operator (may be different of the nickname).
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBPassword\fR (string)
 | 
				
			||||||
 | 
					Password of the IRC operator.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBMask\fR (string)
 | 
				
			||||||
 | 
					Mask that is to be checked before an /OPER for this account is accepted.
 | 
				
			||||||
 | 
					Example: nick!ident@*.example.com
 | 
				
			||||||
 | 
					.SH [SERVER]
 | 
				
			||||||
 | 
					Other servers are configured in
 | 
				
			||||||
 | 
					.I [Server]
 | 
				
			||||||
 | 
					sections. If you configure a port for the connection, then this ngIRCd
 | 
				
			||||||
 | 
					tries to connect to the other server on the given port (active);
 | 
				
			||||||
 | 
					if not, it waits for the other server to connect (passive).
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					ngIRCd supports "server groups": You can assign an "ID" to every server
 | 
				
			||||||
 | 
					with which you want this ngIRCd to link, and the daemon ensures that at
 | 
				
			||||||
 | 
					any given time only one direct link exists to servers with the same ID.
 | 
				
			||||||
 | 
					So if a server of a group won't answer, ngIRCd tries to connect to the next
 | 
				
			||||||
 | 
					server in the given group (="with the same ID"), but never tries to connect
 | 
				
			||||||
 | 
					to more than one server of this group simultaneously.
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					There may be more than one
 | 
				
			||||||
 | 
					.I [Server]
 | 
				
			||||||
 | 
					block.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBName\fR (string)
 | 
				
			||||||
 | 
					IRC name of the remote server.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBHost\fR (string)
 | 
				
			||||||
 | 
					Internet host name (or IP address) of the peer.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBBind\fR (string)
 | 
				
			||||||
 | 
					IP address to use as source IP for the outgoing connection. Default is
 | 
				
			||||||
 | 
					to let the operating system decide.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBPort\fR (number)
 | 
				
			||||||
 | 
					Port of the remote server to which ngIRCd should connect (active).
 | 
				
			||||||
 | 
					If no port is assigned to a configured server, the daemon only waits for
 | 
				
			||||||
 | 
					incoming connections (passive, default).
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBMyPassword\fR (string)
 | 
				
			||||||
 | 
					Own password for this connection. This password has to be configured as
 | 
				
			||||||
 | 
					\fBPeerPassword\fR on the other server. Must not have ':' as first character.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBPeerPassword\fR (string)
 | 
				
			||||||
 | 
					Foreign password for this connection. This password has to be configured as
 | 
				
			||||||
 | 
					\fBMyPassword\fR on the other server.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBGroup\fR (number)
 | 
				
			||||||
 | 
					Group of this server (optional).
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBPassive\fR (boolean)
 | 
				
			||||||
 | 
					Disable automatic connection even if port value is specified. Default: false.
 | 
				
			||||||
 | 
					You can use the IRC Operator command CONNECT later on to create the link.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBSSLConnect\fR (boolean)
 | 
				
			||||||
 | 
					Connect to the remote server using TLS/SSL. Default: false.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBSSLVerify\fR (boolean)
 | 
				
			||||||
 | 
					Verify the TLS certificate presented by the remote server. Default: yes.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBServiceMask\fR (string)
 | 
				
			||||||
 | 
					Define a (case insensitive) list of masks matching nicknames that should be
 | 
				
			||||||
 | 
					treated as IRC services when introduced via this remote server, separated
 | 
				
			||||||
 | 
					by commas (","). REGULAR SERVERS DON'T NEED this parameter, so leave it empty
 | 
				
			||||||
 | 
					(which is the default).
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					.RS
 | 
				
			||||||
 | 
					When you are connecting IRC services which mask as a IRC server and which use
 | 
				
			||||||
 | 
					"virtual users" to communicate with, for example "NickServ" and "ChanServ",
 | 
				
			||||||
 | 
					you should set this parameter to something like "*Serv", "*Serv,OtherNick",
 | 
				
			||||||
 | 
					or "NickServ,ChanServ,XyzServ".
 | 
				
			||||||
 | 
					.SH [CHANNEL]
 | 
				
			||||||
 | 
					Pre-defined channels can be configured in
 | 
				
			||||||
 | 
					.I [Channel]
 | 
				
			||||||
 | 
					sections. Such channels are created by the server when starting up and even
 | 
				
			||||||
 | 
					persist when there are no more members left.
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					Persistent channels are marked with the mode 'P', which can be set and unset
 | 
				
			||||||
 | 
					by IRC operators like other modes on the fly.
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					There may be more than one
 | 
				
			||||||
 | 
					.I [Channel]
 | 
				
			||||||
 | 
					block.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBName\fR (string)
 | 
				
			||||||
 | 
					Name of the channel, including channel prefix ("#" or "&").
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBTopic\fR (string)
 | 
				
			||||||
 | 
					Topic for this channel.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBModes\fR (string)
 | 
				
			||||||
 | 
					Initial channel modes, as used in "MODE" commands. Modifying lists (ban list,
 | 
				
			||||||
 | 
					invite list, exception list) is supported.
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					.RS
 | 
				
			||||||
 | 
					This option can be specified multiple times, evaluated top to bottom.
 | 
				
			||||||
 | 
					.RE
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBAutojoin\fR (boolean)
 | 
				
			||||||
 | 
					Should ngIRCd automatically join ("autojoin") all users to this channel on
 | 
				
			||||||
 | 
					connect? Note: The users must have permissions to access the channel, otherwise
 | 
				
			||||||
 | 
					joining them will fail!
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
 | 
					\fBKeyFile\fR (string)
 | 
				
			||||||
 | 
					Path and file name of a "key file" containing individual channel keys for
 | 
				
			||||||
 | 
					different users. The file consists of plain text lines with the following
 | 
				
			||||||
 | 
					syntax (without spaces!):
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					.RS
 | 
				
			||||||
 | 
					.RS
 | 
				
			||||||
 | 
					.I user
 | 
				
			||||||
 | 
					:
 | 
				
			||||||
 | 
					.I nick
 | 
				
			||||||
 | 
					:
 | 
				
			||||||
 | 
					.I key
 | 
				
			||||||
 | 
					.RE
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					.I user
 | 
				
			||||||
 | 
					and
 | 
				
			||||||
 | 
					.I nick
 | 
				
			||||||
 | 
					can contain the wildcard character "*".
 | 
				
			||||||
 | 
					.br
 | 
				
			||||||
 | 
					.I key
 | 
				
			||||||
 | 
					is an arbitrary password.
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					Valid examples are:
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					.RS
 | 
				
			||||||
 | 
					*:*:KeY
 | 
				
			||||||
 | 
					.br
 | 
				
			||||||
 | 
					*:nick:123
 | 
				
			||||||
 | 
					.br
 | 
				
			||||||
 | 
					~user:*:xyz
 | 
				
			||||||
 | 
					.RE
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					The key file is read on each JOIN command when this channel has a key
 | 
				
			||||||
 | 
					(channel mode +k). Access is granted, if a) the channel key set using the
 | 
				
			||||||
 | 
					MODE +k command or b) one of the lines in the key file match.
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					.B Please note:
 | 
				
			||||||
 | 
					.br
 | 
				
			||||||
 | 
					The file is not reopened on each access, so you can modify and overwrite it
 | 
				
			||||||
 | 
					without problems, but moving or deleting the file will have not effect until
 | 
				
			||||||
 | 
					the daemon re-reads its configuration!
 | 
				
			||||||
 | 
					.RE
 | 
				
			||||||
 | 
					.SH HINTS
 | 
				
			||||||
 | 
					It's wise to use "ngircd \-\-configtest" to validate the configuration file
 | 
				
			||||||
 | 
					after changing it. See
 | 
				
			||||||
 | 
					.BR ngircd (8)
 | 
				
			||||||
 | 
					for details.
 | 
				
			||||||
 | 
					.SH AUTHOR
 | 
				
			||||||
 | 
					Alexander Barton, <alex@barton.de>
 | 
				
			||||||
 | 
					.br
 | 
				
			||||||
 | 
					Florian Westphal, <fw@strlen.de>
 | 
				
			||||||
 | 
					.PP
 | 
				
			||||||
 | 
					Homepage: http://ngircd.barton.de/
 | 
				
			||||||
 | 
					.SH "SEE ALSO"
 | 
				
			||||||
 | 
					.BR ngircd (8)
 | 
				
			||||||
 | 
					.\"
 | 
				
			||||||
 | 
					.\" -eof-
 | 
				
			||||||
@@ -2,17 +2,16 @@
 | 
				
			|||||||
# ngIRCd -- The Next Generation IRC Daemon
 | 
					# ngIRCd -- The Next Generation IRC Daemon
 | 
				
			||||||
# Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
 | 
					# Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
 | 
					# This program is free software; you can redistribute it and/or modify
 | 
				
			||||||
# der GNU General Public License (GPL), wie von der Free Software Foundation
 | 
					# it under the terms of the GNU General Public License as published by
 | 
				
			||||||
# herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2
 | 
					# the Free Software Foundation; either version 2 of the License, or
 | 
				
			||||||
# der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version.
 | 
					# (at your option) any later version.
 | 
				
			||||||
# Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
 | 
					# Please read the file COPYING, README and AUTHORS for more information.
 | 
				
			||||||
# der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
 | 
					 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# $Id: Makefile.am,v 1.3 2002/03/12 14:37:51 alex Exp $
 | 
					# $Id: Makefile.am,v 1.8 2008/02/26 22:04:15 fw Exp $
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SUBDIRS = portab ngircd
 | 
					SUBDIRS = portab tool ipaddr ngircd testsuite
 | 
				
			||||||
 | 
					
 | 
				
			||||||
maintainer-clean-local:
 | 
					maintainer-clean-local:
 | 
				
			||||||
	rm -f Makefile Makefile.in config.h config.h.in stamp-h.in
 | 
						rm -f Makefile Makefile.in config.h config.h.in stamp-h.in
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										21
									
								
								src/ipaddr/Makefile.ng
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								src/ipaddr/Makefile.ng
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# ipaddr/Makefile.am
 | 
				
			||||||
 | 
					# (c) 2008 Florian Westphal <fw@strlen.de>, public domain.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					__ng_Makefile_am_template__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXTRA_DIST = Makefile.ng
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AM_CPPFLAGS = -I$(srcdir)/../portab
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					noinst_LIBRARIES = libngipaddr.a
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					libngipaddr_a_SOURCES = ng_ipaddr.c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					noinst_HEADERS = ng_ipaddr.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					maintainer-clean-local:
 | 
				
			||||||
 | 
						rm -f Makefile Makefile.in Makefile.am
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -eof-
 | 
				
			||||||
							
								
								
									
										179
									
								
								src/ipaddr/ng_ipaddr.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										179
									
								
								src/ipaddr/ng_ipaddr.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,179 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * (c) 2008 Florian Westphal <fw@strlen.de>, public domain.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "portab.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @file
 | 
				
			||||||
 | 
					 * Functions for AF_ agnostic ipv4/ipv6 handling.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <assert.h>
 | 
				
			||||||
 | 
					#include <stdio.h>
 | 
				
			||||||
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef HAVE_GETADDRINFO
 | 
				
			||||||
 | 
					#include <netdb.h>
 | 
				
			||||||
 | 
					#include <sys/types.h>
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "ng_ipaddr.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL bool
 | 
				
			||||||
 | 
					ng_ipaddr_init(ng_ipaddr_t *addr, const char *ip_str, UINT16 port)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					#ifdef HAVE_WORKING_GETADDRINFO
 | 
				
			||||||
 | 
						int ret;
 | 
				
			||||||
 | 
						char portstr[64];
 | 
				
			||||||
 | 
						struct addrinfo *res0;
 | 
				
			||||||
 | 
						struct addrinfo hints;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						assert(ip_str);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						memset(&hints, 0, sizeof(hints));
 | 
				
			||||||
 | 
					#ifdef AI_NUMERICHOST
 | 
				
			||||||
 | 
						hints.ai_flags = AI_NUMERICHOST;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef WANT_IPV6	/* do not convert ipv6 addresses */
 | 
				
			||||||
 | 
						hints.ai_family = AF_INET;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* some getaddrinfo implementations require that ai_socktype is set. */
 | 
				
			||||||
 | 
						hints.ai_socktype = SOCK_STREAM;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* silly, but ngircd stores UINT16 in server config, not string */
 | 
				
			||||||
 | 
						snprintf(portstr, sizeof(portstr), "%u", (unsigned int) port);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ret = getaddrinfo(ip_str, portstr, &hints, &res0);
 | 
				
			||||||
 | 
						if (ret != 0)
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						assert(sizeof(*addr) >= (size_t)res0->ai_addrlen);
 | 
				
			||||||
 | 
						if (sizeof(*addr) >= (size_t)res0->ai_addrlen)
 | 
				
			||||||
 | 
							memcpy(addr, res0->ai_addr, res0->ai_addrlen);
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							ret = -1;
 | 
				
			||||||
 | 
						freeaddrinfo(res0);
 | 
				
			||||||
 | 
						return ret == 0;
 | 
				
			||||||
 | 
					#else /* HAVE_GETADDRINFO */
 | 
				
			||||||
 | 
						assert(ip_str);
 | 
				
			||||||
 | 
						memset(addr, 0, sizeof *addr);
 | 
				
			||||||
 | 
					#ifdef HAVE_sockaddr_in_len
 | 
				
			||||||
 | 
						addr->sin4.sin_len = sizeof(addr->sin4);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						addr->sin4.sin_family = AF_INET;
 | 
				
			||||||
 | 
					# ifdef HAVE_INET_ATON
 | 
				
			||||||
 | 
						if (inet_aton(ip_str, &addr->sin4.sin_addr) == 0)
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
					# else
 | 
				
			||||||
 | 
						addr->sin4.sin_addr.s_addr = inet_addr(ip_str);
 | 
				
			||||||
 | 
						if (addr->sin4.sin_addr.s_addr == (unsigned) -1)
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
					# endif
 | 
				
			||||||
 | 
						ng_ipaddr_setport(addr, port);
 | 
				
			||||||
 | 
						return true;
 | 
				
			||||||
 | 
					#endif /* HAVE_GETADDRINFO */
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL void
 | 
				
			||||||
 | 
					ng_ipaddr_setport(ng_ipaddr_t *a, UINT16 port)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					#ifdef WANT_IPV6
 | 
				
			||||||
 | 
						int af;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						assert(a != NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						af = a->sa.sa_family;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						assert(af == AF_INET || af == AF_INET6);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						switch (af) {
 | 
				
			||||||
 | 
						case AF_INET:
 | 
				
			||||||
 | 
							a->sin4.sin_port = htons(port);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						case AF_INET6:
 | 
				
			||||||
 | 
							a->sin6.sin6_port = htons(port);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					#else /* WANT_IPV6 */
 | 
				
			||||||
 | 
						assert(a != NULL);
 | 
				
			||||||
 | 
						assert(a->sin4.sin_family == AF_INET);
 | 
				
			||||||
 | 
						a->sin4.sin_port = htons(port);
 | 
				
			||||||
 | 
					#endif /* WANT_IPV6 */
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL bool
 | 
				
			||||||
 | 
					ng_ipaddr_ipequal(const ng_ipaddr_t *a, const ng_ipaddr_t *b)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						assert(a != NULL);
 | 
				
			||||||
 | 
						assert(b != NULL);
 | 
				
			||||||
 | 
					#ifdef WANT_IPV6
 | 
				
			||||||
 | 
						if (a->sa.sa_family != b->sa.sa_family)
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
						assert(ng_ipaddr_salen(a) == ng_ipaddr_salen(b));
 | 
				
			||||||
 | 
						switch (a->sa.sa_family) {
 | 
				
			||||||
 | 
						case AF_INET6:
 | 
				
			||||||
 | 
							return IN6_ARE_ADDR_EQUAL(&a->sin6.sin6_addr, &b->sin6.sin6_addr);
 | 
				
			||||||
 | 
						case AF_INET:
 | 
				
			||||||
 | 
							return memcmp(&a->sin4.sin_addr, &b->sin4.sin_addr, sizeof(a->sin4.sin_addr)) == 0;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return false;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
						assert(a->sin4.sin_family == AF_INET);
 | 
				
			||||||
 | 
						assert(b->sin4.sin_family == AF_INET);
 | 
				
			||||||
 | 
						return memcmp(&a->sin4.sin_addr, &b->sin4.sin_addr, sizeof(a->sin4.sin_addr)) == 0;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef WANT_IPV6
 | 
				
			||||||
 | 
					GLOBAL const char *
 | 
				
			||||||
 | 
					ng_ipaddr_tostr(const ng_ipaddr_t *addr)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						static char strbuf[NG_INET_ADDRSTRLEN];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						strbuf[0] = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ng_ipaddr_tostr_r(addr, strbuf);
 | 
				
			||||||
 | 
						return strbuf;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* str must be at least NG_INET_ADDRSTRLEN bytes long */
 | 
				
			||||||
 | 
					GLOBAL bool
 | 
				
			||||||
 | 
					ng_ipaddr_tostr_r(const ng_ipaddr_t *addr, char *str)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					#ifdef HAVE_GETNAMEINFO
 | 
				
			||||||
 | 
						const struct sockaddr *sa = (const struct sockaddr *) addr;
 | 
				
			||||||
 | 
						int ret;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						*str = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ret = getnameinfo(sa, ng_ipaddr_salen(addr),
 | 
				
			||||||
 | 
								str, NG_INET_ADDRSTRLEN, NULL, 0, NI_NUMERICHOST);
 | 
				
			||||||
 | 
						/*
 | 
				
			||||||
 | 
						 * avoid leading ':'.
 | 
				
			||||||
 | 
						 * causes mis-interpretation of client host in e.g. /WHOIS
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						if (*str == ':') {
 | 
				
			||||||
 | 
							char tmp[NG_INET_ADDRSTRLEN] = "0";
 | 
				
			||||||
 | 
							ret = getnameinfo(sa, ng_ipaddr_salen(addr),
 | 
				
			||||||
 | 
									  tmp + 1, (socklen_t)sizeof(tmp) - 1,
 | 
				
			||||||
 | 
									  NULL, 0, NI_NUMERICHOST);
 | 
				
			||||||
 | 
							if (ret == 0)
 | 
				
			||||||
 | 
								strlcpy(str, tmp, NG_INET_ADDRSTRLEN);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						assert (ret == 0);
 | 
				
			||||||
 | 
						return ret == 0;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
						abort(); /* WANT_IPV6 depends on HAVE_GETNAMEINFO */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* WANT_IPV6 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* -eof- */
 | 
				
			||||||
							
								
								
									
										134
									
								
								src/ipaddr/ng_ipaddr.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										134
									
								
								src/ipaddr/ng_ipaddr.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,134 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * (c) 2008 Florian Westphal <fw@strlen.de>, public domain.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef NG_IPADDR_HDR
 | 
				
			||||||
 | 
					#define NG_IPADDR_HDR
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "portab.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @file
 | 
				
			||||||
 | 
					 * Functions for AF_ agnostic ipv4/ipv6 handling (header).
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <assert.h>
 | 
				
			||||||
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					#include <sys/socket.h>
 | 
				
			||||||
 | 
					#include <netinet/in.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef HAVE_ARPA_INET_H
 | 
				
			||||||
 | 
					# include <arpa/inet.h>
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					# define PF_INET AF_INET
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef WANT_IPV6
 | 
				
			||||||
 | 
					#define NG_INET_ADDRSTRLEN	INET6_ADDRSTRLEN
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					#define NG_INET_ADDRSTRLEN	16
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef WANT_IPV6
 | 
				
			||||||
 | 
					typedef union {
 | 
				
			||||||
 | 
						struct sockaddr sa;
 | 
				
			||||||
 | 
						struct sockaddr_in sin4;
 | 
				
			||||||
 | 
						struct sockaddr_in6 sin6;
 | 
				
			||||||
 | 
					} ng_ipaddr_t;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					/* assume compiler can't deal with typedef struct {... */
 | 
				
			||||||
 | 
					struct NG_IP_ADDR_DONTUSE {
 | 
				
			||||||
 | 
						struct sockaddr_in sin4;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					typedef struct NG_IP_ADDR_DONTUSE ng_ipaddr_t;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static inline int
 | 
				
			||||||
 | 
					ng_ipaddr_af(const ng_ipaddr_t *a)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						assert(a != NULL);
 | 
				
			||||||
 | 
					#ifdef WANT_IPV6
 | 
				
			||||||
 | 
						return a->sa.sa_family;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
						assert(a->sin4.sin_family == 0 || a->sin4.sin_family == AF_INET);
 | 
				
			||||||
 | 
						return a->sin4.sin_family;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static inline socklen_t
 | 
				
			||||||
 | 
					ng_ipaddr_salen(const ng_ipaddr_t *a)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						assert(a != NULL);
 | 
				
			||||||
 | 
					#ifdef WANT_IPV6
 | 
				
			||||||
 | 
						assert(a->sa.sa_family == AF_INET || a->sa.sa_family == AF_INET6);
 | 
				
			||||||
 | 
						if (a->sa.sa_family == AF_INET6)
 | 
				
			||||||
 | 
							return (socklen_t)sizeof(a->sin6);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						assert(a->sin4.sin_family == AF_INET);
 | 
				
			||||||
 | 
						return (socklen_t)sizeof(a->sin4);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static inline UINT16
 | 
				
			||||||
 | 
					ng_ipaddr_getport(const ng_ipaddr_t *a)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					#ifdef WANT_IPV6
 | 
				
			||||||
 | 
						int af = a->sa.sa_family;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						assert(a != NULL);
 | 
				
			||||||
 | 
						assert(af == AF_INET || af == AF_INET6);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (af == AF_INET6)
 | 
				
			||||||
 | 
							return ntohs(a->sin6.sin6_port);
 | 
				
			||||||
 | 
					#endif /* WANT_IPV6 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						assert(a != NULL);
 | 
				
			||||||
 | 
						assert(a->sin4.sin_family == AF_INET);
 | 
				
			||||||
 | 
						return ntohs(a->sin4.sin_port);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * init a ng_ipaddr_t object.
 | 
				
			||||||
 | 
					 * @param addr: pointer to ng_ipaddr_t to initialize.
 | 
				
			||||||
 | 
					 * @param ip_str: ip address in dotted-decimal (ipv4) or hexadecimal (ipv6) notation
 | 
				
			||||||
 | 
					 * @param port: transport layer port number to use.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					GLOBAL bool ng_ipaddr_init PARAMS((ng_ipaddr_t *addr, const char *ip_str, UINT16 port));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* set sin4/sin6_port, depending on a->sa_family */
 | 
				
			||||||
 | 
					GLOBAL void ng_ipaddr_setport PARAMS((ng_ipaddr_t *a, UINT16 port));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* return true if a and b have the same IP address. If a and b have different AF, return false. */
 | 
				
			||||||
 | 
					GLOBAL bool ng_ipaddr_ipequal PARAMS((const ng_ipaddr_t *a, const ng_ipaddr_t *b));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef WANT_IPV6
 | 
				
			||||||
 | 
					/* convert struct sockaddr to string, returns pointer to static buffer */
 | 
				
			||||||
 | 
					GLOBAL const char *ng_ipaddr_tostr PARAMS((const ng_ipaddr_t *addr));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* convert struct sockaddr to string. dest must be NG_INET_ADDRSTRLEN bytes long */
 | 
				
			||||||
 | 
					GLOBAL bool ng_ipaddr_tostr_r PARAMS((const ng_ipaddr_t *addr, char *dest));
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					static inline const char*
 | 
				
			||||||
 | 
					ng_ipaddr_tostr(const ng_ipaddr_t *addr)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						assert(addr != NULL);
 | 
				
			||||||
 | 
						return inet_ntoa(addr->sin4.sin_addr);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static inline bool
 | 
				
			||||||
 | 
					ng_ipaddr_tostr_r(const ng_ipaddr_t *addr, char *d)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						assert(addr != NULL);
 | 
				
			||||||
 | 
						assert(d != NULL);
 | 
				
			||||||
 | 
						strlcpy(d, inet_ntoa(addr->sin4.sin_addr), NG_INET_ADDRSTRLEN);
 | 
				
			||||||
 | 
						return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* -eof- */
 | 
				
			||||||
@@ -1,59 +0,0 @@
 | 
				
			|||||||
#
 | 
					 | 
				
			||||||
# ngIRCd -- The Next Generation IRC Daemon
 | 
					 | 
				
			||||||
# Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
 | 
					 | 
				
			||||||
# der GNU General Public License (GPL), wie von der Free Software Foundation
 | 
					 | 
				
			||||||
# herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2
 | 
					 | 
				
			||||||
# der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version.
 | 
					 | 
				
			||||||
# Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
 | 
					 | 
				
			||||||
# der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# $Id: Makefile.am,v 1.19 2002/03/29 22:52:12 alex Exp $
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
AM_CFLAGS = -I$(srcdir)/../portab
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
LINTARGS = -weak -warnunixlib +unixlib -booltype BOOLEAN
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
sbin_PROGRAMS = ngircd
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
ngircd_SOURCES = ngircd.c channel.c client.c conf.c conn.c hash.c irc.c \
 | 
					 | 
				
			||||||
	irc-channel.c irc-login.c irc-mode.c irc-oper.c irc-server.c \
 | 
					 | 
				
			||||||
	irc-write.c log.c parse.c tool.c
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
noinst_HEADERS = ngircd.h channel.h client.h conf.h conn.h hash.h irc.h \
 | 
					 | 
				
			||||||
	irc-channel.h irc-login.h irc-mode.h irc-oper.h irc-server.h \
 | 
					 | 
				
			||||||
	irc-write.h log.h parse.h tool.h \
 | 
					 | 
				
			||||||
	messages.h defines.h
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
clean-local:
 | 
					 | 
				
			||||||
	rm -f check-version check-help lint.out
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
maintainer-clean-local:
 | 
					 | 
				
			||||||
	rm -f Makefile Makefile.in
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
check-version: Makefile
 | 
					 | 
				
			||||||
	echo "#!/bin/sh" > check-version
 | 
					 | 
				
			||||||
	echo "./ngircd --version | grep version > /dev/null 2>&1" >> check-version
 | 
					 | 
				
			||||||
	chmod 755 check-version
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
check-help: Makefile
 | 
					 | 
				
			||||||
	echo "#!/bin/sh" > check-help
 | 
					 | 
				
			||||||
	echo "./ngircd --help | grep help > /dev/null 2>&1" >> check-help
 | 
					 | 
				
			||||||
	chmod 755 check-help
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
lint:
 | 
					 | 
				
			||||||
	rm -f lint.out
 | 
					 | 
				
			||||||
	for f in *.c; do \
 | 
					 | 
				
			||||||
	 echo "checking $$f ..."; \
 | 
					 | 
				
			||||||
	 splint $$f $(LINTARGS) -I./.. $(AM_CFLAGS) > lint.out 2>&1; \
 | 
					 | 
				
			||||||
	 grep "no warnings" lint.out > /dev/null 2>&1; \
 | 
					 | 
				
			||||||
	 if [ $$? -ne 0 ]; then \
 | 
					 | 
				
			||||||
	  echo; cat lint.out; echo; \
 | 
					 | 
				
			||||||
	 fi; \
 | 
					 | 
				
			||||||
	done;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
TESTS = check-version check-help
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# -eof-
 | 
					 | 
				
			||||||
							
								
								
									
										124
									
								
								src/ngircd/Makefile.ng
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										124
									
								
								src/ngircd/Makefile.ng
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,124 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# ngIRCd -- The Next Generation IRC Daemon
 | 
				
			||||||
 | 
					# Copyright (c)2001-2024 Alexander Barton (alex@barton.de) and Contributors
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This program is free software; you can redistribute it and/or modify
 | 
				
			||||||
 | 
					# it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					# the Free Software Foundation; either version 2 of the License, or
 | 
				
			||||||
 | 
					# (at your option) any later version.
 | 
				
			||||||
 | 
					# Please read the file COPYING, README and AUTHORS for more information.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					__ng_Makefile_am_template__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXTRA_DIST = Makefile.ng
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AM_CPPFLAGS = -I$(srcdir)/../portab -I$(srcdir)/../tool -I$(srcdir)/../ipaddr
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sbin_PROGRAMS = ngircd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd_SOURCES = \
 | 
				
			||||||
 | 
						ngircd.c \
 | 
				
			||||||
 | 
						array.c \
 | 
				
			||||||
 | 
						channel.c \
 | 
				
			||||||
 | 
						class.c \
 | 
				
			||||||
 | 
						client.c \
 | 
				
			||||||
 | 
						client-cap.c \
 | 
				
			||||||
 | 
						conf.c \
 | 
				
			||||||
 | 
						conn.c \
 | 
				
			||||||
 | 
						conn-encoding.c \
 | 
				
			||||||
 | 
						conn-func.c \
 | 
				
			||||||
 | 
						conn-ssl.c \
 | 
				
			||||||
 | 
						conn-zip.c \
 | 
				
			||||||
 | 
						hash.c \
 | 
				
			||||||
 | 
						io.c \
 | 
				
			||||||
 | 
						irc.c \
 | 
				
			||||||
 | 
						irc-cap.c \
 | 
				
			||||||
 | 
						irc-channel.c \
 | 
				
			||||||
 | 
						irc-encoding.c \
 | 
				
			||||||
 | 
						irc-info.c \
 | 
				
			||||||
 | 
						irc-login.c \
 | 
				
			||||||
 | 
						irc-metadata.c \
 | 
				
			||||||
 | 
						irc-mode.c \
 | 
				
			||||||
 | 
						irc-op.c \
 | 
				
			||||||
 | 
						irc-oper.c \
 | 
				
			||||||
 | 
						irc-server.c \
 | 
				
			||||||
 | 
						irc-write.c \
 | 
				
			||||||
 | 
						lists.c \
 | 
				
			||||||
 | 
						log.c \
 | 
				
			||||||
 | 
						login.c \
 | 
				
			||||||
 | 
						match.c \
 | 
				
			||||||
 | 
						numeric.c \
 | 
				
			||||||
 | 
						op.c \
 | 
				
			||||||
 | 
						pam.c \
 | 
				
			||||||
 | 
						parse.c \
 | 
				
			||||||
 | 
						proc.c \
 | 
				
			||||||
 | 
						resolve.c \
 | 
				
			||||||
 | 
						sighandlers.c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd_LDFLAGS = -L../portab -L../tool -L../ipaddr
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd_LDADD = -lngportab -lngtool -lngipaddr
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					noinst_HEADERS = \
 | 
				
			||||||
 | 
						ngircd.h \
 | 
				
			||||||
 | 
						array.h \
 | 
				
			||||||
 | 
						channel.h \
 | 
				
			||||||
 | 
						class.h \
 | 
				
			||||||
 | 
						client.h \
 | 
				
			||||||
 | 
						client-cap.h \
 | 
				
			||||||
 | 
						conf.h \
 | 
				
			||||||
 | 
						conf-ssl.h \
 | 
				
			||||||
 | 
						conn.h \
 | 
				
			||||||
 | 
						conn-encoding.h \
 | 
				
			||||||
 | 
						conn-func.h \
 | 
				
			||||||
 | 
						conn-ssl.h \
 | 
				
			||||||
 | 
						conn-zip.h \
 | 
				
			||||||
 | 
						defines.h \
 | 
				
			||||||
 | 
						hash.h \
 | 
				
			||||||
 | 
						io.h \
 | 
				
			||||||
 | 
						irc.h \
 | 
				
			||||||
 | 
						irc-cap.h \
 | 
				
			||||||
 | 
						irc-channel.h \
 | 
				
			||||||
 | 
						irc-encoding.h \
 | 
				
			||||||
 | 
						irc-info.h \
 | 
				
			||||||
 | 
						irc-login.h \
 | 
				
			||||||
 | 
						irc-macros.h \
 | 
				
			||||||
 | 
						irc-metadata.h \
 | 
				
			||||||
 | 
						irc-mode.h \
 | 
				
			||||||
 | 
						irc-op.h \
 | 
				
			||||||
 | 
						irc-oper.h \
 | 
				
			||||||
 | 
						irc-server.h \
 | 
				
			||||||
 | 
						irc-write.h \
 | 
				
			||||||
 | 
						lists.h \
 | 
				
			||||||
 | 
						log.h \
 | 
				
			||||||
 | 
						login.h \
 | 
				
			||||||
 | 
						match.h \
 | 
				
			||||||
 | 
						messages.h \
 | 
				
			||||||
 | 
						numeric.h \
 | 
				
			||||||
 | 
						op.h \
 | 
				
			||||||
 | 
						pam.h \
 | 
				
			||||||
 | 
						parse.h \
 | 
				
			||||||
 | 
						proc.h \
 | 
				
			||||||
 | 
						resolve.h \
 | 
				
			||||||
 | 
						sighandlers.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					clean-local:
 | 
				
			||||||
 | 
						rm -f check-version check-help
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					maintainer-clean-local:
 | 
				
			||||||
 | 
						rm -f Makefile Makefile.in Makefile.am
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					check-version: Makefile
 | 
				
			||||||
 | 
						echo "#!/bin/sh" > check-version
 | 
				
			||||||
 | 
						echo "./ngircd --version | grep ngircd >/dev/null 2>&1" >>check-version
 | 
				
			||||||
 | 
						chmod 755 check-version
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					check-help: Makefile
 | 
				
			||||||
 | 
						echo "#!/bin/sh" > check-help
 | 
				
			||||||
 | 
						echo "./ngircd --help | grep help >/dev/null 2>&1" >>check-help
 | 
				
			||||||
 | 
						chmod 755 check-help
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TESTS = check-version check-help
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -eof-
 | 
				
			||||||
							
								
								
									
										331
									
								
								src/ngircd/array.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										331
									
								
								src/ngircd/array.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,331 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * This program is free software; you can redistribute it and/or modify
 | 
				
			||||||
 | 
					 * it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					 * the Free Software Foundation; either version 2 of the License, or
 | 
				
			||||||
 | 
					 * (at your option) any later version.
 | 
				
			||||||
 | 
					 * Please read the file COPYING, README and AUTHORS for more information.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * libarray - dynamically allocate arrays.
 | 
				
			||||||
 | 
					 * Copyright (c) 2005 Florian Westphal (westphal@foo.fh-furtwangen.de)
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @file
 | 
				
			||||||
 | 
					 * Functions to dynamically allocate arrays.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Additionan debug messages related to array handling: 0=off / 1=on */
 | 
				
			||||||
 | 
					#define DEBUG_ARRAY 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "array.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <assert.h>
 | 
				
			||||||
 | 
					#include <stdlib.h>
 | 
				
			||||||
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					#include <unistd.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if DEBUG_ARRAY
 | 
				
			||||||
 | 
					# include "log.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define array_UNUSABLE(x)	( !(x)->mem )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static bool
 | 
				
			||||||
 | 
					safemult_sizet(size_t a, size_t b, size_t *res)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						size_t tmp = a * b;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (b && (tmp / b != a))
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						*res = tmp;
 | 
				
			||||||
 | 
						return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void
 | 
				
			||||||
 | 
					array_init(array *a)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						assert(a != NULL);
 | 
				
			||||||
 | 
						a->mem = NULL;
 | 
				
			||||||
 | 
						a->allocated = 0;
 | 
				
			||||||
 | 
						a->used = 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* if realloc() fails, array_alloc return NULL. otherwise return pointer to elem pos in array */
 | 
				
			||||||
 | 
					void *
 | 
				
			||||||
 | 
					array_alloc(array * a, size_t size, size_t pos)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						size_t alloc, pos_plus1 = pos + 1;
 | 
				
			||||||
 | 
						char *tmp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						assert(size > 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (pos_plus1 == 0 || !safemult_sizet(size, pos_plus1, &alloc))
 | 
				
			||||||
 | 
							return NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (a->allocated < alloc) {
 | 
				
			||||||
 | 
					#if DEBUG_ARRAY
 | 
				
			||||||
 | 
							LogDebug("array_alloc(): changing size from %u to %u bytes.",
 | 
				
			||||||
 | 
							    a->allocated, alloc);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
							tmp = realloc(a->mem, alloc);
 | 
				
			||||||
 | 
							if (!tmp)
 | 
				
			||||||
 | 
								return NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							a->mem = tmp;
 | 
				
			||||||
 | 
							a->allocated = alloc;
 | 
				
			||||||
 | 
							memset(a->mem + a->used, 0, a->allocated - a->used);
 | 
				
			||||||
 | 
							a->used = alloc;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						assert(a->allocated >= a->used);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return a->mem + (pos * size);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*return number of initialized ELEMS in a. */
 | 
				
			||||||
 | 
					size_t
 | 
				
			||||||
 | 
					array_length(const array * const a, size_t membersize)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						assert(a != NULL);
 | 
				
			||||||
 | 
						assert(membersize > 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (array_UNUSABLE(a))
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						assert(a->allocated);
 | 
				
			||||||
 | 
						return membersize ? a->used / membersize : 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* copy array src to array dest */
 | 
				
			||||||
 | 
					bool
 | 
				
			||||||
 | 
					array_copy(array * dest, const array * const src)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if (array_UNUSABLE(src))
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						assert(src->allocated);
 | 
				
			||||||
 | 
						return array_copyb(dest, src->mem, src->used);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* return false on failure (realloc failure, invalid src/dest array) */
 | 
				
			||||||
 | 
					bool
 | 
				
			||||||
 | 
					array_copyb(array * dest, const char *src, size_t len)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						assert(dest != NULL);
 | 
				
			||||||
 | 
						assert(src != NULL );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (!src || !dest)
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						array_trunc(dest);
 | 
				
			||||||
 | 
						return array_catb(dest, src, len);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* copy string to dest */
 | 
				
			||||||
 | 
					bool
 | 
				
			||||||
 | 
					array_copys(array * dest, const char *src)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return array_copyb(dest, src, strlen(src));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* append len bytes from src to the array dest.
 | 
				
			||||||
 | 
					return false if we could not append all bytes (realloc failure, invalid src/dest array) */
 | 
				
			||||||
 | 
					bool
 | 
				
			||||||
 | 
					array_catb(array * dest, const char *src, size_t len)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						size_t tmp;
 | 
				
			||||||
 | 
						size_t used;
 | 
				
			||||||
 | 
						char *ptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						assert(dest != NULL);
 | 
				
			||||||
 | 
						assert(src != NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (!len)
 | 
				
			||||||
 | 
							return true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (!src || !dest)
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						used = dest->used;
 | 
				
			||||||
 | 
						tmp = used + len;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (tmp < used || tmp < len)	/* integer overflow */
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (!array_alloc(dest, 1, tmp))
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ptr = dest->mem;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						assert(ptr != NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if DEBUG_ARRAY
 | 
				
			||||||
 | 
						LogDebug(
 | 
				
			||||||
 | 
						    "array_catb(): appending %u bytes to array (now %u bytes in array).",
 | 
				
			||||||
 | 
						    len, tmp);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						memcpy(ptr + used, src, len);
 | 
				
			||||||
 | 
						dest->used = tmp;
 | 
				
			||||||
 | 
						return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* append string to dest */
 | 
				
			||||||
 | 
					bool
 | 
				
			||||||
 | 
					array_cats(array * dest, const char *src)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return array_catb(dest, src, strlen(src));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* append trailing NUL byte to array */
 | 
				
			||||||
 | 
					bool
 | 
				
			||||||
 | 
					array_cat0(array * a)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return array_catb(a, "", 1);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* append trailing NUL byte to array, but do not count it. */
 | 
				
			||||||
 | 
					bool
 | 
				
			||||||
 | 
					array_cat0_temporary(array * a)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						char *endpos = array_alloc(a, 1, array_bytes(a));
 | 
				
			||||||
 | 
						if (!endpos)
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						*endpos = '\0';
 | 
				
			||||||
 | 
						return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* add contents of array src to array dest. */
 | 
				
			||||||
 | 
					bool
 | 
				
			||||||
 | 
					array_cat(array * dest, const array * const src)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if (array_UNUSABLE(src))
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return array_catb(dest, src->mem, src->used);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* return pointer to the element at pos.
 | 
				
			||||||
 | 
					   return NULL if the array is unallocated, or if pos is larger than
 | 
				
			||||||
 | 
					   the number of elements stored int the array. */
 | 
				
			||||||
 | 
					void *
 | 
				
			||||||
 | 
					array_get(array * a, size_t membersize, size_t pos)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						size_t totalsize;
 | 
				
			||||||
 | 
						size_t posplus1 = pos + 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						assert(membersize > 0);
 | 
				
			||||||
 | 
						assert(a != NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (!posplus1 || array_UNUSABLE(a))
 | 
				
			||||||
 | 
							return NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (!safemult_sizet(posplus1, membersize, &totalsize))
 | 
				
			||||||
 | 
							return NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (a->allocated < totalsize)
 | 
				
			||||||
 | 
							return NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						totalsize = pos * membersize;
 | 
				
			||||||
 | 
						return a->mem + totalsize;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void
 | 
				
			||||||
 | 
					array_free(array * a)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						assert(a != NULL);
 | 
				
			||||||
 | 
					#if DEBUG_ARRAY
 | 
				
			||||||
 | 
						LogDebug(
 | 
				
			||||||
 | 
						    "array_free(): %u bytes free'd (%u bytes still used at time of free()).",
 | 
				
			||||||
 | 
						    a->allocated, a->used);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						free(a->mem);
 | 
				
			||||||
 | 
						a->mem = NULL;
 | 
				
			||||||
 | 
						a->allocated = 0;
 | 
				
			||||||
 | 
						a->used = 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void
 | 
				
			||||||
 | 
					array_free_wipe(array *a)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						size_t bytes = a->allocated;
 | 
				
			||||||
 | 
						if (bytes)
 | 
				
			||||||
 | 
							memset(a->mem, 0, bytes);
 | 
				
			||||||
 | 
						array_free(a);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void *
 | 
				
			||||||
 | 
					array_start(const array * const a)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						assert(a != NULL);
 | 
				
			||||||
 | 
						return a->mem;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void
 | 
				
			||||||
 | 
					array_trunc(array * a)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						assert(a != NULL);
 | 
				
			||||||
 | 
						a->used = 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void
 | 
				
			||||||
 | 
					array_truncate(array * a, size_t membersize, size_t len)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						size_t newlen;
 | 
				
			||||||
 | 
						assert(a != NULL);
 | 
				
			||||||
 | 
						if (!safemult_sizet(membersize, len, &newlen))
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (newlen <= a->allocated)
 | 
				
			||||||
 | 
							a->used = newlen;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* move elements starting at pos to beginning of array */
 | 
				
			||||||
 | 
					void
 | 
				
			||||||
 | 
					array_moveleft(array * a, size_t membersize, size_t pos)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						size_t bytepos;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						assert(a != NULL);
 | 
				
			||||||
 | 
						assert(membersize > 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (!safemult_sizet(membersize, pos, &bytepos)) {
 | 
				
			||||||
 | 
							a->used = 0;
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (!bytepos)
 | 
				
			||||||
 | 
							return;	/* nothing to do */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if DEBUG_ARRAY
 | 
				
			||||||
 | 
						LogDebug(
 | 
				
			||||||
 | 
						    "array_moveleft(): %u bytes used in array, starting at position %u.",
 | 
				
			||||||
 | 
						    a->used, bytepos);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						if (a->used <= bytepos) {
 | 
				
			||||||
 | 
							a->used = 0;
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						a->used -= bytepos;
 | 
				
			||||||
 | 
						memmove(a->mem, a->mem + bytepos, a->used);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* -eof- */
 | 
				
			||||||
							
								
								
									
										104
									
								
								src/ngircd/array.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										104
									
								
								src/ngircd/array.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,104 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * This program is free software; you can redistribute it and/or modify
 | 
				
			||||||
 | 
					 * it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					 * the Free Software Foundation; either version 2 of the License, or
 | 
				
			||||||
 | 
					 * (at your option) any later version.
 | 
				
			||||||
 | 
					 * Please read the file COPYING, README and AUTHORS for more information.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * libarray - dynamically allocate arrays.
 | 
				
			||||||
 | 
					 * Copyright (c) 2005 Florian Westphal (westphal@foo.fh-furtwangen.de)
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef array_h_included
 | 
				
			||||||
 | 
					#define array_h_included
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @file
 | 
				
			||||||
 | 
					 * Functions to dynamically allocate arrays (header).
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "portab.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
						char * mem;
 | 
				
			||||||
 | 
						size_t allocated;
 | 
				
			||||||
 | 
						size_t used;
 | 
				
			||||||
 | 
					} array;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* allocated: mem != NULL, used >= 0 && used <= allocated, allocated > 0
 | 
				
			||||||
 | 
					   unallocated: mem == NULL, allocated == 0, used == 0 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define array_unallocated(x)	(array_bytes(x)==0)
 | 
				
			||||||
 | 
					#define INIT_ARRAY		{ NULL, 0, 0 }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* set all variables in a to 0 */
 | 
				
			||||||
 | 
					extern void array_init PARAMS((array *a));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* allocates space for at least nmemb+1 elements of size bytes each.
 | 
				
			||||||
 | 
					   return pointer to elem at pos, or NULL if realloc() fails */
 | 
				
			||||||
 | 
					extern void * array_alloc PARAMS((array *a, size_t size, size_t pos));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* returns the number of initialized BYTES in a. */
 | 
				
			||||||
 | 
					#define array_bytes(array)	( (array)->used )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* returns the number of initialized ELEMS in a. */
 | 
				
			||||||
 | 
					extern size_t array_length PARAMS((const array* const a, size_t elemsize));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* _copy functions: copy src to dest.
 | 
				
			||||||
 | 
					   return true if OK, else false (e. g. realloc failure, invalid src/dest
 | 
				
			||||||
 | 
					   array, ...). In that case dest is left unchanged. */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* copy array src to dest */
 | 
				
			||||||
 | 
					extern bool array_copy PARAMS((array* dest, const array* const src));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* copy len bytes from src to array dest. */
 | 
				
			||||||
 | 
					extern bool array_copyb PARAMS((array* dest, const char* src, size_t len));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* copy string to dest */
 | 
				
			||||||
 | 
					extern bool array_copys PARAMS((array* dest, const char* src));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* _cat functions: append src to dest.
 | 
				
			||||||
 | 
					   return true if OK, else false (e. g. realloc failure, invalid src/dest
 | 
				
			||||||
 | 
					   array, ...). In that case dest is left unchanged. */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* append len bytes from src to array dest. */
 | 
				
			||||||
 | 
					extern bool array_catb PARAMS((array* dest, const char* src, size_t len));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* append string to dest */
 | 
				
			||||||
 | 
					extern bool array_cats PARAMS((array* dest, const char* src));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* append NUL byte to dest */
 | 
				
			||||||
 | 
					extern bool array_cat0 PARAMS((array* dest));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* append NUL byte to dest, but do not count null byte */
 | 
				
			||||||
 | 
					extern bool array_cat0_temporary PARAMS((array* dest));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* append contents of array src to array dest. */
 | 
				
			||||||
 | 
					extern bool array_cat PARAMS((array* dest, const array* const src));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* return pointer to element at pos.
 | 
				
			||||||
 | 
					   return NULL if the array is unallocated or if pos is larger than the number
 | 
				
			||||||
 | 
					   of elements stored int the array. */
 | 
				
			||||||
 | 
					extern void* array_get PARAMS((array* a, size_t membersize, size_t pos));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* free the contents of this array. */
 | 
				
			||||||
 | 
					extern void array_free PARAMS((array* a));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* overwrite array with zeros before free */
 | 
				
			||||||
 | 
					extern void array_free_wipe PARAMS((array* a));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* return pointer to first element in this array */
 | 
				
			||||||
 | 
					extern void* array_start PARAMS((const array* const a));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* reset this array (the memory is not free'd */
 | 
				
			||||||
 | 
					extern void array_trunc PARAMS((array* a));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* set number of used elements in this array to len */
 | 
				
			||||||
 | 
					extern void array_truncate PARAMS((array* a, size_t membersize, size_t len));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* move elements starting at pos to beginning of array */
 | 
				
			||||||
 | 
					extern void array_moveleft PARAMS((array* a, size_t membersize, size_t pos));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* -eof- */
 | 
				
			||||||
							
								
								
									
										1274
									
								
								src/ngircd/channel.c
									
									
									
									
									
								
							
							
						
						
									
										1274
									
								
								src/ngircd/channel.c
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -1,37 +1,46 @@
 | 
				
			|||||||
/*
 | 
					/*
 | 
				
			||||||
 * ngIRCd -- The Next Generation IRC Daemon
 | 
					 * ngIRCd -- The Next Generation IRC Daemon
 | 
				
			||||||
 * Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
 | 
					 * Copyright (c)2001-2024 Alexander Barton (alex@barton.de) and Contributors.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
 | 
					 * This program is free software; you can redistribute it and/or modify
 | 
				
			||||||
 * der GNU General Public License (GPL), wie von der Free Software Foundation
 | 
					 * it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 * herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2
 | 
					 * the Free Software Foundation; either version 2 of the License, or
 | 
				
			||||||
 * der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version.
 | 
					 * (at your option) any later version.
 | 
				
			||||||
 * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
 | 
					 * Please read the file COPYING, README and AUTHORS for more information.
 | 
				
			||||||
 * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * $Id: channel.h,v 1.16 2002/03/25 19:11:01 alex Exp $
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * channel.h: Management der Channels (Header)
 | 
					 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifndef __channel_h__
 | 
					#ifndef __channel_h__
 | 
				
			||||||
#define __channel_h__
 | 
					#define __channel_h__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "client.h"
 | 
					/**
 | 
				
			||||||
 | 
					 * @file
 | 
				
			||||||
 | 
					 * Channel management (header)
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(__channel_c__)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(__channel_c__) | defined(S_SPLINT_S)
 | 
					#include "lists.h"
 | 
				
			||||||
 | 
					 | 
				
			||||||
#include "defines.h"
 | 
					#include "defines.h"
 | 
				
			||||||
 | 
					#include "array.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct _CHANNEL
 | 
					typedef struct _CHANNEL
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct _CHANNEL *next;
 | 
						struct _CHANNEL *next;
 | 
				
			||||||
	CHAR name[CHANNEL_NAME_LEN];	/* Name des Channel */
 | 
						char name[CHANNEL_NAME_LEN];	/* Name of the channel */
 | 
				
			||||||
	UINT32 hash;			/* Hash ueber (kleingeschrieben) Namen */
 | 
						UINT32 hash;			/* Hash of the (lowecase!) name */
 | 
				
			||||||
	CHAR modes[CHANNEL_MODE_LEN];	/* Channel-Modes */
 | 
						char modes[CHANNEL_MODE_LEN];	/* Channel modes */
 | 
				
			||||||
	CHAR topic[CHANNEL_TOPIC_LEN];	/* Topic des Channels */
 | 
						array topic;			/* Topic of the channel */
 | 
				
			||||||
 | 
					#ifndef STRICT_RFC
 | 
				
			||||||
 | 
						time_t creation_time;		/* Channel creation time */
 | 
				
			||||||
 | 
						time_t topic_time;		/* Time when topic was set */
 | 
				
			||||||
 | 
						char topic_who[CLIENT_NICK_LEN];/* Nickname of user that set topic */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						char key[CLIENT_PASS_LEN];	/* Channel key ("password", mode "k" ) */
 | 
				
			||||||
 | 
						unsigned long maxusers;		/* Maximum number of members (mode "l") */
 | 
				
			||||||
 | 
						struct list_head list_bans;	/* list head of banned users */
 | 
				
			||||||
 | 
						struct list_head list_excepts;	/* list head of (ban) exception list */
 | 
				
			||||||
 | 
						struct list_head list_invites;	/* list head of invited users */
 | 
				
			||||||
 | 
						array keyfile;			/* Name of the channel key file */
 | 
				
			||||||
} CHANNEL;
 | 
					} CHANNEL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct _CLIENT2CHAN
 | 
					typedef struct _CLIENT2CHAN
 | 
				
			||||||
@@ -39,7 +48,7 @@ typedef struct _CLIENT2CHAN
 | 
				
			|||||||
	struct _CLIENT2CHAN *next;
 | 
						struct _CLIENT2CHAN *next;
 | 
				
			||||||
	CLIENT *client;
 | 
						CLIENT *client;
 | 
				
			||||||
	CHANNEL *channel;
 | 
						CHANNEL *channel;
 | 
				
			||||||
	CHAR modes[CHANNEL_MODE_LEN];	/* User-Modes in dem Channel */
 | 
						char modes[CHANNEL_MODE_LEN];	/* User-Modes in Channel */
 | 
				
			||||||
} CL2CHAN;
 | 
					} CL2CHAN;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
@@ -49,51 +58,96 @@ typedef POINTER CL2CHAN;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL struct list_head *Channel_GetListBans PARAMS((CHANNEL *c));
 | 
				
			||||||
 | 
					GLOBAL struct list_head *Channel_GetListExcepts PARAMS((CHANNEL *c));
 | 
				
			||||||
 | 
					GLOBAL struct list_head *Channel_GetListInvites PARAMS((CHANNEL *c));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GLOBAL VOID Channel_Init( VOID );
 | 
					GLOBAL void Channel_Init PARAMS(( void ));
 | 
				
			||||||
GLOBAL VOID Channel_Exit( VOID );
 | 
					GLOBAL void Channel_InitPredefined PARAMS((  void ));
 | 
				
			||||||
 | 
					GLOBAL void Channel_Exit PARAMS(( void ));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GLOBAL BOOLEAN Channel_Join( CLIENT *Client, CHAR *Name );
 | 
					GLOBAL bool Channel_Join PARAMS(( CLIENT *Client, const char *Name ));
 | 
				
			||||||
GLOBAL BOOLEAN Channel_Part( CLIENT *Client, CLIENT *Origin, CHAR *Name, CHAR *Reason );
 | 
					GLOBAL bool Channel_Part PARAMS(( CLIENT *Client, CLIENT *Origin, const char *Name, const char *Reason ));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GLOBAL VOID Channel_RemoveClient( CLIENT *Client, CHAR *Reason );
 | 
					GLOBAL void Channel_Quit PARAMS(( CLIENT *Client, const char *Reason ));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GLOBAL INT Channel_Count( VOID );
 | 
					GLOBAL void Channel_Kick PARAMS((CLIENT *Peer, CLIENT *Target, CLIENT *Origin,
 | 
				
			||||||
 | 
									 const char *Name, const char *Reason));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GLOBAL CHAR *Channel_Name( CHANNEL *Chan );
 | 
					GLOBAL unsigned long Channel_CountVisible PARAMS((CLIENT *Client));
 | 
				
			||||||
GLOBAL CHAR *Channel_Modes( CHANNEL *Chan );
 | 
					GLOBAL unsigned long Channel_MemberCount PARAMS(( CHANNEL *Chan ));
 | 
				
			||||||
GLOBAL CHAR *Channel_Topic( CHANNEL *Chan );
 | 
					GLOBAL int Channel_CountForUser PARAMS(( CLIENT *Client ));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GLOBAL VOID Channel_SetTopic( CHANNEL *Chan, CHAR *Topic );
 | 
					GLOBAL const char *Channel_Name PARAMS(( const CHANNEL *Chan ));
 | 
				
			||||||
 | 
					GLOBAL char *Channel_Topic PARAMS(( CHANNEL *Chan ));
 | 
				
			||||||
 | 
					GLOBAL char *Channel_Key PARAMS(( CHANNEL *Chan ));
 | 
				
			||||||
 | 
					GLOBAL unsigned long Channel_MaxUsers PARAMS(( CHANNEL *Chan ));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GLOBAL CHANNEL *Channel_Search( CHAR *Name );
 | 
					GLOBAL void Channel_SetTopic PARAMS(( CHANNEL *Chan, CLIENT *Client, const char *Topic ));
 | 
				
			||||||
 | 
					GLOBAL void Channel_SetModes PARAMS(( CHANNEL *Chan, const char *Modes ));
 | 
				
			||||||
 | 
					GLOBAL void Channel_SetKey PARAMS(( CHANNEL *Chan, const char *Key ));
 | 
				
			||||||
 | 
					GLOBAL void Channel_SetMaxUsers PARAMS(( CHANNEL *Chan, unsigned long Count ));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GLOBAL CHANNEL *Channel_First( VOID );
 | 
					GLOBAL CHANNEL *Channel_Search PARAMS(( const char *Name ));
 | 
				
			||||||
GLOBAL CHANNEL *Channel_Next( CHANNEL *Chan );
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
GLOBAL CL2CHAN *Channel_FirstMember( CHANNEL *Chan );
 | 
					GLOBAL CHANNEL *Channel_First PARAMS(( void ));
 | 
				
			||||||
GLOBAL CL2CHAN *Channel_NextMember( CHANNEL *Chan, CL2CHAN *Cl2Chan );
 | 
					GLOBAL CHANNEL *Channel_Next PARAMS(( CHANNEL *Chan ));
 | 
				
			||||||
GLOBAL CL2CHAN *Channel_FirstChannelOf( CLIENT *Client );
 | 
					 | 
				
			||||||
GLOBAL CL2CHAN *Channel_NextChannelOf( CLIENT *Client, CL2CHAN *Cl2Chan );
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
GLOBAL CLIENT *Channel_GetClient( CL2CHAN *Cl2Chan );
 | 
					GLOBAL CL2CHAN *Channel_FirstMember PARAMS(( CHANNEL *Chan ));
 | 
				
			||||||
GLOBAL CHANNEL *Channel_GetChannel( CL2CHAN *Cl2Chan );
 | 
					GLOBAL CL2CHAN *Channel_NextMember PARAMS(( CHANNEL *Chan, CL2CHAN *Cl2Chan ));
 | 
				
			||||||
 | 
					GLOBAL CL2CHAN *Channel_FirstChannelOf PARAMS(( CLIENT *Client ));
 | 
				
			||||||
 | 
					GLOBAL CL2CHAN *Channel_NextChannelOf PARAMS(( CLIENT *Client, CL2CHAN *Cl2Chan ));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GLOBAL BOOLEAN Channel_IsValidName( CHAR *Name );
 | 
					GLOBAL CLIENT *Channel_GetClient PARAMS(( CL2CHAN *Cl2Chan ));
 | 
				
			||||||
 | 
					GLOBAL CHANNEL *Channel_GetChannel PARAMS(( CL2CHAN *Cl2Chan ));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GLOBAL BOOLEAN Channel_ModeAdd( CHANNEL *Chan, CHAR Mode );
 | 
					GLOBAL bool Channel_IsValidName PARAMS(( const char *Name ));
 | 
				
			||||||
GLOBAL BOOLEAN Channel_ModeDel( CHANNEL *Chan, CHAR Mode );
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
GLOBAL BOOLEAN Channel_UserModeAdd( CHANNEL *Chan, CLIENT *Client, CHAR Mode );
 | 
					GLOBAL bool Channel_ModeAdd PARAMS(( CHANNEL *Chan, char Mode ));
 | 
				
			||||||
GLOBAL BOOLEAN Channel_UserModeDel( CHANNEL *Chan, CLIENT *Client, CHAR Mode );
 | 
					GLOBAL bool Channel_ModeDel PARAMS(( CHANNEL *Chan, char Mode ));
 | 
				
			||||||
GLOBAL CHAR *Channel_UserModes( CHANNEL *Chan, CLIENT *Client );
 | 
					GLOBAL bool Channel_HasMode PARAMS(( CHANNEL *Chan, char Mode ));
 | 
				
			||||||
 | 
					GLOBAL char *Channel_Modes PARAMS(( CHANNEL *Chan ));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GLOBAL BOOLEAN Channel_IsMemberOf( CHANNEL *Chan, CLIENT *Client );
 | 
					GLOBAL bool Channel_UserModeAdd PARAMS(( CHANNEL *Chan, CLIENT *Client, char Mode ));
 | 
				
			||||||
 | 
					GLOBAL bool Channel_UserModeDel PARAMS(( CHANNEL *Chan, CLIENT *Client, char Mode ));
 | 
				
			||||||
 | 
					GLOBAL bool Channel_UserHasMode PARAMS(( CHANNEL *Chan, CLIENT *Client, char Mode ));
 | 
				
			||||||
 | 
					GLOBAL char *Channel_UserModes PARAMS(( CHANNEL *Chan, CLIENT *Client ));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GLOBAL BOOLEAN Channel_Write( CHANNEL *Chan, CLIENT *From, CLIENT *Client, CHAR *Text );
 | 
					GLOBAL bool Channel_IsMemberOf PARAMS(( CHANNEL *Chan, CLIENT *Client ));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL bool Channel_Write PARAMS((CHANNEL *Chan, CLIENT *From, CLIENT *Client,
 | 
				
			||||||
 | 
									  const char *Command, bool SendErrors,
 | 
				
			||||||
 | 
									  const char *Text));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL CHANNEL *Channel_Create PARAMS(( const char *Name ));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef STRICT_RFC
 | 
				
			||||||
 | 
					GLOBAL unsigned int Channel_TopicTime PARAMS(( CHANNEL *Chan ));
 | 
				
			||||||
 | 
					GLOBAL char *Channel_TopicWho PARAMS(( CHANNEL *Chan ));
 | 
				
			||||||
 | 
					GLOBAL unsigned int Channel_CreationTime PARAMS(( CHANNEL *Chan ));
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL bool Channel_AddBan PARAMS((CHANNEL *c, const char *Mask, const char *who));
 | 
				
			||||||
 | 
					GLOBAL bool Channel_AddExcept PARAMS((CHANNEL *c, const char *Mask, const char *who));
 | 
				
			||||||
 | 
					GLOBAL bool Channel_AddInvite PARAMS((CHANNEL *c, const char *Mask,
 | 
				
			||||||
 | 
									      bool OnlyOnce, const char *who));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL bool Channel_ShowBans PARAMS((CLIENT *client, CHANNEL *c));
 | 
				
			||||||
 | 
					GLOBAL bool Channel_ShowExcepts PARAMS((CLIENT *client, CHANNEL *c));
 | 
				
			||||||
 | 
					GLOBAL bool Channel_ShowInvites PARAMS((CLIENT *client, CHANNEL *c));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL void Channel_LogServer PARAMS((const char *msg));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL bool Channel_CheckKey PARAMS((CHANNEL *Chan, CLIENT *Client,
 | 
				
			||||||
 | 
									     const char *Key));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL void Channel_CheckAdminRights PARAMS((CHANNEL *Chan, CLIENT *Client,
 | 
				
			||||||
 | 
										     CLIENT *Origin, bool *OnChannel,
 | 
				
			||||||
 | 
										     bool *AdminOk, bool *UseServerMode));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define Channel_IsLocal(c) (Channel_Name(c)[0] == '&')
 | 
				
			||||||
 | 
					#define Channel_IsModeless(c) (Channel_Name(c)[0] == '+')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
/* -eof- */
 | 
					/* -eof- */
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										138
									
								
								src/ngircd/class.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										138
									
								
								src/ngircd/class.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,138 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * ngIRCd -- The Next Generation IRC Daemon
 | 
				
			||||||
 | 
					 * Copyright (c)2001-2014 Alexander Barton (alex@barton.de) and Contributors.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This program is free software; you can redistribute it and/or modify
 | 
				
			||||||
 | 
					 * it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					 * the Free Software Foundation; either version 2 of the License, or
 | 
				
			||||||
 | 
					 * (at your option) any later version.
 | 
				
			||||||
 | 
					 * Please read the file COPYING, README and AUTHORS for more information.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "portab.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @file
 | 
				
			||||||
 | 
					 * User class management.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <assert.h>
 | 
				
			||||||
 | 
					#include <stdio.h>
 | 
				
			||||||
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "conn.h"
 | 
				
			||||||
 | 
					#include "lists.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "class.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct list_head My_Classes[CLASS_COUNT];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL void
 | 
				
			||||||
 | 
					Class_Init(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						memset(My_Classes, 0, sizeof(My_Classes));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL void
 | 
				
			||||||
 | 
					Class_Exit(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						int i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for (i = 0; i < CLASS_COUNT; Lists_Free(&My_Classes[i++]));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL bool
 | 
				
			||||||
 | 
					Class_GetMemberReason(const int Class, CLIENT *Client, char *reason, size_t len)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						char str[COMMAND_LEN];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						assert(Class < CLASS_COUNT);
 | 
				
			||||||
 | 
						assert(Client != NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						strlcpy(str, "listed", sizeof(str));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (!Lists_CheckReason(&My_Classes[Class], Client, str, sizeof(str)))
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						switch(Class) {
 | 
				
			||||||
 | 
							case CLASS_GLINE:
 | 
				
			||||||
 | 
								snprintf(reason, len, "\"%s\" (G-Line)", str);
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
							case CLASS_KLINE:
 | 
				
			||||||
 | 
								snprintf(reason, len, "\"%s\" (K-Line)", str);
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
							default:
 | 
				
			||||||
 | 
								snprintf(reason, len, "%s", str);
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Check if a client is banned from this server: GLINE, KLINE.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * If a client isn't allowed to connect, it will be disconnected again.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @param Client The client to check.
 | 
				
			||||||
 | 
					 * @return CONNECTED if client is allowed to join, DISCONNECTED if not.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					GLOBAL bool
 | 
				
			||||||
 | 
					Class_HandleServerBans(CLIENT *Client)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						char reject[COMMAND_LEN];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						assert(Client != NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (Class_GetMemberReason(CLASS_GLINE, Client, reject, sizeof(reject)) ||
 | 
				
			||||||
 | 
						    Class_GetMemberReason(CLASS_KLINE, Client, reject, sizeof(reject))) {
 | 
				
			||||||
 | 
							Client_Reject(Client, reject, true);
 | 
				
			||||||
 | 
							return DISCONNECTED;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return CONNECTED;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL bool
 | 
				
			||||||
 | 
					Class_AddMask(const int Class, const char *Pattern, time_t ValidUntil,
 | 
				
			||||||
 | 
						      const char *Reason)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						char mask[MASK_LEN];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						assert(Class < CLASS_COUNT);
 | 
				
			||||||
 | 
						assert(Pattern != NULL);
 | 
				
			||||||
 | 
						assert(Reason != NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Lists_MakeMask(Pattern, mask, sizeof(mask));
 | 
				
			||||||
 | 
						return Lists_Add(&My_Classes[Class], mask,
 | 
				
			||||||
 | 
								 ValidUntil, Reason, false);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL void
 | 
				
			||||||
 | 
					Class_DeleteMask(const int Class, const char *Pattern)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						char mask[MASK_LEN];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						assert(Class < CLASS_COUNT);
 | 
				
			||||||
 | 
						assert(Pattern != NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Lists_MakeMask(Pattern, mask, sizeof(mask));
 | 
				
			||||||
 | 
						Lists_Del(&My_Classes[Class], mask);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL struct list_head *
 | 
				
			||||||
 | 
					Class_GetList(const int Class)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						assert(Class < CLASS_COUNT);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return &My_Classes[Class];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL void
 | 
				
			||||||
 | 
					Class_Expire(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						Lists_Expire(&My_Classes[CLASS_GLINE], "G-Line");
 | 
				
			||||||
 | 
						Lists_Expire(&My_Classes[CLASS_KLINE], "K-Line");
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* -eof- */
 | 
				
			||||||
							
								
								
									
										42
									
								
								src/ngircd/class.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								src/ngircd/class.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,42 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * ngIRCd -- The Next Generation IRC Daemon
 | 
				
			||||||
 | 
					 * Copyright (c)2001-2012 Alexander Barton (alex@barton.de) and Contributors.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This program is free software; you can redistribute it and/or modify
 | 
				
			||||||
 | 
					 * it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					 * the Free Software Foundation; either version 2 of the License, or
 | 
				
			||||||
 | 
					 * (at your option) any later version.
 | 
				
			||||||
 | 
					 * Please read the file COPYING, README and AUTHORS for more information.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __class_h__
 | 
				
			||||||
 | 
					#define __class_h__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @file
 | 
				
			||||||
 | 
					 * User class management.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define CLASS_KLINE 0
 | 
				
			||||||
 | 
					#define CLASS_GLINE 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define CLASS_COUNT 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL void Class_Init PARAMS((void));
 | 
				
			||||||
 | 
					GLOBAL void Class_Exit PARAMS((void));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL bool Class_AddMask PARAMS((const int Class, const char *Pattern,
 | 
				
			||||||
 | 
									  const time_t ValidUntil, const char *Reason));
 | 
				
			||||||
 | 
					GLOBAL void Class_DeleteMask PARAMS((const int Class, const char *Pattern));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL bool Class_GetMemberReason PARAMS((const int Class, CLIENT *Client,
 | 
				
			||||||
 | 
										  char *reason, size_t len));
 | 
				
			||||||
 | 
					GLOBAL bool Class_HandleServerBans PARAMS((CLIENT *Client));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL struct list_head *Class_GetList PARAMS((const int Class));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL void Class_Expire PARAMS((void));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* __class_h__ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* -eof- */
 | 
				
			||||||
							
								
								
									
										69
									
								
								src/ngircd/client-cap.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								src/ngircd/client-cap.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,69 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * ngIRCd -- The Next Generation IRC Daemon
 | 
				
			||||||
 | 
					 * Copyright (c)2001-2014 Alexander Barton (alex@barton.de) and Contributors.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This program is free software; you can redistribute it and/or modify
 | 
				
			||||||
 | 
					 * it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					 * the Free Software Foundation; either version 2 of the License, or
 | 
				
			||||||
 | 
					 * (at your option) any later version.
 | 
				
			||||||
 | 
					 * Please read the file COPYING, README and AUTHORS for more information.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define __client_cap_c__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "portab.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @file
 | 
				
			||||||
 | 
					 * Functions to deal with IRC Capabilities
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <assert.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "conn.h"
 | 
				
			||||||
 | 
					#include "log.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "client-cap.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL int
 | 
				
			||||||
 | 
					Client_Cap(CLIENT *Client)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						assert (Client != NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return Client->capabilities;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL void
 | 
				
			||||||
 | 
					Client_CapSet(CLIENT *Client, int Cap)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						assert(Client != NULL);
 | 
				
			||||||
 | 
						assert(Cap >= 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Client->capabilities = Cap;
 | 
				
			||||||
 | 
						LogDebug("Set new capability of \"%s\" to %d.",
 | 
				
			||||||
 | 
							 Client_ID(Client), Client->capabilities);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL void
 | 
				
			||||||
 | 
					Client_CapAdd(CLIENT *Client, int Cap)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						assert(Client != NULL);
 | 
				
			||||||
 | 
						assert(Cap > 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Client->capabilities |= Cap;
 | 
				
			||||||
 | 
						LogDebug("Add capability %d, new capability of \"%s\" is %d.",
 | 
				
			||||||
 | 
							 Cap, Client_ID(Client), Client->capabilities);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL void
 | 
				
			||||||
 | 
					Client_CapDel(CLIENT *Client, int Cap)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						assert(Client != NULL);
 | 
				
			||||||
 | 
						assert(Cap > 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Client->capabilities &= ~Cap;
 | 
				
			||||||
 | 
						LogDebug("Delete capability %d, new capability of \"%s\" is %d.",
 | 
				
			||||||
 | 
							 Cap, Client_ID(Client), Client->capabilities);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* -eof- */
 | 
				
			||||||
							
								
								
									
										31
									
								
								src/ngircd/client-cap.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								src/ngircd/client-cap.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,31 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * ngIRCd -- The Next Generation IRC Daemon
 | 
				
			||||||
 | 
					 * Copyright (c)2001-2012 Alexander Barton (alex@barton.de) and Contributors.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This program is free software; you can redistribute it and/or modify
 | 
				
			||||||
 | 
					 * it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					 * the Free Software Foundation; either version 2 of the License, or
 | 
				
			||||||
 | 
					 * (at your option) any later version.
 | 
				
			||||||
 | 
					 * Please read the file COPYING, README and AUTHORS for more information.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __client_cap_h__
 | 
				
			||||||
 | 
					#define __client_cap_h__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @file
 | 
				
			||||||
 | 
					 * Functions to deal with IRC Capabilities (header)
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define CLIENT_CAP_PENDING 1		/* Capability negotiation pending */
 | 
				
			||||||
 | 
					#define CLIENT_CAP_SUPPORTED 2		/* Client supports IRC capabilities */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define CLIENT_CAP_MULTI_PREFIX 4	/* multi-prefix */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL int Client_Cap PARAMS((CLIENT *Client));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL void Client_CapSet PARAMS((CLIENT *Client, int Cap));
 | 
				
			||||||
 | 
					GLOBAL void Client_CapAdd PARAMS((CLIENT *Client, int Cap));
 | 
				
			||||||
 | 
					GLOBAL void Client_CapDel PARAMS((CLIENT *Client, int Cap));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
							
								
								
									
										1588
									
								
								src/ngircd/client.c
									
									
									
									
									
								
							
							
						
						
									
										1588
									
								
								src/ngircd/client.c
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -1,61 +1,68 @@
 | 
				
			|||||||
/*
 | 
					/*
 | 
				
			||||||
 * ngIRCd -- The Next Generation IRC Daemon
 | 
					 * ngIRCd -- The Next Generation IRC Daemon
 | 
				
			||||||
 * Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
 | 
					 * Copyright (c)2001-2024 Alexander Barton (alex@barton.de) and Contributors.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
 | 
					 * This program is free software; you can redistribute it and/or modify
 | 
				
			||||||
 * der GNU General Public License (GPL), wie von der Free Software Foundation
 | 
					 * it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 * herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2
 | 
					 * the Free Software Foundation; either version 2 of the License, or
 | 
				
			||||||
 * der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version.
 | 
					 * (at your option) any later version.
 | 
				
			||||||
 * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
 | 
					 * Please read the file COPYING, README and AUTHORS for more information.
 | 
				
			||||||
 * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * $Id: client.h,v 1.27 2002/03/25 19:11:01 alex Exp $
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * client.h: Konfiguration des ngircd (Header)
 | 
					 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifndef __client_h__
 | 
					#ifndef __client_h__
 | 
				
			||||||
#define __client_h__
 | 
					#define __client_h__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "conn.h"
 | 
					/**
 | 
				
			||||||
 | 
					 * @file
 | 
				
			||||||
 | 
					 * Client management (header)
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define CLIENT_UNKNOWN		0x0001	/* connection of unknown type */
 | 
				
			||||||
 | 
					#define CLIENT_GOTPASS		0x0002	/* client did send PASS */
 | 
				
			||||||
 | 
					#define CLIENT_GOTNICK		0x0004	/* client did send NICK */
 | 
				
			||||||
 | 
					#define CLIENT_GOTUSER		0x0008	/* client did send USER */
 | 
				
			||||||
 | 
					#define CLIENT_USER		0x0010	/* client is an IRC user */
 | 
				
			||||||
 | 
					#define CLIENT_SERVER		0x0020	/* client is a server */
 | 
				
			||||||
 | 
					#define CLIENT_SERVICE		0x0040	/* client is a service */
 | 
				
			||||||
 | 
					#define CLIENT_UNKNOWNSERVER	0x0080	/* unregistered server connection */
 | 
				
			||||||
 | 
					#define CLIENT_GOTPASS_2813	0x0100	/* client did send PASS, RFC 2813 style */
 | 
				
			||||||
 | 
					#ifndef STRICT_RFC
 | 
				
			||||||
 | 
					# define CLIENT_WAITAUTHPING	0x0200	/* waiting for AUTH PONG from client */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#define CLIENT_WAITCAPEND	0x0400	/* waiting for "CAP END" command */
 | 
				
			||||||
 | 
					#define CLIENT_ANY		0xFFFF
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef enum
 | 
					#define CLIENT_TYPE int
 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	CLIENT_UNKNOWN,			/* Verbindung mit (noch) unbekanntem Typ */
 | 
					 | 
				
			||||||
	CLIENT_GOTPASS,			/* Client hat PASS gesendet */
 | 
					 | 
				
			||||||
	CLIENT_GOTNICK,			/* Client hat NICK gesendet */
 | 
					 | 
				
			||||||
	CLIENT_GOTUSER,			/* Client hat USER gesendet */
 | 
					 | 
				
			||||||
	CLIENT_USER,			/* Client ist ein Benutzer (USER wurde gesendet) */
 | 
					 | 
				
			||||||
	CLIENT_UNKNOWNSERVER,		/* unregistrierte Server-Verbindung */
 | 
					 | 
				
			||||||
	CLIENT_GOTPASSSERVER,		/* Client hat PASS nach "Server-Art" gesendet */
 | 
					 | 
				
			||||||
	CLIENT_SERVER,			/* Client ist ein Server */
 | 
					 | 
				
			||||||
	CLIENT_SERVICE			/* Client ist ein Service */
 | 
					 | 
				
			||||||
} CLIENT_TYPE;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if defined(__client_c__) | defined(S_SPLINT_S)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "defines.h"
 | 
					#include "defines.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(__client_c__) | defined(__client_cap_c__)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct _CLIENT
 | 
					typedef struct _CLIENT
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	CHAR id[CLIENT_ID_LEN];		/* Nick (User) bzw. ID (Server) */
 | 
						time_t starttime;		/* Start time of link */
 | 
				
			||||||
	UINT32 hash;			/* Hash ueber die (kleingeschriebene) ID */
 | 
						char id[CLIENT_ID_LEN];		/* nick (user) / ID (server) */
 | 
				
			||||||
	POINTER *next;			/* Zeiger auf naechste Client-Struktur */
 | 
						UINT32 hash;			/* hash of lower-case ID */
 | 
				
			||||||
	CLIENT_TYPE type;		/* Typ des Client, vgl. CLIENT_TYPE */
 | 
						POINTER *next;			/* pointer to next client structure */
 | 
				
			||||||
	CONN_ID conn_id;		/* ID der Connection (wenn lokal) bzw. NONE (remote) */
 | 
						CLIENT_TYPE type;		/* type of client, see CLIENT_xxx */
 | 
				
			||||||
	struct _CLIENT *introducer;	/* ID des Servers, der die Verbindung hat */
 | 
						CONN_ID conn_id;		/* ID of the connection (if local) or NONE (remote) */
 | 
				
			||||||
	struct _CLIENT *topserver;	/* Toplevel-Servers (nur gueltig, wenn Client ein Server ist) */
 | 
						struct _CLIENT *introducer;	/* ID of the servers which the client is connected to */
 | 
				
			||||||
	CHAR pwd[CLIENT_PASS_LEN];	/* Passwort, welches der Client angegeben hat */
 | 
						struct _CLIENT *topserver;	/* toplevel servers (only valid if client is a server) */
 | 
				
			||||||
	CHAR host[CLIENT_HOST_LEN];	/* Hostname des Client */
 | 
						char host[CLIENT_HOST_LEN];	/* hostname of the client */
 | 
				
			||||||
	CHAR user[CLIENT_USER_LEN];	/* Benutzername ("Login") */
 | 
						char *cloaked;			/* cloaked hostname of the client */
 | 
				
			||||||
	CHAR info[CLIENT_INFO_LEN];	/* Langer Benutzername (User) bzw. Infotext (Server) */
 | 
						char *ipa_text;			/* textual representaton of IP address */
 | 
				
			||||||
	CHAR modes[CLIENT_MODE_LEN];	/* Client Modes */
 | 
						char user[CLIENT_USER_LEN];	/* user name ("login") */
 | 
				
			||||||
	INT hops, token, mytoken;	/* "Hops" und "Token" (-> SERVER-Befehl) */
 | 
					#if defined(PAM)
 | 
				
			||||||
	BOOLEAN oper_by_me;		/* IRC-Operator-Status durch diesen Server? */
 | 
						char orig_user[CLIENT_AUTHUSER_LEN];
 | 
				
			||||||
	CHAR away[CLIENT_AWAY_LEN];	/* AWAY-Text, wenn Mode 'a' gesetzt */
 | 
										/* original user name supplied by USER command */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						char info[CLIENT_INFO_LEN];	/* long user name (user) / info text (server) */
 | 
				
			||||||
 | 
						char modes[CLIENT_MODE_LEN];	/* client modes */
 | 
				
			||||||
 | 
						int hops, token, mytoken;	/* "hops" and "Token" (see SERVER command) */
 | 
				
			||||||
 | 
						char *away;			/* AWAY text (valid if mode 'a' is set) */
 | 
				
			||||||
 | 
						char flags[CLIENT_FLAGS_LEN];	/* flags of the client */
 | 
				
			||||||
 | 
						char *account_name;		/* login account (for services) */
 | 
				
			||||||
 | 
						int capabilities;		/* enabled IRC capabilities */
 | 
				
			||||||
} CLIENT;
 | 
					} CLIENT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
@@ -65,77 +72,118 @@ typedef POINTER CLIENT;
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GLOBAL VOID Client_Init( VOID );
 | 
					typedef struct _WHOWAS
 | 
				
			||||||
GLOBAL VOID Client_Exit( VOID );
 | 
					{
 | 
				
			||||||
 | 
						time_t time;			/* time stamp of entry or 0 if unused */
 | 
				
			||||||
 | 
						char id[CLIENT_NICK_LEN];	/* client nickname */
 | 
				
			||||||
 | 
						char host[CLIENT_HOST_LEN];	/* hostname of the client */
 | 
				
			||||||
 | 
						char user[CLIENT_USER_LEN];	/* user name ("login") */
 | 
				
			||||||
 | 
						char info[CLIENT_INFO_LEN];	/* long user name */
 | 
				
			||||||
 | 
						char server[CLIENT_HOST_LEN];	/* server name */
 | 
				
			||||||
 | 
					} WHOWAS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GLOBAL CLIENT *Client_NewLocal( CONN_ID Idx, CHAR *Hostname, INT Type, BOOLEAN Idented );
 | 
					 | 
				
			||||||
GLOBAL CLIENT *Client_NewRemoteServer( CLIENT *Introducer, CHAR *Hostname, CLIENT *TopServer, INT Hops, INT Token, CHAR *Info, BOOLEAN Idented );
 | 
					 | 
				
			||||||
GLOBAL CLIENT *Client_NewRemoteUser( CLIENT *Introducer, CHAR *Nick, INT Hops, CHAR *User, CHAR *Hostname, INT Token, CHAR *Modes, CHAR *Info, BOOLEAN Idented );
 | 
					 | 
				
			||||||
GLOBAL CLIENT *Client_New( CONN_ID Idx, CLIENT *Introducer, CLIENT *TopServer, INT Type, CHAR *ID, CHAR *User, CHAR *Hostname, CHAR *Info, INT Hops, INT Token, CHAR *Modes, BOOLEAN Idented );
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
GLOBAL VOID Client_Destroy( CLIENT *Client, CHAR *LogMsg, CHAR *FwdMsg, BOOLEAN SendQuit );
 | 
					GLOBAL void Client_Init PARAMS(( void ));
 | 
				
			||||||
 | 
					GLOBAL void Client_Exit PARAMS(( void ));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GLOBAL CLIENT *Client_ThisServer( VOID );
 | 
					GLOBAL CLIENT *Client_NewLocal PARAMS(( CONN_ID Idx, const char *Hostname, int Type, bool Idented ));
 | 
				
			||||||
 | 
					GLOBAL CLIENT *Client_NewRemoteServer PARAMS(( CLIENT *Introducer, const char *Hostname, CLIENT *TopServer, int Hops, int Token, const char *Info, bool Idented ));
 | 
				
			||||||
 | 
					GLOBAL CLIENT *Client_NewRemoteUser PARAMS(( CLIENT *Introducer, const char *Nick, int Hops, const char *User, const char *Hostname, int Token, const char *Modes, const char *Info, bool Idented ));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GLOBAL CLIENT *Client_GetFromConn( CONN_ID Idx );
 | 
					GLOBAL void Client_Destroy PARAMS(( CLIENT *Client, const char *LogMsg, const char *FwdMsg, bool SendQuit ));
 | 
				
			||||||
GLOBAL CLIENT *Client_GetFromToken( CLIENT *Client, INT Token );
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
GLOBAL CLIENT *Client_Search( CHAR *ID );
 | 
					GLOBAL CLIENT *Client_ThisServer PARAMS(( void ));
 | 
				
			||||||
GLOBAL CLIENT *Client_First( VOID );
 | 
					 | 
				
			||||||
GLOBAL CLIENT *Client_Next( CLIENT *c );
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
GLOBAL INT Client_Type( CLIENT *Client );
 | 
					GLOBAL CLIENT *Client_GetFromToken PARAMS(( CLIENT *Client, int Token ));
 | 
				
			||||||
GLOBAL CONN_ID Client_Conn( CLIENT *Client );
 | 
					 | 
				
			||||||
GLOBAL CHAR *Client_ID( CLIENT *Client );
 | 
					 | 
				
			||||||
GLOBAL CHAR *Client_Mask( CLIENT *Client );
 | 
					 | 
				
			||||||
GLOBAL CHAR *Client_Info( CLIENT *Client );
 | 
					 | 
				
			||||||
GLOBAL CHAR *Client_User( CLIENT *Client );
 | 
					 | 
				
			||||||
GLOBAL CHAR *Client_Hostname( CLIENT *Client );
 | 
					 | 
				
			||||||
GLOBAL CHAR *Client_Password( CLIENT *Client );
 | 
					 | 
				
			||||||
GLOBAL CHAR *Client_Modes( CLIENT *Client );
 | 
					 | 
				
			||||||
GLOBAL CLIENT *Client_Introducer( CLIENT *Client );
 | 
					 | 
				
			||||||
GLOBAL BOOLEAN Client_OperByMe( CLIENT *Client );
 | 
					 | 
				
			||||||
GLOBAL INT Client_Hops( CLIENT *Client );
 | 
					 | 
				
			||||||
GLOBAL INT Client_Token( CLIENT *Client );
 | 
					 | 
				
			||||||
GLOBAL INT Client_MyToken( CLIENT *Client );
 | 
					 | 
				
			||||||
GLOBAL CLIENT *Client_TopServer( CLIENT *Client );
 | 
					 | 
				
			||||||
GLOBAL CLIENT *Client_NextHop( CLIENT *Client );
 | 
					 | 
				
			||||||
GLOBAL CHAR *Client_Away( CLIENT *Client );
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
GLOBAL BOOLEAN Client_HasMode( CLIENT *Client, CHAR Mode );
 | 
					GLOBAL bool Client_Announce PARAMS(( CLIENT *Client, CLIENT *Prefix, CLIENT *User ));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GLOBAL VOID Client_SetHostname( CLIENT *Client, CHAR *Hostname );
 | 
					GLOBAL CLIENT *Client_Search PARAMS(( const char *ID ));
 | 
				
			||||||
GLOBAL VOID Client_SetID( CLIENT *Client, CHAR *Nick );
 | 
					GLOBAL CLIENT *Client_SearchServer PARAMS(( const char *ID ));
 | 
				
			||||||
GLOBAL VOID Client_SetUser( CLIENT *Client, CHAR *User, BOOLEAN Idented );
 | 
					GLOBAL CLIENT *Client_First PARAMS(( void ));
 | 
				
			||||||
GLOBAL VOID Client_SetInfo( CLIENT *Client, CHAR *Info );
 | 
					GLOBAL CLIENT *Client_Next PARAMS(( CLIENT *c ));
 | 
				
			||||||
GLOBAL VOID Client_SetPassword( CLIENT *Client, CHAR *Pwd );
 | 
					 | 
				
			||||||
GLOBAL VOID Client_SetType( CLIENT *Client, INT Type );
 | 
					 | 
				
			||||||
GLOBAL VOID Client_SetHops( CLIENT *Client, INT Hops );
 | 
					 | 
				
			||||||
GLOBAL VOID Client_SetToken( CLIENT *Client, INT Token );
 | 
					 | 
				
			||||||
GLOBAL VOID Client_SetOperByMe( CLIENT *Client, BOOLEAN OperByMe );
 | 
					 | 
				
			||||||
GLOBAL VOID Client_SetModes( CLIENT *Client, CHAR *Modes );
 | 
					 | 
				
			||||||
GLOBAL VOID Client_SetIntroducer( CLIENT *Client, CLIENT *Introducer );
 | 
					 | 
				
			||||||
GLOBAL VOID Client_SetAway( CLIENT *Client, CHAR *Txt );
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
GLOBAL BOOLEAN Client_ModeAdd( CLIENT *Client, CHAR Mode );
 | 
					GLOBAL int Client_Type PARAMS(( CLIENT *Client ));
 | 
				
			||||||
GLOBAL BOOLEAN Client_ModeDel( CLIENT *Client, CHAR Mode );
 | 
					GLOBAL CONN_ID Client_Conn PARAMS(( CLIENT *Client ));
 | 
				
			||||||
 | 
					GLOBAL char *Client_ID PARAMS(( CLIENT *Client ));
 | 
				
			||||||
 | 
					GLOBAL char *Client_Mask PARAMS(( CLIENT *Client ));
 | 
				
			||||||
 | 
					GLOBAL char *Client_MaskCloaked PARAMS(( CLIENT *Client ));
 | 
				
			||||||
 | 
					GLOBAL char *Client_Info PARAMS(( CLIENT *Client ));
 | 
				
			||||||
 | 
					GLOBAL char *Client_User PARAMS(( CLIENT *Client ));
 | 
				
			||||||
 | 
					#ifdef PAM
 | 
				
			||||||
 | 
					GLOBAL char *Client_OrigUser PARAMS(( CLIENT *Client ));
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					GLOBAL char *Client_Hostname PARAMS(( CLIENT *Client ));
 | 
				
			||||||
 | 
					GLOBAL char *Client_HostnameCloaked PARAMS((CLIENT *Client));
 | 
				
			||||||
 | 
					GLOBAL char *Client_HostnameDisplayed PARAMS(( CLIENT *Client ));
 | 
				
			||||||
 | 
					GLOBAL const char *Client_IPAText PARAMS(( CLIENT *Client ));
 | 
				
			||||||
 | 
					GLOBAL char *Client_Modes PARAMS(( CLIENT *Client ));
 | 
				
			||||||
 | 
					GLOBAL char *Client_Flags PARAMS(( CLIENT *Client ));
 | 
				
			||||||
 | 
					GLOBAL CLIENT *Client_Introducer PARAMS(( CLIENT *Client ));
 | 
				
			||||||
 | 
					GLOBAL int Client_Hops PARAMS(( CLIENT *Client ));
 | 
				
			||||||
 | 
					GLOBAL int Client_Token PARAMS(( CLIENT *Client ));
 | 
				
			||||||
 | 
					GLOBAL int Client_MyToken PARAMS(( CLIENT *Client ));
 | 
				
			||||||
 | 
					GLOBAL CLIENT *Client_TopServer PARAMS(( CLIENT *Client ));
 | 
				
			||||||
 | 
					GLOBAL CLIENT *Client_NextHop PARAMS(( CLIENT *Client ));
 | 
				
			||||||
 | 
					GLOBAL char *Client_Away PARAMS(( CLIENT *Client ));
 | 
				
			||||||
 | 
					GLOBAL char *Client_AccountName PARAMS((CLIENT *Client));
 | 
				
			||||||
 | 
					GLOBAL time_t Client_StartTime PARAMS(( CLIENT *Client ));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GLOBAL BOOLEAN Client_CheckNick( CLIENT *Client, CHAR *Nick );
 | 
					GLOBAL bool Client_HasMode PARAMS(( CLIENT *Client, char Mode ));
 | 
				
			||||||
GLOBAL BOOLEAN Client_CheckID( CLIENT *Client, CHAR *ID );
 | 
					GLOBAL bool Client_HasFlag PARAMS(( CLIENT *Client, char Flag ));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GLOBAL INT Client_UserCount( VOID );
 | 
					GLOBAL void Client_SetHostname PARAMS(( CLIENT *Client, const char *Hostname ));
 | 
				
			||||||
GLOBAL INT Client_ServiceCount( VOID );
 | 
					GLOBAL void Client_SetIPAText PARAMS(( CLIENT *Client, const char *IPAText ));
 | 
				
			||||||
GLOBAL INT Client_ServerCount( VOID );
 | 
					GLOBAL void Client_SetID PARAMS(( CLIENT *Client, const char *Nick ));
 | 
				
			||||||
GLOBAL INT Client_OperCount( VOID );
 | 
					GLOBAL void Client_SetUser PARAMS(( CLIENT *Client, const char *User, bool Idented ));
 | 
				
			||||||
GLOBAL INT Client_UnknownCount( VOID );
 | 
					GLOBAL void Client_SetOrigUser PARAMS(( CLIENT *Client, const char *User ));
 | 
				
			||||||
GLOBAL INT Client_MyUserCount( VOID );
 | 
					GLOBAL void Client_SetInfo PARAMS(( CLIENT *Client, const char *Info ));
 | 
				
			||||||
GLOBAL INT Client_MyServiceCount( VOID );
 | 
					GLOBAL void Client_SetType PARAMS(( CLIENT *Client, int Type ));
 | 
				
			||||||
GLOBAL INT Client_MyServerCount( VOID );
 | 
					GLOBAL void Client_SetHops PARAMS(( CLIENT *Client, int Hops ));
 | 
				
			||||||
 | 
					GLOBAL void Client_SetToken PARAMS(( CLIENT *Client, int Token ));
 | 
				
			||||||
 | 
					GLOBAL void Client_SetModes PARAMS(( CLIENT *Client, const char *Modes ));
 | 
				
			||||||
 | 
					GLOBAL void Client_SetFlags PARAMS(( CLIENT *Client, const char *Flags ));
 | 
				
			||||||
 | 
					GLOBAL void Client_SetIntroducer PARAMS(( CLIENT *Client, CLIENT *Introducer ));
 | 
				
			||||||
 | 
					GLOBAL void Client_SetAway PARAMS(( CLIENT *Client, const char *Txt ));
 | 
				
			||||||
 | 
					GLOBAL void Client_SetAccountName PARAMS((CLIENT *Client, const char *AccountName));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GLOBAL BOOLEAN Client_IsValidNick( CHAR *Nick );
 | 
					GLOBAL bool Client_ModeAdd PARAMS(( CLIENT *Client, char Mode ));
 | 
				
			||||||
 | 
					GLOBAL bool Client_ModeDel PARAMS(( CLIENT *Client, char Mode ));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL bool Client_CheckNick PARAMS(( CLIENT *Client, char *Nick ));
 | 
				
			||||||
 | 
					GLOBAL bool Client_CheckID PARAMS(( CLIENT *Client, char *ID ));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL long Client_UserCount PARAMS(( void ));
 | 
				
			||||||
 | 
					GLOBAL long Client_ServiceCount PARAMS(( void ));
 | 
				
			||||||
 | 
					GLOBAL long Client_ServerCount PARAMS(( void ));
 | 
				
			||||||
 | 
					GLOBAL unsigned long Client_OperCount PARAMS(( void ));
 | 
				
			||||||
 | 
					GLOBAL unsigned long Client_UnknownCount PARAMS(( void ));
 | 
				
			||||||
 | 
					GLOBAL long Client_MyUserCount PARAMS(( void ));
 | 
				
			||||||
 | 
					GLOBAL long Client_MyServiceCount PARAMS(( void ));
 | 
				
			||||||
 | 
					GLOBAL unsigned long Client_MyServerCount PARAMS(( void ));
 | 
				
			||||||
 | 
					GLOBAL long Client_MaxUserCount PARAMS((  void ));
 | 
				
			||||||
 | 
					GLOBAL long Client_MyMaxUserCount PARAMS((  void ));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL bool Client_IsValidNick PARAMS(( const char *Nick ));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL WHOWAS *Client_GetWhowas PARAMS(( void ));
 | 
				
			||||||
 | 
					GLOBAL int Client_GetLastWhowasIndex PARAMS(( void ));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL void Client_RegisterWhowas PARAMS(( CLIENT *Client ));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL const char *Client_TypeText PARAMS((CLIENT *Client));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL void Client_Reject PARAMS((CLIENT *Client, const char *Reason,
 | 
				
			||||||
 | 
									  bool InformClient));
 | 
				
			||||||
 | 
					GLOBAL void Client_Introduce PARAMS((CLIENT *From, CLIENT *Client, int Type));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL void Client_UpdateCloakedHostname PARAMS((CLIENT *Client,
 | 
				
			||||||
 | 
											 CLIENT *Originator,
 | 
				
			||||||
 | 
											 const char *hostname));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL void Client_DebugDump PARAMS((void));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
/* -eof- */
 | 
					/* -eof- */
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										54
									
								
								src/ngircd/conf-ssl.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								src/ngircd/conf-ssl.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,54 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * ngIRCd -- The Next Generation IRC Daemon
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef conf_ssl_h
 | 
				
			||||||
 | 
					#define conf_ssl_h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @file
 | 
				
			||||||
 | 
					 * SSL related definitions
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef HAVE_LIBSSL
 | 
				
			||||||
 | 
					#define SSL_SUPPORT
 | 
				
			||||||
 | 
					#include <openssl/ssl.h>
 | 
				
			||||||
 | 
					#if OPENSSL_VERSION_NUMBER < 0x10100000L
 | 
				
			||||||
 | 
					#define OpenSSL_version SSLeay_version
 | 
				
			||||||
 | 
					#define OPENSSL_VERSION SSLEAY_VERSION
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef HAVE_LIBGNUTLS
 | 
				
			||||||
 | 
					#define SSL_SUPPORT
 | 
				
			||||||
 | 
					#include <gnutls/gnutls.h>
 | 
				
			||||||
 | 
					#ifndef LIBGNUTLS_VERSION_MAJOR
 | 
				
			||||||
 | 
					#define gnutls_certificate_credentials_t gnutls_certificate_credentials
 | 
				
			||||||
 | 
					#define gnutls_cipher_algorithm_t gnutls_cipher_algorithm
 | 
				
			||||||
 | 
					#define gnutls_datum_t gnutls_datum
 | 
				
			||||||
 | 
					#define gnutls_dh_params_t gnutls_dh_params
 | 
				
			||||||
 | 
					#define gnutls_session_t gnutls_session
 | 
				
			||||||
 | 
					#define gnutls_transport_ptr_t gnutls_transport_ptr
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef SSL_SUPPORT
 | 
				
			||||||
 | 
					struct ConnSSL_State {
 | 
				
			||||||
 | 
					#ifdef HAVE_LIBSSL
 | 
				
			||||||
 | 
						SSL *ssl;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef HAVE_LIBGNUTLS
 | 
				
			||||||
 | 
						gnutls_session_t gnutls_session;
 | 
				
			||||||
 | 
						void *cookie;		/* pointer to server configuration structure
 | 
				
			||||||
 | 
									   (for outgoing connections), or NULL. */
 | 
				
			||||||
 | 
						size_t x509_cred_idx;	/* index of active x509 credential record */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						char *fingerprint;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL bool ConnSSL_InitLibrary PARAMS((void));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* conf_ssl_h */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* -eof- */
 | 
				
			||||||
							
								
								
									
										2564
									
								
								src/ngircd/conf.c
									
									
									
									
									
								
							
							
						
						
									
										2564
									
								
								src/ngircd/conf.c
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -1,87 +1,290 @@
 | 
				
			|||||||
/*
 | 
					/*
 | 
				
			||||||
 * ngIRCd -- The Next Generation IRC Daemon
 | 
					 * ngIRCd -- The Next Generation IRC Daemon
 | 
				
			||||||
 * Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
 | 
					 * Copyright (c)2001-2013 Alexander Barton (alex@barton.de) and Contributors.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
 | 
					 * This program is free software; you can redistribute it and/or modify
 | 
				
			||||||
 * der GNU General Public License (GPL), wie von der Free Software Foundation
 | 
					 * it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 * herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2
 | 
					 * the Free Software Foundation; either version 2 of the License, or
 | 
				
			||||||
 * der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version.
 | 
					 * (at your option) any later version.
 | 
				
			||||||
 * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
 | 
					 * Please read the file COPYING, README and AUTHORS for more information.
 | 
				
			||||||
 * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * $Id: conf.h,v 1.15 2002/03/29 22:53:59 alex Exp $
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * conf.h: Konfiguration des ngircd (Header)
 | 
					 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifndef __conf_h__
 | 
					#ifndef __conf_h__
 | 
				
			||||||
#define __conf_h__
 | 
					#define __conf_h__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @file
 | 
				
			||||||
 | 
					 * Configuration management (header)
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <time.h>
 | 
					#include <time.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "conn.h"
 | 
					 | 
				
			||||||
#include "defines.h"
 | 
					#include "defines.h"
 | 
				
			||||||
 | 
					#include "array.h"
 | 
				
			||||||
 | 
					#include "portab.h"
 | 
				
			||||||
 | 
					#include "tool.h"
 | 
				
			||||||
 | 
					#include "ng_ipaddr.h"
 | 
				
			||||||
 | 
					#include "proc.h"
 | 
				
			||||||
 | 
					#include "conf-ssl.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Configured IRC operator.
 | 
				
			||||||
 | 
					 * Please note that the name of the IRC operator and his nick have nothing to
 | 
				
			||||||
 | 
					 * do with each other! The IRC operator is only identified by the name and
 | 
				
			||||||
 | 
					 * password configured in this structure.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					struct Conf_Oper {
 | 
				
			||||||
 | 
						char name[CLIENT_PASS_LEN];	/**< Name (ID) */
 | 
				
			||||||
 | 
						char pwd[CLIENT_PASS_LEN];	/**< Password */
 | 
				
			||||||
 | 
						char *mask;			/**< Allowed host mask */
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct _Conf_Oper
 | 
					/**
 | 
				
			||||||
{
 | 
					 * Configured server.
 | 
				
			||||||
	CHAR name[CLIENT_PASS_LEN];	/* Name (ID) des IRC-OPs */
 | 
					 * Peers to which this daemon should establish an outgoing server link must
 | 
				
			||||||
	CHAR pwd[CLIENT_PASS_LEN];	/* Passwort */
 | 
					 * have set a port number; all other servers are allowed to connect to this one.
 | 
				
			||||||
} CONF_OPER;
 | 
					 */
 | 
				
			||||||
 | 
					 | 
				
			||||||
typedef struct _Conf_Server
 | 
					typedef struct _Conf_Server
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	CHAR host[HOST_LEN];		/* Hostname */
 | 
						char host[HOST_LEN];		/**< Hostname */
 | 
				
			||||||
	CHAR ip[16];			/* IP-Adresse (von Resolver) */
 | 
						char name[CLIENT_ID_LEN];	/**< IRC client ID */
 | 
				
			||||||
	CHAR name[CLIENT_ID_LEN];	/* IRC-Client-ID */
 | 
						char pwd_in[CLIENT_PASS_LEN];	/**< Password which must be received */
 | 
				
			||||||
	CHAR pwd[CLIENT_PASS_LEN];	/* Passwort */
 | 
						char pwd_out[CLIENT_PASS_LEN];	/**< Password to send to the peer */
 | 
				
			||||||
	INT port;			/* Server-Port */
 | 
						UINT16 port;			/**< Server port to connect to */
 | 
				
			||||||
	INT group;			/* Gruppe des Servers */
 | 
						int group;			/**< Group ID of this server */
 | 
				
			||||||
	time_t lasttry;			/* Letzter Connect-Versuch */
 | 
						time_t lasttry;			/**< Time of last connection attempt */
 | 
				
			||||||
	RES_STAT *res_stat;		/* Status des Resolver */
 | 
						PROC_STAT res_stat;		/**< Status of the resolver */
 | 
				
			||||||
 | 
						int flags;			/**< Server flags */
 | 
				
			||||||
 | 
						CONN_ID conn_id;		/**< ID of server connection or NONE */
 | 
				
			||||||
 | 
						ng_ipaddr_t bind_addr;		/**< Source address to use for outgoing
 | 
				
			||||||
 | 
										     connections */
 | 
				
			||||||
 | 
						ng_ipaddr_t dst_addr[2];	/**< List of addresses to connect to */
 | 
				
			||||||
 | 
					#ifdef SSL_SUPPORT
 | 
				
			||||||
 | 
						bool SSLConnect;		/**< Establish connection using SSL? */
 | 
				
			||||||
 | 
						bool SSLVerify;			/**< Verify server certificate using CA? */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						char svs_mask[CLIENT_ID_LEN];	/**< Mask of nicknames that should be
 | 
				
			||||||
 | 
										     treated and counted as services */
 | 
				
			||||||
} CONF_SERVER;
 | 
					} CONF_SERVER;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Name ("Nick") des Servers */
 | 
					#ifdef SSL_SUPPORT
 | 
				
			||||||
GLOBAL CHAR Conf_ServerName[CLIENT_ID_LEN];
 | 
					/** Configuration options required for SSL support */
 | 
				
			||||||
 | 
					struct SSLOptions {
 | 
				
			||||||
 | 
						char *KeyFile;			/**< SSL key file */
 | 
				
			||||||
 | 
						char *CertFile;			/**< SSL certificate file */
 | 
				
			||||||
 | 
						char *DHFile;			/**< File containing DH parameters */
 | 
				
			||||||
 | 
						array ListenPorts;		/**< Array of listening SSL ports */
 | 
				
			||||||
 | 
						array KeyFilePassword;		/**< Key file password */
 | 
				
			||||||
 | 
						char *CipherList;		/**< Set SSL cipher list to use */
 | 
				
			||||||
 | 
						char *CAFile;			/**< Trusted CA certificates file */
 | 
				
			||||||
 | 
						char *CRLFile;			/**< Certificate revocation file */
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Servers-Info-Text */
 | 
					 | 
				
			||||||
GLOBAL CHAR Conf_ServerInfo[CLIENT_INFO_LEN];
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Server-Passwort */
 | 
					/** Pre-defined channels */
 | 
				
			||||||
GLOBAL CHAR Conf_ServerPwd[CLIENT_PASS_LEN];
 | 
					struct Conf_Channel {
 | 
				
			||||||
 | 
						char name[CHANNEL_NAME_LEN];	/**< Name of the channel */
 | 
				
			||||||
 | 
						char *modes[512];		/**< Initial channel modes to evaluate */
 | 
				
			||||||
 | 
						char key[CLIENT_PASS_LEN];      /**< Channel key ("password", mode "k" ) */
 | 
				
			||||||
 | 
						char topic[COMMAND_LEN];	/**< Initial topic */
 | 
				
			||||||
 | 
						char keyfile[512];		/**< Path and name of channel key file */
 | 
				
			||||||
 | 
						bool autojoin;			/**< 1 to make all users autojoin this channel */
 | 
				
			||||||
 | 
						unsigned long maxusers;		/**< User limit for this channel, mode "l" */
 | 
				
			||||||
 | 
						unsigned int modes_num;		/**< Number of channel modes to evaluate */
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Datei mit MOTD-Text */
 | 
					 | 
				
			||||||
GLOBAL CHAR Conf_MotdFile[FNAME_LEN];
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Ports, auf denen der Server Verbindungen entgegen nimmt */
 | 
					#define CONF_SFLAG_ONCE	1		/* Delete this entry after next disconnect */
 | 
				
			||||||
GLOBAL UINT Conf_ListenPorts[MAX_LISTEN_PORTS];
 | 
					#define CONF_SFLAG_DISABLED 2		/* This server configuration entry is disabled */
 | 
				
			||||||
GLOBAL INT Conf_ListenPorts_Count;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* User- und Group-ID, zu denen der Daemon wechseln soll */
 | 
					 | 
				
			||||||
GLOBAL UINT Conf_UID;
 | 
					 | 
				
			||||||
GLOBAL UINT Conf_GID;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Timeouts fuer PING und PONG */
 | 
					/** Name (ID, "nick") of this server */
 | 
				
			||||||
GLOBAL INT Conf_PingTimeout;
 | 
					GLOBAL char Conf_ServerName[CLIENT_ID_LEN];
 | 
				
			||||||
GLOBAL INT Conf_PongTimeout;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Sekunden zwischen Verbindungsversuchen zu anderen Servern */
 | 
					/** Server info text */
 | 
				
			||||||
GLOBAL INT Conf_ConnectRetry;
 | 
					GLOBAL char Conf_ServerInfo[CLIENT_INFO_LEN];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Operatoren */
 | 
					/** Global server passwort */
 | 
				
			||||||
GLOBAL CONF_OPER Conf_Oper[MAX_OPERATORS];
 | 
					GLOBAL char Conf_ServerPwd[CLIENT_PASS_LEN];
 | 
				
			||||||
GLOBAL INT Conf_Oper_Count;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Server */
 | 
					/** Administrative information */
 | 
				
			||||||
 | 
					GLOBAL char Conf_ServerAdmin1[CLIENT_INFO_LEN];
 | 
				
			||||||
 | 
					GLOBAL char Conf_ServerAdmin2[CLIENT_INFO_LEN];
 | 
				
			||||||
 | 
					GLOBAL char Conf_ServerAdminMail[CLIENT_INFO_LEN];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Network name (optional, no spaces allowed) */
 | 
				
			||||||
 | 
					GLOBAL char Conf_Network[CLIENT_INFO_LEN];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Message of the day (MOTD) of this server */
 | 
				
			||||||
 | 
					GLOBAL array Conf_Motd;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Help text of this server */
 | 
				
			||||||
 | 
					GLOBAL array Conf_Helptext;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Array of ports this server should listen on */
 | 
				
			||||||
 | 
					GLOBAL array Conf_ListenPorts;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Address to which sockets should be bound to or empty (=all) */
 | 
				
			||||||
 | 
					GLOBAL char *Conf_ListenAddress;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** User and group ID this daemon should run with */
 | 
				
			||||||
 | 
					GLOBAL uid_t Conf_UID;
 | 
				
			||||||
 | 
					GLOBAL gid_t Conf_GID;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** The directory to chroot() into */
 | 
				
			||||||
 | 
					GLOBAL char Conf_Chroot[FNAME_LEN];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Full path and name of a file to which the PID of daemon should be written */
 | 
				
			||||||
 | 
					GLOBAL char Conf_PidFile[FNAME_LEN];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Timeout (in seconds) for PING commands */
 | 
				
			||||||
 | 
					GLOBAL int Conf_PingTimeout;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Timeout (in seconds) for PONG replies */
 | 
				
			||||||
 | 
					GLOBAL int Conf_PongTimeout;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Seconds between connection attempts to other servers */
 | 
				
			||||||
 | 
					GLOBAL int Conf_ConnectRetry;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Array of configured IRC operators */
 | 
				
			||||||
 | 
					GLOBAL array Conf_Opers;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Array of configured IRC servers */
 | 
				
			||||||
GLOBAL CONF_SERVER Conf_Server[MAX_SERVERS];
 | 
					GLOBAL CONF_SERVER Conf_Server[MAX_SERVERS];
 | 
				
			||||||
GLOBAL INT Conf_Server_Count;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Array of pre-defined channels */
 | 
				
			||||||
 | 
					GLOBAL array Conf_Channels;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GLOBAL VOID Conf_Init( VOID );
 | 
					/** String containing all locally allowed channel prefixes for new channels */
 | 
				
			||||||
GLOBAL INT Conf_Test( VOID );
 | 
					GLOBAL char Conf_AllowedChannelTypes[8];
 | 
				
			||||||
GLOBAL VOID Conf_Exit( VOID );
 | 
					
 | 
				
			||||||
 | 
					/** Flag indicating if IRC operators are allowed to always use MODE (true) */
 | 
				
			||||||
 | 
					GLOBAL bool Conf_OperCanMode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Flag indicating if IRC operators get AutoOp in persistent (+P) channels */
 | 
				
			||||||
 | 
					GLOBAL bool Conf_OperChanPAutoOp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * If true, mask channel MODE commands of IRC operators to the server.
 | 
				
			||||||
 | 
					 * Background: ircd2 will ignore channel MODE commands if an IRC operator
 | 
				
			||||||
 | 
					 * gives channel operator privileges to someone without being a channel operator
 | 
				
			||||||
 | 
					 * himself. This enables a workaround: it masks the MODE command as coming
 | 
				
			||||||
 | 
					 * from the IRC server and not the IRC operator.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					GLOBAL bool Conf_OperServerMode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Flag indicating if remote IRC operators are allowed to manage this server */
 | 
				
			||||||
 | 
					GLOBAL bool Conf_AllowRemoteOper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Cloaked hostname of the clients */
 | 
				
			||||||
 | 
					GLOBAL char Conf_CloakHost[CLIENT_ID_LEN];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Cloaked hostname for clients that did +x */
 | 
				
			||||||
 | 
					GLOBAL char Conf_CloakHostModeX[CLIENT_ID_LEN];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Salt for hostname hash for cloaked hostnames */
 | 
				
			||||||
 | 
					GLOBAL char Conf_CloakHostSalt[CLIENT_ID_LEN];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Use nickname as user name? */
 | 
				
			||||||
 | 
					GLOBAL bool Conf_CloakUserToNick;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Enable all DNS functions? */
 | 
				
			||||||
 | 
					GLOBAL bool Conf_DNS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Enable IDENT lookups, even when compiled with support for it */
 | 
				
			||||||
 | 
					GLOBAL bool Conf_Ident;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Enable "more privacy" mode and "censor" some user-related information */
 | 
				
			||||||
 | 
					GLOBAL bool Conf_MorePrivacy;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Enable "NOTICE *" messages on connect */
 | 
				
			||||||
 | 
					GLOBAL bool Conf_NoticeBeforeRegistration;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Enable all usage of PAM, even when compiled with support for it */
 | 
				
			||||||
 | 
					GLOBAL bool Conf_PAM;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Don't require all clients to send a password an to be PAM authenticated */
 | 
				
			||||||
 | 
					GLOBAL bool Conf_PAMIsOptional;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** The service name to use for PAM */
 | 
				
			||||||
 | 
					GLOBAL char Conf_PAMServiceName[MAX_PAM_SERVICE_NAME_LEN];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Disable all CTCP commands except for /me ? */
 | 
				
			||||||
 | 
					GLOBAL bool Conf_ScrubCTCP;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Default user modes for new local clients */
 | 
				
			||||||
 | 
					GLOBAL char Conf_DefaultUserModes[CLIENT_MODE_LEN];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * try to connect to remote systems using the ipv6 protocol,
 | 
				
			||||||
 | 
					 * if they have an ipv6 address? (default yes)
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					GLOBAL bool Conf_ConnectIPv6;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Try to connect to remote systems using the IPv4 protocol (true) */
 | 
				
			||||||
 | 
					GLOBAL bool Conf_ConnectIPv4;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Idle timeout (seconds), after which the daemon should exit */
 | 
				
			||||||
 | 
					GLOBAL int Conf_IdleTimeout;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Maximum number of simultaneous connections to this server */
 | 
				
			||||||
 | 
					GLOBAL int Conf_MaxConnections;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Maximum number of channels a user can join */
 | 
				
			||||||
 | 
					GLOBAL int Conf_MaxJoins;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Maximum number of connections per IP address */
 | 
				
			||||||
 | 
					GLOBAL int Conf_MaxConnectionsIP;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Maximum length of a nickname */
 | 
				
			||||||
 | 
					GLOBAL unsigned int Conf_MaxNickLength;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Maximum number of channels returned to /list */
 | 
				
			||||||
 | 
					GLOBAL int Conf_MaxListSize;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Maximum seconds to add per "penalty". -1 = unlimited. */
 | 
				
			||||||
 | 
					GLOBAL time_t Conf_MaxPenaltyTime;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef STRICT_RFC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Require "AUTH PING-PONG" on login */
 | 
				
			||||||
 | 
					GLOBAL bool Conf_AuthPing;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef SYSLOG
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Syslog "facility" */
 | 
				
			||||||
 | 
					GLOBAL int Conf_SyslogFacility;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL void Conf_Init PARAMS((void));
 | 
				
			||||||
 | 
					GLOBAL bool Conf_Rehash PARAMS((void));
 | 
				
			||||||
 | 
					GLOBAL int Conf_Test PARAMS((void));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL void Conf_UnsetServer PARAMS(( CONN_ID Idx ));
 | 
				
			||||||
 | 
					GLOBAL bool Conf_SetServer PARAMS(( int ConfServer, CONN_ID Idx ));
 | 
				
			||||||
 | 
					GLOBAL int Conf_GetServer PARAMS(( CONN_ID Idx ));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL bool Conf_EnableServer PARAMS(( const char *Name, UINT16 Port ));
 | 
				
			||||||
 | 
					GLOBAL bool Conf_EnablePassiveServer PARAMS((const char *Name));
 | 
				
			||||||
 | 
					GLOBAL bool Conf_DisableServer PARAMS(( const char *Name ));
 | 
				
			||||||
 | 
					GLOBAL bool Conf_AddServer PARAMS(( const char *Name, UINT16 Port, const char *Host, const char *MyPwd, const char *PeerPwd ));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL bool Conf_NickIsService PARAMS((int ConfServer, const char *Nick));
 | 
				
			||||||
 | 
					GLOBAL bool Conf_NickIsBlocked PARAMS((const char *Nick));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef SSL_SUPPORT
 | 
				
			||||||
 | 
					GLOBAL bool Conf_SSLInUse PARAMS((void));
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Password required by WEBIRC command */
 | 
				
			||||||
 | 
					GLOBAL char Conf_WebircPwd[CLIENT_PASS_LEN];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL void Conf_DebugDump PARAMS((void));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										188
									
								
								src/ngircd/conn-encoding.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										188
									
								
								src/ngircd/conn-encoding.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,188 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * ngIRCd -- The Next Generation IRC Daemon
 | 
				
			||||||
 | 
					 * Copyright (c)2001-2014 Alexander Barton (alex@barton.de) and Contributors.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This program is free software; you can redistribute it and/or modify
 | 
				
			||||||
 | 
					 * it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					 * the Free Software Foundation; either version 2 of the License, or
 | 
				
			||||||
 | 
					 * (at your option) any later version.
 | 
				
			||||||
 | 
					 * Please read the file COPYING, README and AUTHORS for more information.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define __conn_encoding_c__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define CONN_MODULE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "portab.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @file
 | 
				
			||||||
 | 
					 * Functions to deal with character encodings and conversions
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <assert.h>
 | 
				
			||||||
 | 
					#include <stdio.h>
 | 
				
			||||||
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					#include <strings.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "conn.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef ICONV
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "log.h"
 | 
				
			||||||
 | 
					#include "conn-encoding.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					char Encoding_Buffer[COMMAND_LEN];
 | 
				
			||||||
 | 
					char *Convert_Message PARAMS((iconv_t Handle, char *Message));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Set client character encoding on a connection.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @param Conn Connection identifier.
 | 
				
			||||||
 | 
					 * @param ClientEnc Client encoding (for example "ASCII", "MacRoman", ...).
 | 
				
			||||||
 | 
					 * @return true on success, false otherwise.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					GLOBAL bool
 | 
				
			||||||
 | 
					Conn_SetEncoding(CONN_ID Conn, const char *ClientEnc)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						char client_enc[25], server_enc[25];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						assert(Conn > NONE);
 | 
				
			||||||
 | 
						assert(ClientEnc != NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Conn_UnsetEncoding(Conn);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* Is the client character set identical to server character set? */
 | 
				
			||||||
 | 
						if (strcasecmp(ClientEnc, "UTF-8") == 0)
 | 
				
			||||||
 | 
							return true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						snprintf(client_enc, sizeof(client_enc), "%s//TRANSLIT", ClientEnc);
 | 
				
			||||||
 | 
						snprintf(server_enc, sizeof(server_enc), "%s//TRANSLIT", "UTF-8");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						My_Connections[Conn].iconv_from = iconv_open(server_enc, client_enc);
 | 
				
			||||||
 | 
						if (My_Connections[Conn].iconv_from == (iconv_t)(-1)) {
 | 
				
			||||||
 | 
							Conn_UnsetEncoding(Conn);
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						My_Connections[Conn].iconv_to = iconv_open(client_enc, server_enc);
 | 
				
			||||||
 | 
						if (My_Connections[Conn].iconv_to == (iconv_t)(-1)) {
 | 
				
			||||||
 | 
							Conn_UnsetEncoding(Conn);
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						LogDebug("Set client character set of connection \"%d\" to \"%s\".",
 | 
				
			||||||
 | 
							 Conn, client_enc);
 | 
				
			||||||
 | 
						return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Remove client character encoding conversion on a connection.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @param Conn Connection identifier.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					GLOBAL void
 | 
				
			||||||
 | 
					Conn_UnsetEncoding(CONN_ID Conn)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						assert(Conn > NONE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (My_Connections[Conn].iconv_from != (iconv_t)(-1))
 | 
				
			||||||
 | 
							iconv_close(My_Connections[Conn].iconv_from);
 | 
				
			||||||
 | 
						if (My_Connections[Conn].iconv_to != (iconv_t)(-1))
 | 
				
			||||||
 | 
							iconv_close(My_Connections[Conn].iconv_to);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						My_Connections[Conn].iconv_from = (iconv_t)(-1);
 | 
				
			||||||
 | 
						My_Connections[Conn].iconv_to = (iconv_t)(-1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						LogDebug("Unset character conversion of connection %d.", Conn);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Convert the encoding of a given message.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This function uses a static buffer for the result of the encoding
 | 
				
			||||||
 | 
					 * conversion which is overwritten by subsequent calls to this function!
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @param Handle libiconv handle.
 | 
				
			||||||
 | 
					 * @param Message The message to convert.
 | 
				
			||||||
 | 
					 * @return Pointer to the result.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					char *
 | 
				
			||||||
 | 
					Convert_Message(iconv_t Handle, char *Message)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						size_t in_left, out_left;
 | 
				
			||||||
 | 
						char *out = Encoding_Buffer;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						assert (Handle != (iconv_t)(-1));
 | 
				
			||||||
 | 
						assert (Message != NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						in_left = strlen(Message);
 | 
				
			||||||
 | 
						out_left = sizeof(Encoding_Buffer) - 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (iconv(Handle, &Message, &in_left, &out, &out_left) == (size_t)(-1)) {
 | 
				
			||||||
 | 
							/* An error occurred! */
 | 
				
			||||||
 | 
							LogDebug("Error converting message encoding!");
 | 
				
			||||||
 | 
							strlcpy(out, Message, sizeof(Encoding_Buffer));
 | 
				
			||||||
 | 
							iconv(Handle, NULL, NULL, NULL, NULL);
 | 
				
			||||||
 | 
						} else
 | 
				
			||||||
 | 
							*out = '\0';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return Encoding_Buffer;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* ICONV */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Convert encoding of a message received from a connection.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Note 1: If no conversion is required, this function returns the original
 | 
				
			||||||
 | 
					 * pointer to the message.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Note 2: This function uses Convert_Message(), so subsequent calls to this
 | 
				
			||||||
 | 
					 * function will overwrite the earlier results.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @param Conn Connection identifier.
 | 
				
			||||||
 | 
					 * @param Message The message to convert.
 | 
				
			||||||
 | 
					 * @return Pointer to the result.
 | 
				
			||||||
 | 
					 * @see Convert_Message
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					GLOBAL char *
 | 
				
			||||||
 | 
					Conn_EncodingFrom(UNUSED CONN_ID Conn, char *Message)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						assert(Conn > NONE);
 | 
				
			||||||
 | 
						assert (Message != NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef ICONV
 | 
				
			||||||
 | 
						if (My_Connections[Conn].iconv_from != (iconv_t)(-1))
 | 
				
			||||||
 | 
							return Convert_Message(My_Connections[Conn].iconv_from, Message);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						return Message;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Convert encoding of a message for sending on a connection.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Note 1: If no conversion is required, this function returns the original
 | 
				
			||||||
 | 
					 * pointer to the message.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Note 2: This function uses Convert_Message(), so subsequent calls to this
 | 
				
			||||||
 | 
					 * function will overwrite the earlier results.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @param Conn Connection identifier.
 | 
				
			||||||
 | 
					 * @param Message The message to convert.
 | 
				
			||||||
 | 
					 * @return Pointer to the result.
 | 
				
			||||||
 | 
					 * @see Convert_Message
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					GLOBAL char *
 | 
				
			||||||
 | 
					Conn_EncodingTo(UNUSED CONN_ID Conn, char *Message)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						assert(Conn > NONE);
 | 
				
			||||||
 | 
						assert (Message != NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef ICONV
 | 
				
			||||||
 | 
						if (My_Connections[Conn].iconv_to != (iconv_t)(-1))
 | 
				
			||||||
 | 
							return Convert_Message(My_Connections[Conn].iconv_to, Message);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						return Message;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* -eof- */
 | 
				
			||||||
							
								
								
									
										30
									
								
								src/ngircd/conn-encoding.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								src/ngircd/conn-encoding.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,30 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * ngIRCd -- The Next Generation IRC Daemon
 | 
				
			||||||
 | 
					 * Copyright (c)2001-2012 Alexander Barton (alex@barton.de) and Contributors.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This program is free software; you can redistribute it and/or modify
 | 
				
			||||||
 | 
					 * it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					 * the Free Software Foundation; either version 2 of the License, or
 | 
				
			||||||
 | 
					 * (at your option) any later version.
 | 
				
			||||||
 | 
					 * Please read the file COPYING, README and AUTHORS for more information.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __conn_encoding_h__
 | 
				
			||||||
 | 
					#define __conn_encoding_h__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @file
 | 
				
			||||||
 | 
					 * Functions to deal with character encodings and conversions (header)
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef ICONV
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL bool Conn_SetEncoding PARAMS((CONN_ID Idx, const char *ClientEnc));
 | 
				
			||||||
 | 
					GLOBAL void Conn_UnsetEncoding PARAMS((CONN_ID Idx));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* ICONV */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GLOBAL char* Conn_EncodingFrom PARAMS((CONN_ID Idx, char *Message));
 | 
				
			||||||
 | 
					GLOBAL char* Conn_EncodingTo PARAMS((CONN_ID Idx, char *Message));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user