mirror of
				https://github.com/osmarks/ngircd.git
				synced 2025-11-03 23:43:00 +00:00 
			
		
		
		
	Compare commits
	
		
			2917 Commits
		
	
	
		
			rel-0-5-0
			...
			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 | 
							
								
								
									
										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
 | 
			
		||||
		       Version 2, June 1991
 | 
			
		||||
                    GNU GENERAL PUBLIC LICENSE
 | 
			
		||||
                       Version 2, June 1991
 | 
			
		||||
 | 
			
		||||
 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
 | 
			
		||||
 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 | 
			
		||||
 Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
 | 
			
		||||
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 | 
			
		||||
 Everyone is permitted to copy and distribute verbatim copies
 | 
			
		||||
 of this license document, but changing it is not allowed.
 | 
			
		||||
 | 
			
		||||
			    Preamble
 | 
			
		||||
                            Preamble
 | 
			
		||||
 | 
			
		||||
  The licenses for most software are designed to take away your
 | 
			
		||||
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
 | 
			
		||||
Foundation's software and to any other program whose authors commit to
 | 
			
		||||
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.
 | 
			
		||||
 | 
			
		||||
  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
 | 
			
		||||
modification follow.
 | 
			
		||||
 | 
			
		||||
		    GNU GENERAL PUBLIC LICENSE
 | 
			
		||||
 | 
			
		||||
                    GNU GENERAL PUBLIC LICENSE
 | 
			
		||||
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
 | 
			
		||||
 | 
			
		||||
  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
 | 
			
		||||
    does not normally print such an announcement, your work based on
 | 
			
		||||
    the Program is not required to print an announcement.)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
These requirements apply to the modified work as a whole.  If
 | 
			
		||||
identifiable sections of that work are not derived from the Program,
 | 
			
		||||
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
 | 
			
		||||
distribution of the source code, even though third parties are not
 | 
			
		||||
compelled to copy the source along with the object code.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  4. You may not copy, modify, sublicense, or distribute the Program
 | 
			
		||||
except as expressly provided under this License.  Any attempt
 | 
			
		||||
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
 | 
			
		||||
be a consequence of the rest of this License.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  8. If the distribution and/or use of the Program is restricted in
 | 
			
		||||
certain countries either by patents or by copyrighted interfaces, the
 | 
			
		||||
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 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
 | 
			
		||||
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
 | 
			
		||||
POSSIBILITY OF SUCH DAMAGES.
 | 
			
		||||
 | 
			
		||||
		     END OF TERMS AND CONDITIONS
 | 
			
		||||
 | 
			
		||||
	    How to Apply These Terms to Your New Programs
 | 
			
		||||
                     END OF TERMS AND CONDITIONS
 | 
			
		||||
 | 
			
		||||
            How to Apply These Terms to Your New Programs
 | 
			
		||||
 | 
			
		||||
  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
 | 
			
		||||
@@ -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
 | 
			
		||||
    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, write to the Free Software
 | 
			
		||||
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 | 
			
		||||
 | 
			
		||||
    You should have received a copy of the GNU General Public License along
 | 
			
		||||
    with this program; if not, write to the Free Software Foundation, Inc.,
 | 
			
		||||
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
proprietary programs.  If your program is a subroutine library, you may
 | 
			
		||||
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.
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										148
									
								
								INSTALL
									
									
									
									
									
								
							
							
						
						
									
										148
									
								
								INSTALL
									
									
									
									
									
								
							@@ -1,148 +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 --
 | 
			
		||||
                         
 | 
			
		||||
                      Ilja Osthoff, <ilja@glide.ath.cx>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 +-----------------------------------------------------------------------+
 | 
			
		||||
 | Please note: English translations of some of the german documentation |
 | 
			
		||||
 | files can be found in the directory "doc/en" -- please have a look!   |
 | 
			
		||||
 +-----------------------------------------------------------------------+
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
I. Standard-Installation
 | 
			
		||||
~~~~~~~~~~~~~~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
ngIRCd ist fuer UNIXoide-Systeme konzipiert worden, das bedeutet, dass die
 | 
			
		||||
Installation auf einem modernen UNIX-aehnlichen System kein Problem dar-
 | 
			
		||||
stellen sollte. Das System muss nur von GNU automake und GNU autoconf
 | 
			
		||||
("configure") unterstuetzt werden.
 | 
			
		||||
 | 
			
		||||
Die Standard-Installation sieht so aus:
 | 
			
		||||
 | 
			
		||||
   1) tar xzf ngircd-<Version>.tar.gz
 | 
			
		||||
   2) cd ngircd-<Version>
 | 
			
		||||
   3) ./autogen.sh	[nur erforderlich, wenn ueber CVS bezogen]
 | 
			
		||||
   4) ./configure
 | 
			
		||||
   5) make
 | 
			
		||||
   6) make install
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
zu 3): "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 immer, 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 4): "./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 5): "make"
 | 
			
		||||
 | 
			
		||||
Der make-Befehl bearbeitet die vom configure-Script erzeugten Makefile's und
 | 
			
		||||
uebersetzt den ngIRCd.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
zu 6): "make install"
 | 
			
		||||
 | 
			
		||||
Mit "make install" wird der Server und ggf. eine Beispiels-Konfiguration
 | 
			
		||||
im System installiert; hierzu sind in der Regel root-Rechte erforderlich.
 | 
			
		||||
Eine bereits vorhandene Konfigurationsdatei wird nie ueberschrieben.
 | 
			
		||||
 | 
			
		||||
Folgende Dateien werden installiert:
 | 
			
		||||
 | 
			
		||||
- /usr/local/sbin/ngircd: ausfuehrbarer Server
 | 
			
		||||
- /usr/local/etc/ngircd.conf: Beispiel-Konfiguration, wenn nicht vorhanden
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
II. 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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
III. Konfigurationsdatei ngircd.conf
 | 
			
		||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
In der Konfigurationsdatei werden Kommentare durch "#" oder durch ";"
 | 
			
		||||
eingeleitet. Dieses dient nur der besseren Lesbarkeit.
 | 
			
		||||
 | 
			
		||||
Die Datei ist in drei Abschnitte unterteilt: [Global], [Operator] und
 | 
			
		||||
[Server]. Im [Global]-Teil werden die grundlegenden Einstellungen vor-
 | 
			
		||||
genommen, z.B. der Server-Name und die Ports, auf denen er Verbindungen
 | 
			
		||||
annehmen soll. In [Operator]-Abschnitten werden Server-Operatoren fest-
 | 
			
		||||
gelegt und unter [Server] werden die Einstellungen fuer die Verbindung
 | 
			
		||||
mit anderen Servern konfiguriert.
 | 
			
		||||
 | 
			
		||||
Die Bedeutung der einzelnen Variablen ist in der Beispiel-Konfiguration
 | 
			
		||||
"doc/sample-ngircd.conf" erklaert, die bei "make install" auch als
 | 
			
		||||
"ngircd.conf" in /usr/local/etc installiert wird, wenn dort noch keine
 | 
			
		||||
Konfigurationsdatei vorhanden ist.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
IV. Kommandozeilen-Optionen
 | 
			
		||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
Folgende Parameter koennen dem ngIRCd u.a. uebergeben werden:
 | 
			
		||||
 | 
			
		||||
-f, --config <file>
 | 
			
		||||
	Der Daemon wird angewiesen, statt der Standard-Konfigurationsdatei
 | 
			
		||||
	/usr/local/etc/ngircd.conf die Datei <file> einzulesen.
 | 
			
		||||
 | 
			
		||||
-n, --nodaemon
 | 
			
		||||
	ngIRCd soll im Fordergrund laufen; alle Meldungen werden zusaetzlich
 | 
			
		||||
	zum Syslog auch auf der Konsole ausgegeben.
 | 
			
		||||
 | 
			
		||||
-p, --passive
 | 
			
		||||
	Verbindungen zu anderen Servern (wie in der Konfigurationsdatei in
 | 
			
		||||
	[Server]-Abschnitten definiert) werden nicht automatisch hergestellt.
 | 
			
		||||
 | 
			
		||||
--configtest
 | 
			
		||||
	Die Konfigurationsdatei wird eingelesen, ueberprueft und so aus-
 | 
			
		||||
	gegeben, wie sie vom ngIRCd interpretiert wurde. Danach beendet
 | 
			
		||||
	sich der Server wieder.
 | 
			
		||||
 | 
			
		||||
Mit dem Parameter "--help" werden alle unterstuetzten Parameter angezeigt,
 | 
			
		||||
mit "--version" die Versionsnummer. Bei beiden Parametern beendet sich der
 | 
			
		||||
Server nach der Ausgabe wieder.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-- 
 | 
			
		||||
$Id: INSTALL,v 1.8 2002/09/16 11:03:05 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-
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										52
									
								
								Makefile.am
									
									
									
									
									
								
							
							
						
						
									
										52
									
								
								Makefile.am
									
									
									
									
									
								
							@@ -1,28 +1,48 @@
 | 
			
		||||
#
 | 
			
		||||
# 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
 | 
			
		||||
# 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.9 2002/03/31 20:23:06 alex Exp $
 | 
			
		||||
# 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.
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
AUTOMAKE_OPTIONS = gnu
 | 
			
		||||
SUBDIRS = doc src man contrib
 | 
			
		||||
 | 
			
		||||
SUBDIRS = doc MacOSX src man
 | 
			
		||||
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:
 | 
			
		||||
	rm -rf autom4te.cache
 | 
			
		||||
	rm -f Makefile.in Makefile aclocal.m4 configure
 | 
			
		||||
	rm -f mkinstalldirs missing depcomp install-sh
 | 
			
		||||
	rm -f config.log
 | 
			
		||||
	rm -f Makefile.in Makefile aclocal.m4 configure configure.ac
 | 
			
		||||
	rm -f ar-lib mkinstalldirs missing depcomp install-sh
 | 
			
		||||
	rm -f config.log debian
 | 
			
		||||
 | 
			
		||||
lint:
 | 
			
		||||
	make -C src/ngircd lint
 | 
			
		||||
testsuite:
 | 
			
		||||
	${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-
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										105
									
								
								README
									
									
									
									
									
								
							
							
						
						
									
										105
									
								
								README
									
									
									
									
									
								
							@@ -1,105 +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 --
 | 
			
		||||
                           
 | 
			
		||||
                      Ilja Osthoff, <ilja@glide.ath.cx>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 +-----------------------------------------------------------------------+
 | 
			
		||||
 | Please note: English translations of some of the german documentation |
 | 
			
		||||
 | files can be found in the directory "doc/en" -- please have a look!   |
 | 
			
		||||
 +-----------------------------------------------------------------------+
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
I. Einfuehrung
 | 
			
		||||
~~~~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
ngIRCd ist ein Open-Source-Server fuer den Internet Relay Chat (IRC), der
 | 
			
		||||
unter der GNU General Public License (http://www.gnu.org/licenses/gpl.html)
 | 
			
		||||
entwickelt wird. ngIRCd steht fuer "next generation IRC daemon", er ist von
 | 
			
		||||
Grund auf neu geschrieben, also nicht wie die meisten anderen IRCd's vom
 | 
			
		||||
Urvater, dem Daemon des IRCNet abgeleitet.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
II. Status
 | 
			
		||||
~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
Zur Zeit befindet sich der ngIRCd noch in Entwicklung, manche Features sind
 | 
			
		||||
noch nicht implementiert, andere nur teilweise.
 | 
			
		||||
 | 
			
		||||
Bisher (mehr oder wenig vollstaendig) implementierte IRC-Befehle:
 | 
			
		||||
 | 
			
		||||
ADMIN, AWAY, CHANINFO, CONNECT, DIE, ERROR, INVITE, ISON, JOIN, KICK, KILL,
 | 
			
		||||
LINKS, LIST, LUSERS, MODE, MOTD, NAMES, NICK, NJOIN, NOTICE, OPER, PART,
 | 
			
		||||
PASS, PING, PONG, PRIVMSG, QUIT, RESTART, SERVER, SQUIT, TOPIC, USERHOST,
 | 
			
		||||
USER, VERSION, WHO, WHOIS.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
III. Features (oder: warum gerade ngIRCd?)
 | 
			
		||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
- keine Probleme mit Servern, deren IP-Adresse dynamisch ist,
 | 
			
		||||
- einfache, uebersichtliche Konfigurationsdatei,
 | 
			
		||||
- frei verfuegbarer C-Quellcode.
 | 
			
		||||
- ngIRCd wird aktiv weiterentwickelt.
 | 
			
		||||
- unterstuetzte Plattformen (getestete Version): AIX (3.2.5), A/UX (3.0.1),
 | 
			
		||||
  FreeBSD/i386 (4.5), HP-UX (10.20), IRIX (6.5), Linux (2.x), Mac OS X (10.x),
 | 
			
		||||
  NetBSD (1.5.2/i386, 1.5.3/m68k), Solaris (2.5.1, 2.6), Windows mit Cygwin.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
IV. Dokumentation
 | 
			
		||||
~~~~~~~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
Im Paket enthalten ist u.a.:
 | 
			
		||||
 | 
			
		||||
- README: das Dokument, das Du gerade liest :-)
 | 
			
		||||
- INSTALL: Hinweise zur Installation des ngIRCd
 | 
			
		||||
- NEWS: sagt der Name schon :-)
 | 
			
		||||
- ChangeLog: die komplette History des ngIRCd
 | 
			
		||||
- doc/FAQ.txt: haeufige Fragen und Antworten zum ngIRCd
 | 
			
		||||
- doc/CVS.txt: Hinweise zum CVS-System
 | 
			
		||||
- doc/RFC.txt: Infos ueber die RFC's
 | 
			
		||||
- doc/sample-ngircd.conf: Beispiel-Konfigurationsdatei
 | 
			
		||||
- doc/README-AUX.txt: Installationshinweise fuer A/UX
 | 
			
		||||
- doc/README-BeOS.txt: dito fuer BeOS
 | 
			
		||||
 | 
			
		||||
- doc/en/: englischsprachige Dokumentation
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
V. Bezugsquellen
 | 
			
		||||
~~~~~~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
Die Homepage des ngIRCd ist: <http://arthur.ath.cx/~alex/ngircd>; dort
 | 
			
		||||
findest du immer die neusten Informationen ueber den ngIRCd und die aktuellen
 | 
			
		||||
freigegebenen ("stabilen") Releases.
 | 
			
		||||
 | 
			
		||||
Falls du dich fuer die aktuellen Entwicklungs-Versionen (die jedoch nicht
 | 
			
		||||
immer "stabil" sind) interessierst, dann lese bitte den Punkt "CVS" auf der
 | 
			
		||||
Homepage und die Datei "doc/CVS.txt", die die Verwendung des "Concurrent
 | 
			
		||||
Versioning System" (CVS) beschreibt.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
VI. Bugs
 | 
			
		||||
~~~~~~~~
 | 
			
		||||
 | 
			
		||||
Wenn du im ngIRCd Bugs finden solltest (so was soll ja auch vorkommen :-),
 | 
			
		||||
dann lege bitte einen Bug-Report ueber diese URL an:
 | 
			
		||||
 | 
			
		||||
<http://arthur.ath.cx/~alex/ngircd/#bugs>
 | 
			
		||||
 | 
			
		||||
Dort kannst du dich auch ueber bekannte Fehler informieren.
 | 
			
		||||
 | 
			
		||||
Falls du noch Anregungen, Kritik, Patches etc. pp. zum ngIRCd hast, dann
 | 
			
		||||
bitte einfach eine Mail an <alex@barton.de> oder <alex@arthur.ath.cx>
 | 
			
		||||
schreiben.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-- 
 | 
			
		||||
$Id: README,v 1.13 2002/09/16 11:03:05 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
 | 
			
		||||
#
 | 
			
		||||
# $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
 | 
			
		||||
	echo "autogen.sh: configure-Skript existiert bereits ..."
 | 
			
		||||
Check_Tool()
 | 
			
		||||
{
 | 
			
		||||
	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
 | 
			
		||||
 | 
			
		||||
aclocal && \
 | 
			
		||||
 autoheader && \
 | 
			
		||||
 automake --add-missing && \
 | 
			
		||||
 autoconf && \
 | 
			
		||||
 echo "Okay, autogen.sh war erfolgreich."
 | 
			
		||||
sed -e "s|^__ng_Makefile_am_template__|AUTOMAKE_OPTIONS = ${SERIAL_TESTS} ${DEANSI_START}ansi2knr${DEANSI_END}|g" \
 | 
			
		||||
	src/portab/Makefile.ng >src/portab/Makefile.am
 | 
			
		||||
for makefile_ng in $AM_MAKEFILES; do
 | 
			
		||||
	makefile_am=$(echo "$makefile_ng" | sed -e "s|\.ng\$|\.am|g")
 | 
			
		||||
	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-
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										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
											
										
									
								
							
							
								
								
									
										230
									
								
								configure.in
									
									
									
									
									
								
							
							
						
						
									
										230
									
								
								configure.in
									
									
									
									
									
								
							@@ -1,230 +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.59 2002/09/17 17:12:24 alex Exp $
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
# -- Initialisierung --
 | 
			
		||||
 | 
			
		||||
AC_INIT
 | 
			
		||||
AC_PREREQ(2.50)
 | 
			
		||||
AC_CANONICAL_TARGET
 | 
			
		||||
AC_CONFIG_SRCDIR(src/config.h.in)
 | 
			
		||||
AM_INIT_AUTOMAKE(ngircd,0.5.0-pre2)
 | 
			
		||||
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([IRCPLUS], [Define if IRC+ protocol should be used])
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
# -- Hilfsprogramme --
 | 
			
		||||
 | 
			
		||||
AC_PROG_AWK
 | 
			
		||||
AC_PROG_INSTALL
 | 
			
		||||
AC_PROG_LN_S
 | 
			
		||||
AC_PROG_MAKE_SET
 | 
			
		||||
AC_PROG_RANLIB
 | 
			
		||||
 | 
			
		||||
# -- Compiler Features --
 | 
			
		||||
 | 
			
		||||
AC_LANG_C
 | 
			
		||||
 | 
			
		||||
AM_C_PROTOTYPES
 | 
			
		||||
AC_C_CONST
 | 
			
		||||
 | 
			
		||||
# -- Header --
 | 
			
		||||
 | 
			
		||||
AC_HEADER_STDC
 | 
			
		||||
 | 
			
		||||
AC_HEADER_TIME
 | 
			
		||||
 | 
			
		||||
AC_HEADER_SYS_WAIT
 | 
			
		||||
 | 
			
		||||
AC_CHECK_HEADERS([ \
 | 
			
		||||
	ctype.h errno.h fcntl.h netdb.h netinet/in.h stdlib.h string.h \
 | 
			
		||||
	strings.h sys/socket.h sys/time.h unistd.h \
 | 
			
		||||
	],,AC_MSG_ERROR([required C header missing!]))
 | 
			
		||||
 | 
			
		||||
AC_CHECK_HEADERS(arpa/inet.h malloc.h stdint.h sys/select.h varargs.h)
 | 
			
		||||
 | 
			
		||||
# -- 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)
 | 
			
		||||
])
 | 
			
		||||
 | 
			
		||||
AC_TYPE_SIGNAL
 | 
			
		||||
 | 
			
		||||
AC_TYPE_SIZE_T
 | 
			
		||||
 | 
			
		||||
# -- Libraries --
 | 
			
		||||
 | 
			
		||||
AC_CHECK_LIB(UTIL,memmove)
 | 
			
		||||
AC_CHECK_LIB(socket,bind)
 | 
			
		||||
AC_CHECK_LIB(nsl,gethostent)
 | 
			
		||||
 | 
			
		||||
# -- Funktionen --
 | 
			
		||||
 | 
			
		||||
AC_FUNC_MALLOC
 | 
			
		||||
 | 
			
		||||
AC_FUNC_FORK
 | 
			
		||||
 | 
			
		||||
AC_FUNC_STRFTIME
 | 
			
		||||
 | 
			
		||||
AC_CHECK_FUNCS([ \
 | 
			
		||||
	bind gethostbyaddr gethostbyname gethostname inet_ntoa memmove \
 | 
			
		||||
	memset select setsockopt socket strcasecmp strchr strerror \
 | 
			
		||||
	strstr waitpid \
 | 
			
		||||
	],,AC_MSG_ERROR([required function missing!]))
 | 
			
		||||
 | 
			
		||||
AC_CHECK_FUNCS(inet_aton sigaction snprintf vsnprintf)
 | 
			
		||||
 | 
			
		||||
# -- Konfigurationsoptionen --
 | 
			
		||||
 | 
			
		||||
x_syslog_on=no
 | 
			
		||||
AC_ARG_ENABLE(syslog,
 | 
			
		||||
	[  --disable-syslog        disable syslog (autodetected by default)],
 | 
			
		||||
	[	if test "$enableval" = "yes"; then
 | 
			
		||||
			AC_CHECK_HEADER(syslog.h, x_syslog_on=yes,
 | 
			
		||||
				AC_MSG_ERROR([Can't enable syslog: syslog.h not found!])
 | 
			
		||||
			)
 | 
			
		||||
		fi
 | 
			
		||||
	],
 | 
			
		||||
	[	AC_CHECK_HEADER(syslog.h, x_syslog_on=yes) ]
 | 
			
		||||
)
 | 
			
		||||
if test "$x_syslog_on" = "yes"; then
 | 
			
		||||
	AC_DEFINE(USE_SYSLOG, 1)
 | 
			
		||||
	AC_CHECK_LIB(be,syslog)
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
x_ircplus_on=yes
 | 
			
		||||
AC_ARG_ENABLE(ircplus,
 | 
			
		||||
	[  --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)
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
AC_ARG_ENABLE(sniffer,
 | 
			
		||||
	[  --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
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
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)
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
AC_ARG_ENABLE(strict-rfc,
 | 
			
		||||
	[  --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
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# -- Definitionen --
 | 
			
		||||
 | 
			
		||||
AC_DEFINE_UNQUOTED(TARGET_CPU, "$target_cpu" )
 | 
			
		||||
AC_DEFINE_UNQUOTED(TARGET_VENDOR, "$target_vendor" )
 | 
			
		||||
AC_DEFINE_UNQUOTED(TARGET_OS, "$target_os" )
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
# -- Variablen --
 | 
			
		||||
 | 
			
		||||
if test "$GCC" = "yes"; then
 | 
			
		||||
	CFLAGS="-Wall $CFLAGS"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
CFLAGS="$CFLAGS -DSYSCONFDIR='\"\$(sysconfdir)\"'"
 | 
			
		||||
 | 
			
		||||
# -- Ausgabe der Dateien --
 | 
			
		||||
 | 
			
		||||
AC_OUTPUT([ \
 | 
			
		||||
	Makefile \
 | 
			
		||||
	doc/Makefile \
 | 
			
		||||
	doc/en/Makefile \
 | 
			
		||||
	MacOSX/Makefile \
 | 
			
		||||
	MacOSX/ngircd.pbproj/Makefile \
 | 
			
		||||
	src/Makefile \
 | 
			
		||||
	src/portab/Makefile \
 | 
			
		||||
	src/ngircd/Makefile \
 | 
			
		||||
	src/testsuite/Makefile \
 | 
			
		||||
	man/Makefile \
 | 
			
		||||
])
 | 
			
		||||
 | 
			
		||||
# -- Ergebnis --
 | 
			
		||||
 | 
			
		||||
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}`
 | 
			
		||||
 | 
			
		||||
echo "                host: ${host}"
 | 
			
		||||
echo "            compiler: ${CC}"
 | 
			
		||||
echo "      compiler flags: ${CFLAGS}"
 | 
			
		||||
echo "  preprocessor flags: ${CPPFLAGS}"
 | 
			
		||||
echo "        linker flags: ${LDFLAGS}"
 | 
			
		||||
echo "           libraries: ${LIBS}"
 | 
			
		||||
echo
 | 
			
		||||
 | 
			
		||||
echo "     'ngircd' binary: $S"
 | 
			
		||||
echo "  configuration file: $C"
 | 
			
		||||
echo "        manual pages: $M"
 | 
			
		||||
echo
 | 
			
		||||
 | 
			
		||||
echo $ECHO_N "      active options: $ECHO_C"
 | 
			
		||||
test "$x_syslog_on" = "yes"	&& echo $ECHO_N "Syslog $ECHO_C"
 | 
			
		||||
test "$x_debug_on" = "yes"	&& echo $ECHO_N "Debug $ECHO_C"
 | 
			
		||||
test "$x_sniffer_on" = "yes"	&& echo $ECHO_N "Sniffer $ECHO_C"
 | 
			
		||||
test "$x_strict_rfc_on" = "yes"	&& echo $ECHO_N "Strict-RFC $ECHO_C"
 | 
			
		||||
test "$x_ircplus_on" = "yes"	&& echo $ECHO_N "IRC+ $ECHO_C"
 | 
			
		||||
echo; echo
 | 
			
		||||
 | 
			
		||||
# -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 ...
 | 
			
		||||
							
								
								
									
										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,29 +1,92 @@
 | 
			
		||||
#
 | 
			
		||||
# 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
 | 
			
		||||
# 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.10 2002/09/16 10:35:06 alex Exp $
 | 
			
		||||
# 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 = en
 | 
			
		||||
.tmpl:
 | 
			
		||||
	$(AM_V_GEN)sed \
 | 
			
		||||
	    -e "s@:ETCDIR:@${sysconfdir}@" \
 | 
			
		||||
	    -e "s@:DOCDIR:@${docdir}@" \
 | 
			
		||||
	    <$< >$@
 | 
			
		||||
 | 
			
		||||
EXTRA_DIST = CVS.txt FAQ.txt Protocol.txt README-AUX.txt \
 | 
			
		||||
	README-BeOS.txt RFC.txt sample-ngircd.conf
 | 
			
		||||
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:
 | 
			
		||||
	rm -f Makefile Makefile.in
 | 
			
		||||
 | 
			
		||||
install-data-hook:
 | 
			
		||||
	$(mkinstalldirs) $(DESTDIR)$(sysconfdir)
 | 
			
		||||
	if [ ! -f $(DESTDIR)$(sysconfdir)/ngircd.conf ]; then \
 | 
			
		||||
	  $(INSTALL) -m 600 -c $(srcdir)/sample-ngircd.conf $(DESTDIR)$(sysconfdir)/ngircd.conf; \
 | 
			
		||||
	  fi
 | 
			
		||||
all: $(generated_docs)
 | 
			
		||||
 | 
			
		||||
install-data-hook: $(static_docs) $(toplevel_docs) $(generated_docs)
 | 
			
		||||
	$(MKDIR_P) -m 755 $(DESTDIR)$(sysconfdir)
 | 
			
		||||
	@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-
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										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).
 | 
			
		||||
							
								
								
									
										306
									
								
								doc/Protocol.txt
									
									
									
									
									
								
							
							
						
						
									
										306
									
								
								doc/Protocol.txt
									
									
									
									
									
								
							@@ -1,109 +1,265 @@
 | 
			
		||||
 | 
			
		||||
                     ngIRCd - Next Generation IRC Server
 | 
			
		||||
                           http://ngircd.barton.de/
 | 
			
		||||
 | 
			
		||||
                      (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.
 | 
			
		||||
               (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. Kompatibilitaet
 | 
			
		||||
~~~~~~~~~~~~~~~~~~
 | 
			
		||||
I. Compatibility
 | 
			
		||||
~~~~~~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
Der ngIRCd haelt sich an das IRC-Protokoll Version 2.10, wie es in den RFCs
 | 
			
		||||
1459 und 2810-2813 beschrieben ist. Diese (und ggf. weitere fuer den ngIRCd
 | 
			
		||||
relevante) RFCs sind in RFC.txt aufgefuehrt.
 | 
			
		||||
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.
 | 
			
		||||
 | 
			
		||||
Leider verhaelt sich aber schon der "Originalserver" nicht immer genau so,
 | 
			
		||||
wie es in den RFCs beschrieben ist. Da der ngIRCd aber ein Ersatz fuer
 | 
			
		||||
eben diesen Server sein soll, werden diese Abweichungen in der Regel vom
 | 
			
		||||
ngIRCd emuliert um die Kompatibilitaet zu wahren.
 | 
			
		||||
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.
 | 
			
		||||
 | 
			
		||||
Sollte dieses Verhalten nicht erwuenscht sein, so kann mit der configure-
 | 
			
		||||
Option "--enable-strict-rfc" der ngIRCd so compiliert werden, dass er sich
 | 
			
		||||
strikt an die entsprechenden RFCs haelt.
 | 
			
		||||
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".
 | 
			
		||||
 | 
			
		||||
ACHTUNG: an einem so compilierten Server koennen sich andere Server und
 | 
			
		||||
Clients, die sich nicht genau an das Protokoll halten, u.U. nicht mehr
 | 
			
		||||
anmelden oder alle Funktionen nutzen! In der Regel ist diese Option daher
 | 
			
		||||
nicht erwuenscht.
 | 
			
		||||
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. Das IRC+-Protokoll
 | 
			
		||||
~~~~~~~~~~~~~~~~~~~~~~
 | 
			
		||||
II. The IRC+ Protocol
 | 
			
		||||
~~~~~~~~~~~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
Der ngIRCd unterstuetzt als Erweiterung zum IRC-Protokoll wie es in den RFCs
 | 
			
		||||
2810-2813 beschrieben ist, das IRC+-Protokoll. Dieses Protokoll ist dabei
 | 
			
		||||
kompatibel zum IRC-Protokoll und wird nur verwendet, wenn der ngIRCd fest-
 | 
			
		||||
stellt, dass ein connectierter Server ebenfalls dieses erweiterte Protokoll
 | 
			
		||||
unterstuetzt.
 | 
			
		||||
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.
 | 
			
		||||
 | 
			
		||||
Die Protokoll- und Server-Erkennung wird mit dem "PASS"-Befehl durchgefuehrt
 | 
			
		||||
(vgl. RFC 2813, Sektion 4.1.1):
 | 
			
		||||
The "PASS" command is used to detect the protocol and peer versions see
 | 
			
		||||
RFC 2813 (section 4.1.1) and below.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
II.1 neuen Server-Link registrieren
 | 
			
		||||
II.1 Register new server link
 | 
			
		||||
 | 
			
		||||
     Befehl: PASS
 | 
			
		||||
  Parameter: <password> <version> <flags> [<options>]
 | 
			
		||||
       Fuer: mit dieser Syntax nur Server
 | 
			
		||||
     Command: PASS
 | 
			
		||||
  Parameters: <password> <version> <flags> [<options>]
 | 
			
		||||
     Used by: servers only (with these parameters)
 | 
			
		||||
 | 
			
		||||
<password> enthaelt das Passwort fur den neu aufzubauenden Server-Link,
 | 
			
		||||
so wie es in der Konfigurationsdatei definiert wurde.
 | 
			
		||||
<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> setzt sich aus zwei Teilen zusammen und ist mindestens 4, maximal
 | 
			
		||||
14 Zeichen lang: die ersten vier Bytes enthalten die Versionsnummer des
 | 
			
		||||
unterstuetzten IRC-Protokolls, wobei die ersten zwei Bytes die Major-, die
 | 
			
		||||
letzten beiden die Minor-Revision angeben. Der String "0210" steht also
 | 
			
		||||
fuer Protokollversion 2.10.
 | 
			
		||||
Die folgenden (optionalen!) 10 Bytes enthalten eine von der jeweiligen
 | 
			
		||||
Implementation abhaengige Versionsnummer. Server, die das IRC+-Protokoll
 | 
			
		||||
unterstuetzen, liefern hier "-IRC+".
 | 
			
		||||
<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.).
 | 
			
		||||
 | 
			
		||||
<flags> setzt sich ebenfalls aus zwei Bestandteilen zusammen und ist
 | 
			
		||||
maximal 100 Bytes lang. Getrennt werden die beiden Teile mit dem Zeichen
 | 
			
		||||
"|". Der erste Teil enthaelt den Namen der Implementation, der ngIRCd
 | 
			
		||||
liefert hier z.B. "ngIRCd", der Originalserver "IRC". Anhand dieser "ID"
 | 
			
		||||
kann zwischen Serverimplementationen unterschieden werden. Der zweite Teil
 | 
			
		||||
(nach dem "|") ist implementationsabhaengig und wird nur ausgewertet,
 | 
			
		||||
wenn die Gegenseite das IRC+-Protokoll unterstuetzt. In diesem Fall wird
 | 
			
		||||
folgende Syntax erwartet: "<serverversion>[:<serverflags>]".
 | 
			
		||||
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.
 | 
			
		||||
 | 
			
		||||
<serverversion> ist hier eine ASCII-Klartext-Darstellung der Versionsnummer,
 | 
			
		||||
<serverflags> zeigt die vom Server unterstuetzten Erweiterungen an (und
 | 
			
		||||
kann die leere Menge sein).
 | 
			
		||||
Example for <version>: "0210-IRC+".
 | 
			
		||||
 | 
			
		||||
Mit dem optionalen Parameter <options> werden Server-Optionen uebermittelt,
 | 
			
		||||
wie sie in RFC 2813, Sektion 4.1.1 definiert sind.
 | 
			
		||||
<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>]".
 | 
			
		||||
 | 
			
		||||
Folgende <serverflags> sind zur Zeit definiert:
 | 
			
		||||
<serverversion> is an ASCII representation of the clear-text server version
 | 
			
		||||
number, <serverflags> indicates the supported IRC+ protocol extensions (and
 | 
			
		||||
may be empty!).
 | 
			
		||||
 | 
			
		||||
- o: IRC-Operatoren duerfen auch dann Channel- und Channel-User-Modes
 | 
			
		||||
     aendern, wenn sie kein Channel-Operator im betroffenen Channel sind.
 | 
			
		||||
The following <serverflags> are defined at the moment:
 | 
			
		||||
 | 
			
		||||
- C: der Server unterstuetzt den CHANINFO-Befehl.     
 | 
			
		||||
- 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 Channel-Modes, persistente Channel und Topic austauschen
 | 
			
		||||
II.2 Enhanced Server Handshake
 | 
			
		||||
 | 
			
		||||
     Befehl: CHANINFO
 | 
			
		||||
  Parameter: <channel> +<mode> [<topic>]
 | 
			
		||||
       Fuer: Server
 | 
			
		||||
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.
 | 
			
		||||
 | 
			
		||||
Mit CHANINFO Informiert ein Server den anderen ueber einen Channel: dessen
 | 
			
		||||
Modes und dessen Topic. <topic> ist optional.
 | 
			
		||||
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.
 | 
			
		||||
 | 
			
		||||
Existiert auf dem Server, der das CHANINFO empfaengt, der Channel bereits,
 | 
			
		||||
so uebernimmt er die Werte jeweils nur dann, wenn er selber noch keine
 | 
			
		||||
Modes bzw. kein Topic definiert hat. Ansonsten wird der jeweilige Parameter
 | 
			
		||||
ignoriert.
 | 
			
		||||
A server implementing the enhanced server handshake (and indicating this
 | 
			
		||||
using 'H' in the <serverflags>) MUST ignore all unknown numerics to it
 | 
			
		||||
silently.
 | 
			
		||||
 | 
			
		||||
Existiert der Channel noch nicht, so wird er mit den entsprechenden Angaben
 | 
			
		||||
erzeugt.
 | 
			
		||||
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.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-- 
 | 
			
		||||
$Id: Protocol.txt,v 1.5 2002/09/04 00:06:19 alex Exp $
 | 
			
		||||
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,71 +1,67 @@
 | 
			
		||||
 | 
			
		||||
                     ngIRCd - Next Generation IRC Server
 | 
			
		||||
                    ngIRCd - Next Generation IRC Server
 | 
			
		||||
 | 
			
		||||
                      (c)2001,2002 by Alexander Barton,
 | 
			
		||||
                    alex@barton.de, http://www.barton.de/
 | 
			
		||||
                      (c)2001-2005 Alexander Barton,
 | 
			
		||||
                   alex@barton.de, http://www.barton.de/
 | 
			
		||||
 | 
			
		||||
                  ngIRCd ist freie Software und steht unter
 | 
			
		||||
                       der GNU General Public License.
 | 
			
		||||
 | 
			
		||||
                             -- README-AUX.txt --
 | 
			
		||||
               ngIRCd is free software and published under the
 | 
			
		||||
                  terms of the GNU General Public License.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Seit Version 0.2.2-pre gehoert Apple A/UX zu den offiziell unterstuetzten
 | 
			
		||||
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/gcc-2.8.1-auxbin.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
 | 
			
		||||
 | 
			
		||||
  - install (z.B. aus den GNU fileutils)
 | 
			
		||||
    Ein install, welches entweder so "broken" ist, dass configure das eigene
 | 
			
		||||
    Shell-Script waehlt, oder eines, das funktioniert. Leider ist mindestens
 | 
			
		||||
    ein Binary im Umlauf, das Probleme macht.
 | 
			
		||||
    Bezugsquelle:
 | 
			
		||||
    ftp://arthur.ath.cx/pub/UNIX/AUX/Software/Tools/fileutils-4.0.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.
 | 
			
		||||
                           -- README-AUX.txt --
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Noch ein paar Hinweise, wenn es doch (noch) nicht klappt:
 | 
			
		||||
Since version 0.2.2-pre Apple's A/UX belongs to the officially supported 
 | 
			
		||||
platforms. It is not restricted in any way.
 | 
			
		||||
 | 
			
		||||
  - auf dem System muss entweder ein install vorhanden sein, welches so
 | 
			
		||||
    "broken" ist, dass configure das eigene Shell-Skript waehlt, oder eben
 | 
			
		||||
    eines, welches funktioniert. Leider ist mindestens ein Binary im Um-
 | 
			
		||||
    lauf, welches Probleme verursacht. Das Binary aus folgenden GNU
 | 
			
		||||
    fileutils funktioniert hier aber z.B.:
 | 
			
		||||
    ftp://arthur.ath.cx/pub/UNIX/AUX/Software/Tools/fileutils-4.0.tar.gz
 | 
			
		||||
Since version 0.5.0 ngIRCd's source compiles with the native A/UX c 
 | 
			
		||||
compiler. GNU C isn't a must-have anymore.
 | 
			
		||||
 | 
			
		||||
  - das sich im Umlauf befindende vorcompilierte Binary der alten Bash sollte
 | 
			
		||||
    unbedingt ausserhalb von /bin (z.B. unter /usr/local/bin) installiert
 | 
			
		||||
    werden. Ansonsten waehlt es das configure-Script als Shell aus, leider
 | 
			
		||||
    funktioniert das aber nicht.
 | 
			
		||||
    Das config.status-Script sollte mit der ksh als Interpreter erstellt
 | 
			
		||||
    worden sein (siehe erste Zeile davon!).
 | 
			
		||||
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().
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Hier die Zeiten von Alex System (Macintosh SE/30, 32 MB, A/UX 3.0.1):
 | 
			
		||||
configure: 7:33, make: 12:02
 | 
			
		||||
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.3 2002/04/29 14:19:48 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
 | 
			
		||||
 | 
			
		||||
                      (c)2001,2002 by Alexander Barton,
 | 
			
		||||
                      (c)2001-2003 by Alexander Barton,
 | 
			
		||||
                    alex@barton.de, http://www.barton.de/
 | 
			
		||||
 | 
			
		||||
                  ngIRCd ist freie Software und steht unter
 | 
			
		||||
                       der GNU General Public License.
 | 
			
		||||
               ngIRCd is free software and published under the
 | 
			
		||||
                   terms of the GNU General Public License.
 | 
			
		||||
 | 
			
		||||
                             -- 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-
 | 
			
		||||
formen: der ngIRCd enthaelt zwar bereits einige Anpassungen an BeOS und
 | 
			
		||||
compiliert auch, jedoch bricht er bei jedem Connect-Versuch eines Clients
 | 
			
		||||
@@ -18,7 +24,7 @@ mit diesem Fehler ab:
 | 
			
		||||
   select(): Bad file descriptor!
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
obiger Meldung.
 | 
			
		||||
 | 
			
		||||
@@ -44,4 +50,4 @@ 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.3 2002/05/19 13:10:26 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
 | 
			
		||||
                           http://ngircd.barton.de/
 | 
			
		||||
 | 
			
		||||
                      (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.
 | 
			
		||||
               (c)2001-2017 Alexander Barton and Contributors.
 | 
			
		||||
               ngIRCd is free software and published under the
 | 
			
		||||
                   terms of the GNU General Public License.
 | 
			
		||||
 | 
			
		||||
                                 -- 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",
 | 
			
		||||
	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",
 | 
			
		||||
	April 2000, [IRC-SERVER].
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-- 
 | 
			
		||||
$Id: RFC.txt,v 1.4 2002/01/23 18:20:04 alex Exp $
 | 
			
		||||
  7194	Hartmann, R., "Default Port for Internet Relay Chat (IRC) via TLS/SSL",
 | 
			
		||||
	August 2014.
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										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/>
 | 
			
		||||
							
								
								
									
										126
									
								
								doc/en/INSTALL
									
									
									
									
									
								
							
							
						
						
									
										126
									
								
								doc/en/INSTALL
									
									
									
									
									
								
							@@ -1,126 +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 --
 | 
			
		||||
 | 
			
		||||
                         
 | 
			
		||||
 | 
			
		||||
I. Standard-Installation
 | 
			
		||||
~~~~~~~~~~~~~~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
ngIRCd is developed for UNIX-like systems, which means, that the installation
 | 
			
		||||
on a modern UNIX-like system should be no problem. The only thing is, that
 | 
			
		||||
the system should be supported by GNU automake and GNU autoconf ("configure").
 | 
			
		||||
 | 
			
		||||
The normal installation is like that:
 | 
			
		||||
 | 
			
		||||
   1) tar xzf ngircd-<Version>.tar.gz
 | 
			
		||||
   2) cd ngircd-<Version>
 | 
			
		||||
   3) ./autogen.sh	[only necessary when using CVS]
 | 
			
		||||
   4) ./configure
 | 
			
		||||
   5) make
 | 
			
		||||
   6) make install
 | 
			
		||||
 | 
			
		||||
3): "autogen.sh"
 | 
			
		||||
 | 
			
		||||
The first step, autogen.sh, is only necessary if the configure-script isn't
 | 
			
		||||
already generated. This never happens in official ("stable") releases in
 | 
			
		||||
tar.gz-archieves, but when using the CVS system.
 | 
			
		||||
 | 
			
		||||
The next is therefore only interesting for developpers.
 | 
			
		||||
 | 
			
		||||
autogen.sh produces the makefile.in's, which are necessary for the configure
 | 
			
		||||
script it self, and some more files for make. For this step, there must be
 | 
			
		||||
GNU automake and GNU autoconf (in recent versions).
 | 
			
		||||
 | 
			
		||||
(again: "end users" do not need this step!)
 | 
			
		||||
 | 
			
		||||
to 4): "./configure"
 | 
			
		||||
 | 
			
		||||
The configure-script is used to detect local system dependancies.
 | 
			
		||||
 | 
			
		||||
In the perfect case, configure should recognize all needed libraries, header
 | 
			
		||||
and so on. If this shouldn't work, "./configure --help" shows more options.
 | 
			
		||||
 | 
			
		||||
to 5): "make"
 | 
			
		||||
 | 
			
		||||
The make command uses the Makefiles produced by configure and compiles the
 | 
			
		||||
ngIRCd daemon.
 | 
			
		||||
 | 
			
		||||
to 6): "make install"
 | 
			
		||||
 | 
			
		||||
Use "make install" to install the server and a sample configuration file on
 | 
			
		||||
the local system. For this step, root privileges are necessary. If there is
 | 
			
		||||
already an older configuration file present, it won't be overwritten.
 | 
			
		||||
 | 
			
		||||
This are the files that are installed:
 | 
			
		||||
 | 
			
		||||
- /usr/local/sbin/ngircd: exectable server
 | 
			
		||||
- /usr/local/etc/ngircd.conf: sample configuration, if not there
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
II. Useful make-targets
 | 
			
		||||
~~~~~~~~~~~~~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
The Makefile produced by the configure-script contain always these useful
 | 
			
		||||
targets:
 | 
			
		||||
 | 
			
		||||
 - clean: delete every product from the compiler/linker
 | 
			
		||||
   next step: -> make
 | 
			
		||||
 | 
			
		||||
 - distclean: plus erase all generated Makefiles
 | 
			
		||||
   next step: -> ./configure
 | 
			
		||||
 | 
			
		||||
 - maintainer-clean: erease all automatic generated files
 | 
			
		||||
   next step: -> ./autogen.sh
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
III. Sample configuration file ngircd.conf
 | 
			
		||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
In the sample configuration file, there are comments beginning with "#" OR
 | 
			
		||||
";" -- this is only for the better understanding of the code.
 | 
			
		||||
 | 
			
		||||
The file is seperated in three blocks: [Global], [Operator], [Server]. In
 | 
			
		||||
the [Gobal] part, there is the main configuration, like the server-name
 | 
			
		||||
and the ports, on which the server should be listening. In the [Operator]
 | 
			
		||||
section, the server-operators are defined and [Server] is the section,
 | 
			
		||||
where the server-links are configured.
 | 
			
		||||
 | 
			
		||||
The meaning of the variables in the configuration file is explained in the 
 | 
			
		||||
"doc/sample-ngircd.conf", which is also the sample configuration file in
 | 
			
		||||
/usr/local/etc after running "make install" (if you don't already have one).
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
IV. Command line options
 | 
			
		||||
~~~~~~~~~~~~~~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
These parameters could be passed to the ngIRCd:
 | 
			
		||||
 | 
			
		||||
-f, --config <file>
 | 
			
		||||
	The daemon uses the file <file> as configuration file rather than
 | 
			
		||||
	the standard configuration /usr/local/etc/ngircd.conf.
 | 
			
		||||
 | 
			
		||||
-n, --nodaemon
 | 
			
		||||
	ngIRCd should be running as a foreground process.
 | 
			
		||||
 | 
			
		||||
-p, --passive
 | 
			
		||||
	Server-links won't be automatically established.
 | 
			
		||||
 | 
			
		||||
--configtest
 | 
			
		||||
	Reads, validates and dumps the configuration file as interpreted
 | 
			
		||||
	by the server. Then exits.
 | 
			
		||||
 | 
			
		||||
Use "--help" to see a short help text describing all available parameters
 | 
			
		||||
the server understands, with "--version" the ngIRCd shows its version
 | 
			
		||||
number. In both cases the server exits after the output.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-- 
 | 
			
		||||
$Id: INSTALL,v 1.2 2002/05/20 12:02:58 alex Exp $
 | 
			
		||||
@@ -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.1 2002/05/09 10:17:05 alex Exp $
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
EXTRA_DIST = INSTALL README
 | 
			
		||||
 | 
			
		||||
maintainer-clean-local:
 | 
			
		||||
	rm -f Makefile Makefile.in
 | 
			
		||||
 | 
			
		||||
# -eof-
 | 
			
		||||
							
								
								
									
										101
									
								
								doc/en/README
									
									
									
									
									
								
							
							
						
						
									
										101
									
								
								doc/en/README
									
									
									
									
									
								
							@@ -1,101 +0,0 @@
 | 
			
		||||
                     ngIRCd - Next Generation IRC Server
 | 
			
		||||
 | 
			
		||||
                      (c)2001,2002 by Alexander Barton,
 | 
			
		||||
                    alex@barton.de, http://www.barton.de/
 | 
			
		||||
 | 
			
		||||
               ngIRCd is free software and published under the
 | 
			
		||||
                   terms of the GNU General Public License.
 | 
			
		||||
 | 
			
		||||
                                -- README --
 | 
			
		||||
                           
 | 
			
		||||
                      Ilja Osthoff, <ilja@glide.ath.cx>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
I. Introduction
 | 
			
		||||
~~~~~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
ngIRCd is an Open-Source server for the Internet Realy Chat (IRC), which
 | 
			
		||||
is developped 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.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
II. Status
 | 
			
		||||
~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
At present, the ngIRCd is under active development, some features are not
 | 
			
		||||
implemented, some only partly.
 | 
			
		||||
 | 
			
		||||
Till today (more or less complete) implemented IRC-commands:
 | 
			
		||||
 | 
			
		||||
ADMIN, AWAY, CHANINFO, CONNECT, DIE, ERROR, INVITE, ISON, JOIN, KICK, KILL,
 | 
			
		||||
LINKS, LIST, LUSERS, MODE, MOTD, NAMES, NICK, NJOIN, NOTICE, OPER, PART,
 | 
			
		||||
PASS, PING, PONG, PRIVMSG, QUIT, RESTART, SERVER, SQUIT, TOPIC, USERHOST,
 | 
			
		||||
USER, VERSION, WHO, WHOIS.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
III. Features (or: why use ngIRCd?)
 | 
			
		||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
- no problems with servers which have dynamic ip-adresses
 | 
			
		||||
- simple, easy understandable configuration file,
 | 
			
		||||
- freely published C-Sourcecode,
 | 
			
		||||
- ngIRCd will be developed on in the future.
 | 
			
		||||
- supported platforms (tested versions): AIX (3.2.5), A/UX (3.0.1), FreeBSD
 | 
			
		||||
  (4.5), HP-UX (10.20), IRIX (6.5), Linux (2.x), Mac OS X (10.x), NetBSD
 | 
			
		||||
  (1.5.2/i386, 1.5.3/m68k), Solaris (2.5.1, 2.6), and Windows with Cygwin.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
IV. Documentation
 | 
			
		||||
~~~~~~~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
English documentation:
 | 
			
		||||
 | 
			
		||||
- doc/en/README: the file that you are reading :-)
 | 
			
		||||
- doc/en/INSTALL: hints for the installation of the ngIRCd
 | 
			
		||||
 | 
			
		||||
German documentation:
 | 
			
		||||
 | 
			
		||||
- README: readme text in german
 | 
			
		||||
- INSTALL: german installation instructions
 | 
			
		||||
- NEWS: what do you think? :-) 
 | 
			
		||||
- Changelog: the complete history of the ngIRCd
 | 
			
		||||
- doc/FAQ.txt: frequently asked questions and answers
 | 
			
		||||
- doc/CVS.txt: hints for the CVS-system
 | 
			
		||||
- doc/RFC.txt: information about the RFC's
 | 
			
		||||
- doc/sample-ngircd.conf: sample configuration file
 | 
			
		||||
- doc/README-AUX.txt: installation hints for A/UX
 | 
			
		||||
- doc/README-BeOS.txt: the same for BeOS
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
V. Download
 | 
			
		||||
~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
The homepage of the ngIRCd is: <http://arthur.ath.cx/~alex/ngircd>; you
 | 
			
		||||
will find the newest information about the ngIRCd and the most recent
 | 
			
		||||
("stable") releases there.
 | 
			
		||||
 | 
			
		||||
If you are interested in the newest developper-versions (which are not
 | 
			
		||||
always stable), then please read the section "CVS" on the homepage and
 | 
			
		||||
the file "doc/CVS.txt" which describes the use of CVS, the "Concurrent
 | 
			
		||||
Versioning System".
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
VI. Bugs
 | 
			
		||||
~~~~~~~~
 | 
			
		||||
 | 
			
		||||
If you find bugs in the ngIRCd (which might be there :-), please report
 | 
			
		||||
them at the following URL:
 | 
			
		||||
 | 
			
		||||
<http://arthur.ath.cx/~alex/ngircd/#bugs>
 | 
			
		||||
 | 
			
		||||
There you can read about kown bugs, too.
 | 
			
		||||
 | 
			
		||||
If you have critics, patches or something else, please feel yourself free
 | 
			
		||||
to post a mail to: <alex@barton.de> or <alex@arthur.ath.cx>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-- 
 | 
			
		||||
$Id: README,v 1.6 2002/09/16 11:03:05 alex Exp $
 | 
			
		||||
@@ -1,144 +0,0 @@
 | 
			
		||||
# $Id: sample-ngircd.conf,v 1.11 2002/09/16 10:33:09 alex Exp $
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
# Das ist eine Beispiel-Konfiguration fuer den ngIRCd, die an die
 | 
			
		||||
# jeweiligen Beduerfnisse angepasst werden kann/muss.
 | 
			
		||||
#
 | 
			
		||||
# Kommentare werden mit "#" oder ";" eingeleitet.
 | 
			
		||||
#
 | 
			
		||||
# Autor: Alexander Barton, <alex@barton.de>
 | 
			
		||||
# Erweiterungen von Ilja Osthoff, <ilja@glide.ath.cx>
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
[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, d.h. hier
 | 
			
		||||
	# muss die Variable nicht angegeben werden.
 | 
			
		||||
	#
 | 
			
		||||
 | 
			
		||||
	# Servername im IRC-Netz
 | 
			
		||||
	Name = irc.the.net
 | 
			
		||||
 | 
			
		||||
	# Info-Text des Servers. Dieser wird z.B. bei WHOIS- oder LINKS-
 | 
			
		||||
	# Abfragen entsprechend mit ausgegeben.
 | 
			
		||||
	Info = Server Info Text
 | 
			
		||||
	
 | 
			
		||||
	# Informationen ueber den Server und Administrator fuer den
 | 
			
		||||
	# ADMIN-Befehl:
 | 
			
		||||
	;AdminInfo1 = Beschreibung
 | 
			
		||||
	;AdminInfo2 = Standort
 | 
			
		||||
	;AdminEMail = admin@irc.server
 | 
			
		||||
 | 
			
		||||
	# 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). Diese wird aus-
 | 
			
		||||
	# gegeben, wenn sich ein User mit dem Server verbindet.
 | 
			
		||||
	;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
 | 
			
		||||
	
 | 
			
		||||
	# Sollen IRC-Operatoren immer den MODE-Befehl in Channel benutzen
 | 
			
		||||
	# koennen, auch wenn sie kein(!) Channel-Operator sind?
 | 
			
		||||
	;OperCanUseMode = no
 | 
			
		||||
 | 
			
		||||
[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 sich
 | 
			
		||||
	# dieser ngIRCd verbinden soll bzw. von denen Verbindungen angekommen
 | 
			
		||||
	# werden duerfen.
 | 
			
		||||
	# Es koennen mehrere Server konfiguriert werden, d.h. [Server]-
 | 
			
		||||
	# Bloecke koennen mehrfach vorkommen.
 | 
			
		||||
	# Wenn man fuer einen Server einen Port angegeben hat, dann versucht
 | 
			
		||||
	# sich der ngIRCd mit der Gegenseite zu verbinden. Hat man keinen
 | 
			
		||||
	# Port konfiguriert, dann wartet der ngIRCd darauf, dass sich die
 | 
			
		||||
	# Gegenseite mit ihm verbindet.
 | 
			
		||||
	#
 | 
			
		||||
	# Server-Gruppen:
 | 
			
		||||
	# Der ngIRCd unterstuetzt "Server-Gruppen": das bedeutet, man kann
 | 
			
		||||
	# jedem Server, mit dem man sich verbinden will, einer Gruppe zu-
 | 
			
		||||
	# ordnen. Wenn der ngIRCd sich dann mit einem Server aus der Gruppe
 | 
			
		||||
	# verbinden will und keine Antwort erhaelt, dann wird der naechste
 | 
			
		||||
	# Server aus der Gruppe versucht.
 | 
			
		||||
	# Achtung: Gruppen werden nur beachtet, wenn man einen Port fur
 | 
			
		||||
	# die Gegenseite angegeben hat!
 | 
			
		||||
	#
 | 
			
		||||
 | 
			
		||||
	# 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
 | 
			
		||||
 | 
			
		||||
[Channel]
 | 
			
		||||
 | 
			
		||||
	#
 | 
			
		||||
	# Mit [Channel]-Bloecken werden "persistente Channels" definiert,
 | 
			
		||||
	# die nach dem Start des Servers automatisch erzeugt werden und auch
 | 
			
		||||
	# dann erhalten bleiben, wenn keine User mehr im Channel sind. Es
 | 
			
		||||
	# koennen mehrere solcher Bloecke hier konfiguriert werden.
 | 
			
		||||
	# Gekennzeichnet werden solche Channels mit dem Mode "P", der ganz
 | 
			
		||||
	# normal gesetzt und geloescht werden kann.
 | 
			
		||||
	#
 | 
			
		||||
 | 
			
		||||
	# Name des Channels
 | 
			
		||||
	;Name = #TheName
 | 
			
		||||
 | 
			
		||||
	# Topic, das gesetzt werden soll
 | 
			
		||||
	;Topic = Ein tolles Topic
 | 
			
		||||
 | 
			
		||||
	# Channel-Modes
 | 
			
		||||
	;Modes = tn
 | 
			
		||||
 | 
			
		||||
# -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>
 | 
			
		||||
@@ -1,20 +1,30 @@
 | 
			
		||||
#
 | 
			
		||||
# ngIRCd -- The Next Generation IRC Daemon
 | 
			
		||||
# Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
 | 
			
		||||
# Copyright (c)2001-2012 Alexander Barton (alex@barton.de) and Contributors
 | 
			
		||||
#
 | 
			
		||||
# 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.5 2002/04/04 13:02:41 alex Exp $
 | 
			
		||||
# 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
 | 
			
		||||
 | 
			
		||||
EXTRA_DIST = $(man_MANS)
 | 
			
		||||
CLEANFILES = $(man_MANS)
 | 
			
		||||
 | 
			
		||||
EXTRA_DIST = $(TEMPLATE_MANS)
 | 
			
		||||
 | 
			
		||||
maintainer-clean-local:
 | 
			
		||||
	rm -f Makefile Makefile.in
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										52
									
								
								man/ngircd.8
									
									
									
									
									
								
							
							
						
						
									
										52
									
								
								man/ngircd.8
									
									
									
									
									
								
							@@ -1,52 +0,0 @@
 | 
			
		||||
.\"
 | 
			
		||||
.\" $Id: ngircd.8,v 1.4 2002/09/16 11:11:21 alex Exp $
 | 
			
		||||
.\"
 | 
			
		||||
.TH ngircd 8 "September 2002" ngircd "ngIRCd Manual"
 | 
			
		||||
.SH NAME
 | 
			
		||||
ngircd \- the next generation IRC daemon
 | 
			
		||||
.SH SYNOPSIS
 | 
			
		||||
.B ngircd [
 | 
			
		||||
.I Options
 | 
			
		||||
.B ]
 | 
			
		||||
.SH DESCRIPTION
 | 
			
		||||
.B ngircd
 | 
			
		||||
is a portable IRC daemon written from scratch. It is easy to configure,
 | 
			
		||||
supports server links (even with original ircds) and runs on hosts with
 | 
			
		||||
changing IP addresses (such as dial-in networks). Currently supported
 | 
			
		||||
platforms (tested versions) are: AIX (3.2.5), A/UX (3.0.1), FreeBSD
 | 
			
		||||
(4.5), HP-UX (10.20), IRIX (6.5), Linux (2.x), Mac OS X (10.x), NetBSD
 | 
			
		||||
(1.5.2/i386, 1.5.3/m68k), Solaris (2.5.1, 2.6), and Windows with Cygwin.
 | 
			
		||||
.SH OPTIONS
 | 
			
		||||
.IP --configtest
 | 
			
		||||
read, validate and display configuration; then exit.
 | 
			
		||||
.IP "-f file, --config file"
 | 
			
		||||
use
 | 
			
		||||
.I file
 | 
			
		||||
as configuration file.
 | 
			
		||||
.IP "-n, --nodaemon"
 | 
			
		||||
don't fork and don't detatch from controlling terminal.
 | 
			
		||||
.IP "-p, --passive"
 | 
			
		||||
disable automatic connections to other servers.
 | 
			
		||||
.IP --version
 | 
			
		||||
output version information and exit.
 | 
			
		||||
.IP --help
 | 
			
		||||
display brief help text and exit.
 | 
			
		||||
.SH FILES
 | 
			
		||||
.I /usr/local/etc/ngircd.conf
 | 
			
		||||
.RS
 | 
			
		||||
The system wide default configuration file.
 | 
			
		||||
.SH AUTHOR
 | 
			
		||||
Alexander Barton,
 | 
			
		||||
.UR mailto:alex@barton.de
 | 
			
		||||
alex@barton.de
 | 
			
		||||
.UE
 | 
			
		||||
.br
 | 
			
		||||
Homepage:
 | 
			
		||||
.UR http://arthur.ath.cx/~alex/ngircd/
 | 
			
		||||
http://arthur.ath.cx/~alex/ngircd/
 | 
			
		||||
.UE
 | 
			
		||||
.SH "SEE ALSO"
 | 
			
		||||
.BR ngircd.conf (5),
 | 
			
		||||
.BR ircd (8)
 | 
			
		||||
.\"
 | 
			
		||||
.\" -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-
 | 
			
		||||
@@ -1,26 +0,0 @@
 | 
			
		||||
.\"
 | 
			
		||||
.\" $Id: ngircd.conf.5,v 1.6 2002/09/16 11:11:21 alex Exp $
 | 
			
		||||
.\"
 | 
			
		||||
.TH ngircd.conf 5 "September 2002" ngircd "ngIRCd Manual"
 | 
			
		||||
.SH NAME
 | 
			
		||||
ngircd.conf \- configuration file of ngircd
 | 
			
		||||
.SH SYNOPSIS
 | 
			
		||||
.B /usr/local/etc/ngircd.conf
 | 
			
		||||
.SH DESCRIPTION
 | 
			
		||||
(coming soon, please have a look at the sample configuration
 | 
			
		||||
file "doc/sample-ngircd.conf" -- Thank you!)
 | 
			
		||||
.SH AUTHOR
 | 
			
		||||
Alexander Barton,
 | 
			
		||||
.UR mailto:alex@barton.de
 | 
			
		||||
alex@barton.de
 | 
			
		||||
.UE
 | 
			
		||||
.br
 | 
			
		||||
Homepage:
 | 
			
		||||
.UR http://arthur.ath.cx/~alex/ngircd/
 | 
			
		||||
http://arthur.ath.cx/~alex/ngircd/
 | 
			
		||||
.UE
 | 
			
		||||
.SH "SEE ALSO"
 | 
			
		||||
.BR ngircd (8)
 | 
			
		||||
.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
 | 
			
		||||
# 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.
 | 
			
		||||
# 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.
 | 
			
		||||
#
 | 
			
		||||
# $Id: Makefile.am,v 1.4 2002/09/09 10:00:15 alex Exp $
 | 
			
		||||
# $Id: Makefile.am,v 1.8 2008/02/26 22:04:15 fw Exp $
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
SUBDIRS = portab ngircd testsuite
 | 
			
		||||
SUBDIRS = portab tool ipaddr ngircd testsuite
 | 
			
		||||
 | 
			
		||||
maintainer-clean-local:
 | 
			
		||||
	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,65 +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.27 2002/09/07 18:06:29 alex Exp $
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
AUTOMAKE_OPTIONS = ../portab/ansi2knr
 | 
			
		||||
 | 
			
		||||
INCLUDES = -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-op.c irc-oper.c irc-server.c \
 | 
			
		||||
	irc-write.c lists.c log.c match.c parse.c resolve.c tool.c
 | 
			
		||||
 | 
			
		||||
ngircd_LDFLAGS = -L../portab
 | 
			
		||||
 | 
			
		||||
ngircd_LDADD = -lngportab
 | 
			
		||||
 | 
			
		||||
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-op.h irc-oper.h irc-server.h \
 | 
			
		||||
	irc-write.h lists.h log.h match.h parse.h resolve.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 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
 | 
			
		||||
 | 
			
		||||
lint:
 | 
			
		||||
	rm -f lint.out
 | 
			
		||||
	for f in *.c; do \
 | 
			
		||||
	 echo "checking $$f ..."; \
 | 
			
		||||
	 splint $$f $(LINTARGS) -I./.. -I./../portab $(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- */
 | 
			
		||||
							
								
								
									
										1257
									
								
								src/ngircd/channel.c
									
									
									
									
									
								
							
							
						
						
									
										1257
									
								
								src/ngircd/channel.c
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -1,35 +1,46 @@
 | 
			
		||||
/*
 | 
			
		||||
 * 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
 | 
			
		||||
 * 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: channel.h,v 1.21 2002/09/03 23:57:57 alex Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * channel.h: Management der Channels (Header)
 | 
			
		||||
 * 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 __channel_h__
 | 
			
		||||
#define __channel_h__
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file
 | 
			
		||||
 * Channel management (header)
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#if defined(__channel_c__) | defined(S_SPLINT_S)
 | 
			
		||||
#if defined(__channel_c__)
 | 
			
		||||
 | 
			
		||||
#include "lists.h"
 | 
			
		||||
#include "defines.h"
 | 
			
		||||
#include "array.h"
 | 
			
		||||
 | 
			
		||||
typedef struct _CHANNEL
 | 
			
		||||
{
 | 
			
		||||
	struct _CHANNEL *next;
 | 
			
		||||
	CHAR name[CHANNEL_NAME_LEN];	/* Name des Channel */
 | 
			
		||||
	UINT32 hash;			/* Hash ueber (kleingeschrieben) Namen */
 | 
			
		||||
	CHAR modes[CHANNEL_MODE_LEN];	/* Channel-Modes */
 | 
			
		||||
	CHAR topic[CHANNEL_TOPIC_LEN];	/* Topic des Channels */
 | 
			
		||||
	char name[CHANNEL_NAME_LEN];	/* Name of the channel */
 | 
			
		||||
	UINT32 hash;			/* Hash of the (lowecase!) name */
 | 
			
		||||
	char modes[CHANNEL_MODE_LEN];	/* Channel modes */
 | 
			
		||||
	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;
 | 
			
		||||
 | 
			
		||||
typedef struct _CLIENT2CHAN
 | 
			
		||||
@@ -37,7 +48,7 @@ typedef struct _CLIENT2CHAN
 | 
			
		||||
	struct _CLIENT2CHAN *next;
 | 
			
		||||
	CLIENT *client;
 | 
			
		||||
	CHANNEL *channel;
 | 
			
		||||
	CHAR modes[CHANNEL_MODE_LEN];	/* User-Modes in dem Channel */
 | 
			
		||||
	char modes[CHANNEL_MODE_LEN];	/* User-Modes in Channel */
 | 
			
		||||
} CL2CHAN;
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
@@ -47,58 +58,96 @@ typedef POINTER CL2CHAN;
 | 
			
		||||
 | 
			
		||||
#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 PARAMS((VOID ));
 | 
			
		||||
GLOBAL VOID Channel_InitPredefined PARAMS(( VOID ));
 | 
			
		||||
GLOBAL VOID Channel_Exit PARAMS((VOID ));
 | 
			
		||||
GLOBAL void Channel_Init PARAMS(( void ));
 | 
			
		||||
GLOBAL void Channel_InitPredefined PARAMS((  void ));
 | 
			
		||||
GLOBAL void Channel_Exit PARAMS(( void ));
 | 
			
		||||
 | 
			
		||||
GLOBAL BOOLEAN Channel_Join PARAMS((CLIENT *Client, CHAR *Name ));
 | 
			
		||||
GLOBAL BOOLEAN Channel_Part PARAMS((CLIENT *Client, CLIENT *Origin, CHAR *Name, CHAR *Reason ));
 | 
			
		||||
GLOBAL bool Channel_Join PARAMS(( CLIENT *Client, const char *Name ));
 | 
			
		||||
GLOBAL bool Channel_Part PARAMS(( CLIENT *Client, CLIENT *Origin, const char *Name, const char *Reason ));
 | 
			
		||||
 | 
			
		||||
GLOBAL VOID Channel_Quit PARAMS((CLIENT *Client, CHAR *Reason ));
 | 
			
		||||
GLOBAL void Channel_Quit PARAMS(( CLIENT *Client, const char *Reason ));
 | 
			
		||||
 | 
			
		||||
GLOBAL VOID Channel_Kick PARAMS(( CLIENT *Client, CLIENT *Origin, CHAR *Name, CHAR *Reason ));
 | 
			
		||||
GLOBAL void Channel_Kick PARAMS((CLIENT *Peer, CLIENT *Target, CLIENT *Origin,
 | 
			
		||||
				 const char *Name, const char *Reason));
 | 
			
		||||
 | 
			
		||||
GLOBAL INT Channel_Count PARAMS((VOID ));
 | 
			
		||||
GLOBAL INT Channel_MemberCount PARAMS((CHANNEL *Chan ));
 | 
			
		||||
GLOBAL unsigned long Channel_CountVisible PARAMS((CLIENT *Client));
 | 
			
		||||
GLOBAL unsigned long Channel_MemberCount PARAMS(( CHANNEL *Chan ));
 | 
			
		||||
GLOBAL int Channel_CountForUser PARAMS(( CLIENT *Client ));
 | 
			
		||||
 | 
			
		||||
GLOBAL CHAR *Channel_Name PARAMS((CHANNEL *Chan ));
 | 
			
		||||
GLOBAL CHAR *Channel_Modes PARAMS((CHANNEL *Chan ));
 | 
			
		||||
GLOBAL CHAR *Channel_Topic PARAMS((CHANNEL *Chan ));
 | 
			
		||||
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 VOID Channel_SetTopic PARAMS((CHANNEL *Chan, CHAR *Topic ));
 | 
			
		||||
GLOBAL VOID Channel_SetModes PARAMS((CHANNEL *Chan, CHAR *Modes ));
 | 
			
		||||
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_Search PARAMS((CHAR *Name ));
 | 
			
		||||
GLOBAL CHANNEL *Channel_Search PARAMS(( const char *Name ));
 | 
			
		||||
 | 
			
		||||
GLOBAL CHANNEL *Channel_First PARAMS((VOID ));
 | 
			
		||||
GLOBAL CHANNEL *Channel_Next PARAMS((CHANNEL *Chan ));
 | 
			
		||||
GLOBAL CHANNEL *Channel_First PARAMS(( void ));
 | 
			
		||||
GLOBAL CHANNEL *Channel_Next PARAMS(( CHANNEL *Chan ));
 | 
			
		||||
 | 
			
		||||
GLOBAL CL2CHAN *Channel_FirstMember PARAMS((CHANNEL *Chan ));
 | 
			
		||||
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 CL2CHAN *Channel_FirstMember PARAMS(( CHANNEL *Chan ));
 | 
			
		||||
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 CLIENT *Channel_GetClient PARAMS((CL2CHAN *Cl2Chan ));
 | 
			
		||||
GLOBAL CHANNEL *Channel_GetChannel PARAMS((CL2CHAN *Cl2Chan ));
 | 
			
		||||
GLOBAL CLIENT *Channel_GetClient PARAMS(( CL2CHAN *Cl2Chan ));
 | 
			
		||||
GLOBAL CHANNEL *Channel_GetChannel PARAMS(( CL2CHAN *Cl2Chan ));
 | 
			
		||||
 | 
			
		||||
GLOBAL BOOLEAN Channel_IsValidName PARAMS((CHAR *Name ));
 | 
			
		||||
GLOBAL bool Channel_IsValidName PARAMS(( const char *Name ));
 | 
			
		||||
 | 
			
		||||
GLOBAL BOOLEAN Channel_ModeAdd PARAMS((CHANNEL *Chan, CHAR Mode ));
 | 
			
		||||
GLOBAL BOOLEAN Channel_ModeDel PARAMS((CHANNEL *Chan, CHAR Mode ));
 | 
			
		||||
GLOBAL bool Channel_ModeAdd PARAMS(( CHANNEL *Chan, char Mode ));
 | 
			
		||||
GLOBAL bool Channel_ModeDel PARAMS(( CHANNEL *Chan, char Mode ));
 | 
			
		||||
GLOBAL bool Channel_HasMode PARAMS(( CHANNEL *Chan, char Mode ));
 | 
			
		||||
GLOBAL char *Channel_Modes PARAMS(( CHANNEL *Chan ));
 | 
			
		||||
 | 
			
		||||
GLOBAL BOOLEAN Channel_UserModeAdd PARAMS((CHANNEL *Chan, CLIENT *Client, CHAR Mode ));
 | 
			
		||||
GLOBAL BOOLEAN Channel_UserModeDel PARAMS((CHANNEL *Chan, CLIENT *Client, CHAR Mode ));
 | 
			
		||||
GLOBAL CHAR *Channel_UserModes PARAMS((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_IsMemberOf PARAMS((CHANNEL *Chan, CLIENT *Client ));
 | 
			
		||||
GLOBAL bool Channel_IsMemberOf PARAMS(( CHANNEL *Chan, CLIENT *Client ));
 | 
			
		||||
 | 
			
		||||
GLOBAL BOOLEAN Channel_Write PARAMS((CHANNEL *Chan, CLIENT *From, CLIENT *Client, CHAR *Text ));
 | 
			
		||||
GLOBAL bool Channel_Write PARAMS((CHANNEL *Chan, CLIENT *From, CLIENT *Client,
 | 
			
		||||
				  const char *Command, bool SendErrors,
 | 
			
		||||
				  const char *Text));
 | 
			
		||||
 | 
			
		||||
GLOBAL CHANNEL *Channel_Create PARAMS((CHAR *Name ));
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* -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
 | 
			
		||||
							
								
								
									
										1577
									
								
								src/ngircd/client.c
									
									
									
									
									
								
							
							
						
						
									
										1577
									
								
								src/ngircd/client.c
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -1,60 +1,68 @@
 | 
			
		||||
/*
 | 
			
		||||
 * 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
 | 
			
		||||
 * 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: client.h,v 1.29 2002/09/03 18:54:31 alex Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * client.h: Konfiguration des ngircd (Header)
 | 
			
		||||
 * 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_h__
 | 
			
		||||
#define __client_h__
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file
 | 
			
		||||
 * Client management (header)
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
typedef enum
 | 
			
		||||
{
 | 
			
		||||
	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;
 | 
			
		||||
#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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#if defined(__client_c__) | defined(S_SPLINT_S)
 | 
			
		||||
#define CLIENT_TYPE int
 | 
			
		||||
 | 
			
		||||
#include "defines.h"
 | 
			
		||||
 | 
			
		||||
#if defined(__client_c__) | defined(__client_cap_c__)
 | 
			
		||||
 | 
			
		||||
typedef struct _CLIENT
 | 
			
		||||
{
 | 
			
		||||
	CHAR id[CLIENT_ID_LEN];		/* Nick (User) bzw. ID (Server) */
 | 
			
		||||
	UINT32 hash;			/* Hash ueber die (kleingeschriebene) ID */
 | 
			
		||||
	POINTER *next;			/* Zeiger auf naechste Client-Struktur */
 | 
			
		||||
	CLIENT_TYPE type;		/* Typ des Client, vgl. CLIENT_TYPE */
 | 
			
		||||
	CONN_ID conn_id;		/* ID der Connection (wenn lokal) bzw. NONE (remote) */
 | 
			
		||||
	struct _CLIENT *introducer;	/* ID des Servers, der die Verbindung hat */
 | 
			
		||||
	struct _CLIENT *topserver;	/* Toplevel-Servers (nur gueltig, wenn Client ein Server ist) */
 | 
			
		||||
	CHAR pwd[CLIENT_PASS_LEN];	/* Passwort, welches der Client angegeben hat */
 | 
			
		||||
	CHAR host[CLIENT_HOST_LEN];	/* Hostname des Client */
 | 
			
		||||
	CHAR user[CLIENT_USER_LEN];	/* Benutzername ("Login") */
 | 
			
		||||
	CHAR info[CLIENT_INFO_LEN];	/* Langer Benutzername (User) bzw. Infotext (Server) */
 | 
			
		||||
	CHAR modes[CLIENT_MODE_LEN];	/* Client Modes */
 | 
			
		||||
	INT hops, token, mytoken;	/* "Hops" und "Token" (-> SERVER-Befehl) */
 | 
			
		||||
	BOOLEAN oper_by_me;		/* IRC-Operator-Status durch diesen Server? */
 | 
			
		||||
	CHAR away[CLIENT_AWAY_LEN];	/* AWAY-Text, wenn Mode 'a' gesetzt */
 | 
			
		||||
	CHAR flags[CLIENT_FLAGS_LEN];	/* Flags des Client (aktuell nur bei Servern) */
 | 
			
		||||
	time_t starttime;		/* Start time of link */
 | 
			
		||||
	char id[CLIENT_ID_LEN];		/* nick (user) / ID (server) */
 | 
			
		||||
	UINT32 hash;			/* hash of lower-case ID */
 | 
			
		||||
	POINTER *next;			/* pointer to next client structure */
 | 
			
		||||
	CLIENT_TYPE type;		/* type of client, see CLIENT_xxx */
 | 
			
		||||
	CONN_ID conn_id;		/* ID of the connection (if local) or NONE (remote) */
 | 
			
		||||
	struct _CLIENT *introducer;	/* ID of the servers which the client is connected to */
 | 
			
		||||
	struct _CLIENT *topserver;	/* toplevel servers (only valid if client is a server) */
 | 
			
		||||
	char host[CLIENT_HOST_LEN];	/* hostname of the client */
 | 
			
		||||
	char *cloaked;			/* cloaked hostname of the client */
 | 
			
		||||
	char *ipa_text;			/* textual representaton of IP address */
 | 
			
		||||
	char user[CLIENT_USER_LEN];	/* user name ("login") */
 | 
			
		||||
#if defined(PAM)
 | 
			
		||||
	char orig_user[CLIENT_AUTHUSER_LEN];
 | 
			
		||||
					/* 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;
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
@@ -64,79 +72,118 @@ typedef POINTER CLIENT;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
GLOBAL VOID Client_Init PARAMS((VOID ));
 | 
			
		||||
GLOBAL VOID Client_Exit PARAMS((VOID ));
 | 
			
		||||
typedef struct _WHOWAS
 | 
			
		||||
{
 | 
			
		||||
	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 PARAMS((CONN_ID Idx, CHAR *Hostname, INT Type, BOOLEAN Idented ));
 | 
			
		||||
GLOBAL CLIENT *Client_NewRemoteServer PARAMS((CLIENT *Introducer, CHAR *Hostname, CLIENT *TopServer, INT Hops, INT Token, CHAR *Info, BOOLEAN Idented ));
 | 
			
		||||
GLOBAL CLIENT *Client_NewRemoteUser PARAMS((CLIENT *Introducer, CHAR *Nick, INT Hops, CHAR *User, CHAR *Hostname, INT Token, CHAR *Modes, CHAR *Info, BOOLEAN Idented ));
 | 
			
		||||
GLOBAL CLIENT *Client_New PARAMS((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 PARAMS((CLIENT *Client, CHAR *LogMsg, CHAR *FwdMsg, BOOLEAN SendQuit ));
 | 
			
		||||
GLOBAL void Client_Init PARAMS(( void ));
 | 
			
		||||
GLOBAL void Client_Exit PARAMS(( void ));
 | 
			
		||||
 | 
			
		||||
GLOBAL CLIENT *Client_ThisServer PARAMS((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 PARAMS((CONN_ID Idx ));
 | 
			
		||||
GLOBAL CLIENT *Client_GetFromToken PARAMS((CLIENT *Client, INT Token ));
 | 
			
		||||
GLOBAL void Client_Destroy PARAMS(( CLIENT *Client, const char *LogMsg, const char *FwdMsg, bool SendQuit ));
 | 
			
		||||
 | 
			
		||||
GLOBAL CLIENT *Client_Search PARAMS((CHAR *ID ));
 | 
			
		||||
GLOBAL CLIENT *Client_First PARAMS((VOID ));
 | 
			
		||||
GLOBAL CLIENT *Client_Next PARAMS((CLIENT *c ));
 | 
			
		||||
GLOBAL CLIENT *Client_ThisServer PARAMS(( void ));
 | 
			
		||||
 | 
			
		||||
GLOBAL INT Client_Type PARAMS((CLIENT *Client ));
 | 
			
		||||
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_Info PARAMS((CLIENT *Client ));
 | 
			
		||||
GLOBAL CHAR *Client_User PARAMS((CLIENT *Client ));
 | 
			
		||||
GLOBAL CHAR *Client_Hostname PARAMS((CLIENT *Client ));
 | 
			
		||||
GLOBAL CHAR *Client_Password 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 BOOLEAN Client_OperByMe 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 CLIENT *Client_GetFromToken PARAMS(( CLIENT *Client, int Token ));
 | 
			
		||||
 | 
			
		||||
GLOBAL BOOLEAN Client_HasMode PARAMS((CLIENT *Client, CHAR Mode ));
 | 
			
		||||
GLOBAL bool Client_Announce PARAMS(( CLIENT *Client, CLIENT *Prefix, CLIENT *User ));
 | 
			
		||||
 | 
			
		||||
GLOBAL VOID Client_SetHostname PARAMS((CLIENT *Client, CHAR *Hostname ));
 | 
			
		||||
GLOBAL VOID Client_SetID PARAMS((CLIENT *Client, CHAR *Nick ));
 | 
			
		||||
GLOBAL VOID Client_SetUser PARAMS((CLIENT *Client, CHAR *User, BOOLEAN Idented ));
 | 
			
		||||
GLOBAL VOID Client_SetInfo PARAMS((CLIENT *Client, CHAR *Info ));
 | 
			
		||||
GLOBAL VOID Client_SetPassword PARAMS((CLIENT *Client, CHAR *Pwd ));
 | 
			
		||||
GLOBAL VOID Client_SetType PARAMS((CLIENT *Client, INT Type ));
 | 
			
		||||
GLOBAL VOID Client_SetHops PARAMS((CLIENT *Client, INT Hops ));
 | 
			
		||||
GLOBAL VOID Client_SetToken PARAMS((CLIENT *Client, INT Token ));
 | 
			
		||||
GLOBAL VOID Client_SetOperByMe PARAMS((CLIENT *Client, BOOLEAN OperByMe ));
 | 
			
		||||
GLOBAL VOID Client_SetModes PARAMS((CLIENT *Client, CHAR *Modes ));
 | 
			
		||||
GLOBAL VOID Client_SetFlags PARAMS((CLIENT *Client, CHAR *Flags ));
 | 
			
		||||
GLOBAL VOID Client_SetIntroducer PARAMS((CLIENT *Client, CLIENT *Introducer ));
 | 
			
		||||
GLOBAL VOID Client_SetAway PARAMS((CLIENT *Client, CHAR *Txt ));
 | 
			
		||||
GLOBAL CLIENT *Client_Search PARAMS(( const char *ID ));
 | 
			
		||||
GLOBAL CLIENT *Client_SearchServer PARAMS(( const char *ID ));
 | 
			
		||||
GLOBAL CLIENT *Client_First PARAMS(( void ));
 | 
			
		||||
GLOBAL CLIENT *Client_Next PARAMS(( CLIENT *c ));
 | 
			
		||||
 | 
			
		||||
GLOBAL BOOLEAN Client_ModeAdd PARAMS((CLIENT *Client, CHAR Mode ));
 | 
			
		||||
GLOBAL BOOLEAN Client_ModeDel PARAMS((CLIENT *Client, CHAR Mode ));
 | 
			
		||||
GLOBAL int Client_Type PARAMS(( CLIENT *Client ));
 | 
			
		||||
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 PARAMS((CLIENT *Client, CHAR *Nick ));
 | 
			
		||||
GLOBAL BOOLEAN Client_CheckID PARAMS((CLIENT *Client, CHAR *ID ));
 | 
			
		||||
GLOBAL bool Client_HasMode PARAMS(( CLIENT *Client, char Mode ));
 | 
			
		||||
GLOBAL bool Client_HasFlag PARAMS(( CLIENT *Client, char Flag ));
 | 
			
		||||
 | 
			
		||||
GLOBAL INT Client_UserCount PARAMS((VOID ));
 | 
			
		||||
GLOBAL INT Client_ServiceCount PARAMS((VOID ));
 | 
			
		||||
GLOBAL INT Client_ServerCount PARAMS((VOID ));
 | 
			
		||||
GLOBAL INT Client_OperCount PARAMS((VOID ));
 | 
			
		||||
GLOBAL INT Client_UnknownCount PARAMS((VOID ));
 | 
			
		||||
GLOBAL INT Client_MyUserCount PARAMS((VOID ));
 | 
			
		||||
GLOBAL INT Client_MyServiceCount PARAMS((VOID ));
 | 
			
		||||
GLOBAL INT Client_MyServerCount PARAMS((VOID ));
 | 
			
		||||
GLOBAL void Client_SetHostname PARAMS(( CLIENT *Client, const char *Hostname ));
 | 
			
		||||
GLOBAL void Client_SetIPAText PARAMS(( CLIENT *Client, const char *IPAText ));
 | 
			
		||||
GLOBAL void Client_SetID PARAMS(( CLIENT *Client, const char *Nick ));
 | 
			
		||||
GLOBAL void Client_SetUser PARAMS(( CLIENT *Client, const char *User, bool Idented ));
 | 
			
		||||
GLOBAL void Client_SetOrigUser PARAMS(( CLIENT *Client, const char *User ));
 | 
			
		||||
GLOBAL void Client_SetInfo PARAMS(( CLIENT *Client, const char *Info ));
 | 
			
		||||
GLOBAL void Client_SetType PARAMS(( CLIENT *Client, int Type ));
 | 
			
		||||
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 PARAMS((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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* -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- */
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user