Compare commits
1323 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f5f78ca725 | |||
| e881a256f4 | |||
| 5171e9e08a | |||
| 2b2f767ca5 | |||
| c4a8e970d3 | |||
| 4e32d3a5dc | |||
| ccaa0f444b | |||
| c2420f2eee | |||
| eb4eb7a8c6 | |||
| b15292c980 | |||
| 37f6ff3a10 | |||
| 7689d54b8e | |||
| 0171967e18 | |||
| db82fc23b5 | |||
| 39562944c3 | |||
| 28af208a1b | |||
| 3b52789751 | |||
| 3d564a403f | |||
| 26dff4eeba | |||
| 38588ba0b5 | |||
| 07adb99680 | |||
| 89caaab24c | |||
| 573328e4e1 | |||
| 19c649fb90 | |||
| 923624c784 | |||
| 44be34875f | |||
| 1612ed7411 | |||
| e872aa28a9 | |||
| abea394dc6 | |||
| 528d82b219 | |||
| 6d9cef9f03 | |||
| eb38fa93a3 | |||
| d7889e777e | |||
| fd638b155b | |||
| 503bf841fb | |||
| 69647bba3b | |||
| b4bfa43e5b | |||
| 67059bd3ae | |||
| eb038e2938 | |||
| 1780862cfc | |||
| 9d26bac09f | |||
| 0d2753331a | |||
| dcd9969537 | |||
| 5eea2a9daf | |||
| 893f67668f | |||
| e43ac717cd | |||
| 9fdf9cd9e9 | |||
| e57336c9c7 | |||
| 28b8a0ef9b | |||
| 0a7e518e6f | |||
| 62b2de07a7 | |||
| 535aa4456a | |||
| abedc78b8b | |||
| 197378a364 | |||
| c980e53fad | |||
| e9123b12db | |||
| 4f18b48a57 | |||
| 6bb18c87e5 | |||
| ca70706ad6 | |||
| f6a3b1f399 | |||
| 1a1a4ebd65 | |||
| aed84e3bf0 | |||
| 706c911fc3 | |||
| 621793b491 | |||
| 0693a8dd27 | |||
| 5e14382326 | |||
| 4b8042603a | |||
| ab9db56291 | |||
| 2a595d3a87 | |||
| 670c9ee653 | |||
| c83f79a44a | |||
| e2ef04d112 | |||
| 327f15d17c | |||
| 0b01bc3852 | |||
| 2c6726c95d | |||
| 053cbcaae4 | |||
| f8756691a5 | |||
| 2a55293bcc | |||
| 2d21f6055d | |||
| afebe1568a | |||
| be48165fb6 | |||
| b960288402 | |||
| cad8d53264 | |||
| 44a48a2dc0 | |||
| cca85ebe57 | |||
| 8e2cc100ce | |||
| d11cc14a12 | |||
| 29b7ea7ee8 | |||
| 9c49d0d3b1 | |||
| 8382e074e1 | |||
| 49cf99c68a | |||
| a5e31d042d | |||
| 56fee9b881 | |||
| a5d191e5ac | |||
| b9d034d6bd | |||
| 9a97f7e249 | |||
| d537da4058 | |||
| 58d81ad35f | |||
| 6e17ab11f1 | |||
| 0f2be18a1f | |||
| 22d5b9bee8 | |||
| 6b10bee66d | |||
| 493697bbdf | |||
| 66d3c85d23 | |||
| 3f9849b5fd | |||
| 85ce15ddf7 | |||
| 7a9b14634b | |||
| 6b9b8a6da9 | |||
| 7193f9615f | |||
| e516af9535 | |||
| 9fc7398b87 | |||
| 4e2a05f99a | |||
| 8b6e1d7166 | |||
| 19c8f1b7dc | |||
| 74d080b3fc | |||
| 6bad7c8dfa | |||
| a274714cfa | |||
| 79b4805745 | |||
| a05ec38409 | |||
| f9a92827ae | |||
| 2ac54ecc8b | |||
| f331b6919e | |||
| 8bfbd374c3 | |||
| 3c9327788e | |||
| 029c43afd1 | |||
| 3b5b9db44f | |||
| d24030d129 | |||
| 3c633f425b | |||
| 0d1a1e42d0 | |||
| b571a80006 | |||
| e38b645d11 | |||
| 8d3f493976 | |||
| 1e438f3560 | |||
| ee9f9d9af0 | |||
| a19ea15bd6 | |||
| 4ece596b39 | |||
| 09c6afc43e | |||
| 5c86649f70 | |||
| 82ae1cbf63 | |||
| 6a7e82d048 | |||
| 3a815c775f | |||
| 87b4e4e268 | |||
| 43e77f77bf | |||
| 614e22400a | |||
| e04c12a2ea | |||
| e4eec40d91 | |||
| 1e1e1cdbb6 | |||
| aa98a583be | |||
| 0385ce8152 | |||
| 5cd4cb01f8 | |||
| 2386f8d835 | |||
| 37e54912c3 | |||
| e7695b3920 | |||
| d365f0d165 | |||
| d8ba78a6c1 | |||
| 08caa076ed | |||
| d26b59a9e2 | |||
| a8f79f88db | |||
| d5b5fa710c | |||
| f24eba8c0d | |||
| 823e638f0c | |||
| 461d65148b | |||
| ceb76ae6da | |||
| 85a0944914 | |||
| 9417c9af8e | |||
| 816b24afa5 | |||
| e7a8ad621e | |||
| 07c95cff3f | |||
| f8697288ec | |||
| effda4c445 | |||
| 769a2e42e3 | |||
| 27c1195bac | |||
| ffdf227cbc | |||
| 145cc3f7d3 | |||
| 5b6c60798e | |||
| 4fc33756f4 | |||
| 8e4abdfd2a | |||
| 4ee2331d5c | |||
| 44443c260c | |||
| 9c41b1d76d | |||
| 041f0f910f | |||
| 0e2ac061b8 | |||
| f766d70414 | |||
| 8665f36abc | |||
| 62939b2033 | |||
| ec7b2bc247 | |||
| b1714abad9 | |||
| 74bad8673a | |||
| 667d52199d | |||
| 409f1a95ab | |||
| ce54560b19 | |||
| 21d6293f4c | |||
| fb4525ab19 | |||
| c64debf500 | |||
| 871948d23a | |||
| 90d9c1df8c | |||
| e158540a37 | |||
| decae969ee | |||
| bdeda461ed | |||
| 9e3151a79e | |||
| d8eb70490a | |||
| 9a089dd8bf | |||
| 3b4fe7b347 | |||
| a4c2faf453 | |||
| c1edf8265f | |||
| 87296d9c89 | |||
| a6d3abb12f | |||
| 7ce43de8f7 | |||
| 739139d71e | |||
| 8c39ccec5e | |||
| 082c2bfb1c | |||
| 1af13d4588 | |||
| 30039008df | |||
| a2e17ca2fe | |||
| ff8bc65911 | |||
| 943436a1de | |||
| 64962b0ce7 | |||
| e1167a2b2e | |||
| b0536af4e9 | |||
| af87d2c18b | |||
| 5067013a80 | |||
| d7baf33ec3 | |||
| e3a23bdbd1 | |||
| ed9ead415c | |||
| 664f148366 | |||
| 9861da3f1e | |||
| 3d8f9eea24 | |||
| 16d16095c7 | |||
| 9317a83683 | |||
| 7a5cd21953 | |||
| ae2b0cdf8b | |||
| d4af2c0207 | |||
| 887f71760c | |||
| 682d1f26f8 | |||
| bd3d626cdb | |||
| 72512f54db | |||
| 5132528ca4 | |||
| 96b14ad6c5 | |||
| 2ca9d3d6d7 | |||
| b919813837 | |||
| ce8eec12ab | |||
| c50086fc3c | |||
| 1686954b28 | |||
| aeb3aad5fe | |||
| 6e98479aae | |||
| 9d88337a9b | |||
| 37f97c5b49 | |||
| 699f22a0fb | |||
| 023032c213 | |||
| c0bb81d1ca | |||
| e102ce8603 | |||
| 4756c12519 | |||
| fa37709af6 | |||
| ae4eb55dac | |||
| 8d0bcef963 | |||
| a424c8063a | |||
| 7b515e04a5 | |||
| c5c3b2081d | |||
| 9378291b21 | |||
| acf66442e8 | |||
| c4d4754511 | |||
| 3fa29a16e5 | |||
| 9406e963de | |||
| 26f91d1c7e | |||
| 83c0a3738d | |||
| 5393853cac | |||
| 43b56373c4 | |||
| e6df04d821 | |||
| 1b285c492f | |||
| 202a064904 | |||
| 42cbdce0bd | |||
| 52dbb6c0dc | |||
| c53bee2244 | |||
| a4b63af2e1 | |||
| 9b6a674d9c | |||
| 748c2830c0 | |||
| b66d4a8b0d | |||
| 8de27cef2a | |||
| 40f7f0b104 | |||
| c8c5ff9571 | |||
| ae3ac9012d | |||
| 7de9d2d6a6 | |||
| 351a8b48ec | |||
| 29ad0e8ff0 | |||
| 3c7ce7454d | |||
| 519a8f893e | |||
| ce66aaad96 | |||
| 1b5e8d03c2 | |||
| dc1a1f4be0 | |||
| c6e8b4b28b | |||
| 510a8fb9c2 | |||
| bd1a3ecf55 | |||
| 463aa1532c | |||
| 962be3514c | |||
| ab60bb826c | |||
| fd558d0675 | |||
| 409d1f248a | |||
| 295a4468f7 | |||
| 6b9a544188 | |||
| 4d24208f23 | |||
| 883d888620 | |||
| 9e0b621890 | |||
| 3bb6eb48bb | |||
| 137df47190 | |||
| c2d74a527a | |||
| ad3de916c8 | |||
| 2a921e28a7 | |||
| cfd4e898d8 | |||
| 41246edb24 | |||
| 615936938b | |||
| dd7b98a4c2 | |||
| 55becdc356 | |||
| 80c9185de9 | |||
| 33c6693da0 | |||
| 477df429d3 | |||
| 0a5b46f054 | |||
| 50d86c6013 | |||
| b22821ec55 | |||
| f585e79a0b | |||
| 8d2bbbab95 | |||
| 62a39b24d7 | |||
| 29a0ae1871 | |||
| f3e02b9ada | |||
| 63b3220971 | |||
| e9f47d1271 | |||
| d3aef18d3e | |||
| e01cf0f3f4 | |||
| 9f19792b95 | |||
| ad7a03644c | |||
| b3ec92858a | |||
| 2fe7e4986f | |||
| af397fa6c2 | |||
| c36797d8f1 | |||
| 514a1026eb | |||
| 189242d07c | |||
| e6fd53f363 | |||
| 5795f3c489 | |||
| 0053fe0b8a | |||
| e959419e4a | |||
| 52fd41449e | |||
| 6d3b664922 | |||
| 5357d536a1 | |||
| 89ac1c8723 | |||
| 09e4767c45 | |||
| c2e3552039 | |||
| f2bd92c9ad | |||
| de306fc395 | |||
| 7680ec834a | |||
| a499f98271 | |||
| dfb1942aba | |||
| 91c6e584e6 | |||
| 794500dbc5 | |||
| 2c9232113e | |||
| d276e9a197 | |||
| 16e06cb6a0 | |||
| e03c23820a | |||
| 95d1575c54 | |||
| 2fe33658f3 | |||
| 724f829a0e | |||
| 0246583fe1 | |||
| e604a72114 | |||
| 740084b6d9 | |||
| df21d67573 | |||
| a3e375745c | |||
| d30a4f619c | |||
| 3b0d162573 | |||
| 3aa24503f5 | |||
| 3e656cf43e | |||
| 793a447df1 | |||
| c88e6392c0 | |||
| 412b6fdec3 | |||
| 9952f21f5b | |||
| 2f9a35ed6f | |||
| 6eb059436b | |||
| c85f59cfe3 | |||
| 432f632839 | |||
| d2ea4937ed | |||
| 6cf10d76c9 | |||
| 323f7f67be | |||
| 776fa42cf7 | |||
| 12eabdba06 | |||
| 266b0bb33f | |||
| 432b8296f4 | |||
| 82f62f84be | |||
| 5ceda9a5ac | |||
| 7f62aab7d3 | |||
| cc4596cf7e | |||
| d269e1a8a1 | |||
| a46aa2a4bb | |||
| 5b7168d1e1 | |||
| 82c52cb2a9 | |||
| de215877c1 | |||
| ee1c51020b | |||
| f40ec73cbb | |||
| aa5ee8b79f | |||
| e28fe9d777 | |||
| 00ed3759bb | |||
| ca95bdbbed | |||
| 63170bd946 | |||
| 0abf279a66 | |||
| a0538911d4 | |||
| 901bcc8a41 | |||
| fe9735bd4e | |||
| 3196657cd4 | |||
| b18a357202 | |||
| 49030ee0dd | |||
| f5fa79afac | |||
| 78520f8cd0 | |||
| 8db346ed62 | |||
| 29b19f988b | |||
| 8e4f620f7d | |||
| 8f28d5f0d5 | |||
| 2186d042ca | |||
| 5dfe97a9c6 | |||
| 3aebacf774 | |||
| 26a828bf41 | |||
| fecfd72417 | |||
| d9941457ad | |||
| 6ba33745e2 | |||
| e889beec33 | |||
| d043dc3187 | |||
| 63a3ef308d | |||
| 870119644d | |||
| 66235b4610 | |||
| a3b000358e | |||
| ddcdba2e86 | |||
| ad0e3539da | |||
| 66638d66c4 | |||
| 5e482c1059 | |||
| 740eac2273 | |||
| 595f52c11c | |||
| 4ba5ad7885 | |||
| 40f3c69ed5 | |||
| b872ad1912 | |||
| 0b46646765 | |||
| 7cd4856373 | |||
| 68eb489f36 | |||
| bacf06d3eb | |||
| 886549cf13 | |||
| 97a11dbea9 | |||
| b8b748a940 | |||
| 5b66562e97 | |||
| 57bee58436 | |||
| 52cd1f5d03 | |||
| 08f25ead4e | |||
| 4a81ab873d | |||
| 37f47c0980 | |||
| dd8b77b9ec | |||
| 35655afdea | |||
| 2cf513ae54 | |||
| f8f8d25f59 | |||
| 7b9c24590a | |||
| 23609410e1 | |||
| 737f07a9fe | |||
| ffe3bb5cba | |||
| b2dbb8d42e | |||
| a7f0efe61f | |||
| d46957d5d6 | |||
| f74c738cdf | |||
| 4cc7b2eb68 | |||
| 9b85197ec2 | |||
| ab3adfc4ce | |||
| 767acc2d61 | |||
| 4481b8565e | |||
| 581ecab7f8 | |||
| b3a6a5d8bc | |||
| c5c6be51ce | |||
| 39844754a5 | |||
| 0ce4be7780 | |||
| e72d0ff6a5 | |||
| 9d9b27fbcb | |||
| 6f7214ba2a | |||
| 0c6e023e07 | |||
| 2da8a5fd52 | |||
| 746f5b8420 | |||
| d9eea90de4 | |||
| aa7a1485d0 | |||
| 7d55e31da0 | |||
| 49ad7cb797 | |||
| a245aa8369 | |||
| 25041b0074 | |||
| 82af929628 | |||
| 94a9919ff2 | |||
| d33d0292e2 | |||
| bbf83caae0 | |||
| 43dbfc5707 | |||
| 27dd306e33 | |||
| bcf384f074 | |||
| b75e14a07d | |||
| 689c63f382 | |||
| 2b343609ee | |||
| 7b393920b5 | |||
| 0c5f482cae | |||
| 7565597137 | |||
| c402f50c43 | |||
| 18479eb145 | |||
| 8c6bce17a3 | |||
| 5f306b09f0 | |||
| 452d931de2 | |||
| 7cc288c293 | |||
| 60b5126fea | |||
| 312c90fb02 | |||
| 7dfcb698c4 | |||
| 183ac0af7d | |||
| 1d3488dbdd | |||
| 4d027ee4fd | |||
| 145c25e249 | |||
| 09a50a286d | |||
| 4d5d474bbd | |||
| 9f8c142981 | |||
| d0f426eafb | |||
| a1689d32e8 | |||
| 4c5fa91707 | |||
| d8917f301f | |||
| bb01af2f8b | |||
| 94516c12f9 | |||
| 9590301027 | |||
| 97e7c471e2 | |||
| fe33eabc47 | |||
| 684e6dbc4d | |||
| 63dd767e2b | |||
| 83485c7464 | |||
| 8d9c41d457 | |||
| 48c02f74a9 | |||
| bdcc9dd9d2 | |||
| 695ab4d2eb | |||
| 5423bf8a94 | |||
| a4220227ba | |||
| 9625b4cd1c | |||
| bfdd6a67d6 | |||
| d7fdd5c5a3 | |||
| cae1a304ba | |||
| f5bf9b603e | |||
| 5142675522 | |||
| 815dbb9183 | |||
| 32daea058a | |||
| 4f1778a08b | |||
| 4298b01b5e | |||
| 62ce071c41 | |||
| cf288e063f | |||
| 3cfb547bdd | |||
| 843f20448e | |||
| f5d797a8f1 | |||
| aa7815af65 | |||
| 6a9aa19856 | |||
| 7d53af10f1 | |||
| 6491094450 | |||
| 431217b50d | |||
| 980aab93bd | |||
| dea4e0f9b8 | |||
| 155a99b69e | |||
| 71f285d8b0 | |||
| 8a03462ce2 | |||
| d0819ec012 | |||
| 0db56907f8 | |||
| 331b07909b | |||
| a82570f0a3 | |||
| 754c11ce62 | |||
| f300280ec1 | |||
| dad396b0ca | |||
| f64d767a77 | |||
| 715e8893e2 | |||
| 8de146c6e2 | |||
| a385e32c8b | |||
| 9b5142a14d | |||
| 220d739c8d | |||
| 32dd11ca68 | |||
| d26077a352 | |||
| f4a558c0b2 | |||
| 789231e481 | |||
| 9691037d36 | |||
| 87fb55c207 | |||
| 260fcc7525 | |||
| 589d1dafb4 | |||
| 38d57f15f0 | |||
| d1baf13ae4 | |||
| f0ccf16b61 | |||
| f922820f5d | |||
| 56effd6149 | |||
| 78cfb2fb10 | |||
| 4d7f9dde8b | |||
| 6ff6286e4c | |||
| 9436198b96 | |||
| e99c73b217 | |||
| 3fcc2115cb | |||
| 607157c0e0 | |||
| 7bc6a45cf8 | |||
| 16ee430dd4 | |||
| 19386125a6 | |||
| d3738ff6d6 | |||
| c0a30f631d | |||
| d00e7536df | |||
| aa6fa83b5f | |||
| 5193c47f72 | |||
| 0312737c61 | |||
| b7858491fe | |||
| 0d85f1b98d | |||
| 659140348d | |||
| 43e19f52a6 | |||
| 464e787aac | |||
| a3a445dc77 | |||
| 555089ce9e | |||
| 0ce7799961 | |||
| c5c1b8e3e1 | |||
| 2ff27c366f | |||
| 3251251be9 | |||
| 26c45f50fd | |||
| 089067fbda | |||
| fe7b258bfb | |||
| edfca03e28 | |||
| c181a20492 | |||
| e1b5d6fae0 | |||
| 67cdd867fd | |||
| 5e535f848d | |||
| 1c23055cd7 | |||
| 634312f47d | |||
| 9fc54cdaed | |||
| 5750cea757 | |||
| bd983ef189 | |||
| 110f099802 | |||
| c84da7d03c | |||
| 6d2a2e1bf9 | |||
| f41c3bf679 | |||
| 797b6c6f21 | |||
| d7700539c6 | |||
| 9251234b2d | |||
| 0e77f08921 | |||
| 49152c8bcd | |||
| 65ab75c9a8 | |||
| 42f43eeb00 | |||
| 8b3c0d8b56 | |||
| 10dd29fb7a | |||
| e5b6533dcd | |||
| e852d93134 | |||
| 15b1aa89f8 | |||
| bf9dc43e5a | |||
| ee1d50c4e2 | |||
| 9063b91570 | |||
| edfd90f235 | |||
| 6164ba8175 | |||
| e3fbff915b | |||
| f75f80584e | |||
| 2d7436eea0 | |||
| f106d3b39b | |||
| 1dc79accfc | |||
| 247a3235ef | |||
| 59f0c6a7be | |||
| 03253db9b2 | |||
| 815db2ad4a | |||
| 3eff8614eb | |||
| 516731d14d | |||
| 02f1d1a27a | |||
| 259c4bcf66 | |||
| d1139c251c | |||
| d10da5cf81 | |||
| 55458495fb | |||
| 54c46720f7 | |||
| 155374409d | |||
| 2ed9fead6d | |||
| 09fc76ed53 | |||
| 98477e867e | |||
| 412390883c | |||
| e010cbde23 | |||
| 878f3ddba8 | |||
| 82e2407bd3 | |||
| 7dbe724aff | |||
| 8cc77bb669 | |||
| 170a1dff0e | |||
| 038830c0b2 | |||
| 0ced6ab45b | |||
| e9b9c0e775 | |||
| f656a02b76 | |||
| df04217164 | |||
| ace1eb1e1a | |||
| c5ed0fe9c1 | |||
| eed841e642 | |||
| 9ac6d4cb65 | |||
| 40f1dd6da6 | |||
| 0ce4ac5bc0 | |||
| 3211a39f6b | |||
| 97de7c6e41 | |||
| 57f89e0678 | |||
| ff1b08ef51 | |||
| 64ee360a69 | |||
| 3bc852a76c | |||
| b7b2155573 | |||
| a28500faae | |||
| b53a38c15c | |||
| eb6d81e199 | |||
| e56b347bb1 | |||
| 2d455fee85 | |||
| 691bbfc48a | |||
| d121a7a9ad | |||
| 556ae0ef20 | |||
| 44be7a34a2 | |||
| 05362ec33f | |||
| 1f7cb4c186 | |||
| 8247b2cc5f | |||
| e0588102ac | |||
| a3d4c1af6e | |||
| 254326670a | |||
| 884d79e08a | |||
| bc1dc6f2ab | |||
| 80f5de56d8 | |||
| 22b891a845 | |||
| cacd6bf213 | |||
| 77653accda | |||
| 5237c6748b | |||
| 1effeee7a8 | |||
| 554fa520a0 | |||
| 5098716479 | |||
| 822885b367 | |||
| b263907bd8 | |||
| 9a05dd20cb | |||
| 9e216fe7fa | |||
| 8893ac57bc | |||
| 9e871d56aa | |||
| 1280c7d67e | |||
| 1c631472b6 | |||
| e4627153f6 | |||
| ce3707734d | |||
| 7f7bbd3d21 | |||
| 54ae54eb4f | |||
| 30e0ce476c | |||
| 6a1c7c65e5 | |||
| 76ccc05b2c | |||
| 4c075f6462 | |||
| 5a1114985c | |||
| 82134302a9 | |||
| cf2207747a | |||
| f343bc0ba1 | |||
| cbbbce0b01 | |||
| 903f505103 | |||
| b4c84801f5 | |||
| 384a09aceb | |||
| 52080301a2 | |||
| 34c792a5e2 | |||
| 581274a4c8 | |||
| bbc3980277 | |||
| 191d22dd40 | |||
| 42a9e91f1b | |||
| 8228a15f14 | |||
| 189ee2de56 | |||
| 2db92a77ad | |||
| 1881d7a7c2 | |||
| b1306a3040 | |||
| 002f47c434 | |||
| de14d4f6de | |||
| 4affd16dc5 | |||
| 4dd8eb2731 | |||
| dfa4d7c325 | |||
| a12cf0a9fc | |||
| 33ce3ce8a9 | |||
| 7a0de228fc | |||
| 50beda9644 | |||
| cc4a5273db | |||
| 64931ec2cb | |||
| 30e1580504 | |||
| 45828bdf33 | |||
| 9e88d95c35 | |||
| 6a02c2b900 | |||
| dbddc21399 | |||
| b75e6e6668 | |||
| 1ecdb3714c | |||
| 9c22ba475e | |||
| b4493dae82 | |||
| 428a4c5d94 | |||
| 8335a9efca | |||
| 800401f0cc | |||
| bc8fe3cda1 | |||
| 989d31db7a | |||
| 449c223d5d | |||
| 5a46eab842 | |||
| 1a59f08f8c | |||
| 97cc8fe0b3 | |||
| 02424859a2 | |||
| 77b43b023f | |||
| 697779c545 | |||
| b899d5f1f6 | |||
| 19f40d067c | |||
| 95599d4f69 | |||
| 3d42025e70 | |||
| cf209ac0f8 | |||
| bfe9ce19f8 | |||
| 021dbadcb2 | |||
| 5e1a7560f4 | |||
| 14060a44dd | |||
| 8a526e56ef | |||
| 5e009543c0 | |||
| c521050ad8 | |||
| 61d9748dc0 | |||
| e9bde25600 | |||
| 2a40af2bff | |||
| 263eebc9b3 | |||
| 3411fb0724 | |||
| 481856ecde | |||
| 8ae2344c43 | |||
| 4d7e1dc8be | |||
| dfffd4b238 | |||
| 8837f3540e | |||
| d455d37f59 | |||
| 7464b80219 | |||
| 24318b579f | |||
| a99d4497df | |||
| 6751ce7349 | |||
| 7b44111745 | |||
| f3c5f6f6c8 | |||
| e24f9f0844 | |||
| 2edbe91580 | |||
| 9e68fd3ac0 | |||
| dc7eca4b5d | |||
| 749014625a | |||
| 313ec95dcd | |||
| 4d8e57d51d | |||
| 6bc1965492 | |||
| d17cbcc9b5 | |||
| 5ad018cce7 | |||
| a69ec1a95b | |||
| de447b9495 | |||
| f855bb7dab | |||
| 65aa3e7a6e | |||
| 96bda8f5dc | |||
| 4429a4ba7e | |||
| 3d0bf74200 | |||
| 44d7308718 | |||
| 9dbfd6251d | |||
| d46d93cfa5 | |||
| 8350bc861c | |||
| 4dc498b9fb | |||
| 54ba7c7ed2 | |||
| d173324c0d | |||
| 799daac44d | |||
| 1cd81ae077 | |||
| 749a4340ca | |||
| 20c0e8d733 | |||
| 4bebd2cb31 | |||
| da4333aecf | |||
| c8b1de7cdb | |||
| ba924cb7bc | |||
| 0a58f33c27 | |||
| bbaa0b0416 | |||
| d42ae2b5b8 | |||
| b140153d57 | |||
| cd5548cab8 | |||
| ceb8171657 | |||
| 2d4846bfd6 | |||
| 25291cc457 | |||
| f8a112aa07 | |||
| 38bcec9991 | |||
| 367dfb5d3b | |||
| cd69044366 | |||
| 5747fda912 | |||
| 94927f5a7a | |||
| f634ce269b | |||
| 6fa75f2e9e | |||
| 9b14745e47 | |||
| 606967c718 | |||
| 3985a7ceed | |||
| 62cf839f2e | |||
| f0e2d2cb61 | |||
| 6d64f0b505 | |||
| d2d806697b | |||
| ae0dcf2bbf | |||
| cb0cbda5ed | |||
| 5d04afc6c2 | |||
| 9955724ef9 | |||
| 052bcc180d | |||
| b791a8eae9 | |||
| 143a7b6566 | |||
| fc2bf10e3a | |||
| 290495c0ad | |||
| 07a6922d5c | |||
| 59a23b3ce6 | |||
| df07c7f133 | |||
| 17932efad0 | |||
| 82a657a63e | |||
| 12c9891916 | |||
| 9511d161c6 | |||
| 1e39df2cb8 | |||
| 6cdc422490 | |||
| d6247b9a19 | |||
| a896d4f71d | |||
| ef7c0d6672 | |||
| 7adf05ab64 | |||
| 4eda3e1752 | |||
| d7a342fed1 | |||
| 8894015354 | |||
| 9019f35565 | |||
| 92cdd762c4 | |||
| 8dce2d175c | |||
| 2b78d45287 | |||
| fd6eed4477 | |||
| 7461b22a16 | |||
| 0588f18cbb | |||
| b318e6a66a | |||
| 4e26bd1379 | |||
| dba0d3b7c0 | |||
| 9159c377de | |||
| 4712fe781c | |||
| d0f4a514d4 | |||
| 6c59c5b733 | |||
| 8c96800c80 | |||
| 7df008ead4 | |||
| 7b068178a1 | |||
| e4a1669632 | |||
| bba7e664b6 | |||
| 108639b960 | |||
| 7a3d7c8b7f | |||
| 32f0e3f871 | |||
| 678ac0f7cf | |||
| f6a0415148 | |||
| 0505a1ff50 | |||
| 5b515b86b4 | |||
| af8b08775d | |||
| ae3936aca5 | |||
| 3a5e5ee45a | |||
| e6b2159245 | |||
| 4639a2b229 | |||
| 648677c637 | |||
| 0c9f2aa846 | |||
| ef3397baf6 | |||
| 293125eb84 | |||
| 7e8ecc7dac | |||
| 7debfeb86a | |||
| 02582580dd | |||
| 50d67017fc | |||
| 5b6dbb1e54 | |||
| 98c6c668ae | |||
| 9dfc0828f9 | |||
| 5a93d1a5e9 | |||
| f97882d2bb | |||
| 41e02c72a0 | |||
| e64c18860f | |||
| 6510adeb23 | |||
| f954969f7d | |||
| fea8930bb2 | |||
| d51af6f8b5 | |||
| 6d9e619b26 | |||
| 2fd3104391 | |||
| bea668a89f | |||
| c2de53cf85 | |||
| d0404fd0e8 | |||
| 4fb309fbde | |||
| e50d397e93 | |||
| 8735a0f6bf | |||
| b6e61e1302 | |||
| 2353bd2011 | |||
| 56dc3a3e1d | |||
| 856282da07 | |||
| cdea0263ac | |||
| 4400b32055 | |||
| 714c97b006 | |||
| 2c5abc8c2d | |||
| 00b464154b | |||
| e534e67628 | |||
| 10bc9a408b | |||
| 8a95221fae | |||
| 71bdc5c08d | |||
| 857b3c3a84 | |||
| 7eb9d0e71a | |||
| f4fde73489 | |||
| 14bb1968ba | |||
| ee31dd9fa0 | |||
| 30be1fa550 | |||
| aa0ac19e18 | |||
| 8c481239de | |||
| 8297e30cd4 | |||
| 0983f82c08 | |||
| 554f1a0c15 | |||
| e94bf80328 | |||
| 5b3b13772b | |||
| 32122c7018 | |||
| a1b617b6d0 | |||
| a46f14412d | |||
| 0f2dd2ef18 | |||
| bfb98ee28f | |||
| b0c04f4b43 | |||
| 362ec0b08d | |||
| b3fc0f5d6b | |||
| 40075204f0 | |||
| 9de62da6f3 | |||
| 98047de919 | |||
| 29b4c9c983 | |||
| 5392dd8acf | |||
| 8f561e9337 | |||
| 6a356f7e2d | |||
| 978dd4071e | |||
| 72cd2b5e99 | |||
| 0fdef4f961 | |||
| 73e45d7537 | |||
| 493ba9981f | |||
| cd4349598d | |||
| 537a91666e | |||
| b6dee3fd9d | |||
| 6cbcc627cf | |||
| 2bb36dd76c | |||
| e486efb289 | |||
| 5c0151f976 | |||
| c5b7e0c1e7 | |||
| 88c77ce89e | |||
| e85a37b814 | |||
| a7ee96c3ce | |||
| 377d9554d3 | |||
| ea41e25761 | |||
| f564867259 | |||
| 23438196eb | |||
| 55a0b03f03 | |||
| e68c66b260 | |||
| 7cbbef2e36 | |||
| ecdce7061b | |||
| 87ca77c48e | |||
| cca7cffb93 | |||
| bb4f0e3393 | |||
| d83fb7d37f | |||
| c07a9207ca | |||
| 7cde16eac1 | |||
| e03c9bdf42 | |||
| 582e6b9f30 | |||
| ad8a1bf785 | |||
| 3e6f1fce93 | |||
| 18dde16b11 | |||
| d3cfcdc6b0 | |||
| cccda143b1 | |||
| 649b5d812e | |||
| e3339d4003 | |||
| 1786f8f03b | |||
| c28527ade3 | |||
| 90f0809b44 | |||
| dc5f3390bc | |||
| 25760a38f1 | |||
| 18c669cf47 | |||
| ae21e16beb | |||
| 623f6a44a0 | |||
| 4981573f80 | |||
| cb5de25f7e | |||
| ae1a133435 | |||
| fc1a6c313b | |||
| 601d97dd93 | |||
| b69361e947 | |||
| c064f9d5e9 | |||
| fe866e500b | |||
| 0bb293925d | |||
| fe95cb9a1f | |||
| cd277778a3 | |||
| 7bc10582c5 | |||
| b93a3e9e93 | |||
| 06a6b4c07f | |||
| 34b46855a2 | |||
| 65393c21ca | |||
| 0c9fd1139c | |||
| d5da9ddb9e | |||
| 70873bcf00 | |||
| a3ec5a5fb8 | |||
| c0f596fbb7 | |||
| 4ae6cd2bf4 | |||
| 242d9ab45d | |||
| a4d4b20b2c | |||
| d42135097a | |||
| 9c4d0c511a | |||
| 85790c8442 | |||
| c0c478112f | |||
| 5406e9fa99 | |||
| 030b9c8291 | |||
| 4493453545 | |||
| df0a433709 | |||
| 6c3bbf0009 | |||
| bf7a3d3133 | |||
| fb602a74e4 | |||
| 040d480e99 | |||
| c90d13174d | |||
| 97e41a7e42 | |||
| 7b6582bdcc | |||
| 5fde2907f5 | |||
| 71ce47a71b | |||
| 98b483ee88 | |||
| 4ee74b07e3 | |||
| d33f4a8120 | |||
| b7920658e4 | |||
| 135b4d9d87 | |||
| 8af8d17d52 | |||
| d11a065d37 | |||
| 771dee3a5f | |||
| ea519e2a6d | |||
| 9ddffa08ea | |||
| 1e7c36aac0 | |||
| 3de653cbf2 | |||
| 4a08c9ba70 | |||
| b750382333 | |||
| 98eb86460b | |||
| 3026350806 | |||
| da3100e642 | |||
| 6c1cefed98 | |||
| 6f7b608fac | |||
| 081d14d3e9 | |||
| 1b47753c0f | |||
| 1ebe25c025 | |||
| 13790b01e3 | |||
| 004f9222a1 | |||
| c3e053033c | |||
| 5561c155de | |||
| 33c6e5c93b | |||
| b7ee74ec97 | |||
| 58f7ef9ca8 | |||
| 7f96ccb01e | |||
| 7666ceab87 | |||
| e7c69eca78 | |||
| d69bcc41fa | |||
| 4d616cf680 | |||
| dc1eb8bddf | |||
| c9e4ba4c98 | |||
| c1c1aa2909 | |||
| 6f9606b331 | |||
| 345f51b684 | |||
| d885489c48 | |||
| 4659dab89c | |||
| 760dc8dab8 | |||
| 5133d62d3c | |||
| eded88dd61 | |||
| bfb2ce7bce | |||
| 6854c9a063 | |||
| 25077eadc1 | |||
| 3f41561390 | |||
| e1499ca0ed | |||
| b61f000488 | |||
| 3ae66ae4e0 | |||
| 51a5fa808e | |||
| 236f8ed033 | |||
| a977359d9f | |||
| 6426522201 | |||
| 47ddee28a4 | |||
| 249edda423 | |||
| bde554aaf9 | |||
| 9ec9cba9d9 | |||
| f046832f10 | |||
| a055d59f9c | |||
| a41b0b5bbb | |||
| bf7aad741d | |||
| cb74571261 | |||
| 993180689a | |||
| aecec0e171 | |||
| 52a5b1b038 | |||
| 9b181f575f | |||
| 7a9cade496 | |||
| 009e5353e7 | |||
| 2988283c76 | |||
| 7f3125a0e2 | |||
| 07353dcf4b | |||
| 110e114d90 | |||
| 8abce466d6 | |||
| 6054bfabd2 | |||
| b1416fc0c0 | |||
| 160d1600a6 | |||
| 0ba15e3965 | |||
| 5fe68141ad | |||
| df0815f9bd | |||
| 10ad7e34f5 | |||
| fcfb9aa3d2 | |||
| b47a9f53cc | |||
| 8617d1ba4c | |||
| 9bccd6046d | |||
| 1c8ea8df8c | |||
| 3f4174bb96 | |||
| d1839df783 | |||
| 9390a647ed | |||
| 3856856120 | |||
| 587defb54e | |||
| 047a43253c | |||
| f1c9feb8f7 | |||
| 81ce6d38a2 | |||
| b57669903d | |||
| 0a7b6dfc3a | |||
| 56663f23e1 | |||
| 0af5d85de7 | |||
| 5e9f767c86 | |||
| 515945254c | |||
| 9d966aa4d0 | |||
| bf26a46b15 | |||
| 6124a68fde | |||
| 65118165d6 | |||
| 2e461cba19 | |||
| b89bcd31d9 | |||
| a78d71ee8b | |||
| 9e7138ace5 | |||
| 50a94daec7 | |||
| 401c3918af | |||
| eb842353cc | |||
| 6c67a4a6b1 | |||
| 3a385f679b | |||
| 30b6a30fc5 | |||
| 6dd738d91c | |||
| 61b2e99257 | |||
| 84d8b082c2 | |||
| fc26ef3e44 | |||
| 32eaeaaf36 | |||
| 8de5089b84 | |||
| 3d7b0b6a0b | |||
| 04e9baae17 | |||
| 8a93ea7376 | |||
| fa2a2c2234 | |||
| 36154d7b10 | |||
| 5fcadbef9b | |||
| ce9e5c4c84 | |||
| d6fe0776a2 | |||
| d5fd9a6ce9 | |||
| 32fc008943 | |||
| 78545d38dc | |||
| 620c7e403d | |||
| 8ba0a10294 | |||
| 8b0a1de92f | |||
| b776a4d148 | |||
| a0dcb79a3a | |||
| 63e1fa2418 | |||
| f2d364aa8a | |||
| 9eeb7a2fc4 | |||
| 7144188368 | |||
| 2525edca20 | |||
| 279842d017 | |||
| 62323727a8 | |||
| 645a04aec3 | |||
| b8f0063629 | |||
| 07104d2d7d | |||
| 68aba326e1 | |||
| 9b0f6b2a9c | |||
| 384b7357cd | |||
| 4c039afe84 | |||
| 4e96e013ac | |||
| 62fe14251b | |||
| f7acfa8736 | |||
| 0a5bb85f2c | |||
| 0423078b67 | |||
| 1e250927a2 | |||
| 711ffb5c62 | |||
| 2265903961 | |||
| 65cdea5cfe | |||
| e3234d5671 | |||
| 4dd196bbc6 | |||
| 0b85e10148 | |||
| a35dd03e50 | |||
| 4a1cded0fd | |||
| 5c87943196 | |||
| f09b334e86 | |||
| 985561c522 | |||
| 0b7c79b488 | |||
| b3d8eb3104 | |||
| b6cb4e3661 | |||
| 031a342e60 | |||
| 023d869ffd | |||
| 4dcaaec5a3 | |||
| 614587cb7c | |||
| 1d750653ab | |||
| a278e31c9f | |||
| 39a02452d2 | |||
| 2016740b47 | |||
| 84c8525bc7 | |||
| 4feb893c3f | |||
| a30af17cb8 | |||
| 1d41fae3ca | |||
| a31694c45a | |||
| bb015165bc | |||
| da53d2f0bf | |||
| a80e94f246 | |||
| a34dd526f2 | |||
| 38a9332ce1 | |||
| 956939e79b | |||
| 227a0375e7 | |||
| 8afe521a85 | |||
| a1e3d57d9e | |||
| c3dcf78497 | |||
| 3edeb401a7 | |||
| f267677ce5 | |||
| c3773ecd9f | |||
| 51f84140fc | |||
| b88cec9d5f | |||
| e6b7e409ce | |||
| 422dbf746f | |||
| 7e3d2d8ea7 | |||
| 12d99c8026 | |||
| a75432c9ca | |||
| bc87b99853 | |||
| c2d9acd82e | |||
| afcea0d1ec | |||
| 0a2e7468d0 | |||
| d725dd805d | |||
| c8ac2db9f8 | |||
| f1b988d04b | |||
| e24344bde1 | |||
| 565266a205 | |||
| d76006aea2 | |||
| 36b89e78bc | |||
| 4c499f8417 | |||
| 989a5462d8 | |||
| 4ffba555f3 | |||
| 34d0a3591d | |||
| 01a0cbe628 | |||
| f2a31c5e21 | |||
| 7a78d5afff | |||
| c2d59695ed | |||
| 546af36469 | |||
| b7b6e232ce | |||
| b7d9439bdc | |||
| a1cc97be8d | |||
| 0b3d4164fe | |||
| d7231c1801 | |||
| 017bd482f1 | |||
| c763583d33 | |||
| 48f9384a82 | |||
| 2f8f56c191 | |||
| c53039ed41 | |||
| adced2cf58 | |||
| 4dc224d3ff | |||
| c66be9025d | |||
| 588614da96 | |||
| a59c66fd49 | |||
| 651ec98abc | |||
| 59337acc04 | |||
| 769f767b05 | |||
| 19a1e80ba8 | |||
| 58d92222ae | |||
| 5b22717119 | |||
| 1f747eb73a | |||
| 4f33019ee9 | |||
| 36e9700f16 | |||
| 843b580a40 |
@@ -1,14 +1,19 @@
|
||||
|
||||
_ _ _ ___________ _____ _
|
||||
| | | | | |_ _| ___ \/ __ \ | |
|
||||
| | | |_ __ _ __ ___ __ _| | | | | |_/ /| / \/ __| |
|
||||
| | | | '_ \| '__/ _ \/ _ | | | | | / | | / _ |
|
||||
| |_| | | | | | | __/ (_| | |_| |_| |\ \ | \__/\ (_| |
|
||||
\___/|_| |_|_| \___|\__,_|_|\___/\_| \_| \____/\__,_|
|
||||
|
||||
Welcome to the UnrealIRCd configuration program. This program
|
||||
will help you to compile your IRC server, and ask you questions
|
||||
Configuration Program
|
||||
for Unreal3.2-Selene(beta2)
|
||||
|
||||
This program will help you to compile your IRC server, and ask you
|
||||
questions regarding the compile-time settings of it during the process.
|
||||
regarding the setup of it, during the process.
|
||||
|
||||
If you need help to set the IRCd up, mail
|
||||
unreal-support@lists.sourceforge.net or ask at IRC:
|
||||
/server irc.ircsystems.net, /join #unrealircd
|
||||
If you have problems regarding the setup & compile, read Unreal.nfo to get
|
||||
more information on where to get help. Please, before running this setup,
|
||||
read the documentation in the "doc" folder.
|
||||
|
||||
For any sake, read Unreal.nfo and read doc/faq before asking questions
|
||||
|
||||
Press Escape now if you want to abort the setup, or press Enter
|
||||
to continue.
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
|
||||
Configuration rant, by Stskeeps
|
||||
--------------------------------
|
||||
|
||||
Right.. so you think you are done now, you can boot your IRCd and be happy,
|
||||
and it just works. No, you still got a lot to do. You need to read all of
|
||||
the documentation through. Would you even have made it this far without
|
||||
makeconf?.
|
||||
|
||||
Well, today, people think they can be 3 months on IRC, and be ready to run
|
||||
an IRC daemon. I hate to say this, but I don't think so.
|
||||
|
||||
If you cannot read an IRC help file, or understand what stuff like "desynch",
|
||||
"masskill", "k-line", or what "mode # +l 5" means - or you got no experince
|
||||
in the UNIX field at all, like, you MUST know how to invoke a editor in a
|
||||
shell, or to unzip a file. If you don't know/can do these things, I suggest
|
||||
you stop trying to set this up, and go read on some UNIX tutorials, and IRC
|
||||
tutorials. It takes a LOT of work to run a IRC server good.
|
||||
|
||||
I mean. I sit on the #unreal-support support channel each day, and I see
|
||||
countless questions about stuff that IS IN the documentation. Numerous
|
||||
people don't even bother to look at the config files (CONFIG_FILE_STOP
|
||||
problem).
|
||||
|
||||
You need to look at the documentation now. You need to see how to "include"
|
||||
other configuration files. You need to know how to work out how to use
|
||||
doc/example.settings. I can only tell you, if you ask for support, and it
|
||||
is for errors that you could solve by reading the first lines of a document,
|
||||
then you'll be firmly ignored. I'm sorry, we cannot help your laziness.
|
||||
|
||||
Anyhow, good luck with setting this up. Hope you understand what I am saying
|
||||
here. You will learn a lot more reading, than just ignoring what we are
|
||||
saying.
|
||||
|
||||
--Stskeeps
|
||||
@@ -0,0 +1,86 @@
|
||||
|
||||
Unreal3.2-Selene (BETA4) RELEASE NOTES
|
||||
======================================
|
||||
|
||||
I M P O R T A N T R E A D I N G
|
||||
|
||||
|
||||
* Unreal3.2-Selene is a lot different than Unreal3.1.1. Forget all you have
|
||||
learned about setting up Unreal3.1.1 - this is a lot different. We have got
|
||||
a new configuration format that integrates all the former config files,
|
||||
ircd.conf, vhost.conf, chrestrict.conf, unrealircd.conf, into to one new
|
||||
unrealircd.conf (what the ircd.conf is called now). See doc/ for more
|
||||
information on the configuration format
|
||||
|
||||
* We have introduced a new cloaking algoritm (+x), which makes it
|
||||
incompatible with Unreal3.1.1 - these can however still link, but the
|
||||
hostname will look different. This is made of three big numbers,
|
||||
configured in the config file - and these MUST be the same on all servers
|
||||
on the network. Keep these numbers secret, and the cloaking algorithm is
|
||||
uncrackable (within 55 years, that is)
|
||||
|
||||
* We use autoconf to help with compiliation, and this should make us able
|
||||
to a lot more platform (we have even ported to BeOS).
|
||||
|
||||
* We require a pthreads library for the SOCKS scan now - and this is now
|
||||
done in the background (no more waiting!).
|
||||
|
||||
* The IRCd is now modularized, and you load modules with the loadmodule
|
||||
command. You will most likely want to add these lines:
|
||||
|
||||
loadmodule "src/modules/commands.so";
|
||||
loadmodule "src/modules/scan.so";
|
||||
loadmodule "src/modules/scan_socks.so";
|
||||
loadmodule "src/modules/scan_http.so";
|
||||
|
||||
If you would like to code a module, doc/ will contain a module guide,
|
||||
and we got an example module in src/modules/m_dummy.c.
|
||||
|
||||
* We have some IPv6 support, and there are some minor bugs in it.
|
||||
|
||||
* The documentation is NOT yet 100% complete
|
||||
|
||||
* We have added snomask (similar to ircu), basically this allowed us to remove several modes. Modes +cfFkje
|
||||
are gone, but don't worry, you can still use them. They are now added like this:
|
||||
|
||||
/mode yournick +s +cF
|
||||
|
||||
You set the flags in the second parameter of the mode command for a mode change +s, setting -s with no
|
||||
parameters removes all your snomask. You can remove a specific snomask by doing:
|
||||
|
||||
/mode yournick -s -c
|
||||
|
||||
The current snomasks are:
|
||||
|
||||
c - local connects
|
||||
F - far connects
|
||||
f - flood notices
|
||||
k - kill notices
|
||||
e - 'eyes' notices
|
||||
j - 'junk' notices
|
||||
v - vhost notices
|
||||
G - gline/shun notices
|
||||
|
||||
It shouldn't be too hard to figure out, just play around with it a bit :)
|
||||
|
||||
* /who needs testing it was recoded and may contain bugs
|
||||
|
||||
* We have added alias {} which allows you to dynamically create commands such as /nickserv
|
||||
Read example.conf for more information on how to create your own. To use standard ones include
|
||||
one of the following files
|
||||
|
||||
aliases/ircservices.conf (IRCServices, Daylight)
|
||||
aliases/epona.conf (Epona)
|
||||
aliases/generic.conf (Magick, Sirius, Wrecked)
|
||||
aliases/operstats.conf (OperStats)
|
||||
aliases/genericstats.conf (GeoStats, NeoStats)
|
||||
|
||||
* You can now use an IP in the oper::from and vhost::from fields even if the host resolves
|
||||
|
||||
* Added an http proxy scanner (scan_http.so)
|
||||
|
||||
* MAKE SURE YOU RERUN ./Config AND RUN make clean BEFORE USING THIS VERSION!!!
|
||||
|
||||
* THIS IS A BETA VERSION. THINGS MAY NOT WORK. REPORT ANY BUGS TO THESE
|
||||
ADDRESSES:
|
||||
* coders@lists.unrealircd.org and bugs@lists.unrealircd.org
|
||||
@@ -0,0 +1,20 @@
|
||||
|-------------------------------------------------------------------------|
|
||||
| Congratulations on your new SSL self-signed certificate for your IRCd. |
|
||||
| However, wouldn't it be better that you get your certifcate signed by |
|
||||
| some kind of Certification Authority (CA), so your users can check that |
|
||||
| they are really connected to the real server, so they feel secure? |
|
||||
| |
|
||||
| A initiative have been started, to help this problem, as more and more |
|
||||
| SSL-enabled IRC servers will be started in the future, and people will |
|
||||
| have trouble authenticating that they are really at the right server. |
|
||||
| This initiative is called SICI (Secure IRC Certification Initiative. We |
|
||||
| sign your certificates for free, using the simple way of authenticating |
|
||||
| you by going to your IRC server and testing if it's really you. |
|
||||
| |
|
||||
| You can send in your "server.req.pem" file to us at our email |
|
||||
| certs@sici.ircsystems.net, with contact info on you (IRC network, nick, |
|
||||
| status). We will then contact you, and check if you have provided true |
|
||||
| information. If you need more information about SICI, visit our website |
|
||||
| http://sici.ircsystems.net, where you can download our root certificate,|
|
||||
| and read even more about this project. | Press enter to continue |
|
||||
---------------------------------------------------------------------------
|
||||
@@ -0,0 +1,17 @@
|
||||
|
||||
_ _ _ ___________ _____ _
|
||||
| | | | | |_ _| ___ \/ __ \ | |
|
||||
| | | |_ __ _ __ ___ __ _| | | | | |_/ /| / \/ __| |
|
||||
| | | | '_ \| '__/ _ \/ _` | | | | | / | | / _` |
|
||||
| |_| | | | | | | __/ (_| | |_| |_| |\ \ | \__/\ (_| |
|
||||
\___/|_| |_|_| \___|\__,_|_|\___/\_| \_| \____/\__,_|
|
||||
|
||||
Update Script v2.0
|
||||
|
||||
What download program do you want to use?
|
||||
-----------------------------------------
|
||||
|
||||
Type "wget" for wget
|
||||
Type "lynx" for lynx
|
||||
|
||||
>
|
||||
@@ -0,0 +1,77 @@
|
||||
#
|
||||
# UnrealIRCd Bug Reporting Script
|
||||
# Copyright (c) 2001, The UnrealIRCd Team
|
||||
# All rights reserved
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without modification, are permitted
|
||||
# provided that the following conditions are met:
|
||||
#
|
||||
# * Redistributions of source code must retain the above copyright notice, this list of conditions
|
||||
# and the following disclaimer.
|
||||
# * Redistributions in binary form must reproduce the above copyright notice, this list of conditions
|
||||
# and the following disclaimer in the documentation and/or other materials provided with the
|
||||
# distribution.
|
||||
# * Neither the name of the The UnrealIRCd Team nor the names of its contributors may be used
|
||||
# to endorse or promote products derived from this software without specific prior written permission.
|
||||
# * The source code may not be redistributed for a fee or in closed source
|
||||
# programs, without expressed oral consent by the UnrealIRCd Team, however
|
||||
# for operating systems where binary distribution is required, if URL
|
||||
# is passed with the package to get the full source
|
||||
# * No warranty is given unless stated so by the The UnrealIRCd Team
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'' AND ANY EXPRESS OR
|
||||
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||
# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
|
||||
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||
# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
# First we define some nice settings and some nice functions
|
||||
set print pretty on
|
||||
|
||||
# dumplist <linked list> <structure format>
|
||||
define dumplist
|
||||
echo Dumping linked list $arg0 in format $arg1\n
|
||||
set $p = $arg0
|
||||
while $p
|
||||
print *($arg1 *) $p
|
||||
set $p = $p->next
|
||||
end
|
||||
end
|
||||
|
||||
# dumparray <name> <size>
|
||||
define dumparray
|
||||
echo Dumping array $arg0 size $arg1\n
|
||||
set $p = 0
|
||||
while $p < $arg1
|
||||
if $arg0[$p]
|
||||
print *$arg0[$p]
|
||||
end
|
||||
set $p = $p + 1
|
||||
end
|
||||
end
|
||||
|
||||
echo Full backtrace:\n
|
||||
echo ---------------\n
|
||||
echo \n
|
||||
bt full
|
||||
echo \n
|
||||
echo Backup parse() buffer:\n
|
||||
echo ----------------------\n
|
||||
echo \n
|
||||
print backupbuf
|
||||
echo \n
|
||||
echo me output:\n
|
||||
echo ----------------------\n
|
||||
print me
|
||||
echo \n
|
||||
echo IRCstats:\n
|
||||
echo ----------------------\n
|
||||
print IRCstats
|
||||
echo \n
|
||||
echo Modules:\n
|
||||
echo ----------------------\n
|
||||
dumparray Modules 50
|
||||
quit
|
||||
@@ -0,0 +1,6 @@
|
||||
ircdcron/ircd.cron
|
||||
ircdcron/ircdchk
|
||||
src/modules/Makefile
|
||||
src/ssl.rnd
|
||||
src/win32/devel/StackTrace.lib
|
||||
src/win32/gnu_regex.lib
|
||||
@@ -0,0 +1,52 @@
|
||||
--leave-preprocessor-space
|
||||
--dont-break-procedure-type
|
||||
--no-space-after-function-call-names
|
||||
--brace-indent0
|
||||
--indent-level8
|
||||
-ip8
|
||||
--dont-line-up-parentheses
|
||||
--continuation-indentation4
|
||||
--case-indentation2
|
||||
--no-space-after-casts
|
||||
--blank-lines-after-procedures
|
||||
--no-blank-lines-after-declarations
|
||||
--braces-on-struct-decl-line
|
||||
--paren-indentation0
|
||||
--case-brace-indentation0
|
||||
--line-length80
|
||||
--declaration-indentation5
|
||||
-T size_t
|
||||
-T aClass
|
||||
-T TS
|
||||
-T aClient
|
||||
-T aServer
|
||||
-T anUser
|
||||
-T aChannel
|
||||
-T Mode
|
||||
-T aConfItem
|
||||
-T aMessage
|
||||
-T aMessageTree
|
||||
-T aGline
|
||||
-T aListingArgs
|
||||
-T snomask_t
|
||||
-T n_short
|
||||
-T n_long
|
||||
-T n_time
|
||||
-T u_char
|
||||
-T u_short
|
||||
-T u_long
|
||||
-T u_int
|
||||
-T dbuf
|
||||
-T dbufbuf
|
||||
-T aHashEntry
|
||||
-T Link
|
||||
-T Dlink
|
||||
-T VOIDSIG
|
||||
-T aHostent
|
||||
-T ResRQ
|
||||
-T aCache
|
||||
-T CacheTable
|
||||
-T cainfo
|
||||
-T reinfo
|
||||
-T RETSIGTYPE
|
||||
-T OPT_TYPE
|
||||
@@ -1,3 +1,788 @@
|
||||
OLD CHANGES:
|
||||
|
||||
[Unreal3.1.1-Darkshades]
|
||||
- Fixed /userhost showing "unknown" as username for a lot of people
|
||||
- Fixed ./update error
|
||||
- Fixed a NO_FDLIST define problem in send.c and channel.c
|
||||
- Added define PROPER_COREDUMP, will not launch s_segv when done and make
|
||||
proper coredumps
|
||||
- Fixed the G:line bugs, i hope - moved tkl_sweep into a loopstruct
|
||||
- Removed the ERR_NOTONCHANNEL message =P
|
||||
- Made some memory cleanups on the command list (saved 268 bytes)
|
||||
- More memory cleanups, changed aClient->refcnt to a signed char,
|
||||
aClient->hopcount to unsigned char
|
||||
- Changed aChannel->mode.msgs & .per to unsigned short, and changed
|
||||
.kmode to unsigned char
|
||||
- Changed aChannel->users to unsigned short (max 65536 users per channel)
|
||||
and FloodOpt->nmsg to an unsigned short
|
||||
- Removed SUMMON totally
|
||||
- Fixed another SJOIN problem, but not the exact one i was looking for
|
||||
- Added IRCd bot (raw commands) and the IRC bot, webtv.c
|
||||
- Added WHOIS command (working) to IRCbot-
|
||||
- Fixed a fun doublechar token problem (the AA unknown command)
|
||||
- Removed _alot_ of unused variables
|
||||
- Fixed *some* -Wall warnings (still alot left to fix)
|
||||
- Fixed some more -Wall warnings
|
||||
- ./update now checks when you specify wget if it exists, if not it tries lynx
|
||||
- Cached MOTDs are now dynamically allocated (saves alot of memory)
|
||||
- Made aClient->passwd dynamically allocated (saves 32bytes per user/server)
|
||||
- Fixed a NOTICE crash bug, reported by EJ
|
||||
- Removed a excessive va_end in send.c
|
||||
- Fixed a bug when running the ircd with -h
|
||||
- Readded /summon to return ERR_SUMMONDISABLED (required by RFC1459)
|
||||
- Made /users return ERR_USERSDISABLED (required by RFC1459)
|
||||
- Removed all utmp calls
|
||||
- Fixed Something ... cant remember what ... oh yes, fixed if (sptr->passwd[0]) to if (sptr->passwd)
|
||||
it stopped the server crashing !
|
||||
- Made Code revisions so that we can compile on Win32, and fixed some of sts's late nite
|
||||
coding sessions(dbin)
|
||||
- Fixed some REAL dumb find_server_quick bugs
|
||||
- Fixed a wierd NOTICE bug
|
||||
- Modified and fixed the NOTICE bug totally, with some waste of the nospoof
|
||||
system
|
||||
- Fixed a bug where +K could be set when +i was not (reported by rapta)
|
||||
- Made it so if you set -i on a channel that is +K it sets -iK
|
||||
- Fixed whowas so it no longer reports away messages
|
||||
- Made major changes to +I (may need debugging)
|
||||
- When you set +I while on a chan it sends a PART to the rest of the channel
|
||||
- When you set -I which on a chan it sends a JOIN to the rest of the channel
|
||||
- Net/TechAdmins now receive a JOIN/PART when you JOIN/PART a channel
|
||||
- Net/TechAdmins can now see +I users in /names
|
||||
- Fixed a typo in s_err.c reported by TRON
|
||||
- Fixed more -Wall warnings
|
||||
- Added #define LIST_SHOW_MODES to show channel modes in a /list (NOTE: only shows modes, not params)
|
||||
- Fixed /mode # + bug reported by PhatNet/Mind
|
||||
- Possible fixed the SJOIN kick bug (mode +Q), servers can now always kick
|
||||
- Added NEW DNS resolver (Win32 Only atm) ... use by defining NEWDNS
|
||||
- FIXED "BUG" caused by NEWDNS *shrug*
|
||||
- Fixed the passwd NICK problem
|
||||
- Fixed the problem with NewDNS (ive always known about it but never known how it happens) [a pointer prob]
|
||||
- Redhat 7 (broken string.h problem), ./Config
|
||||
- Added SSL connections, open ports with P:ip:s:*:port to make them SSL
|
||||
ports, made after hq.alert.sk's implementation
|
||||
- Added P:line flags C - client only, S - server only, J - java clients (replaces CONFROOM_JAVA_PORT)
|
||||
- Fixed up a few various things
|
||||
- Made SHOWCONNECTNOTICES work properly again, also with SSL
|
||||
- Changed ./Config to detect SSL better, and generate certificates properly
|
||||
- Removed some annoying logging in ssl.c
|
||||
- Merged in changes from TEMPcvs branch
|
||||
- Fixed a /UNSQLINE para problem, found by Joe
|
||||
- #define SHOW_SECRET now allows all ircops to see +s channels in /whois. If not defined, only net/tech admins can.
|
||||
- Added #define CENSOR_QUIT, for WaveRide
|
||||
- Fixed hashing bug that caused the server to crash on exit
|
||||
- Made find_server_b64_or_real be a little faster, possible fixing bug
|
||||
- Made /stats s checking check for sanity or insanity (ignore them for 0
|
||||
numerics)
|
||||
- Fixed SJOIN (mp2parv) bug, that caused insane desynchs
|
||||
- Changed Cannot find server message to be to sendto_realops
|
||||
- Fixed a warning in CENSOR_QUIT
|
||||
- Fixed the G:Line user wrongly matching (ip-alike addys didnt check user)
|
||||
- Added protoctl SJB64, which adds B64-9 timestamps to many timestamping
|
||||
operations
|
||||
- Added ircsprintf %B (base64-9^10) with ! as prefix, and %b (no prefix)
|
||||
- Fixed a few places where for some reason sprintf() was used rather than ircsprintf()
|
||||
- Tokenized ADCHAT, TECHAT, NACHAT, SWHOIS, and SVSKILL
|
||||
- Fixed a bug in opermode that would make it display a notice on invalid modes
|
||||
- Fixed a bug where the Found your hostname (cached) message was messed up
|
||||
- Fixed a memory leak in the new password code
|
||||
- Fixed a sptr->passwd bug
|
||||
- Removed the unnecessary param from IsULine() it is now just IsULine(sptr)
|
||||
- ircsprintf() is now used everywhere
|
||||
- Fixed the SJB64 bugs that misplaced users
|
||||
- Removed sendto_helpops and replaced it with sendto_umode
|
||||
- Added is_chanownprotop() checks if +q +a or +o with 1 loop
|
||||
- Added chmode +N (no nick changes) (opers, ulines, +o +q or +a can override)
|
||||
- Added some fixes on the SJB64 crashing bug, and added tokenization in
|
||||
channel messsages (yahooooo!)
|
||||
- Fixed the /list bug, reported by many people
|
||||
- Fixed a linking bug (where did that come from)
|
||||
- Fixed bug where duplicate numerics could occur
|
||||
- Fixed the hashing bug (thank you ROXnet ...)
|
||||
- Fixed a wierd channel message bug ||
|
||||
- Fixed a bug where non-NS servers would crash when linking
|
||||
- Added TS2ts (supporting the SJB64 stuff), and fixed the !0 timestamp bug
|
||||
- Fixed the /list only showing 64 channels bug! Also sped /list up in the process
|
||||
- Probably fixed the hash bug, again.
|
||||
- Possible fixed some b64 bugs
|
||||
- Autodetects /usr/sbin/openssl now, thanks trinity
|
||||
- Tokenized PING and PONG
|
||||
- Fixes a missing : in SJOIN
|
||||
- Possible fixed a internal server list bug
|
||||
- When IRC WebTV bot cannot find a command, it sends it to parse() instead,
|
||||
thanks [Real]
|
||||
- Added burst.c in extras/
|
||||
- Moved lopt and whowas to anUser (saves 8 bytes for every server)
|
||||
- Removed aClient->history, not used (saves 4 bytes for every user/server)
|
||||
- Fixed compile error with SSL
|
||||
- Fixed a /list and /quit bug
|
||||
- Fixed the masskill bug with replacing "Server Exists" code.. i removed it
|
||||
accidentialy last time
|
||||
- Added /botserv /bs command, patch by ATHnet.de
|
||||
- /who's now show +i users for opers in channels, idea by Strider@ChatCircuit
|
||||
- Fixed NO_OPEROVERRIDE bug reported by otherguy
|
||||
- #define STATSWRITING will make ircd write ircd.stats every 4 seconds,
|
||||
idea/sortof by WaveRide
|
||||
Format of ircd.stats:
|
||||
<global users>
|
||||
<global invisible users>
|
||||
<global servers>
|
||||
<irc operators>
|
||||
<unknown connections>
|
||||
<local clients>
|
||||
<local servers>
|
||||
<local max clients>
|
||||
<global max clients>
|
||||
- Fixed +d (deaf) so it works again
|
||||
- Removed some leftovers from the &channel code (which fixed a minor bug as well)
|
||||
- Fixed a SJOIN3<->services problem
|
||||
- Fixed a typo where it still said +I instead of +V in an error message
|
||||
- Fixed the "Bad file descriptor" bug in SSL. This bugfix may be a bit risky
|
||||
as it is manipulating BIO fds. The reason openssl freaked at this, was
|
||||
that when a fd is closed, we change fds from 4 to 3 etc, in other words,
|
||||
we renumber fds. SSL didn't know this and if you would call SSL_set_fd it
|
||||
would close the connection/crash. Added SSL_change_fd() to change the FD
|
||||
directly through BIO_set_fd.
|
||||
- Fixed the masskill bug, hopefully. Was a delimiter/number array bug in
|
||||
find_server_b64_or_real, causing negative base64 to be accepted (bad).
|
||||
value 1-256 will never be able to be in two letters (a server name)
|
||||
- Fixed \r\n bug, hopefully
|
||||
- made SSL use same cert client/server
|
||||
- Fixed help.c bug reported by Curt|s
|
||||
- Different fixes, unreal.tspre.org -> unrealircd.com
|
||||
- Fixed-fixed-fixed the \r\n bug and removed some useless cpu wasting code
|
||||
- Removed remapping fds, and did a severe select() speedup, suggested by
|
||||
Demiurgus. Should speed CPU a lot
|
||||
- Updated some messages
|
||||
- Fixed-fixed-fixed the U:line branching thing made by codemastr
|
||||
- Fixed a G: line-turn-into Z:line problem, reported by eYe-Man
|
||||
- Added SJOIN (SJ3 only) instead of JOIN/MODE in /join and discovered a bug in
|
||||
SJOIN code, that if the line doesnt have a " " appeneded, it wont take the
|
||||
last users or first for that sake. Hopefully patched SJ3 code for it
|
||||
- Added OPT target OPT_SJB64 and OPT_NOT_SJB64
|
||||
- Made SSL server<->server work, using __blocking__ sockets (this is only
|
||||
in connect moment thou) -stskeeps
|
||||
- Removed 1.0 msg/s when not in HTM
|
||||
- Fixed cutoff server infos in synch
|
||||
- Added so /gline and /shun accepts time periods in 1d2h3s etc. a recode of
|
||||
some potvin stuff
|
||||
- Added so blocking is only effective when SSL_connect()'ing
|
||||
- Fixed a couple of SJOIN/Link problems detected by Curt|s
|
||||
- Changed some stuff with SSL, you may want to seperate server.pem into
|
||||
server.key.pem and server.cert.pem (or "rm Makefile" and "./Config")
|
||||
- Fixed a couple of SJOIN/Link problems detected by Curt|s
|
||||
- Made /stats C show SSL/Zip flags
|
||||
- Fixed the Stskeeps "mass G:line on /rehash" (tm) bug
|
||||
- Removed last point of confusion in ALN/NS
|
||||
- Removed CRYPTOIRCD (replaced by SSL)
|
||||
- Added support for some more SJB64 stuff
|
||||
- Added some more support for some even more SJB64 stuff
|
||||
- Added some network files and even more network files
|
||||
- Fixed some copyright stuff in ssl.c
|
||||
- Fixed a /map problem
|
||||
- Updated doc/conf.doc and doc/example.conf
|
||||
- Fixed a bug where /map showed U:lines while HIDE_ULINES was set
|
||||
- Removed "on network" in /whois oper
|
||||
- Added code to makenet to stop fake submissions
|
||||
- Fixed some /whois channels code, which may break +I /whois
|
||||
- Fixed overflow in SJOIN
|
||||
- Added SMO *, all users
|
||||
- If a +r user is /who'ed, it shows a "r" in flags field. Suggested by
|
||||
Mirar.
|
||||
- Fixed a typo in ssl.c
|
||||
- Added SICI information, Donation information, fixed a ./Config problem
|
||||
overwriting certs ..
|
||||
- Added hatblade's files
|
||||
- Added some credits
|
||||
- Fixed a real bad /whois bug, reported by BiGi
|
||||
- Fixed a problem with /sajoin .. atleast possible
|
||||
- Added infofield in /stats L for clients/listeners
|
||||
- Fixed a blocking socket thing
|
||||
- Fixed up /stats L bug
|
||||
- Changed CONNECTTIMEOUT to 30sec
|
||||
- Changed some _more_ credits
|
||||
- Fixed compile error found by Headbang
|
||||
- #define CHINESE_NICK will make you able to use chinese nicks
|
||||
thanks to RexHsu and Aim
|
||||
- Fixed up CHINESE_NICK and JAPANESE_NICK, suggested by Aim, see
|
||||
include/config.h
|
||||
- Config change in SSL.h detection part
|
||||
- SSL error change to sendto_umode(UMODE_JUNK)
|
||||
- Fixed a hash error, topic problem
|
||||
|
||||
[fixes]
|
||||
- Fixed a +d bug (it didnt send ` prefixes)
|
||||
- Fixed a SJOIN bug, i think, thanks to Web
|
||||
- Fixed a chinese nick thing, thanks to miCro and RexHsu
|
||||
- Fixed a typo in config.h
|
||||
- Fixed a bug in sendto_channel_prefix_tok reported by Strider@ChatCircuit
|
||||
- Fixed P:line bug, caused by codemastr(tm) coding, (masskills), reported by
|
||||
sidv@sid-kitty-land.org
|
||||
- Some few fixes from CodeM and Barubary:
|
||||
- Fixed /whois to show users for opers when not in the channel.
|
||||
- Fixed /whois to allow only global eyes opers to see user modes.
|
||||
- Fixed /whois to not show idle times of global opers to anyone except
|
||||
another global oper or services.
|
||||
- Fixed /who to show users for opers when not in the channel.
|
||||
- Fixed restart bug, reported by RaYmAn
|
||||
- Fix-fixed " Fixed /whois to not show idle times of global opers to
|
||||
anyone" patch
|
||||
- Fixed a recently found exploit involving reverse DNS (fix from bahamut)
|
||||
- Made more openssl binary detection using 'which'
|
||||
- Added message when trying to join a +z channel
|
||||
- New segmentation fault code by Kanzen_Greiver
|
||||
|
||||
*** Unreal3.1 *** (final)
|
||||
- Moved REMOVE_ADVERTISE a little
|
||||
- Fixed bug where you could /mode #test +L #test (link a channel to
|
||||
itself)
|
||||
- Fixed a bug where a +L channel didn't have to be valid ex /mode #test
|
||||
+L blah would work, dangerous if 0 is used
|
||||
- Fixed /map showing U:lines even if HIDE_ULINES was set oops :)
|
||||
- Fixed a bug where opers couldn't walk through +l
|
||||
- Fixed a bug where /mode #test +f *N:N was recognized the same as +f N:N
|
||||
(if *2:3 was set then /mode #chan +f 2:3 it wouldn't set, thought it was the same)
|
||||
- Removed src/cio_init.c src/cio_main.c src/win32.c src/win32.rc as we don't
|
||||
use that anymore
|
||||
- Added ircsprintf() (ircsprintf.c and ircsprintf.h)
|
||||
- Converted to use ircsprintf
|
||||
- Now using sprintf_irc from ircu, as %li would screw up the hybrid variant
|
||||
- Some fdlist updates from bahamut
|
||||
- Header change
|
||||
- Some more Header change
|
||||
- Added agent.c for IRCd Agents (remote control etc)
|
||||
- Fixed up some make misalignments
|
||||
- Fixed +I /names
|
||||
- Removed TESTNET defines
|
||||
- Added poll() engine from bahamut (hard!)
|
||||
- Made /vhost send failed login's to +e
|
||||
- Made /stats V/R/F use raw rather than NOTICE
|
||||
- Fixed some poll() engine problems
|
||||
- Some more problems with poll()
|
||||
- Removed the \2's from the is a Coder msg, whywere they there, no one
|
||||
knows (codemastr) Because i was the only one using it =P (Stskeeps)
|
||||
- Fixed /names problem..
|
||||
- Made /mode <nick> use get_mode_str() to list the modes
|
||||
- Made /lusers info be pre-calculated :) Saves hell of a lot CPU time
|
||||
- Made /stats z/Z oper only
|
||||
- Fixed SJOIN bug only totally fixed when all servers upgraded
|
||||
- Moving old 3.0 stuff to Changes.old
|
||||
- Re-added README.ALPHA
|
||||
- Fixed some more SJOIN bugs
|
||||
- Fixed NICKv2 bugs with non NICKv2
|
||||
- Fixed up /info, there will be a better layout for this
|
||||
- Fixed up some poll() engine bugs (i hope)
|
||||
- Start of telnet proxy scan code
|
||||
- Took telnet proxy scan code out again =/ It really fux0red up
|
||||
- Added networks/treklink.network
|
||||
- Added options to /HTM, ON/OFF TO (what load do we auto start at) NOISY/QUIET (toggle whether HTM should
|
||||
announce when it starts)
|
||||
- Fixed a little bug where /part didn't show the correct channel case
|
||||
- Made unresolved host connections go faster, idea from PTLink IRCd v3.5.4 great job :)
|
||||
- Removed support for & and + channels (i hope) and made m_message more
|
||||
handy and support for /notice +#channel, %#channel etc etc
|
||||
- Topic fix?
|
||||
- Incorperated the bahamut m_list and send_list, it's faster and smaller :P
|
||||
- When /HTM is active /list is disabled to non-opers
|
||||
- OperMOTD is now loaded into memory (faster, saves memory, and CPU)
|
||||
- Added /rehash -omotd to rehash the OperMOTD
|
||||
- Added unrealircd.conf option for SETUID and SETGID if ircd started as root. And you can turn that off/on
|
||||
by defining/undefining BIG_SECURITY_HOLE in config.h
|
||||
- Fixed small bug in ircd.c and dynconf.c (not using #ifndef BIG_SECURITY_HOLE)
|
||||
- Removed & and + channels for sure..
|
||||
- All MOTDs, RULES are read into memory (including T:lines)
|
||||
- Added /rehash -bmotd (BotMOTD) /rehash -motd/-rules (MOTDs/RULES)
|
||||
- Fixed memory leak in dynconf.c, allocated 2048 on each /rehash -dynconf
|
||||
- Fixed _serious_ memory leak in cloak.c, abused 128 bytes every time
|
||||
someone went +x
|
||||
- Alphabeticalized making..
|
||||
- flush_connections more better
|
||||
- Fixed calls to check_registered*, more CPU spare:)
|
||||
- Fixed a bug in /tsctl svstime
|
||||
- Fixed a bug in the cached MOTDs
|
||||
- Added support for remote /htm
|
||||
- Even more tokensation
|
||||
- Removed IRCII_KLUDGE
|
||||
- Fixed /lusers wrong reply
|
||||
- Removed V28PlusOnly define
|
||||
- Fixed a bug in channel_modes()
|
||||
- More and more and more tokenzation >:)
|
||||
- Fixed a bug in m_user
|
||||
- Removed have_ops() and is_deopped(), they weren't used
|
||||
- Reorganized can_send() to make it faster
|
||||
- More tokenzation >:)
|
||||
- Fixed ircsprintf() %lu error when %lu == 0
|
||||
- Added devel/ directory, put ideas/specifications in here
|
||||
- Added devel/new.plines to describe new upcoming P:lines
|
||||
- Added NO_IDENT_CHECKING in config.h
|
||||
- Fixed bugs in get_version() and also made it a bit faster
|
||||
- Fixed RPL_MYINFO problem with UnrealIRCd/32 version and ircII
|
||||
misunderstanding it, prob other clients too
|
||||
- Updated msg.h hashtable to get most used commands more close
|
||||
- Removed some unused defines in msg.h
|
||||
- Removed dusers (not in use)
|
||||
- m_user stuff
|
||||
- Made use of : 's in between ircd.conf field working, using this format:
|
||||
A:"Test test:Moo":Moo:moo
|
||||
- Fixed some /lusers miscalculations
|
||||
- Added INET6 patch, now for making it work :P
|
||||
- More INET6 patching (not working atm)
|
||||
- INET6 compiles now, works? :P
|
||||
- Fixed some WebTV stuff
|
||||
- Made the m_message routine not do a user hash lookup if it starts with #
|
||||
- Removed some fields in structures like aClient etc that was unused
|
||||
- Removed Client->iown and the OWNLOGON code
|
||||
- Removed Channel->blist
|
||||
- Removed heaps of unused variables in functions
|
||||
- Fixed THE G:line bug, missing parameter
|
||||
- Hopefully fixed some calculation bugs
|
||||
- +F bugfix
|
||||
- In TKL a gline shows reason in quit message now
|
||||
- Fixed the SVSMOTD OPERMOTD and BOTMOTD bug, suggest parantheses problem
|
||||
- In K:Line it shows reason in quit message now, not sure about AKILL
|
||||
- Experimental NOTE in register_user added
|
||||
- Implemented hybrid scache.c, created by orabidoo and Dianora
|
||||
- Fixed /connect scache problem, and actually fixed the OPERMOTD bug
|
||||
- The hopefully last calculation bug..
|
||||
- Made bans and exceptions actually sync *ducks*, done in old fashion MODE
|
||||
manner, better than making BS (bansync) or incorporating it in SJOIN
|
||||
- Made /opermotd oper-only, bug reported by Bagge@ROXnet
|
||||
- Made TOPICs be dynamically allocated - saves heaps memory
|
||||
- Added hybrids/+cs'es /whowas system. Improved so it doesn't use static
|
||||
character arrays, and uses dynamically allocated strings instead
|
||||
- Added UMODE2 PROTOCTL and command, when a usermode change it uses :nick
|
||||
UMODE2 +-umodes. token = '|'
|
||||
- Made CONNECTFAST default, will ensure faster connecting
|
||||
- Updated /helpop to list more commands and new modes
|
||||
- the 1-message-per-2-sec not applied to opers
|
||||
- Topic fix with dynamic allocation
|
||||
- 1-message-per-2-sec now 1-message-per-1.5-sec
|
||||
- Removed TS fix notice
|
||||
- Removed User %s tries to become server notice
|
||||
- Made MAXCHANNELSPERUSER an unrealircd.conf option
|
||||
- Changed unrealircd.conf version to 1.2
|
||||
- Credit changes..
|
||||
- Uses dgets() from hybrid now, should be a minor CPU fix
|
||||
- Moved WebTV support, and +I disabling to an unrealircd.conf option
|
||||
- Updated doc/conf.doc, removed references to DALnet, and fixed typos
|
||||
- Moved doc/Elite.Changes to doc/History/Elite.Changes, away away away with
|
||||
that one
|
||||
- Tokenized SQLINE
|
||||
- Recoded dynconf, validates data too now
|
||||
- Fixed a /list bug that crashed the server
|
||||
- Fixed a minor bug in the new dynconf
|
||||
- Fixed a bug in vhost.conf and dccdeny.conf where if the line was not valid it would crash, now it just
|
||||
ignores that line
|
||||
- Added comment support to vhost.conf, dccdeny.conf, and chrestrict.conf (makes loading faster)
|
||||
- Fixed one of those "code, what the fuck were you smoking" bugs in m_svsmode etc
|
||||
(what = MODE_DEL - eh?)
|
||||
- Added AUTO_JOIN_CHANS to unrealircd.conf to force a user to join 1 or
|
||||
more channels on connect, read networks/unrealircd.conf for more info
|
||||
- Added networks/axenet.network
|
||||
- Possible change in the -1 operator bug
|
||||
- /info changes
|
||||
- Unreal3.1-beta1 release
|
||||
- Added a bunch of networks
|
||||
- Updated doc/conf.doc
|
||||
- Updated networks/networks.ndx cause someone *cough* sts *cough* forgot
|
||||
- Updated m_svso to -H the user
|
||||
- Added Solaris2.5 support and cleaned up Solaris2.x support
|
||||
- A little /list fix
|
||||
- Changed the unrealircd.conf version to 1.3
|
||||
- Fixed a bug in the AUTO_JOIN_CHANS
|
||||
- Added OPER_AUTO_JOIN_CHANS to unrealircd.conf, same as AUTO_JOIN_CHANS
|
||||
but is called on /oper
|
||||
- Readded /ns, /cs, etc but this time they point to /nickserv, /chanserv,
|
||||
etc
|
||||
- Removed IRCd Agents and made it so all opers can join unlimited channels
|
||||
- Updated src/chkconf.c to recognize new lines
|
||||
- Added "/mode #chan qa" support to send a list of +q users / +a users in a chan
|
||||
- Fixed "/mode #chan qa" ... see channel.c m_join for the problem ... sts you owe me a tenner =P ..
|
||||
- Removed Reg1, Reg2 etc etc and register. Modern compilers optimize better
|
||||
that way
|
||||
- Sidenote: /msg nick@ bug can easily be caused in m_message
|
||||
- Unreal3.1-beta1(build2)
|
||||
- Disabled ID_* stuff but is still there, saves memory
|
||||
- Made user->virthost a dynamic string now
|
||||
- Fixed a virthost bug again, and starting to wreck in meow's badword patch,
|
||||
gonna be a swearword filter and new version of REMOVE_ADVERTISING
|
||||
- Added meow's badword patch
|
||||
- Moved the badword patch chmode to +G (G Rated Channel) cause thats what some other ircd's use so lets try
|
||||
and keep cross compatibility :P
|
||||
- Added networks/interturk.network
|
||||
- Fixed a bug in /names thanks to lucas for reporting it and fixing it :)
|
||||
- Changed the badword umode to +G also
|
||||
- Removed some unused variables from dynconf.h
|
||||
- Cleaned up the dynconf and network file code to use less memory
|
||||
- Fixed the kill bug in NICKv2, caused by codemastr(TM) code
|
||||
(was calling m_join before sending NICK info to other servers)
|
||||
- SO NO IT WAS NOT MY FAULT *slap* (Stskeeps) -
|
||||
- Did an attempt on fixing the /msg nick@ bug
|
||||
- /stats s in DEVELOP mode will show cached scache hosts
|
||||
- Added src/aln.c, for the new ALN system, read doc/aln.doc
|
||||
- Minor ALN fix
|
||||
- Introduced ALN system, look at send.c::sendto_serv_butone_nickcmd, a
|
||||
little better, we can scrape some functions now
|
||||
- Some more ALN stuff, the server now understands |<aln> prefixes,
|
||||
find_client too
|
||||
- Added the "IRC Operators Message Of The Day" to /opermotd
|
||||
- Made Y:1 class in makeconf max 250 (we might get some complaints here,
|
||||
but people can change to their limit, but we have to make it this low
|
||||
because else the program rj had can flood/crash the server
|
||||
- Fixed a ALN problem with |nick persons getting killed off
|
||||
- Removed an OLD EliteIRCD reference in ./Config, thanks to Linus
|
||||
- Moved the ALN prefix to @ instead of |, as | would conflict with
|
||||
clients
|
||||
- Fixed ALN problem with it masskilling everyone :P
|
||||
- ** RELEASE OF UNREAL3.1-BETA2 **
|
||||
- Small Linux-ALPHA fix
|
||||
- A small vsendto_prefix bugfix(?)
|
||||
- Added /stats e to list e:lines
|
||||
- Fixed a small /list problem
|
||||
- Added #define USE_LOCALE, uses locale stuff in *nix versions
|
||||
to make better toupper() tolower(). might help some chinese nick
|
||||
things too
|
||||
- Fixed a few minor NOSPOOF things
|
||||
- Changed ircsprintf() to work with %lu with 0-5
|
||||
- Added unreal-test.network, for the upcoming Unreal TESTnet (for beta
|
||||
testers and developers only)
|
||||
- Using MyFree/MyMalloc now instead of MyRealloc.. lets hope it fixes
|
||||
something
|
||||
- Fixed the virthost (possible), need extensive testing
|
||||
- Possible fix of some server_estab problems
|
||||
- Added networks/cc2.network, networks/kissland.network, and networks/digital-irc.network
|
||||
- Changed unrealircd.conf version to 1.5
|
||||
- Added HOST_TIMEOUT and HOST_RETRIES to unrealircd.conf to customize host resolving times
|
||||
- Added Freelinks garbage collector (by Stskeeps :)), saves a lot of memory.
|
||||
Check include/config.h on configuring it (default values should do)
|
||||
- Fixed a /chghost and /chgident buffer overflow problem reported
|
||||
by Gravitron.
|
||||
- Added Solaris2.6 and 2.7 support
|
||||
- Added /dccdeny to add a temporary dccdeny, erased on /rehash -dccdeny
|
||||
- Added /undccdeny, if the EXACT file you type is found it is removed, else it uses wildcards to search
|
||||
- Made it so you can't add duplicate dccdenys
|
||||
- IRCstats.operators count fix. It MUST work now.
|
||||
- Fixed a bug in dccdeny
|
||||
- Added a logo to the IRCd startup and made it work a little bit better
|
||||
- Made version.c update when .c.SH is changed
|
||||
- Made sendto_serv_butone_token work with ALN prefixes too
|
||||
- Fixed an SQLINE bug
|
||||
- SVSFLINEs now sync when a server links
|
||||
- SVSFLINEs are now tokenized
|
||||
- Fixed the /nick othernick thing failing (ALN fault, lets hope it doesnt
|
||||
break other stuff)
|
||||
- Implemented DOUGH_HASH from hybrid IRCd
|
||||
- Ran Unreal thru another memory leak check
|
||||
- Fixed a whowas.c memory leak
|
||||
- Added /rehash -garbage which will clean up freelinks
|
||||
- NOTE on PTlinks so called make yourself oper bug.. cannot see how it
|
||||
can trigger at all.
|
||||
- Fixed up some E:line code
|
||||
- Added n:lines banning based on real names (E:lines override n:lines)
|
||||
- Fixed a minor bug in m_message
|
||||
- Fixed up and ALNized SERVER commands like @E8 SERVER name
|
||||
for instance.. sts tends to severely drool over this
|
||||
- Hopefully fixed the /msg unknownnick missing ERR_NOSUCHNICK bug
|
||||
- Fixed the cannot change to lowercase nick thing, and made
|
||||
find_server() call hash_find_server instead of hash_find_client
|
||||
*slaps* to stskeeps :P
|
||||
- Fixed a bug caused by sts's '/msg unknownnick missing ERR_NOSUCHNICK bug' fix :)
|
||||
- n:lines now checked on /setname (not checked for opers)
|
||||
- Fixed a bug caused by a line of code I forgot to remove ;P
|
||||
- Fixed the pesky \r bug caused by windows editors. Unreal ignores \r now
|
||||
in ircd.conf
|
||||
- For any sake, included the PTlink bugfix.., had some reports from
|
||||
zurna.net of it
|
||||
- Fixed an n:line bug(nice bug really? :P)
|
||||
- Removed behavoir of co-admins able to set +q in #channels
|
||||
(i think this was cos i was co-admin long time ago -sts)
|
||||
- Made IRCops able to talk through +b, suggested by The_Cat
|
||||
- Added /chgname nick :new realname and /svsname as an alias for it
|
||||
(suggested by ^Tux^)
|
||||
- Fixed Sts's favorite mistake
|
||||
- Indented Unreal .c files
|
||||
- PROTOCTL's can be said more than once now
|
||||
- Fixed a /dccdeny - /undccdeny bug reported by auspice
|
||||
- Fixed the negative oper count bug. Was caused by codemastr-coding(TM)
|
||||
- Removed the old non-caching motd functions
|
||||
- Some IRCstats.unknown fixes..
|
||||
- Took out compatibility for "Pyramid OS", is ancient and let them
|
||||
fix their fscked up os
|
||||
- If a user (unknown connection) floods 2K (2048 byte) the user is
|
||||
disconnected and tkl z:lined for 600 secs (10 mins). Idea by GZ
|
||||
from StarChat IRCd, code recoded by Stskeeps
|
||||
- A ircd.conf Y:Line class is not added if it contains max clients
|
||||
> (MAXCONNECTIONS - 15)
|
||||
- Flood activates only at unknown connections and only at 4K now ..
|
||||
- Fixed a bug in m_setname with n:lines
|
||||
- Added n:line support to m_chgname
|
||||
- n:lines are now checked after a rehash
|
||||
- Did a bugfix on ALN and non-ALN servers
|
||||
- Fixed a bug with /chgname with incorrect parameters to other servers
|
||||
- "Fixed" the /stats u bug?
|
||||
- Fixed +f not working (?)
|
||||
- Made the Own-protection just reduce the class maxli instead of bitching..
|
||||
- Did a dirty hack on ALN problem with colliding hash (will deny linking in
|
||||
wrong servers)
|
||||
- Fixed /stats C not showing N:lines, reported by auspice
|
||||
- Fixed codemastr (possible) fucked up the shell ircd script with
|
||||
overwriting it ...
|
||||
- Created /shun, /gline style. /shun +user@host time reason /shun -user@host
|
||||
will extend it so you can /shun +nick later
|
||||
- A little anti-0 fix in channel.c
|
||||
- Made MODE_X, MODE_I etc show mode change to user
|
||||
- Added channel mode +C to disallow channel CTCPs, /me (CTCP ACTION) is still allowed
|
||||
- Fixed a bunch of +H bugs
|
||||
- Fixed a bug where the channel was still shown in /who for +I users
|
||||
- First part of ZIP_LINKS
|
||||
- Fixed a typo in ./newnet
|
||||
- Made /close reset IRCstats.unknown ..
|
||||
- Made SVSO (ofcourse) IRCstats.operators--;
|
||||
- Another IRCstats.unknown fix. Hope this works (hacked from undernet code)
|
||||
- NETINFO protocol 0 is accepted as valid protocool (for services etc)
|
||||
- /stats s is now avail only for opers in mainstream
|
||||
- Took out "nick did a /userhost on you"
|
||||
- Reduced hashtable size
|
||||
- Took out sequent/dynix support
|
||||
- Fixed a bug that prolly was fixed by Potvin, but was "not fixed correctly"
|
||||
- Fixed a crash problem in register_user and most likely fixed the "strange
|
||||
vhost" thing, (was a dumb bug, mising ircsprintf)
|
||||
- Fixed the *** NickServ sets mode +creep SVS2MODE bug..
|
||||
- sendto_serv_butone_token_opt ()..
|
||||
- Small testing stuff
|
||||
- In ./Config it runs a quick test to see how many socket()s you can do
|
||||
- Fixed the double +cF notice on local connections exiting, ugly hack
|
||||
- Removed the last traces of unix sockets, flag 0x10 free now
|
||||
- Made all ircops able to use +F (totally this time)
|
||||
- /quote close do not show realhost of caller anymore
|
||||
- /shun accepts nick in add mode now (adds *@host)
|
||||
- Allowed /shunned users to use /pong now
|
||||
- Fixed (by DrBin) Shun and Gline bug, where they replaced eachothers ->type
|
||||
.... Learn that (= != ==) /me looks at Sts
|
||||
- You can now specify 0 as the time for any TKL (ex Glines, Shun) for it to be perm
|
||||
- Fixed a +L bug, (3.1 only) where any op could set +L
|
||||
- Added channel mode +u, "Auditorium". Makes /names and /who #channel only
|
||||
show @'s
|
||||
- Added config.h setting to disable oper overrides, NO_OPEROVERRIDE
|
||||
- Added Debug support to win32 makefile ... compile with syntax
|
||||
NMAKE -f makefile.win32 DEBUG=1
|
||||
inorder to have debug support ... leave the DEBUG=1 out for normal builds
|
||||
- Fixed ircsprintf.h ... we do want it to compile in debug mode yes ?
|
||||
- Made /addline write to correct place when you use -f
|
||||
- Made /zline not memory corrupt/crash, bad df bug
|
||||
- Fixed a counting bug with unknown connections, very hopefully
|
||||
- Fixed /htm giving wrong response when /htm to 1
|
||||
- Fixed /shun showing "1970" to permanently shunned users
|
||||
- Fixed ./Config showing freebsd 3.0 in freebsd 4
|
||||
- Made so badwords.*.conf accepts # comments
|
||||
- Added some default default badwords.message.conf and badwords.channel.conf
|
||||
- Made so auditorium mode shows users to @'s
|
||||
- Fixed a bug where /chgident would overflow into the *real* host if it where greater than USERLEN
|
||||
because _someone_ aka sts told it to check against HOSTLEN rather than USERLEN... reported by wshs
|
||||
- Fixed a bug in badwords not loading words correctly, and upped word limit
|
||||
to 50
|
||||
- Small fix with ./Config showing incorrect path of stddef.h
|
||||
- Made operkick be part of NO_OPEROVERRIDE
|
||||
- Made admins unable to be shunned
|
||||
- Made some socket errors which normally only showed up in DEBUGMODE, show
|
||||
up in ircd.log as well
|
||||
- Fixed a wrongly outputted message (in hash collision detect)
|
||||
- Removed aHush, not in use
|
||||
- Removed DISALLOW_MIXED_CASE and IGNORE_FIRST_CHAR, waste of space
|
||||
- Made IDLE_FROM_MSG stock define
|
||||
- Made IRCII_KLUDGE disappear :P
|
||||
- Fixed SENDQ_ALWAYS to be mainstream define (as always)
|
||||
- Removed s_gline, not in use, removed some modeless channel checks (not needed), removed an old zombie
|
||||
code, and removed a line from aHush that was missed
|
||||
- Added networks/seveneagle.network
|
||||
- /msg irc <command> now works whether or not WEBTV_SUPPORT is on
|
||||
- Moved /mode #channel ^ and ListBits() to #ifdef DEVELOP
|
||||
- Made it so servers behind a U:lined server (ex Juped Server) are U:lined too, helpful if HIDE_ULINES is
|
||||
on (from bahamut)
|
||||
- Added find_uline (from bahamut) for the new U:line code
|
||||
- Modified /map to work with the new U:line code
|
||||
- Redid s_err.c to be ALOT faster, based on bahamut's s_err.c (ALOT of
|
||||
work)
|
||||
- Fixed last R_LINE stuff (check_time_interval)
|
||||
- Fixed /setname desynch
|
||||
- Removed IsService(), and some wierd stuff
|
||||
- Broken INETD support removed
|
||||
- Removed some odd Clone stuff(?)
|
||||
- Added Blowfish encryption ability (SetSecure()), will extend to more
|
||||
better encryption
|
||||
- Fixed a typo in /stats z
|
||||
- Some more crypto stuff, will work on the new engine tommorow
|
||||
- You can now encrypt the I:line passwords using mkpasswd (must have CRYPT_ILINE_PASSWORD defined)
|
||||
- Editted Config to ask if you want encrypted I:line passwords
|
||||
- Made it so you can encrypt restart/die passwords (same as I:line passwords)
|
||||
- Editted Config to ask about encrypted restart/die passwords
|
||||
- Made it so you can *view* a channel topic using /topic #channel without being a member
|
||||
- Removed , support from /topic (not needed)
|
||||
- Removed count_channels (not in use)
|
||||
- Made a major is_banned speed up
|
||||
- Redid K:line and n:line checking to be alot faster
|
||||
- Fixed crypto stuff 100% :))
|
||||
- Added CRYPTOIRCd ('r') to version string
|
||||
- Added some more crypto stuff
|
||||
- /crypto <algoritm> <keyfile laying in keys/> <parameters>
|
||||
- Fixed a ->passwd bug caused by codemastr..
|
||||
- Added fclose() calls to the vhost, dccdeny, and chrestrict confs
|
||||
- Some V:line stuff (added VL protoctl, and parsing of the SERVER command for the proto and flags)
|
||||
- Fixed so that in +c it shows if a user is connected securely
|
||||
- Backported the passwd stuff, not needed.
|
||||
- Fixed a crash problem on /quit or /squit
|
||||
- Fixed some aligning in the VL PROTOCTL
|
||||
- Fixed some fucked up passwd stuff again ..
|
||||
- Fixed a little Client Protoctl problem
|
||||
- Fixed a crypto problem (forgot an #ifdef bad sts!)
|
||||
- Fully added V:lines (doesn't really do much till the next version, since old versions don't support it)
|
||||
- Added /stats v to list V:lines (/stats V still does vhost.conf)
|
||||
- Added OpenBSD 2.x support, thanks to noriko for donating the development shell
|
||||
- Added so stuff like Lost connection to, (report_error) only goes to realops
|
||||
- Added some more descriptive error messages
|
||||
- Added doc/crypto.doc describing the encrypted irc protocol
|
||||
- Fixed a sendto_serv_butone_token problem
|
||||
- Removed any trace of MD5, we use random() for nospoof now, this fixed a
|
||||
license problem too
|
||||
- Removed NOSPOOF_SEED01 and 02
|
||||
- Added VHP protoctl, (not in use in the synch). This makes virthost field
|
||||
in NICKv2 use the real virthost even if its +t. (Thanks to SL7)
|
||||
- Added support for the CR Java Chat auto join feature
|
||||
- Fixed a msg.h location problem ..
|
||||
- Added secure connections and openssl tracing to Config
|
||||
- Added regex portablity and checks in Config
|
||||
- Added a #define capability to config.h (DISABLE_USERMOD),
|
||||
disables /sethost, /setident, /chgname, /chghost, /chgident
|
||||
- Fixed a /rehash -garbage bug reported by Curt|s
|
||||
- Added networks/makenet (generates a network configuration file)
|
||||
- Added networks/staticedge.network
|
||||
- Fixed some host revealing nick collision stuff
|
||||
- Tokenized nick->nick PRIVMSG and NOTICE
|
||||
- Made it so you can remove a protoctl by putting a - in front
|
||||
- Fixed a bug in summon
|
||||
- Added protection against webproxies
|
||||
- Fixed TKL?
|
||||
- Added SJ3, removed the old
|
||||
- SJ3 bugfix, and another
|
||||
- Hopefully a res.c fix.
|
||||
- Fixed a +I bug
|
||||
- Fixed a more SJ3 bug
|
||||
- Updated networks/networks.ndx (bad sts!)
|
||||
- Added networks/linuxsquare.network
|
||||
- Added networks/chatstation.network
|
||||
[recall]
|
||||
- Fixed the pesky hostname bug
|
||||
- Fixed a NO_OPEROVERDIE bug reported by Taz
|
||||
- Fixed a +L bug
|
||||
- Fixed a typo in Config
|
||||
- SJ3 fixes. Let's hope this works (f*cken hell..)
|
||||
- Fixed a V:line bug
|
||||
- Added /infoserv (you can stop bugging us now skold ;P)
|
||||
- Removed ALN, and the ALN system.
|
||||
- Added base64 encoding instead, for ALN v2 (NS)
|
||||
- Removed a SJ3 debug msg
|
||||
- Removed SVSMODE +l support, and fixed servicestamp and +d support
|
||||
- Changed to ircu/hybrid6/unreal mix of numeric 005
|
||||
- Fixed a SJ3 Fake Direction loopbug (kills on nick collisions)
|
||||
- SJ3 fixes, loop fix
|
||||
- Added NS, new generation ALN.
|
||||
- Added llthangel's whoisfix.patch, Makes sure +hv users show up as
|
||||
%#channel instead of +#channel. Bug report by ^Fanta.
|
||||
- Changed find_server_quick to work with masks too ..
|
||||
- Removed UPING UDP socket. Only resfd opens a udp fd now
|
||||
- Small memory cleanup
|
||||
- NS introduction in sendto_serv_butone_token
|
||||
- Fixed Q:lined nick NickServ from <unregistered> on Nickname Server message
|
||||
- Fixed a problem in synch using acptr->name as info line
|
||||
- Introduced NS in SQLINE..
|
||||
- Fixed a problem in SVS2MODE not displaying mode changes, and well known
|
||||
why
|
||||
- Recoded SVSNOOP, but the IRCd doesn't get it at all??
|
||||
- added llthangel to credits
|
||||
- Changed channel.c so when you kick someone as halfop it doesn't show as an
|
||||
OperKick (unless you kick an op) (reported by ^Fanta, patch by llthangel)
|
||||
(rc2)
|
||||
- Fixed SVS2MODE bug with illegal modes
|
||||
- Fixed /notice @%+ bug, where it didnt work at all
|
||||
- Fixed a small chmode +u bug
|
||||
- Added sendto_chanops_butone because of codemastr's laziness
|
||||
- Fixed a few +u bugs
|
||||
- Fixed a +I bug (yes another one)
|
||||
- Changed channel.c so that when an opped non +q/+a Oper kicks a user who
|
||||
is +q/+a it invokes an OperKick (patch by llthangel)
|
||||
- Fixed the +lL (+Ll) bug, will first be fixed 100% when all is 3.1
|
||||
- Possible fixed the lopts bug
|
||||
- Fixed a egcs problem in Config, the strtok bug
|
||||
- Fixed the 'ulimit core size failed' bug (now checks whether it should
|
||||
set the core size to unlimited in ./Config
|
||||
- Changed s_user.c so that Opers will see +s channels in /whois
|
||||
(patch by llthangel)
|
||||
- +u now lists +a and +q people, and sends JOINs/PARTs to +a and +q people
|
||||
- Fixed a /mode (umode) typo where it said no such channel rather than no such nick,
|
||||
reported by llthangel
|
||||
- Disabled anything with time in /list options temporary, causes bugs
|
||||
- Fixed a little /chghost bug
|
||||
- Fixed a SJ3 bug with ban syncing to SJ2 servers
|
||||
- Fixed some cloak bugs(???)
|
||||
- Made it so you can /knock without a reason, and a few /knock cleanups
|
||||
- Made it so if the server name specified in the M:line does not contain a "."
|
||||
the ircd logs it to ircd.log and dies
|
||||
- Updated ./ircd to also say to look at ircd.log
|
||||
- Fixed a SQLINE synch bug
|
||||
- Added command line option -F to prevent the ircd to fork out
|
||||
- Fixed the f*cken TKL bug
|
||||
- Fixed a netsplit bug
|
||||
- Changed some find_server(name, NULL) to find_server_quick to speed up
|
||||
lookup of servers
|
||||
- Made find_server_quick a prototype, and made some work more quicker as
|
||||
well
|
||||
- Removed the : in :nick NICK newnick :timestamp
|
||||
- Added script ./update to help update, uses pull technology (wget, cvs)
|
||||
- Added script ./Setup which makes the user forced through Unreal.nfo, FAQ,
|
||||
Config, and all the things we want them to read/do to compile the IRCd
|
||||
- Updated PREFIX Client Protoctl
|
||||
- Added ^MrMike^'s command list, this one will be updated
|
||||
- Removed ID_CVS, hopefully fixing some bastard stuff
|
||||
- Fixed a last minute SJOIN bug
|
||||
[ last fixes ]
|
||||
- Re-added res_comp.c and win32.c and res_mkquery.c, which was damaged by
|
||||
the ID_CVS remove
|
||||
- Fixed a SHOWCONNECTINFO bug
|
||||
- Fixed a MODE_STRIPWORDS bug
|
||||
- Fixed a PART bug
|
||||
- Fixed a STRIPBADWORDS bug
|
||||
- Fixed a BotMOTD bug
|
||||
- Added Dianora's /userhost
|
||||
- Recoded /links using NS
|
||||
- Recoded /map a bit using NS, and added usercounts to Server struct
|
||||
- Some crazy time_t -> TS stuff, will save us some time in 2038
|
||||
- Fixed the "/mode #blah +Cplkf 1 moo 5:5" ( mode/#blah [+pClkf 1moo 5:5]
|
||||
problem
|
||||
- Hopefully fixed the +x problem
|
||||
- Fixed a bug with mkpasswd on OpenBSD
|
||||
- Added desynch +e warning, and updated ./update enough ...
|
||||
- Updated update to work better, and that you can use lynx instead of wget
|
||||
- Added #undef SHUN_NOTICES, to add notices for users who are shunned
|
||||
- Fixed bug with U:Lines should be able to privmsg/notice and recieve
|
||||
badwords :P, does not work in channels
|
||||
- Removed the old GLINE system, TKL is now standard.
|
||||
- Added INV_TRACK define, we want people testing this.
|
||||
- Fixed the -1 usercount bug, found by codemastr, fixed by Stskeeps
|
||||
- Fixed a +h bug reported by Dukemaster
|
||||
- Added IRIX support (does it work?)
|
||||
- Fixed crypter so it actually functions (Makefile now sets mode 700) and
|
||||
it encrypts X and N lines too.
|
||||
- Fixed empty mode sends in register_user, reported by Bagge
|
||||
- Added some portability stuff
|
||||
- Fixed some empty-line/missing parameter stuff in dccdeny, vhost,
|
||||
and dynconf, chrestrict
|
||||
- Made vhost strip too long vhosts
|
||||
- Removed INV_TRACK
|
||||
- Fixed a typo in /vhost
|
||||
- Fixed some problems/typos/notlookingsogood (TM) bugs, in the tkl code
|
||||
- Fixed ban merging/similar bug in SJOIN
|
||||
- Made /kick for opers only be possible for netadmin/techadmin
|
||||
- Fixed /server so it doesnt support SERVER name :info anymore..
|
||||
|
||||
|
||||
|
||||
*** Unreal3.0-Morrigan(fix) ***
|
||||
|
||||
@@ -7,6 +7,13 @@ P.O.Box 52
|
||||
7400 Herning
|
||||
Denmark
|
||||
|
||||
(if you want to that is .. it will just make us a little more able to code
|
||||
even more on this project. You will get in /credits if you do so).
|
||||
|
||||
Payment preferred (if money, is western union) - contact me on email
|
||||
regarding other methods
|
||||
|
||||
|
||||
-- Stskeeps
|
||||
|
||||
[ $Id$ ]
|
||||
|
||||
@@ -1,156 +1,99 @@
|
||||
$Id$
|
||||
|
||||
Installation Procedures for the UnrealIRCD:
|
||||
=======================================================================
|
||||
Created by Stskeeps <stskeeps@tspre.org>
|
||||
=======================================================================
|
||||
|
||||
This document describes how to install ircd, the unix daemon that acts as
|
||||
an IRC server.
|
||||
|
||||
For more information on UnrealIRCD contact us at
|
||||
unreal-dev@lists.sourceforge.net
|
||||
|
||||
The UnrealIRCD is available from http://unreal.tspre.org
|
||||
along with the latest copy of this document.
|
||||
###############################################################################
|
||||
#### Unreal IRC Unix Daemon Installation Guide ####
|
||||
#### UnrealIRCD ver 3.1.1 ####
|
||||
#### unreal-dev@lists.sourceforge.com ####
|
||||
#### http://www.unrealircd.com/ ####
|
||||
###############################################################################
|
||||
#### Unpackaging the IRCD ####
|
||||
#### ####
|
||||
#### 1) gzip -d Unreal3.1.1.tar.gz ####
|
||||
#### ####
|
||||
#### 2) tar xvf Unreal3.1.1.tar ####
|
||||
#### ####
|
||||
#### 3) cd Unreal3.1.1/ ####
|
||||
###############################################################################
|
||||
#### Compiling the IRCD ####
|
||||
#### ####
|
||||
#### 1) Supported Operating Systems ####
|
||||
#### ####
|
||||
#### OS and Version Compiler and Version Comments ####
|
||||
#### --------------- ------------------------ ------------------------ ####
|
||||
#### NetBSD 1.2B gcc 2.7.2 ####
|
||||
#### FreeBSD 2.1.0 gcc 2.6.3 Don't use crypt at all ####
|
||||
#### SunOS 4.1.4 gcc 2.7-96q1 (Cygnus) ####
|
||||
#### Solaris 2.4 gcc 2.7-96q1 (Cygnus) (SunOS 5.4) ####
|
||||
#### Solaris 2.5 SunWorks Pro C (SunOS 5.5.1) ####
|
||||
#### cc: SC4.0 18 Oct 1995 C 4.0 ####
|
||||
#### Digital Unix 3.2 gcc 2.7-96q3 (Cygnus) ####
|
||||
#### Linux 2.0.24 gcc 2.7.2.1 ####
|
||||
#### PUX 9.01 gcc 2.6.3 ####
|
||||
#### HPUX 10.01 gcc 2.7-96q3 (Cygnus) ####
|
||||
#### Linux PPC (iMac) ####
|
||||
#### AmigaOS 3.0 GCC egcs-2.91.66 (compile with -D_AMIGA) ####
|
||||
#### Windows NT/95 MSVC++ 4.0 ####
|
||||
#### Linux Mandrake Read FAQ ####
|
||||
#### Linux 2.3.x gcc 2.95.2 glibc 2.1.3 ####
|
||||
#### ####
|
||||
#### 2) DO NOT edit the MakeFile or any of the files to configure your ####
|
||||
#### IRCd. The newest releases of Unreal only require you to run: ####
|
||||
#### ####
|
||||
#### ./Config ####
|
||||
#### ####
|
||||
#### 2a) Windows users: please read WIN32 ####
|
||||
#### ####
|
||||
#### 3) When in ./Config put in the best answers to your knowledge. ####
|
||||
#### This is all pretty self explanatory. We suggest, to advoid ####
|
||||
#### problems later on, put the DPATH and SPATH as the default. ####
|
||||
#### (When it asks where the config files and binarys will be). ####
|
||||
#### Also, when it asks for max file connections, the default is ####
|
||||
#### 1024, but above it you will see what your true limit is. ####
|
||||
#### Please put the maxfd number in or else your IRCD will not ####
|
||||
#### start at all and you will have to re-compile. ####
|
||||
#### ####
|
||||
#### 4) make ####
|
||||
#### This will compile your server based on you settings chosen in ####
|
||||
#### ./Config ####
|
||||
#### ####
|
||||
#### 4a) Hopefully, the server will compile without incident. If it ####
|
||||
#### does not, and you are not able to determine the error, please ####
|
||||
#### email supporters@lists.unrealircd.org and hopefully someone ####
|
||||
#### will be able to help you. Another suggestion is going on IRC ####
|
||||
#### /server irc.ircsystems.net #UnrealIRCD ####
|
||||
#### ####
|
||||
#### 4b) make install - IS NOT NEEDED ####
|
||||
#### ####
|
||||
###############################################################################
|
||||
#### Configuring the Server ####
|
||||
#### ####
|
||||
#### 1) ./makeconf ####
|
||||
#### This executable has been created to help with your ircd.conf ####
|
||||
#### creation process. It walks you through the steps and makes the ####
|
||||
#### file for you. Note: If you want to edit your ircd.conf you ####
|
||||
#### should only need to: edit ircd.conf. If you ./makeconf again ####
|
||||
#### it will delete the old ircd.conf and re-write a new one. ####
|
||||
#### ####
|
||||
###############################################################################
|
||||
#### Starting the Server ####
|
||||
#### ####
|
||||
#### 1) Make sure you're in the top level Unreal3.1.1 directory.. ####
|
||||
#### ####
|
||||
#### 2) ./ircd ####
|
||||
#### ####
|
||||
#### 3) If you get the error screen, please go through and check each ####
|
||||
#### point presented, if you have no luck, go on IRC ####
|
||||
#### /server irc.ircsystems.net #UnrealIRCD ####
|
||||
#### ####
|
||||
#### 4) /server yourserverip or domainname ####
|
||||
#### ####
|
||||
###############################################################################
|
||||
#### Updating the IRCD ####
|
||||
#### ####
|
||||
#### 1) ./update ####
|
||||
#### Newer releases of Unreal allow the use of ./update which logs ####
|
||||
#### into the Unreal server and allows you to pick a new version to ####
|
||||
#### to upgrade to. ####
|
||||
#### ####
|
||||
###############################################################################
|
||||
|
||||
|
||||
=======================================================================
|
||||
This version of the UnrealIRCD is known to compile on the following
|
||||
platforms, and with the following compilers. If you wish to add to this
|
||||
list, send the relevant information to us.
|
||||
|
||||
OS and Version Compiler and Version Comments
|
||||
------------------- ------------------------ -------------------------------
|
||||
NetBSD 1.2B gcc 2.7.2
|
||||
|
||||
FreeBSD 2.1.0 gcc 2.6.3 Do NOT use crypt at all...
|
||||
|
||||
SunOS 4.1.4 gcc 2.7-96q1 (Cygnus)
|
||||
|
||||
Solaris 2.4 gcc 2.7-96q1 (Cygnus) (SunOS 5.4)
|
||||
|
||||
Solaris 2.5 SunWorks Pro C (SunOS 5.5.1)
|
||||
cc: SC4.0 18 Oct 1995 C 4.0
|
||||
|
||||
Digital Unix 3.2 gcc 2.7-96q3 (Cygnus)
|
||||
|
||||
Linux 2.0.24 gcc 2.7.2.1
|
||||
|
||||
HPUX 9.01 gcc 2.6.3
|
||||
|
||||
HPUX 10.01 gcc 2.7-96q3 (Cygnus)
|
||||
|
||||
Linux PPC (iMac)
|
||||
|
||||
AmigaOS 3.0 GCC egcs-2.91.66 (compile with -D_AMIGA)
|
||||
|
||||
Windows NT/95 MSVC++ 4.0
|
||||
|
||||
Linux Mandrake Read FAQ
|
||||
|
||||
Linux 2.3.x gcc 2.95.2 glibc 2.1.3
|
||||
|
||||
=======================================================================
|
||||
Unpacking the Distribution
|
||||
|
||||
If you are reading this, you have most likely already done this, but to
|
||||
recap:
|
||||
|
||||
The UnrealIRCD server comes tarred and gziped. To uncompress it and expand
|
||||
it, use the following commands at the Unix prompt:
|
||||
|
||||
gzip -d Unreal3.0.tar.gz
|
||||
tar -xvf Unreal3.0.tar
|
||||
|
||||
This will create a new directory called Unreal3.0 and unpack the source
|
||||
into it.
|
||||
|
||||
=======================================================================
|
||||
Editing the Configuration Files
|
||||
|
||||
In previous versions of the source code many files had to be edited to
|
||||
make things right for any given server.
|
||||
|
||||
In this version you DO NOT NEED TO EDIT THE Makefile OR ANY FILES
|
||||
IN include! That is, unless you set some strange options. If you
|
||||
find the need to edit include/config.h, for example,
|
||||
mail us and tell us why ; Config can be made smarter, and that will make
|
||||
it so you won't have to edit anything for the next version.
|
||||
|
||||
=======================================================================
|
||||
Compiling Your Server
|
||||
|
||||
Windows users: You must compile the Config program first. To do this
|
||||
run the following command: $CC src\Config.c
|
||||
where $CC is the name of your compiler. for MSVC users that is 'cl'
|
||||
|
||||
To build the server, simply run
|
||||
% ./Config
|
||||
to start the configuraton program. This program looks at your system
|
||||
and generate the include/setup.h, include/settings.h, and Options files.
|
||||
You will be asked some questions. Usually the default answers are the best
|
||||
ones and most correct. To accept the default, just hit RETURN.
|
||||
|
||||
Next, type 'make'. This will compile your server. Depending on your system,
|
||||
this may be a good time for a caffeine break. (MSVC users run 'nmake')
|
||||
|
||||
Hopefully, the server will compile without incident. If it does not, and
|
||||
you are not able to determine the error, please email
|
||||
unreal-dev@lists.sourceforge.net and hopefully someone will be able to help you with the problem. If you
|
||||
do need to fix something, mail there with a patch.
|
||||
|
||||
BE CERTAIN TO INCLUDE OPERATING SYSTEM INFORMATION (uname -a) AND COMPILER
|
||||
VERSION (gcc -v, for instance) IN ALL BUG REPORTS.
|
||||
|
||||
|
||||
=======================================================================
|
||||
Installing the Files
|
||||
|
||||
'make install' does not work in this release -- it doesn't do anything
|
||||
except a compile if that is needed.
|
||||
|
||||
The only files you need are the binary from src/ircd and and an ircd.conf
|
||||
(see below for copying doc/example.conf as your initial ircd.conf). You
|
||||
probably will want to create a MOTD file too, as well as place the man
|
||||
pages from the doc directory to appropriate place in your system.
|
||||
|
||||
|
||||
=======================================================================
|
||||
Configuring Your Server
|
||||
|
||||
The previous step places a file named 'example.conf' into your irc
|
||||
directory you specified to Config.
|
||||
|
||||
To create an IRC configuration file, edit: ircd.conf
|
||||
|
||||
Now edit this file to reflect your server. The file is mainly
|
||||
self-explanatory. Note that if you plan to use your server on ROXnet,
|
||||
make sure that you have the following line:
|
||||
|
||||
U:services.roxnet.org:*:*
|
||||
|
||||
If you need help configuring your file, please connect to ROXnet,
|
||||
(irc.flirt.org or irc.roxnet.org) - go to channel #UnrealIRCd, and ask.
|
||||
|
||||
|
||||
=======================================================================
|
||||
Starting Your Server
|
||||
|
||||
Simply enter the complete path to the executable into the Unix command
|
||||
line, then hit return. Your server is now operational, assuming that you
|
||||
have completed all the steps described above.
|
||||
|
||||
NOTE: If you get something like the following when running ircd:
|
||||
|
||||
ircd fd table too big
|
||||
Hard Limit: 256 IRC max: 1024
|
||||
Fix MAXCONNECTIONS
|
||||
|
||||
You need to change config.h and recompile. Find the line that says
|
||||
"#define MAXCONNECTIONS 1024", and change it to the number given after
|
||||
"Hard Limit" (most likely 256), then make the server again, following the
|
||||
above instructions.
|
||||
|
||||
Enjoy!
|
||||
- The UnrealIRCd Team - unreal-dev@lists.sourceforge.net
|
||||
|
||||
@@ -19,10 +19,11 @@
|
||||
#* $Id$
|
||||
#*/
|
||||
|
||||
CC=gcc
|
||||
CC=@CC@
|
||||
INCLUDEDIR=../include
|
||||
NETWORKSDIR=
|
||||
FROMDOS=/home/cmunk/bin/4dos
|
||||
|
||||
# [CHANGEME]
|
||||
# Default flags:
|
||||
# Change XCFLAGS if you don't like what Config puts there. Same with
|
||||
@@ -31,9 +32,13 @@ FROMDOS=/home/cmunk/bin/4dos
|
||||
# If you are configuring by hand, try "-O -g" for XCFLAGS, and leave
|
||||
# IRCDLIBS blank. If that fails, try recomendations below.
|
||||
#
|
||||
XCFLAGS=
|
||||
IRCDLIBS=
|
||||
|
||||
#XCFLAGS=-O -g -export-dynamic -pthread -DSCAN_API=1
|
||||
IRCDLIBS=@IRCDLIBS@
|
||||
CRYPTOLIB=@CRYPTOLIB@
|
||||
OPENSSLINCLUDES=
|
||||
|
||||
XCFLAGS=@CFLAGS@
|
||||
#
|
||||
# use the following on MIPS:
|
||||
#CFLAGS= -systype bsd43 -DSYSTYPE_BSD43 -I$(INCLUDEDIR)
|
||||
@@ -87,53 +92,50 @@ IRCDMODE = 711
|
||||
# [CHANGEME]
|
||||
# IRCDDIR must be the same as DPATH in include/config.h
|
||||
#
|
||||
IRCDDIR=/usr/local/lib/ircd
|
||||
IRCDDIR=@IRCDDIR@
|
||||
|
||||
# [CHANGEME]
|
||||
# Some SunOS versions want this. Try it without first.
|
||||
#RES=res_init.o res_comp.o res_mkquery.o
|
||||
# BSDI systems want this.
|
||||
#RES=res_skipname.o
|
||||
# The rest are perfectly content with this.
|
||||
RES=
|
||||
|
||||
# [CHANGEME]
|
||||
# If you get a compile-time error dealing with u_int32_t, comment out
|
||||
# this line.
|
||||
# NEED_U_INT32_T= -DNEED_U_INT32_T
|
||||
NEED_U_INT32_T=
|
||||
#
|
||||
# If your system is lacking regex, uncomment this line
|
||||
#
|
||||
#REGEX=../extras/regex/regex.o
|
||||
REGEX=@REGEX@
|
||||
|
||||
# [CHANGEME]
|
||||
# If you get a link-time error dealing with strtoul, comment out
|
||||
# this line.
|
||||
# STRTOUL= strtoul.o
|
||||
STRTOUL=
|
||||
STRTOUL=@STRTOUL@
|
||||
|
||||
# [CHANGEME]
|
||||
# If you get crashes around a specific number of clients, and that client
|
||||
# load comes close or a little over the system-defined value of FD_SETSIZE,
|
||||
# override it here and see what happens.
|
||||
FD_SETSIZE=
|
||||
FD_SETSIZE=@FD_SETSIZE@
|
||||
|
||||
CFLAGS=-I$(INCLUDEDIR) $(XCFLAGS) $(NEED_U_INT32_T) $(FD_SETSIZE)
|
||||
# Where is your openssl binary
|
||||
OPENSSLPATH=@OPENSSLPATH@
|
||||
|
||||
CFLAGS=-I$(INCLUDEDIR) $(XCFLAGS) $(FD_SETSIZE)
|
||||
|
||||
SHELL=/bin/sh
|
||||
SUBDIRS=src
|
||||
BINDIR=$(IRCDDIR)
|
||||
MANDIR=/usr/local/man
|
||||
INSTALL=/usr/bin/install
|
||||
RM=rm
|
||||
CP=cp
|
||||
TOUCH=touch
|
||||
|
||||
BINDIR=@BINDIR@
|
||||
INSTALL=@INSTALL@
|
||||
RM=@RM@
|
||||
CP=@CP@
|
||||
TOUCH=@TOUCH@
|
||||
RES=
|
||||
all: build
|
||||
|
||||
MAKEARGS = 'CFLAGS=${CFLAGS}' 'CC=${CC}' 'IRCDLIBS=${IRCDLIBS}' \
|
||||
'LDFLAGS=${LDFLAGS}' 'IRCDMODE=${IRCDMODE}' \
|
||||
'BINDIR=${BINDIR}' 'INSTALL=${INSTALL}' \
|
||||
'RES=${RES}' 'BINDIR=${BINDIR}' 'INSTALL=${INSTALL}' \
|
||||
'INCLUDEDIR=${INCLUDEDIR}' 'IRCDDIR=${IRCDDIR}' \
|
||||
'MANDIR=${MANDIR}' 'RM=${RM}' 'CP=${CP}' 'TOUCH=${TOUCH}' \
|
||||
'RES=${RES}' 'SHELL=${SHELL}' 'STRTOUL=${STRTOUL}'
|
||||
'RM=${RM}' 'CP=${CP}' 'TOUCH=${TOUCH}' \
|
||||
'SHELL=${SHELL}' 'STRTOUL=${STRTOUL}' \
|
||||
'CRYPTOLIB=${CRYPTOLIB}' 'REGEX=${REGEX}' \
|
||||
'CRYPTOINCLUDES=${CRYPTOINCLUDES}'
|
||||
|
||||
server:
|
||||
build:
|
||||
@@ -152,6 +154,12 @@ build:
|
||||
@echo '| file "dynconf" using your favourite viewer or |'
|
||||
@echo '| editor. The file will contain instructions on how|'
|
||||
@echo '| to do the dynamic configuration :) |'
|
||||
@echo '| You might want to see include/config.h to adjust |'
|
||||
@echo '| some settings |'
|
||||
@echo '| |'
|
||||
@echo '| If you really like UnrealIRCd, and would like to |'
|
||||
@echo '| make a donation, please read the Donation file in|'
|
||||
@echo '| this archive. :) |'
|
||||
@echo '| |'
|
||||
@echo '| Thanks for using Unreal IRCd! If you are in need |'
|
||||
@echo '| for any kind of help regarding the IRCd please |'
|
||||
@@ -167,15 +175,12 @@ clean:
|
||||
-@if [ -f include/setup.h ] ; then \
|
||||
echo "To really restart installation, remove include/setup.h" ; \
|
||||
fi
|
||||
-@if [ -f include/settings.h ] ; then \
|
||||
echo "and include/settings.h" ; \
|
||||
fi
|
||||
|
||||
cleandir: clean
|
||||
rm -rf include/networks.h include/setup.h include/settings.h Makefile Settings
|
||||
rm -rf include/networks.h include/setup.h Makefile Settings
|
||||
|
||||
makex: fromdos
|
||||
chmod +x Config newnet bsdinstall ircd ircdcron/ircdchk killircd
|
||||
makex:
|
||||
chmod +x Config newnet ircd ircdcron/ircdchk killircd
|
||||
chmod +x makeconf rehash ircdreg
|
||||
|
||||
fromdos: cleandir
|
||||
@@ -186,7 +191,7 @@ fromdos: cleandir
|
||||
$(FROMDOS) -dv crypt/*
|
||||
$(FROMDOS) -dv ircdcron/*
|
||||
makedist: makex
|
||||
echo "Making UnrealIRCd compatible IRCd Dist."
|
||||
echo "Stamping.."
|
||||
|
||||
stamp: makedist
|
||||
echo "/* Auto created release stamping */" > include/stamp.h
|
||||
@@ -201,5 +206,35 @@ depend:
|
||||
done
|
||||
|
||||
install: all
|
||||
@echo "Now install by hand; make install is broken."
|
||||
$(INSTALL) -m 0700 -d $(IRCDDIR)
|
||||
$(INSTALL) -m 0700 src/ircd $(BINDIR)
|
||||
$(INSTALL) -m 0700 -d $(IRCDDIR)/networks
|
||||
$(INSTALL) -m 0600 networks/*.network $(IRCDDIR)/networks
|
||||
$(INSTALL) -m 0700 networks/makenet $(IRCDDIR)/networks
|
||||
$(INSTALL) -m 0600 networks/networks.ndx $(IRCDDIR)/networks
|
||||
$(INSTALL) -m 0700 -d $(IRCDDIR)/doc
|
||||
$(INSTALL) -m 0600 doc/Authors doc/conf.doc doc/faq doc/tao.of.irc doc/coding-guidelines doc/example.conf doc/features.txt doc/unrealircd.conf.txt doc/Crule.readme doc/commands.txt doc/example.settings doc/services-install-guide doc/unrealircd.doc $(IRCDDIR)/doc
|
||||
$(INSTALL) -m 0700 -d $(IRCDDIR)/aliases
|
||||
$(INSTALL) -m 0600 aliases/*.conf $(IRCDDIR)/aliases
|
||||
$(TOUCH) $(IRCDDIR)/unrealircd.conf
|
||||
chmod 0600 $(IRCDDIR)/unrealircd.conf
|
||||
$(INSTALL) -m 0600 badwords.*.conf LICENSE Donation $(IRCDDIR)
|
||||
$(INSTALL) -m 0700 bugreport makeconf unreal $(IRCDDIR)
|
||||
$(INSTALL) -m 0700 -d $(IRCDDIR)/modules
|
||||
$(INSTALL) -m 0700 src/modules/*.so $(IRCDDIR)/modules
|
||||
|
||||
pem: src/ssl.cnf
|
||||
@echo "Generating certificate request .. "
|
||||
$(OPENSSLPATH) req -new \
|
||||
-config src/ssl.cnf -out server.req.pem \
|
||||
-keyout server.key.pem -nodes
|
||||
@echo "Generating self-signed certificate .. "
|
||||
$(OPENSSLPATH) req -x509 -days 365 -in server.req.pem \
|
||||
-key server.key.pem -out server.cert.pem
|
||||
@echo "Generating fingerprint .."
|
||||
$(OPENSSLPATH) x509 -subject -dates -fingerprint -noout \
|
||||
-in server.cert.pem
|
||||
@echo "Setting o-rwx & g-rwx for files... "
|
||||
chmod o-rwx server.req.pem server.key.pem server.cert.pem
|
||||
chmod g-rwx server.req.pem server.key.pem server.cert.pem
|
||||
@echo "Done!."
|
||||
@@ -1,13 +0,0 @@
|
||||
|
||||
WARNING! WARNING! WARNING! WARNING! WARNING!
|
||||
============================================
|
||||
|
||||
THIS IS AN BETA VERSION OF UNREAL. THIS IS
|
||||
AT NO WAY SUPPORTED BY THE DEVELOPERS. DO NOT
|
||||
COMPLAIN ABOUT ANY DAMAGE CAUSED WITH THIS VERSION
|
||||
OF UNREALIRCD - AS THIS IS A VERSION IN DEVELOPMENT.
|
||||
|
||||
If - however you decide to compile and run this version
|
||||
please tell us if you find any bugs, please mail
|
||||
unreal-dev@lists.sourceforge.net if you do. Any
|
||||
ideas for features etc goes to same address.
|
||||
@@ -0,0 +1,23 @@
|
||||
Unreal IRCD Win32 Version
|
||||
-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
|
||||
Ok, in order to save time, and my nerves i am writing this short readme, and eventually an FAQ (after people ask questions) =)
|
||||
|
||||
This is information on how to run the win32 version, it does not say, and WILL not say how to use an ircd, as that is sufficiently docuimented in the docs !!!!
|
||||
|
||||
you will NEED to modify/create an ircd.conf, follow the documentation for that.
|
||||
|
||||
|
||||
Right, thats almost it( that i can think of), but what happens if the server Crashes ???
|
||||
----------------------------------------------------------------------------------------
|
||||
ok i Have now coded the first bit of usefull (for me) code that dumps the stack to a dialog box, WHAT EVER YOU DO you must do the following:
|
||||
1. Copy and paste EVERYTHING in that dialog box, and send it to me in an e-mail
|
||||
2. Include in that e-mail EVERYTHING that happened in the lead up to the crash
|
||||
|
||||
i hope thats SIMPLE to follow, but it will help me soo much !!!!!
|
||||
|
||||
|
||||
DrBin (Dave)
|
||||
drbin@tspre.org
|
||||
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
#!/bin/sh
|
||||
clear
|
||||
echo "Starting up UnrealIRCd Setup"
|
||||
echo ""
|
||||
echo "Press enter to proceed to setup..."
|
||||
read cc
|
||||
more -d Unreal.nfo
|
||||
echo "Press enter to proceed to FAQ..."
|
||||
read cc
|
||||
more -d doc/faq
|
||||
echo "Press enter to proceed to configuration..."
|
||||
read cc
|
||||
if [ "$1" != "-noconfig" ] ; then
|
||||
./Config
|
||||
fi
|
||||
|
||||
echo "Press enter to proceed to compiling..."
|
||||
read cc
|
||||
make
|
||||
echo "Press enter to proceed to unrealircd.conf making..."
|
||||
read cc
|
||||
./makeconf
|
||||
echo "Press enter to proceed to network configuration..."
|
||||
read cc
|
||||
clear
|
||||
echo "Do you want to use one of these network files, or make your own?"
|
||||
cd networks
|
||||
ls *.network
|
||||
echo "[Type "no" if you want to make your own]"
|
||||
read cc
|
||||
if [ "$cc" == "no" ] ; then
|
||||
./makenet
|
||||
fi
|
||||
echo "Now just edit your unrealircd.conf and you should be ready to run"
|
||||
echo "UnrealIRCd with ./ircd"
|
||||
@@ -1,52 +0,0 @@
|
||||
Unreal3.1-Silverheart
|
||||
|
||||
Scheduled for 4.0:
|
||||
* /mode #channel +T hostmask=#channel
|
||||
|
||||
On join and a person matches the hostmask,
|
||||
the person will be joined to #channel instead
|
||||
|
||||
/mode # T says what T records there are
|
||||
----------------
|
||||
|
||||
* B:Lines or ircu i:lines
|
||||
* Raising PING bug
|
||||
* Config Remote access
|
||||
|
||||
-----------------------------------------------------------
|
||||
* Add svsvline for global vlines
|
||||
---------------
|
||||
Assigned to codemastr:
|
||||
* Remove some of the _little_ config.h defines and replace with
|
||||
unrealircd.conf lines, ex ADMINCHAT, REMOTE_REHASH
|
||||
* Documentation documentation AND DOCUMENTATION
|
||||
|
||||
Assigned to DrBin:
|
||||
------------------
|
||||
* Write Windowze GUI for Remote admin thing
|
||||
* Write protocoll specification for remote admin thing
|
||||
* Implement protocoll =)
|
||||
* modify all instances of exit() to be more win32 frendly =) ...
|
||||
* Bugg Stskeeps about the 1-message-per-1.5-sec ... and to use an unrealircd.conf line
|
||||
to say what %age of CPU _can_ be used by the server ... and work out what that means...
|
||||
|
||||
-----------------------------------------------------------
|
||||
* X-Windows GUI (how bad it can be but hey! :P)
|
||||
* IPv6 support (will need to recode IP portion of cloak.c)
|
||||
HERZ|v6 is HERZ@3ffe:2502:100:f00d:0:0:0:1 (uncloaked)
|
||||
HERZ|v6 is HERZ@3ffe:2502:100:f00d:0:0:0:*4314*
|
||||
or something :P
|
||||
(from irc2.10.3)
|
||||
* CTCP flood protection(?)
|
||||
* More /HTM stuff, when HTM is active certain features are disabled
|
||||
* A /who flag system, like bahamut's
|
||||
* More unrealircd.conf options
|
||||
* Something like bahamut/hybrids P:line system where you can specify
|
||||
which IPs can you a specific port, maybe port specific passwords too?
|
||||
* /hush or /shun (shun most likely)
|
||||
* add -SIGTERM support, /restarts on SIGTERM
|
||||
* Recode dynconf and all the other new confs
|
||||
* Make proxy scanner scan port 23 also (postponed)
|
||||
* #define for auto oflag +H
|
||||
* Port to MacOS 7-9, 68k architecture and PPC
|
||||
* Port to BeOS
|
||||
@@ -1,54 +0,0 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
NOTE: tspre.org does not exist at the moment,
|
||||
as I dont have a shell for it anymore.
|
||||
If anyone want to donate a shell with a background process,
|
||||
and 1 IP with port 6667 open, they are welcome.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
TSpre.org
|
||||
|
||||
Many here maybe not heard of the Story
|
||||
how IRC started (and how EFnet started)
|
||||
EFnet's name means "Eris-Free Network".
|
||||
Eris was a central hub at the fomer world-
|
||||
wide IRC network, that anyone could just add
|
||||
C:N pairs for and connect to.
|
||||
|
||||
I was inspired of the tought of a network
|
||||
where anyone could link without application and all
|
||||
that shit..
|
||||
|
||||
Combined with the IRCd i made (Unreal) and the tspre.org
|
||||
domain i got donated by Nutcais (my IRC bro). Ive decided to
|
||||
start the TSpre IRC network, where anyone with TSpre servers
|
||||
(dreamforge, IRCu p9, and their alike)
|
||||
|
||||
(mostly preffered is Unreal thou).. Its an experimental
|
||||
network where people can test out thier IRCds and
|
||||
wIRds without having to fill out apps and so on.
|
||||
|
||||
There are no real rules. So just have fun :)
|
||||
|
||||
See http://www.tspre.org for more info on this=)
|
||||
|
||||
--Stskeeps (stskeeps@tspre.org)
|
||||
@@ -1,32 +1,54 @@
|
||||
===============================================
|
||||
= UnrealIRCd v3.1 =
|
||||
= UnrealIRCd v3.2-Selene (beta1) =
|
||||
===============================================
|
||||
Was brought to you by:
|
||||
|
||||
The core team:
|
||||
==============
|
||||
* Stskeeps <stskeeps@tspre.org>
|
||||
* codemastr <codemastr@tspre.org>
|
||||
* DrBin <drbin@tspre.org>
|
||||
* codemastr <codemastr@unrealircd.com>
|
||||
|
||||
Coders team:
|
||||
============
|
||||
* McSkaf <mcskaf@unrealircd.org>
|
||||
* Griever <griever@unrealircd.org>
|
||||
* Zogg <zogg@unrealircd.org>
|
||||
* NiQuiL <niquil@unrealircd.org>
|
||||
* assyrian <assyrian@unrealircd.org>
|
||||
|
||||
In former versions:
|
||||
* DrBin <drbin@unrealircd.com>
|
||||
* llthangel <llthangel@unrealircd.org>
|
||||
|
||||
Precenses on the Internet:
|
||||
* http://unreal.tspre.org or http://unreal.sourceforge.net
|
||||
* ftp://unreal.sourceforge.net/pub/unreal
|
||||
* http://www.unrealircd.com
|
||||
|
||||
CVS Repository:
|
||||
* Alpha versions (or beta)
|
||||
==========================
|
||||
cvs -z9 -d :pserver:anonymous@cvs.unreal.sourceforge.net:/cvsroot/unreal login
|
||||
(just press enter when it asks for password)
|
||||
cvs -z9 -d :pserver:anonymous@cvs.unreal.sourgeforge.net:/cvsroot/unreal co alpha
|
||||
CVS:
|
||||
To get anonymous access: (read only)
|
||||
"cvs -d :pserver:anonymous@cvs.ircsystems.net:/home/cmunk/ircsystems/cvsroot login"
|
||||
|
||||
press enter when asked for password
|
||||
|
||||
and to get latest stable:
|
||||
"cvs -d :pserver:anonymous@cvs.ircsystems.net:/home/cmunk/ircsystems/cvsroot checkout -r stable -d Unreal-stable unreal"
|
||||
|
||||
latest beta:
|
||||
"cvs -d :pserver:anonymous@cvs.ircsystems.net:/home/cmunk/ircsystems/cvsroot checkout -r beta -d Unreal-beta unreal"
|
||||
|
||||
* To get support
|
||||
================
|
||||
* IRC: /server irc.ircsystems.net 6667 - /join #unrealircd
|
||||
* IRC: /server irc.ircsystems.net 6667 - /join #unreal-support
|
||||
[Note: Please be patient after asking questions, we may do other stuff
|
||||
or we're away. Don't repeat questions, we heard you first time,
|
||||
READ THE TOPIC before you ask anything. We do this on a free
|
||||
base so we are volunteeringly helping you, but we are humans
|
||||
like you, and we got to have peace at times as well.]
|
||||
* Mailing list: unreal-support@lists.sourceforge.net (for support)
|
||||
* Mailing list: supporters@lists.unrealircd.org (for support)
|
||||
* READ doc/faq BEFORE ASKING QUESTIONS!
|
||||
|
||||
* Want to discuss, chat, etc?
|
||||
=============================
|
||||
* IRC: /server irc.ircsystems.net 6667 - /join #UnrealIRCd
|
||||
|
||||
* Got a bug to report?
|
||||
======================
|
||||
@@ -38,18 +60,18 @@ cvs -z9 -d :pserver:anonymous@cvs.unreal.sourgeforge.net:/cvsroot/unreal co alph
|
||||
the program (type "quit" to get out again)
|
||||
|
||||
The output coming out there please mail it to
|
||||
unreal-dev@lists.sourceforge.net, along with OS type,
|
||||
coders@lists.unrealircd.org , along with OS type,
|
||||
what "uname -a" says, any clues what it is, if you did anything etc
|
||||
etc. Please keep the core dump files if we ask you to mail us them
|
||||
if needed
|
||||
|
||||
* If you experince any wierdnesses (that doesnt crash the server)
|
||||
please mail unreal-dev@lists.sourceforge.net with any clues on what
|
||||
please mail coders@lists.unrealircd.org with any clues on what
|
||||
you did, what you experinced etc.
|
||||
|
||||
* Got a suggestion?
|
||||
===================
|
||||
* Mail it to unreal-dev@lists.sourceforge.net :) or catch one from
|
||||
* Mail it to coders@lists.unrealircd.org :) or catch one from
|
||||
the Unreal team online on IRC:)
|
||||
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
/* Standard Aliases */
|
||||
|
||||
alias identify {
|
||||
format "^#" {
|
||||
alias chanserv;
|
||||
parameters "IDENTIFY %1-";
|
||||
};
|
||||
format "^[^#]" {
|
||||
alias nickserv;
|
||||
parameters "IDENTIFY %1-";
|
||||
};
|
||||
type command;
|
||||
};
|
||||
|
||||
alias services {
|
||||
format "^#" {
|
||||
alias chanserv;
|
||||
parameters "%1-";
|
||||
};
|
||||
format "^[^#]" {
|
||||
alias nickserv;
|
||||
parameters "%1-";
|
||||
};
|
||||
type command;
|
||||
};
|
||||
|
||||
alias register {
|
||||
format "^#" {
|
||||
alias chanserv;
|
||||
parameters "REGISTER %1-";
|
||||
};
|
||||
format "^[^#]" {
|
||||
alias nickserv;
|
||||
parameters "REGISTER %1-";
|
||||
};
|
||||
type command;
|
||||
};
|
||||
@@ -0,0 +1,16 @@
|
||||
/* Auspice Aliases */
|
||||
|
||||
alias nickserv { type services; };
|
||||
alias ns { nick nickserv; type services; };
|
||||
alias chanserv { type services; };
|
||||
alias cs { nick chanserv; type services; };
|
||||
alias memoserv { type services; };
|
||||
alias ms { nick memoserv; type services; };
|
||||
alias helpserv { type services; };
|
||||
alias hs { nick helpserv; type services; };
|
||||
alias operserv { type services; };
|
||||
alias os { nick operserv; type services; };
|
||||
alias rootserv { type services; };
|
||||
alias rs { nick rootserv; type services; };
|
||||
|
||||
include "aliases/aliases.conf";
|
||||
@@ -0,0 +1,16 @@
|
||||
/* Epona Aliases */
|
||||
|
||||
alias nickserv { type services; };
|
||||
alias ns { nick nickserv; type services; };
|
||||
alias chanserv { type services; };
|
||||
alias cs { nick chanserv; type services; };
|
||||
alias memoserv { type services; };
|
||||
alias ms { nick memoserv; type services; };
|
||||
alias operserv { type services; };
|
||||
alias os { nick operserv; type services; };
|
||||
alias helpserv { type services; };
|
||||
alias hs { nick helpserv; type services; };
|
||||
alias botserv { type services; };
|
||||
alias bs { nick botserv; type services; };
|
||||
|
||||
include "aliases/aliases.conf";
|
||||
@@ -0,0 +1,14 @@
|
||||
/* Generic Aliases */
|
||||
|
||||
alias nickserv { type services; };
|
||||
alias ns { nick nickserv; type services; };
|
||||
alias chanserv { type services; };
|
||||
alias cs { nick chanserv; type services; };
|
||||
alias memoserv { type services; };
|
||||
alias ms { nick memoserv; type services; };
|
||||
alias operserv { type services; };
|
||||
alias os { nick operserv; type services; };
|
||||
alias helpserv { type services; };
|
||||
alias hs { nick helpserv; type services; };
|
||||
|
||||
include "aliases/aliases.conf";
|
||||
@@ -0,0 +1,4 @@
|
||||
/* Generic StatServ Aliases */
|
||||
|
||||
alias statserv { type stats; };
|
||||
alias ss { nick statserv; type stats; };
|
||||
@@ -0,0 +1,17 @@
|
||||
/* IRCServices Aliases */
|
||||
|
||||
alias nickserv { type services; };
|
||||
alias ns { nick nickserv; type services; };
|
||||
alias chanserv { type services; };
|
||||
alias cs { nick chanserv; type services; };
|
||||
alias memoserv { type services; };
|
||||
alias ms { nick memoserv; type services; };
|
||||
alias operserv { type services; };
|
||||
alias os { nick operserv; type services; };
|
||||
alias helpserv { type services; };
|
||||
alias hs { nick helpserv; type services; };
|
||||
alias irciihelp { type services; };
|
||||
alias statserv { type services; };
|
||||
alias ss { nick statserv; type services; };
|
||||
|
||||
include "aliases/aliases.conf";
|
||||
@@ -0,0 +1,6 @@
|
||||
/* OperStats Aliases */
|
||||
|
||||
operserv { type stats; };
|
||||
os { nick operserv; type stats; };
|
||||
statserv { type stats; };
|
||||
ss { nick statserv; type stats; };
|
||||
@@ -0,0 +1,3 @@
|
||||
all:
|
||||
@autoconf
|
||||
cp configure ..
|
||||
@@ -0,0 +1,342 @@
|
||||
dnl aclocal.m4 generated automatically by aclocal 1.4-p4
|
||||
|
||||
dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl This program is distributed in the hope that it will be useful,
|
||||
dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
dnl PARTICULAR PURPOSE.
|
||||
|
||||
dnl Macro: unet_CHECK_TYPE_SIZES
|
||||
dnl
|
||||
dnl Check the size of several types and define a valid int16_t and int32_t.
|
||||
dnl
|
||||
AC_DEFUN(unreal_CHECK_TYPE_SIZES,
|
||||
[dnl Check type sizes
|
||||
AC_CHECK_SIZEOF(short)
|
||||
AC_CHECK_SIZEOF(int)
|
||||
AC_CHECK_SIZEOF(long)
|
||||
if test "$ac_cv_sizeof_int" = 2 ; then
|
||||
AC_CHECK_TYPE(int16_t, int)
|
||||
AC_CHECK_TYPE(u_int16_t, unsigned int)
|
||||
elif test "$ac_cv_sizeof_short" = 2 ; then
|
||||
AC_CHECK_TYPE(int16_t, short)
|
||||
AC_CHECK_TYPE(u_int16_t, unsigned short)
|
||||
else
|
||||
AC_MSG_ERROR([Cannot find a type with size of 16 bits])
|
||||
fi
|
||||
if test "$ac_cv_sizeof_int" = 4 ; then
|
||||
AC_CHECK_TYPE(int32_t, int)
|
||||
AC_CHECK_TYPE(u_int32_t, unsigned int)
|
||||
elif test "$ac_cv_sizeof_short" = 4 ; then
|
||||
AC_CHECK_TYPE(int32_t, short)
|
||||
AC_CHECK_TYPE(u_int32_t, unsigned short)
|
||||
elif test "$ac_cv_sizeof_long" = 4 ; then
|
||||
AC_CHECK_TYPE(int32_t, long)
|
||||
AC_CHECK_TYPE(u_int32_t, unsigned long)
|
||||
else
|
||||
AC_MSG_ERROR([Cannot find a type with size of 32 bits])
|
||||
fi])
|
||||
|
||||
|
||||
dnl @synopsis ACX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
|
||||
dnl
|
||||
dnl This macro figures out how to build C programs using POSIX
|
||||
dnl threads. It sets the PTHREAD_LIBS output variable to the threads
|
||||
dnl library and linker flags, and the PTHREAD_CFLAGS output variable
|
||||
dnl to any special C compiler flags that are needed. (The user can also
|
||||
dnl force certain compiler flags/libs to be tested by setting these
|
||||
dnl environment variables.)
|
||||
dnl
|
||||
dnl Also sets PTHREAD_CC to any special C compiler that is needed for
|
||||
dnl multi-threaded programs (defaults to the value of CC otherwise).
|
||||
dnl (This is necessary on AIX to use the special cc_r compiler alias.)
|
||||
dnl
|
||||
dnl If you are only building threads programs, you may wish to
|
||||
dnl use these variables in your default LIBS, CFLAGS, and CC:
|
||||
dnl
|
||||
dnl LIBS="$PTHREAD_LIBS $LIBS"
|
||||
dnl CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
dnl CC="$PTHREAD_CC"
|
||||
dnl
|
||||
dnl In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute
|
||||
dnl constant has a nonstandard name, defines PTHREAD_CREATE_JOINABLE
|
||||
dnl to that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
|
||||
dnl
|
||||
dnl ACTION-IF-FOUND is a list of shell commands to run if a threads
|
||||
dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands
|
||||
dnl to run it if it is not found. If ACTION-IF-FOUND is not specified,
|
||||
dnl the default action will define HAVE_PTHREAD.
|
||||
dnl
|
||||
dnl Please let the authors know if this macro fails on any platform,
|
||||
dnl or if you have any other suggestions or comments. This macro was
|
||||
dnl based on work by SGJ on autoconf scripts for FFTW (www.fftw.org)
|
||||
dnl (with help from M. Frigo), as well as ac_pthread and hb_pthread
|
||||
dnl macros posted by AFC to the autoconf macro repository. We are also
|
||||
dnl grateful for the helpful feedback of numerous users.
|
||||
dnl
|
||||
dnl @version $Id$
|
||||
dnl @author Steven G. Johnson <stevenj@alum.mit.edu> and Alejandro Forero Cuervo <bachue@bachue.com>
|
||||
|
||||
dnl This has been recoded a lot. It now fully supports caching and is a bit faster
|
||||
|
||||
AC_DEFUN([ACX_PTHREAD], [
|
||||
AC_CANONICAL_HOST
|
||||
acx_pthread_ok=no
|
||||
|
||||
# First, check if the POSIX threads header, pthread.h, is available.
|
||||
# If it isn't, don't bother looking for the threads libraries.
|
||||
AC_CHECK_HEADER(pthread.h, , acx_pthread_ok=noheader)
|
||||
|
||||
# We must check for the threads library under a number of different
|
||||
# names; the ordering is very important because some systems
|
||||
# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
|
||||
# libraries is broken (non-POSIX).
|
||||
|
||||
# Create a list of thread flags to try. Items starting with a "-" are
|
||||
# C compiler flags, and other items are library names, except for "none"
|
||||
# which indicates that we try without any flags at all.
|
||||
|
||||
acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt"
|
||||
|
||||
# The ordering *is* (sometimes) important. Some notes on the
|
||||
# individual items follow:
|
||||
|
||||
# pthreads: AIX (must check this before -lpthread)
|
||||
# none: in case threads are in libc; should be tried before -Kthread and
|
||||
# other compiler flags to prevent continual compiler warnings
|
||||
# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
|
||||
# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
|
||||
# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
|
||||
# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
|
||||
# -pthreads: Solaris/gcc
|
||||
# -mthreads: Mingw32/gcc, Lynx/gcc
|
||||
# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
|
||||
# doesn't hurt to check since this sometimes defines pthreads too;
|
||||
# also defines -D_REENTRANT)
|
||||
# pthread: Linux, etcetera
|
||||
# --thread-safe: KAI C++
|
||||
|
||||
case "${host_cpu}-${host_os}" in
|
||||
*solaris*)
|
||||
|
||||
# On Solaris (at least, for some versions), libc contains stubbed
|
||||
# (non-functional) versions of the pthreads routines, so link-based
|
||||
# tests will erroneously succeed. (We need to link with -pthread or
|
||||
# -lpthread.) (The stubs are missing pthread_cleanup_push, or rather
|
||||
# a function called by this macro, so we could check for that, but
|
||||
# who knows whether they'll stub that too in a future libc.) So,
|
||||
# we'll just look for -pthreads and -lpthread first:
|
||||
|
||||
acx_pthread_flags="-pthread -pthreads pthread -mt $acx_pthread_flags"
|
||||
;;
|
||||
esac
|
||||
result=none
|
||||
if test "$acx_pthread_ok" = "no"; then
|
||||
AC_CACHE_CHECK(what flags pthreads needs,ac_cv_pthreadflag,[
|
||||
for flag in $acx_pthread_flags; do
|
||||
|
||||
case $flag in
|
||||
none)
|
||||
result="none"
|
||||
;;
|
||||
|
||||
-*)
|
||||
PTHREAD_CFLAGS="$flag"
|
||||
result="$flag"
|
||||
;;
|
||||
|
||||
*)
|
||||
PTHREAD_LIBS="-l$flag"
|
||||
result="-l$flag"
|
||||
;;
|
||||
esac
|
||||
|
||||
save_LIBS="$LIBS"
|
||||
save_CFLAGS="$CFLAGS"
|
||||
LIBS="$PTHREAD_LIBS $LIBS"
|
||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
|
||||
# Check for various functions. We must include pthread.h,
|
||||
# since some functions may be macros. (On the Sequent, we
|
||||
# need a special flag -Kthread to make this header compile.)
|
||||
# We check for pthread_join because it is in -lpthread on IRIX
|
||||
# while pthread_create is in libc. We check for pthread_attr_init
|
||||
# due to DEC craziness with -lpthreads. We check for
|
||||
# pthread_cleanup_push because it is one of the few pthread
|
||||
# functions on Solaris that doesn't have a non-functional libc stub.
|
||||
# We try pthread_create on general principles.
|
||||
AC_TRY_LINK([#include <pthread.h>],
|
||||
[pthread_t th; pthread_join(th, 0);
|
||||
pthread_attr_init(0); pthread_cleanup_push(0, 0);
|
||||
pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
|
||||
[acx_pthread_ok=yes])
|
||||
|
||||
LIBS="$save_LIBS"
|
||||
CFLAGS="$save_CFLAGS"
|
||||
|
||||
if test "$acx_pthread_ok" = "yes"; then
|
||||
dnl AC_MSG_RESULT($result)
|
||||
ac_cv_pthreadflag=$result
|
||||
break;
|
||||
fi
|
||||
|
||||
PTHREAD_LIBS=""
|
||||
PTHREAD_CFLAGS=""
|
||||
done
|
||||
fi
|
||||
])
|
||||
|
||||
case $ac_cv_pthreadflag in
|
||||
none)
|
||||
;;
|
||||
-l*)
|
||||
PTHREAD_LIBS=$ac_cv_pthreadflag
|
||||
;;
|
||||
*)
|
||||
PTHREAD_CFLAGS=$ac_cv_pthreadflag
|
||||
;;
|
||||
esac
|
||||
# Various other checks:
|
||||
if test "x$ac_cv_pthreadflag"!=x; then
|
||||
save_LIBS="$LIBS"
|
||||
LIBS="$PTHREAD_LIBS $LIBS"
|
||||
save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
|
||||
# Detect AIX lossage: threads are created detached by default
|
||||
# and the JOINABLE attribute has a nonstandard name (UNDETACHED).
|
||||
AC_CACHE_CHECK([for joinable pthread attribute],ac_cv_pthreadjoin,[
|
||||
AC_TRY_LINK([#include <pthread.h>],
|
||||
[int attr=PTHREAD_CREATE_JOINABLE;],
|
||||
ac_cv_pthreadjoin=PTHREAD_CREATE_JOINABLE, ac_cv_pthreadjoin=unknown)
|
||||
if test "$ac_cv_pthreadjoin" = "unknown"; then
|
||||
AC_TRY_LINK([#include <pthread.h>],
|
||||
[int attr=PTHREAD_CREATE_UNDETACHED;],
|
||||
ac_cv_pthreadjoin=PTHREAD_CREATE_UNDETACHED, ac_cv_pthreadjoin=unknown)
|
||||
fi
|
||||
])
|
||||
if test "$ac_cv_pthreadjoin" != "PTHREAD_CREATE_JOINABLE"; then
|
||||
AC_DEFINE(PTHREAD_CREATE_JOINABLE, $ac_cv_pthreadjoin,
|
||||
[Define to the necessary symbol if this constant
|
||||
uses a non-standard name on your system.])
|
||||
fi
|
||||
if test "$ac_cv_pthreadjoin" = "unknown"; then
|
||||
AC_MSG_WARN([we do not know how to create joinable pthreads])
|
||||
fi
|
||||
|
||||
AC_CACHE_CHECK([if more special flags are required for pthreads],ac_cv_pthreadspecial,[
|
||||
ac_cv_pthreadspecial=no
|
||||
case "${host_cpu}-${host_os}" in
|
||||
*-aix* | *-freebsd*) ac_cv_pthreadspecial="-D_THREAD_SAFE";;
|
||||
*solaris* | alpha*-osf*) ac_cv_pthreadspecial="-D_REENTRANT";;
|
||||
esac
|
||||
])
|
||||
if test "$ac_cv_pthreadspecial" != "no"; then
|
||||
PTHREAD_CFLAGS="$ac_cv_pthreadspecial $PTHREAD_CFLAGS"
|
||||
fi
|
||||
|
||||
LIBS="$save_LIBS"
|
||||
CFLAGS="$save_CFLAGS"
|
||||
|
||||
# More AIX lossage: must compile with cc_r
|
||||
AC_CHECK_PROG(PTHREAD_CC, cc_r, cc_r, ${CC})
|
||||
else
|
||||
PTHREAD_CC="$CC"
|
||||
fi
|
||||
if test "x$ac_cv_pthreadflag"!=x; then
|
||||
AC_CACHE_CHECK(if pthreads uses one thread per process, ac_cv_thread_multi, [
|
||||
save_LIBS="$LIBS"
|
||||
LIBS="$PTHREAD_LIBS $LIBS"
|
||||
save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
AC_TRY_RUN([
|
||||
#include <pthread.h>
|
||||
int pid;
|
||||
int mypid = -1;
|
||||
pthread_mutex_t mutex;
|
||||
void testthreads(void *p)
|
||||
{
|
||||
pthread_mutex_lock(&mutex);
|
||||
mypid = getpid();
|
||||
pthread_mutex_unlock(&mutex);
|
||||
pthread_exit(NULL);
|
||||
}
|
||||
int main() {
|
||||
int i;
|
||||
pthread_t thread;
|
||||
pthread_attr_t attrs;
|
||||
|
||||
pid = getpid();
|
||||
pthread_attr_init(&attrs);
|
||||
pthread_mutex_init(&mutex, NULL);
|
||||
pthread_mutex_lock(&mutex);
|
||||
pthread_create(&thread, &attrs, (void*)testthreads, NULL);
|
||||
pthread_mutex_unlock(&mutex);
|
||||
sleep(2);
|
||||
pthread_mutex_lock(&mutex);
|
||||
if (mypid == pid)
|
||||
exit(0);
|
||||
else
|
||||
exit(1);
|
||||
}
|
||||
],ac_cv_thread_multi=no, ac_cv_thread_multi=yes)
|
||||
LIBS="$save_LIBS"
|
||||
CFLAGS="$save_CFLAGS"
|
||||
])
|
||||
if test "$USESTDTHREAD" != "1"; then
|
||||
if test "$ac_cv_thread_multi" = "yes"; then
|
||||
AC_MSG_RESULT(Ok we'll install FSU Pthreads)
|
||||
cd extras
|
||||
if [[ -f "pthreads.tar.gz" ]] ; then
|
||||
gunzip -fd pthreads.tar.gz
|
||||
fi
|
||||
tar xf pthreads.tar
|
||||
cd threads/src
|
||||
rm -f Makefile
|
||||
case "${host_cpu}-${host_os}" in
|
||||
*-freebsd*)
|
||||
cp Makefile.FreeBSD Makefile
|
||||
make
|
||||
;;
|
||||
*-linux*)
|
||||
cp Makefile.Linux Makefile
|
||||
make
|
||||
;;
|
||||
*-solaris2*)
|
||||
cp Makefile.Solaris Makefile
|
||||
make
|
||||
;;
|
||||
*)
|
||||
./configure
|
||||
;;
|
||||
esac
|
||||
cd ../../../
|
||||
if test "$ac_cv_pthreadspecial" != no; then
|
||||
PTHREAD_CFLAGS="-I=../extras/threads/include $ac_cv_pthreadspecial"
|
||||
else
|
||||
PTHREAD_CFLAGS="-I=../extras/threads/include"
|
||||
fi
|
||||
PTHREAD_LIBS="../extras/threads/lib/libgthreads.a ../extras/threads/lib/libmalloc.a"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
AC_SUBST(PTHREAD_LIBS)
|
||||
AC_SUBST(PTHREAD_CFLAGS)
|
||||
AC_SUBST(PTHREAD_CC)
|
||||
|
||||
# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
|
||||
if test x"$acx_pthread_ok" = xyes; then
|
||||
ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1])
|
||||
:
|
||||
else
|
||||
acx_pthread_ok=no
|
||||
$2
|
||||
fi
|
||||
|
||||
])dnl ACX_PTHREAD
|
||||
|
||||
|
||||
@@ -0,0 +1,352 @@
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
AC_INIT(src/ircd.c)
|
||||
AC_CONFIG_HEADER(include/setup.h)
|
||||
AC_PROG_CC
|
||||
if test "$ac_cv_prog_gcc" = "yes"; then
|
||||
AC_CACHE_CHECK(if you have gcc 3.0 or higher, ac_cv_gcc3, [
|
||||
if test -z "`gcc -v 2>&1 |grep 'gcc version 3.'`"; then
|
||||
ac_cv_gcc3="no"
|
||||
else
|
||||
ac_cv_gcc3="yes"
|
||||
fi
|
||||
])
|
||||
if test "$ac_cv_gcc3" = "yes"; then
|
||||
CFLAGS="$CFLAGS -Wnone"
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_PATH_PROG(RM,rm)
|
||||
AC_PATH_PROG(CP,cp)
|
||||
AC_PATH_PROG(TOUCH,touch)
|
||||
AC_PATH_PROG(OPENSSLPATH,openssl)
|
||||
AC_PATH_PROG(INSTALL,install)
|
||||
dnl Checks for libraries.
|
||||
AC_CHECK_LIB(descrypt, crypt, [AC_DEFINE(HAVE_CRYPT) IRCDLIBS="$IRCDLIBS-ldescrypt " MKPASSWDLIBS="-ldescrypt"],
|
||||
AC_CHECK_LIB(crypt, crypt,[ AC_DEFINE(HAVE_CRYPT) IRCDLIBS="$IRCDLIBS-lcrypt " MKPASSWDLIBS="-lcrypt"]))
|
||||
AC_CHECK_LIB(socket, socket,IRCDLIBS="$IRCDLIBS-lsocket ")
|
||||
AC_CHECK_LIB(nsl, inet_ntoa,IRCDLIBS="$IRCDLIBS-lnsl ")
|
||||
|
||||
AC_SUBST(IRCDLIBS)
|
||||
AC_SUBST(MKPASSWDLIBS)
|
||||
AC_DEFUN(AC_INSTALL_REGEX,
|
||||
[
|
||||
AC_MSG_RESULT(Ok we'll install regex)
|
||||
cd extras/regex
|
||||
./configure
|
||||
make
|
||||
cd ../..
|
||||
REGEX="../extras/regex/regex.o"
|
||||
])
|
||||
|
||||
openssl=no
|
||||
AC_DEFUN(AC_ENABLE_SSL,
|
||||
[
|
||||
if test "$openssl" = "yes"; then
|
||||
AC_DEFINE(USE_SSL)
|
||||
AC_CACHE_CHECK(what order we should supply the SSL libraries in, ac_cv_ssl_libs, [
|
||||
save_libs="$LIBS"
|
||||
LIBS="$LIBS -lssl -lcrypto -lssl"
|
||||
AC_TRY_LINK([#include <openssl/ssl.h>], [
|
||||
SSL_write(NULL, NULL, NULL);
|
||||
], ac_cv_ssl_libs="-lssl -lcrypto -lssl" LIBS="$save_libs", ac_cv_ssl_libs="-lssl -lcrypto -lssl" LIBS="$save_libs")])
|
||||
CRYPTOLIB="$ac_cv_ssl_libs"
|
||||
CFLAGS="$CFLAGS -I/usr/local/include -I/usr/local/ssl/include -L/usr/local/lib -L/usr/local/ssl/lib"
|
||||
else
|
||||
AC_WARN(SSL support could not be enabled because openssl/ssl.h could not be found)
|
||||
fi
|
||||
])
|
||||
dnl module checking based on Hyb7's module checking code
|
||||
AC_DEFUN(AC_ENABLE_DYN,
|
||||
[
|
||||
AC_CHECK_FUNC(dlopen,, AC_CHECK_LIB(dl, dlopen,IRCDLIBS="$IRCDLIBS-ldl",AC_MSG_WARN(Dynamic linking is not enabled because dlopen was not found) AC_DEFINE(STATIC_LINKING)))
|
||||
hold_cflags=$CFLAGS
|
||||
CFLAGS="$CFLAGS -export-dynamic"
|
||||
AC_CACHE_CHECK(if we need the -export-dynamic flag, ac_cv_export_dynamic, [
|
||||
AC_TRY_LINK(, [int i];, ac_cv_export_dynamic=yes, ac_cv_export_dynamic=no)])
|
||||
if test "$ac_cv_export_dynamic" = "no"; then
|
||||
CFLAGS=$hold_cflags
|
||||
fi
|
||||
|
||||
AC_CACHE_CHECK(for compiler option to produce PIC,ac_cv_pic,[
|
||||
if test "$ac_cv_prog_gcc" = "yes"; then
|
||||
ac_cv_pic="-fPIC -DPIC -shared"
|
||||
else
|
||||
case `uname -s` in
|
||||
SunOS*[)]
|
||||
ac_cv_pic="-KPIC -DPIC -G"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
])
|
||||
MODULEFLAGS=$ac_cv_pic
|
||||
AC_DEFINE(DYNAMIC_LINKING)
|
||||
])
|
||||
AC_DEFUN(AC_ENABLE_INET6,[
|
||||
AC_CACHE_CHECK(if your system has IPv6 support, ac_cv_ip6, [
|
||||
AC_TRY_RUN([
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
int main() {
|
||||
if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
|
||||
exit(1);
|
||||
exit(0);
|
||||
}
|
||||
], ac_cv_ip6=yes, ac_cv_ip6=no)
|
||||
])
|
||||
if test "$ac_cv_ip6" = "no"; then
|
||||
AC_MSG_WARN(Your system does not support IPv6 so it will not be enabled)
|
||||
else
|
||||
AC_DEFINE(INET6)
|
||||
fi
|
||||
])
|
||||
AC_CHECK_HEADER(sys/param.h,AC_DEFINE(PARAMH))
|
||||
AC_CHECK_HEADER(stdlib.h,AC_DEFINE(STDLIBH))
|
||||
AC_CHECK_HEADER(stddef.h,AC_DEFINE(STDDEFH))
|
||||
AC_CHECK_HEADER(sys/syslog.h,AC_DEFINE(SYSSYSLOGH))
|
||||
AC_CHECK_HEADER(unistd.h,AC_DEFINE(UNISTDH))
|
||||
AC_CHECK_HEADER(string.h,AC_DEFINE(STRINGH))
|
||||
AC_CHECK_HEADER(strings.h,AC_DEFINE(STRINGSH))
|
||||
AC_CHECK_HEADER(regex.h,AC_DEFINE(HAVE_REGEX),AC_INSTALL_REGEX)
|
||||
AC_CHECK_HEADER(openssl/ssl.h,openssl=yes)
|
||||
AC_CHECK_HEADER(malloc.h,AC_DEFINE(MALLOCH,<malloc.h>))
|
||||
AC_CHECK_HEADER(sys/rusage.h,AC_DEFINE(RUSAGEH))
|
||||
AC_CHECK_HEADER(glob.h,AC_DEFINE(GLOBH))
|
||||
dnl Checks for typedefs, structures, and compiler characteristics.
|
||||
AC_C_CONST
|
||||
AC_C_INLINE
|
||||
AC_TYPE_SIZE_T
|
||||
AC_HEADER_TIME
|
||||
AC_STRUCT_TM
|
||||
AC_TYPE_UID_T
|
||||
unreal_CHECK_TYPE_SIZES
|
||||
|
||||
AC_CACHE_CHECK(what kind of nonblocking sockets you have, ac_cv_nonblocking,[
|
||||
AC_TRY_RUN([
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/file.h>
|
||||
#include <signal.h>
|
||||
alarmed() {
|
||||
exit(1);
|
||||
}
|
||||
int main() {
|
||||
#ifdef O_NONBLOCK
|
||||
char b[12], x[32];
|
||||
int f, l = sizeof(x);
|
||||
f = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
if (f >= 0 && !(fcntl(f, F_SETFL, O_NONBLOCK))) {
|
||||
signal(SIGALRM, alarmed);
|
||||
alarm(3);
|
||||
recvfrom(f, b, 12, 0, (struct sockaddr *)x, &l);
|
||||
alarm(0);
|
||||
exit(0);
|
||||
}
|
||||
#endif
|
||||
exit(1);
|
||||
}
|
||||
],ac_cv_nonblocking=O_NONBLOCK,[
|
||||
AC_TRY_RUN([
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/file.h>
|
||||
#include <signal.h>
|
||||
alarmed() {
|
||||
exit(0);
|
||||
}
|
||||
int main() {
|
||||
#ifdef O_NDELAY
|
||||
char b[12], x[32];
|
||||
int f, l = sizeof(x);
|
||||
f = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
if (f >= 0 && !(fcntl(f, F_SETFL, O_NDELAY))) {
|
||||
signal(SIGALRM, alarmed);
|
||||
alarm(3);
|
||||
recvfrom(f, b, 12, 0, (struct sockaddr *)x, &l);
|
||||
alarm(0);
|
||||
exit(0);
|
||||
}
|
||||
#endif
|
||||
exit(1);
|
||||
}],ac_cv_nonblocking=O_NDELAY,[
|
||||
AC_TRY_RUN([
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/file.h>
|
||||
#include <signal.h>
|
||||
alarmed() {
|
||||
exit(1);
|
||||
}
|
||||
int main() {
|
||||
#ifdef FIONBIO
|
||||
char b[12], x[32];
|
||||
int f, l = sizeof(x);
|
||||
f = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
if (f >= 0 && !(fcntl(f, F_SETFL, FIONBIO))) {
|
||||
signal(SIGALRM, alarmed);
|
||||
alarm(3);
|
||||
recvfrom(f, b, 12, 0, (struct sockaddr *)x, &l);
|
||||
alarm(0);
|
||||
exit(0);
|
||||
}
|
||||
#endif
|
||||
exit(1);
|
||||
], ac_cv_nonblocking=FIONBIO,ac_cv_nonblocking=none)])])])
|
||||
if test "$ac_cv_nonblocking" = "O_NONBLOCK"; then
|
||||
AC_DEFINE(NBLOCK_POSIX)
|
||||
elif test "$ac_cv_nonblocking" = "O_NDELAY"; then
|
||||
AC_DEFINE(NBLOCK_BSD)
|
||||
elif test "$ac_cv_nonblocking" = "FIONBIO"; then
|
||||
AC_DEFINE(NBLOCK_SYSV)
|
||||
fi
|
||||
dnl Checks for library functions.
|
||||
AC_PROG_GCC_TRADITIONAL
|
||||
AC_FUNC_SETPGRP
|
||||
AC_FUNC_SETVBUF_REVERSED
|
||||
AC_CACHE_CHECK(if we can set the core size to unlimited, ac_cv_force_core,[
|
||||
AC_TRY_RUN([
|
||||
#include <sys/time.h>
|
||||
#include <sys/resource.h>
|
||||
#include <unistd.h>
|
||||
int main() {
|
||||
struct rlimit corelim;
|
||||
corelim.rlim_cur = corelim.rlim_max = RLIM_INFINITY;
|
||||
if (setrlimit(RLIMIT_CORE, &corelim))
|
||||
exit(1);
|
||||
exit(0);
|
||||
}
|
||||
],ac_cv_force_core=yes,ac_cv_force_core=no)
|
||||
])
|
||||
if test "$ac_cv_force_core" = "yes"; then
|
||||
AC_DEFINE(FORCE_CORE)
|
||||
fi
|
||||
AC_FUNC_VPRINTF
|
||||
AC_CHECK_FUNCS(gettimeofday,AC_DEFINE(GETTIMEOFDAY),[AC_CHECK_FUNCS(lrand48,AC_DEFINE(LRADN48))])
|
||||
AC_CHECK_FUNCS(getrusage,AC_DEFINE(GETRUSAGE_2),[AC_CHECK_FUNCS(times,AC_DEFINE(TIMES_2))])
|
||||
AC_CHECK_FUNCS(setproctitle,AC_DEFINE(HAVE_SETPROCTITLE),[
|
||||
AC_CHECK_LIB(util,setproctitle,AC_DEFINE(HAVE_SETPROCTITLE) IRCDLIBS="$IRCDLIBS-lutil",[
|
||||
AC_EGREP_HEADER([#define.*PS_STRINGS.*],sys/exec.h,AC_DEFINE(HAVE_PSSTRINGS),[
|
||||
AC_CHECK_FUNCS(pstat,AC_DEFINE(HAVE_PSTAT))
|
||||
])
|
||||
])
|
||||
])
|
||||
AC_CACHE_CHECK(what type of signals you have, ac_cv_sigtype, [
|
||||
AC_TRY_RUN([
|
||||
#include <signal.h>
|
||||
int main() {
|
||||
sigaction(SIGTERM, (struct sigaction *)0L, (struct sigaction *)0L);
|
||||
}
|
||||
], ac_cv_sigtype=POSIX, [
|
||||
AC_TRY_RUN([
|
||||
#include <signal.h>
|
||||
int calls = 0;
|
||||
void handler()
|
||||
{
|
||||
if (calls)
|
||||
return;
|
||||
calls++;
|
||||
kill(getpid(), SIGTERM);
|
||||
sleep(1);
|
||||
}
|
||||
|
||||
int main() {
|
||||
signal(SIGTERM, handler);
|
||||
kill(getpid(), SIGTERM);
|
||||
exit(0);
|
||||
}
|
||||
], ac_cv_sigtype=BSD,ac_cv_sigtype=SYSV)])])
|
||||
|
||||
if test "$ac_cv_sigtype" = "POSIX"; then
|
||||
AC_DEFINE(POSIX_SIGNALS)
|
||||
elif test "$ac_cv_sigtype" = "BSD"; then
|
||||
AC_DEFINE(BSD_RELIABLE_SIGNALS)
|
||||
else
|
||||
AC_DEFINE(SYSV_UNRELIABLE_SIGNALS)
|
||||
fi
|
||||
AC_CHECK_FUNCS(strtoken,,AC_DEFINE(NEED_STRTOKEN))
|
||||
AC_CHECK_FUNCS(strtok,,AC_DEFINE(NEED_STRTOK))
|
||||
AC_CHECK_FUNCS(strerror,,AC_DEFINE(NEED_STRERROR))
|
||||
AC_CHECK_FUNCS(index,,AC_DEFINE(NOINDEX))
|
||||
AC_CHECK_FUNCS(strtoul,,STRTOUL="strtoul.o")
|
||||
AC_CHECK_FUNCS(bcopy,,AC_DEFINE(NEED_BCOPY))
|
||||
AC_CHECK_FUNCS(bcmp,,AC_DEFINE(NEED_BCMP))
|
||||
AC_CHECK_FUNCS(bzero,,AC_DEFINE(NEED_BZERO))
|
||||
AC_CHECK_FUNCS(strcasecmp,AC_DEFINE(GOT_STRCASECMP))
|
||||
AC_CHECK_FUNCS(inet_addr,,AC_DEFINE(NEED_INET_ADDR))
|
||||
AC_CHECK_FUNCS(inet_ntoa,,AC_DEFINE(NEED_INET_NTOA))
|
||||
AC_CHECK_FUNCS(inet_netof,,AC_DEFINE(NEED_INET_NETOF))
|
||||
AC_SUBST(REGEX)
|
||||
AC_SUBST(STRTOUL)
|
||||
AC_SUBST(CRYPTOLIB)
|
||||
AC_SUBST(MODULEFLAGS)
|
||||
AC_ARG_WITH(listen, [ --with-listen=backlog Specify the listen backlog value],
|
||||
AC_DEFINE_UNQUOTED(LISTEN_SIZE,$withval),AC_DEFINE(LISTEN_SIZE,5))
|
||||
AC_ARG_WITH(nick-history, [ --with-nick-history=length Specify the length of the nickname history],
|
||||
AC_DEFINE_UNQUOTED(NICKNAMEHISTORYLENGTH,$withval), AC_DEFINE(NICKNAMEHISTORYLENGTH,2000))
|
||||
AC_ARG_WITH(sendq, [ --with-sendq=maxsendq Specify the max sendq for the server],
|
||||
AC_DEFINE_UNQUOTED(MAXSENDQLENGTH,$withval),AC_DEFINE(MAXSENDQLENGTH,3000000))
|
||||
AC_ARG_WITH(bufferpool, [ --with-bufferpool=size Specify the size of the buffer pool],
|
||||
AC_DEFINE_UNQUOTED(BUFFERPOOL,[($withval * MAXSENDQLENGTH)]),AC_DEFINE(BUFFERPOOL,[(9 * MAXSENDQLENGTH)]))
|
||||
|
||||
AC_ARG_WITH(hostname, [ --with-hostname=host Specify the local hostname of the server], AC_DEFINE_UNQUOTED(DOMAINNAME,"$withval"),AC_DEFINE_UNQUOTED(DOMAINNAME,"`hostname`"))
|
||||
AC_DEFINE_UNQUOTED(MYOSNAME,"`uname -a`")
|
||||
AC_ARG_WITH(permissions, [ --with-permissions=permissions Specify the default permissions for
|
||||
configuration files], AC_DEFINE_UNQUOTED(DEFAULT_PERMISSIONS,$withval), AC_DEFINE(DEFAULT_PERMISSIONS, 0600))
|
||||
AC_ARG_WITH(dpath, [ --with-dpath=path Specify the path where configuration files are stored],
|
||||
AC_DEFINE_UNQUOTED(DPATH, "$withval") IRCDDIR="$withval", AC_DEFINE_UNQUOTED(DPATH,"`pwd`") IRCDDIR="`pwd`")
|
||||
AC_ARG_WITH(fd-setsize, [ --with-fd-setsize=size Specify the max file descriptors to use],
|
||||
ac_fd=$withval, ac_fd=1024)
|
||||
AC_DEFINE_UNQUOTED(MAXCONNECTIONS, $ac_fd)
|
||||
AC_ARG_WITH(spath, [ --with-spath Specify the location of the executable],
|
||||
AC_DEFINE_UNQUOTED(SPATH,"$withval") BINDIR="$withval",AC_DEFINE_UNQUOTED(SPATH,"`pwd`/src/ircd") BINDIR="`pwd`/src/ircd")
|
||||
AC_ARG_ENABLE(nospoof, [ --enable-nospoof Enable spoofing protection], AC_DEFINE(NOSPOOF))
|
||||
AC_ARG_ENABLE(hub, [ --enable-hub Compile as a hub server], AC_DEFINE(HUB))
|
||||
AC_ARG_ENABLE(ssl, [ --enable-ssl Enable client and server SSL connections ], AC_ENABLE_SSL)
|
||||
AC_ARG_ENABLE(dynamic-linking, [ --enable-dynamic-linking Make the IRCd dynamically link shared objects rather than statically ], AC_ENABLE_DYN, AC_DEFINE(STATIC_LINKING))
|
||||
AC_ARG_ENABLE(inet6, [ --enable-inet6 Make the IRCd support IPv6 ], AC_ENABLE_INET6)
|
||||
AC_ARG_ENABLE(standardthreads, [ --enable-standardthreads Use standard threads ], USESTDTHREAD="1")
|
||||
AC_SUBST(IRCDDIR)
|
||||
AC_SUBST(BINDIR)
|
||||
ACX_PTHREAD
|
||||
CC="$PTHREAD_CC"
|
||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
IRCDLIBS="$IRCDLIBS $PTHREAD_LIBS"
|
||||
AC_MSG_CHECKING(if FD_SETSIZE is large enough to allow $ac_fd file descriptors)
|
||||
AC_TRY_RUN([
|
||||
#include <sys/types.h>
|
||||
#include <sys/time.h>
|
||||
int main() {
|
||||
if (FD_SETSIZE >= $ac_fd)
|
||||
exit(0);
|
||||
exit(1);
|
||||
}
|
||||
], AC_MSG_RESULT(yes), FD_SETSIZE="-DFD_SETSIZE=$ac_fd" AC_MSG_RESULT(no))
|
||||
AC_SUBST(FD_SETSIZE)
|
||||
case "${host_cpu}-${host_os}" in
|
||||
SunOS*5.*)
|
||||
CFLAGS="$CFLAGS -DSOL20"
|
||||
;;
|
||||
*solaris*)
|
||||
CFLAGS="$CFLAGS -D_SOLARIS"
|
||||
IRCDLIBS="$IRCDLIBS -lresolv "
|
||||
;;
|
||||
*AmigaOS*68020*)
|
||||
CFLAGS="$CFLAGS -D_AMIGA -m68020"
|
||||
;;
|
||||
*AmigaOS*68030*)
|
||||
CFLAGS="$CFLAGS -D_AMIGA -m68030"
|
||||
;;
|
||||
*AmigaOS*68040*)
|
||||
CFLAGS="$CFLAGS -D_AMIGA -m68040"
|
||||
;;
|
||||
*AmigaOS*68060*)
|
||||
CFLAGS="$CFLAGS -D_AMIGA -m68060"
|
||||
;;
|
||||
esac
|
||||
AC_OUTPUT(Makefile src/modules/Makefile unreal)
|
||||
chmod 0700 unreal
|
||||
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
Unreal Internet Relay Chat Daemon
|
||||
Copyright (C) Carsten V. Munk 2000
|
||||
|
||||
NOTE: Those words are not meant to insult you (the user)
|
||||
but is meant to be a list of words so that the +G channel/user mode
|
||||
will work properly. You can easily modify this file at your will.
|
||||
If you got words to add to this file, please mail badwords@tspre.org
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
This is some filling space, scroll down to see the words
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
*/
|
||||
badword channel { word "pussy"; };
|
||||
badword channel { word "fuck"; };
|
||||
badword channel { word "whore"; };
|
||||
badword channel { word "slut"; };
|
||||
badword channel { word "shit"; };
|
||||
badword channel { word "asshole"; };
|
||||
badword channel { word "bitch"; };
|
||||
badword channel { word "cunt"; };
|
||||
badword channel { word "vagina"; };
|
||||
badword channel { word "penis"; };
|
||||
badword channel { word "jackass"; };
|
||||
badword channel { word "*fucker*"; };
|
||||
badword channel { word "faggot"; };
|
||||
badword channel { word "fag"; };
|
||||
badword channel { word "horny"; };
|
||||
badword channel { word "gay"; };
|
||||
badword channel { word "dickhead"; };
|
||||
badword channel { word "sonuvabitch"; };
|
||||
badword channel { word "*fuck*"; };
|
||||
badword channel { word "boobs"; };
|
||||
badword channel { word "tits"; };
|
||||
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
Unreal Internet Relay Chat Daemon
|
||||
Copyright (C) Carsten V. Munk 2000
|
||||
|
||||
NOTE: Those words are not meant to insult you (the user)
|
||||
but is meant to be a list of words so that the +G channel/user mode
|
||||
will work properly. You can easily modify this file at your will.
|
||||
If you got words to add to this file, please mail badword messages@tspre.org
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
This is some filling space, scroll down to see the words
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
*/
|
||||
badword message { word "pussy"; };
|
||||
badword message { word "fuck"; };
|
||||
badword message { word "whore"; };
|
||||
badword message { word "slut"; };
|
||||
badword message { word "shit"; };
|
||||
badword message { word "asshole"; };
|
||||
badword message { word "bitch"; };
|
||||
badword message { word "cunt"; };
|
||||
badword message { word "vagina"; };
|
||||
badword message { word "penis"; };
|
||||
badword message { word "jackass"; };
|
||||
badword message { word "*fucker*"; };
|
||||
badword message { word "faggot"; };
|
||||
badword message { word "fag"; };
|
||||
badword message { word "horny"; };
|
||||
badword message { word "gay"; };
|
||||
badword message { word "dickhead"; };
|
||||
badword message { word "sonuvabitch"; };
|
||||
badword message { word "*fuck*"; };
|
||||
badword message { word "boobs"; };
|
||||
badword message { word "tits"; };
|
||||
@@ -1,84 +0,0 @@
|
||||
#! /bin/sh
|
||||
#
|
||||
# $Id$
|
||||
# Old: @(#)install.sh 4.5 (Berkeley) 10/12/83
|
||||
#
|
||||
cmd=/bin/mv
|
||||
strip=""
|
||||
chmod="/bin/chmod 755"
|
||||
chown="chown -f root"
|
||||
chgrp="/bin/chgrp -f bin"
|
||||
while true ; do
|
||||
case $1 in
|
||||
-s ) strip="strip"
|
||||
shift
|
||||
;;
|
||||
-c ) cmd="/bin/cp"
|
||||
shift
|
||||
;;
|
||||
-m ) chmod="/bin/chmod $2"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
-o ) chown="/etc/chown -f $2"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
-g ) chgrp="/bin/chgrp -f $2"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
-d ) cmd="/bin/mkdir"
|
||||
shift
|
||||
;;
|
||||
* ) break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ ! ${2-""} ]
|
||||
then echo "install: no destination specified"
|
||||
exit 1
|
||||
fi
|
||||
if [ ${3-""} ]
|
||||
then echo "install: too many files specified -> $*"
|
||||
exit 1
|
||||
fi
|
||||
if [ $1 = $2 -o $2 = . ]
|
||||
then echo "install: can't move $1 onto itself"
|
||||
exit 1
|
||||
fi
|
||||
case $cmd in
|
||||
/bin/mkdir )
|
||||
file=$2/$1
|
||||
;;
|
||||
* )
|
||||
if [ '!' -f $1 ]
|
||||
then echo "install: can't open $1"
|
||||
exit 1
|
||||
fi
|
||||
if [ -d $2 ]
|
||||
then file=$2/$1
|
||||
else file=$2
|
||||
fi
|
||||
/bin/rm -f $file
|
||||
;;
|
||||
esac
|
||||
|
||||
case $cmd in
|
||||
/bin/mkdir )
|
||||
if [ ! -d "$file" ]
|
||||
then $cmd $file
|
||||
fi
|
||||
;;
|
||||
* )
|
||||
$cmd $1 $file
|
||||
if [ $strip ]
|
||||
then $strip $file
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
$chown $file
|
||||
$chgrp $file
|
||||
$chmod $file
|
||||
@@ -0,0 +1,25 @@
|
||||
#!/bin/sh
|
||||
DATE=`date +%Y%m%d-%H%M%S`
|
||||
HOSTNAME=`hostname`
|
||||
USERNAME=`whoami`
|
||||
BUGREPORT=bugreport.$HOSTNAME.$USERNAME.$DATE.txt
|
||||
|
||||
echo "UnrealIRCd Bug Report" > $BUGREPORT
|
||||
echo "---------------------" >> $BUGREPORT
|
||||
echo "" >> $BUGREPORT
|
||||
echo "Made at `date`">> $BUGREPORT
|
||||
echo "`src/ircd -v`" >> $BUGREPORT
|
||||
echo "Operating system:" >> $BUGREPORT
|
||||
ls -l *core* >> $BUGREPORT
|
||||
uname -a >> $BUGREPORT
|
||||
gdb -x .bugreport.gdb src/ircd *core* >> $BUGREPORT 2>&1
|
||||
|
||||
cat |sendmail -t << __EOF__&
|
||||
To: bugs-unreal@tspre.org
|
||||
From: autobugreport@unrealircd.com
|
||||
Subject: Bug report - $BUGREPORT
|
||||
|
||||
`cat $BUGREPORT`
|
||||
|
||||
.
|
||||
__EOF__
|
||||
@@ -1,38 +0,0 @@
|
||||
#************************************************************************
|
||||
#* IRC - Internet Relay Chat, ircd/crypt/Makefile
|
||||
#* Copyright (C) 1991 Darren Reed
|
||||
#*
|
||||
#* 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 1, or (at your option)
|
||||
#* any later version.
|
||||
#*
|
||||
#* This program 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, write to the Free Software
|
||||
#* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
#*
|
||||
#* $Id$
|
||||
#*/
|
||||
#
|
||||
# Change this to the path of your local ircd.conf file
|
||||
#
|
||||
|
||||
IRCDCONF = ../ircd.conf
|
||||
|
||||
all: mkpasswd
|
||||
crypt: install
|
||||
|
||||
mkpasswd: mkpasswd.c
|
||||
cc -lcrypt -O mkpasswd.c -o mkpasswd
|
||||
|
||||
install:
|
||||
crypter ${IRCDCONF}
|
||||
@echo 'done.'
|
||||
|
||||
clean:
|
||||
/bin/rm -f mkpasswd
|
||||
@@ -1,63 +0,0 @@
|
||||
/************************************************************************
|
||||
* IRC - Internet Relay Chat, ircd/crypt/README
|
||||
* Copyright (C) 1991 Nelson Minar
|
||||
*
|
||||
* 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 1, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program 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, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
The change implemented here is that the operator password in irc.conf
|
||||
is no longer stored in plaintext form, but is encrypted the same way
|
||||
that user passwords are encrypted on normal UNIX systems. Ie, instead
|
||||
of having
|
||||
|
||||
O:*:goodboy:Nelson
|
||||
|
||||
in your ircd.conf file, you have
|
||||
|
||||
O:*:sCnvYRmbFJ7oI:Nelson
|
||||
|
||||
You still type "/oper Nelson goodboy" to become operator. However, if
|
||||
someone gets ahold of your irc.conf file, they can no longer figure
|
||||
out what the password is from reading it. There are still other
|
||||
security holes, namely server-server passwords, but this closes one
|
||||
obvious problem.
|
||||
|
||||
So how do you generate these icky looking strings for passwords?
|
||||
There's a simple program called mkpasswd to do that for you. Just run
|
||||
mkpasswd, and at the prompt type in your plaintext password. It will
|
||||
spit out the encrypted password, which you should then just copy into
|
||||
the irc.conf file. This should be done only when adding new passwords
|
||||
to your irc.conf file. To change over your irc.conf file to use
|
||||
encrypted passwords, define CRYPT_OPER_PASSWORD in config.h. You will
|
||||
need to recompile your server if you already compiled it with this
|
||||
feature disabled. Once compiled, edit the Makefile in this directory
|
||||
and chang "IRCDCONF" to your irc.conf file. Then "make install" in this
|
||||
directory to replace all the operator passwords in your irc.conf file
|
||||
with the encrypted format.
|
||||
|
||||
Choose your passwords carefully. Do not choose something in a
|
||||
dictionary, make sure its at least 5 characters. Anything past 8
|
||||
characters is ignored.
|
||||
|
||||
One thing to note about crypt() passwords - for every plaintext, there
|
||||
are 4096 different passwords. Some valid encryptions of "goodboy"
|
||||
include t1Ub2RhRQHd4g sCnvYRmbFJ7oI and Xr4Z.Kg5tcdy6. The first
|
||||
two characters (the "salt") determine which of the 4096 passwords
|
||||
you will get. mkpasswd chooses the salt randomly, or alternately
|
||||
will let you specify one on the command line.
|
||||
|
||||
see also - crypt(3)
|
||||
@@ -1,55 +0,0 @@
|
||||
#!/usr/local/bin/perl
|
||||
#************************************************************************
|
||||
#* IRC - Internet Relay Chat, ircd/crypt/crypter
|
||||
#* Copyright (C) 1991 Sean Batt
|
||||
#*
|
||||
#* 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 1, or (at your option)
|
||||
#* any later version.
|
||||
#*
|
||||
#* This program 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, write to the Free Software
|
||||
#* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
#*
|
||||
#* $Id$
|
||||
#*
|
||||
#*/
|
||||
|
||||
#From Sean Batt sean@coombs.anu.edu.au
|
||||
#
|
||||
#Temporary output file
|
||||
#
|
||||
$tmpfile = "/tmp/ircd.conf.tmp";
|
||||
|
||||
#
|
||||
#Original ircd.conf file
|
||||
#
|
||||
$ircdconf = @ARGV[0];
|
||||
|
||||
print "crypting ",$ircdconf,"\n";
|
||||
@saltset = ('a' .. 'z', 'A' .. 'Z', '0' .. '9', '.', '/');
|
||||
|
||||
umask(0077);
|
||||
open ($ircdout, ">/tmp/ircd.conf.tmp") || die "open $!";
|
||||
|
||||
while ($text = <>) {
|
||||
#if its not an "O" line we can ignore it
|
||||
$text =~ /^o/i || print ($ircdout $text) && next;
|
||||
chop($text);
|
||||
@oline = split(':', $text);
|
||||
$salt = $saltset[rand(time)%64].$saltset[(rand(time)>>6)%64];
|
||||
$oline[2] = crypt(@oline[2], $salt);
|
||||
print ($ircdout join(':',@oline)."\n");
|
||||
}
|
||||
close ($ircdout);
|
||||
close ($ircdin);
|
||||
print "/bin/cp ",$tmpfile," ",$ircdconf,"\n";
|
||||
(fork()==0) ? exec("/bin/cp", $tmpfile, $ircdconf) : wait;
|
||||
|
||||
#unlink($tmpfile);
|
||||
@@ -1,43 +0,0 @@
|
||||
/* simple password generator by Nelson Minar (minar@reed.edu)
|
||||
* copyright 1991, all rights reserved.
|
||||
* You can use this code as long as my name stays with it.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
extern char *getpass();
|
||||
|
||||
int main(argc, argv)
|
||||
int argc;
|
||||
char *argv[];
|
||||
{
|
||||
static char saltChars[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789./";
|
||||
char salt[3];
|
||||
char * plaintext;
|
||||
int i;
|
||||
|
||||
if (argc < 2) {
|
||||
srandom(time(0)); /* may not be the BEST salt, but its close */
|
||||
salt[0] = saltChars[random() % 64];
|
||||
salt[1] = saltChars[random() % 64];
|
||||
salt[2] = 0;
|
||||
}
|
||||
else {
|
||||
salt[0] = argv[1][0];
|
||||
salt[1] = argv[1][1];
|
||||
salt[2] = '\0';
|
||||
if ((strchr(saltChars, salt[0]) == NULL) || (strchr(saltChars, salt[1]) == NULL))
|
||||
fprintf(stderr, "illegal salt %s\n", salt), exit(1);
|
||||
}
|
||||
|
||||
plaintext = getpass("Enter Password: ");
|
||||
|
||||
printf("Encryption: %s\n", crypt(plaintext, salt));
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
|
||||
ALN, Alphanumeric System
|
||||
(C) Stskeeps 2000
|
||||
|
||||
ALN is a quick hack to short down usage of bandwidth-using servernames
|
||||
in prefixes, NICK commands, etc etc. It replaces the name with a
|
||||
1 or 2 byte prefix in a system, look at src/aln.c for the prefix
|
||||
types/values. It will be an PROTOCTL, and used in NICK messages and so on,
|
||||
and introduce a new prefix server<->server called |server. The value of the
|
||||
server is calculated by a hash value, the scache system, so that the server
|
||||
can lookup with a new scache function, scache_find_by_hash(int i). The
|
||||
question of it will conflict in similar-hash server names, is a wonder to me
|
||||
:P, we will find out, but scache will fail at same time then.
|
||||
|
||||
|
||||
Examples:
|
||||
& Medb 4 957458466 ~Medb bservice.org D2 0 +iwrx *
|
||||
:BotService Bot - bservice.org - Owner: terri{J}
|
||||
|
||||
where D2 is the hash value of oxygen.phrozen.org (/stats s on a
|
||||
#define DEVELOP server). irc.flirt.org has hash 96 (ALN code AX) for
|
||||
instance.
|
||||
|
||||
@D2 GLOBOPS :message
|
||||
will be a message from server with hash D2, found find-by-hash(256)
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
From cmunk@draconic.fyremoon.net Wed Apr 5 18:09:55 2000
|
||||
Date: Wed, 5 Apr 2000 18:07:55 +0100 (BST)
|
||||
From: "The Nightwalker (Stskeeps)" <cmunk@draconic.fyremoon.net>
|
||||
To: unreal-dev@lists.sourceforge.net
|
||||
Subject: [Unreal-dev] P:Lines
|
||||
|
||||
|
||||
Some stuff i got ideas about.. stripping the IP and port from the M:Line
|
||||
and enforcing the main port to be in a M:line
|
||||
|
||||
M:irc.fyremoon.net:*:Forever is gonna start tonight:*
|
||||
|
||||
P:ip:flags:password1,password2,password3:port
|
||||
| | | \- port to bind to
|
||||
| | |
|
||||
| | \- Commaseperated lists of accepted passwords
|
||||
| | * if none
|
||||
| |
|
||||
| \--- C = Allow clients
|
||||
| S = Allow servers
|
||||
| R = ONLY allow our remote admin connections
|
||||
| (may only be on a P:line of its own)
|
||||
| J = Clients that connect here are counted as Java(Confroomhack)
|
||||
| * = CS
|
||||
|
|
||||
\--- IP to bind to, * = INADDR_ANY (all interfaces)
|
||||
|
||||
Will make P:Lines more efficent
|
||||
|
||||
---------------------------------------------------------------------
|
||||
Carsten V. Munk - The Nightwalker, known on IRC as Stskeeps or techie
|
||||
* ICQ: 16465977 - E-Mail: stskeeps@tspre.org
|
||||
* Author of UnrealIRCd (http://unreal.tspre.org)
|
||||
* Technical Admin @ irc.roxnet.org, server admin of irc.fyremoon.net
|
||||
"To understand a program you must become both the machine and the program."
|
||||
----------------------------------------------------------------------
|
||||
|
||||
-----BEGIN GEEK CODE BLOCK-----
|
||||
Version: 3.1
|
||||
GCS/CC d- s: a--- C+++ UL P L++ E-- W++ N+ o-- K- w--- O- M V-- PS+ PE- Y+
|
||||
PGP t+ 5 X R- tv- b+ DI++ D++ G e-- h! r z**
|
||||
------END GEEK CODE BLOCK------
|
||||
|
||||
|
||||
_______________________________________________
|
||||
Unreal-dev mailing list
|
||||
Unreal-dev@lists.sourceforge.net
|
||||
http://lists.sourceforge.net/mailman/listinfo/unreal-dev
|
||||
@@ -1,72 +0,0 @@
|
||||
# $Id$
|
||||
|
||||
on ^367 * if ([$4] != []) {echo *** $1 \($3 - $stime($4)) $2} {echo *** $1-}
|
||||
on ^333 * echo *** Topic for $1 set by $2 on $stime($3)
|
||||
on ^317 * if (index(012345679 $3) != -1) {echo *** $1 has been idle for $2 seconds. Signon at $stime($3)} {echo *** $1 has been idle for $2 seconds.}
|
||||
On ^329 "*" echo *** $1 : created $stime($2)
|
||||
on ^
|
||||
alias silence quote silence
|
||||
alias sile quote silence
|
||||
on ^raw_irc "% SILENCE %" echo *** $*
|
||||
|
||||
@ hideit = 0
|
||||
on ^server_notice "% % NOTICE -- CLIENT*" if (hideit != 1) {echo *** $2-}
|
||||
alias show @ hideit = 0;echo *** You can now see clients connecting/exiting
|
||||
alias hide @ hideit = 1;echo *** You will no longer see clients connecting/exiting
|
||||
|
||||
|
||||
# ctime and sendq written by bry
|
||||
# modified by Mmmm
|
||||
|
||||
alias ctime {
|
||||
^on 211 -
|
||||
if ( [$0] )
|
||||
{ ^assign SS $0- }
|
||||
{ ^assign SS $S }
|
||||
|
||||
^on ^211 * {
|
||||
eval ^assign hrs2 ${ ([$7]/60)/60}
|
||||
eval ^assign min2 ${[$7]/60}
|
||||
|
||||
eval ^assign dys ${[$HRS2]/24}
|
||||
eval ^assign hrs ${[$HRS2]-([$DYS]*24)}
|
||||
eval ^assign min ${[$MIN2] - ( ([$HRS]+([$DYS]*24) )*60)}
|
||||
eval ^assign sec ${[$7]-([$MIN2]*60)}
|
||||
@ a = index(\[ $1) - 1
|
||||
@ b = left($a $1)
|
||||
if (index(. $b) == -1)
|
||||
{eval echo *** $1 $[2]DYS days, $[2]HRS hrs, $[2]MIN min, $[2]SEC s}
|
||||
{eval echo *** $1 $[2]DYS days, $[2]HRS hrs, $[2]MIN min, $[2]SEC s}
|
||||
}
|
||||
^stats l $SS
|
||||
}
|
||||
|
||||
alias sendq {
|
||||
eval ^on ^211 "$SRV *" {
|
||||
@ a = index(\[ $1) - 1
|
||||
@ b = left($a $1)
|
||||
if (index(. $b) == -1)
|
||||
{eval echo *** $[11]2 sendq $1}
|
||||
{eval echo *** $[11]2 sendq $1}
|
||||
}
|
||||
if ( [$0] )
|
||||
{ ^assign SRV $0- }
|
||||
{ ^assign SRV $S }
|
||||
stats l $SRV
|
||||
wait -cmd eval ^on ^211 -"$SRV *"
|
||||
}
|
||||
|
||||
# If you use Daveman's toolbox or any auto rejoin line, remove the old
|
||||
# on raw_irc for KICK, and use the foll. one instead: (Run)
|
||||
#
|
||||
#ON ^RAW_IRC "% KICK % % *" {
|
||||
# IF ([$3]==[$N])
|
||||
# {
|
||||
# //QUOTE JOIN $2
|
||||
# ECHO $MID(11 5 $STIME($TIME())) * You have been kicked off channel $2 by $LEFT($INDEX(! $0) $0) \($MID(1 256 $4-)\)
|
||||
# }
|
||||
# {
|
||||
# ECHO $MID(11 5 $STIME($TIME())) * $3 has been kicked off channel $2 by $LEFT($INDEX(! $0) $0) \($MID(1 256 $4-)\)
|
||||
# }
|
||||
# }
|
||||
|
||||
@@ -1,963 +0,0 @@
|
||||
/************************************************************************
|
||||
* IRC - Internet Relay Chat, doc/INSTALL
|
||||
* Copyright (C) 1990,1991,1992, Jeff Trim, Mike Bolotski,
|
||||
* Jarkko Oikarinen and Darren Reed.
|
||||
*
|
||||
* 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 1, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program 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, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
Installing IRC - The Internet Relay Chat Program
|
||||
|
||||
|
||||
Overview of this document:
|
||||
|
||||
1) The config.h file
|
||||
2) Editing the Makefile
|
||||
3) Compiling IRC
|
||||
4) The ircd.conf file
|
||||
|
||||
|
||||
1) Edit the "config.h" file and make changes to the various #DEFINE's:
|
||||
|
||||
a) Copy the config.h.dist file to config.h before editing.
|
||||
|
||||
b) Define what type of UNIX your machine uses.
|
||||
|
||||
Pick the machine type which best describes your machine and change
|
||||
the #undef to #define (if needed). Some flavours of Unix require no
|
||||
#define and in such cases all others should be #undef'd.
|
||||
|
||||
c) DEBUGMODE
|
||||
|
||||
Define DEBUGMODE if you want to see the ircd debugging information
|
||||
as the daemon is running. Normally this function will be undefined
|
||||
as ircd produces a considerable amount of output. DEBUGMODE must be
|
||||
defined for either of -t or -x command line options to work.
|
||||
|
||||
d) DPATH, SPATH, CPATH, MPATH, LPATH, PPATH
|
||||
|
||||
DPATH is provided so that the other pathnames (SPATH, CPATH, etc)
|
||||
may be provided in just filename form. When the server starts, it
|
||||
chdir's to DPATH before chroot or any other file operation, making
|
||||
it the "current directory" for the server. This is where core files
|
||||
will go if it core dumps.
|
||||
|
||||
Define SPATH to be the directory path to ircd. This is usually
|
||||
/usr/local/bin/ircd, unless you don't have installation permission
|
||||
there.
|
||||
|
||||
Define CPATH to be the directory path to the "irc.conf" file.
|
||||
This path is usually /usr/local/lib/irc.conf. The format of this file
|
||||
will be discussed later.
|
||||
|
||||
The LPATH #define should be set to "/dev/null" unless you plan to
|
||||
debug the program. Note that the logfile grows very quickly.
|
||||
|
||||
Define MPATH to be the path to the 'motd' (message of the day) file
|
||||
for the server. Keep in mind this is displayed whenever anyone
|
||||
signs on to your server.
|
||||
|
||||
The PPATH is optional, but if defined, should point to a file which
|
||||
either doesn't exist (but is creatable) or a previously used PPATH
|
||||
file. It is used for storing the server's PID so a ps(1) isn't
|
||||
necessary.
|
||||
|
||||
e) CHROOTDIR
|
||||
|
||||
To use the CHROOTDIR feature, make sure it is #define'd and that
|
||||
the server is being run as root. The server will chroot to the
|
||||
directory name provded by DPATH.
|
||||
|
||||
f) ENABLE_SUMMON, ENABLE_USERS
|
||||
|
||||
For security conscious server admins, they may wish to leave
|
||||
ENABLE_USERS undefined, disabling the USERS command which can be used
|
||||
to glean information the same as finger can. ENABLE_SUMMON toggles
|
||||
whether the server will attempt to summon local users to irc by
|
||||
writing a message similar to that from talk(1) to a user's tty.
|
||||
|
||||
g) SHOW_INVISIBLE_LUSERS, NO_DEFAULT_INVISIBLE
|
||||
|
||||
On large IRC networks, the number of invisible users is likely to
|
||||
be large and reporting that number cause no pain. To aid and effect
|
||||
this, SHOW_INVISIBLE_LUSERS is provided to cause the LUSERS command
|
||||
to report the number of invisible users to all people and not just
|
||||
operators. The NO_DEFAULT_INVISIBLE define is used to toggle whether
|
||||
clients are automatically made invisible when they register.
|
||||
|
||||
h) OPER_KILL, OPER_REHASH, OPER_RESTART, LOCAL_KILL_ONLY
|
||||
|
||||
The three operator only commands, KILL, REHASH and RESTART, may all
|
||||
be disabled to ensure that an operator who does not have the correct
|
||||
privilidges does not have the power to cause untoward things to occur.
|
||||
To further curb the actions of guest operators, LOCAL_KILL_ONLY can
|
||||
be defined to only allow locally connected clients to be KILLed.
|
||||
|
||||
i) The rest of the user changable #define's should be pretty much self
|
||||
explanatory in the config.h file. It is *NOT* recommended that any
|
||||
of the file undef the line with "STOP STOP" in it be changed.
|
||||
|
||||
3) Configure and compile the code.
|
||||
|
||||
Edit the root Makefile for the server, uncomment/comment the correct
|
||||
CFLAGS/IRCDLIBS lines as appropriate for your system.
|
||||
Change DESTDIR to be the same as the path for DPATH in config.h.
|
||||
Type "make". This will compile the server, the client, and the services.
|
||||
At the end of this step, the server directory will contain 'ircd',
|
||||
and the client directory will contain 'irc'. To get the server installed,
|
||||
type "make install" which will build a default m4 file for preprocessing,
|
||||
copy example.conf and put the server all in DESTDIR. The irc client and
|
||||
a copy of the server will also be placed in BINDIR and the modes set
|
||||
accordingly.
|
||||
|
||||
4) The ircd.conf file.
|
||||
|
||||
After installing the ircd and irc programs, edit the irc.conf file
|
||||
as per the instructions in this section and install it in the
|
||||
location you specified in the config.h file. There is a sample
|
||||
conf file called example.conf in the /doc directory.
|
||||
|
||||
Appendix A describes the differences between IP addresses and host
|
||||
names. If you are unfamiliar with this, you should probably scan
|
||||
through it before proceeding.
|
||||
|
||||
The irc.conf file contains various records that specify configuration
|
||||
options. The record types are as follows:
|
||||
|
||||
1. Server connections (C,N)
|
||||
2. Machine information (M)
|
||||
3. Client connections (I)
|
||||
4. Default local server (U)
|
||||
5. Operator priviliges (O)
|
||||
6. Administrative info (A)
|
||||
7. Excluded accounts (K)
|
||||
8. Excluded machines (Q)
|
||||
9. Connection Classes (Y)
|
||||
10. Leaf connections (L)
|
||||
11. Service connections (S)
|
||||
12. Port connections (P)
|
||||
13. Hub connections (H)
|
||||
|
||||
|
||||
1. SERVER CONNECTIONS: How to connect to other servers
|
||||
How other servers can connect to you
|
||||
|
||||
WARNING:
|
||||
The hostnames used as examples are really only examples and
|
||||
not meant to be used (simply because they don't work) in real life.
|
||||
|
||||
Now you must decide WHICH hosts you want to connect to and WHAT ORDER you
|
||||
want to connect to them in. For my example let us assume I am on the
|
||||
machine "rieska.oulu.fi" and I want to connect to irc daemons on 3 other
|
||||
machines:
|
||||
|
||||
"garfield.mit.edu" - Tertiary Connection
|
||||
"irc.nada.kth.se" - Secondary Connection
|
||||
"nic.funet.fi" - Primary Connection
|
||||
|
||||
And I prefer to connect to them in that order, meaning I first want to
|
||||
try connecting to "nic.funet.fi", then to "irc.nada.kth.edu", and
|
||||
finally to "garfield.mit.edu". So if "nic.funet.fi" is down or
|
||||
unreachable, the program will try to connect to "irc.nada.kth.se".
|
||||
If irc.nada.kth.se is down it will try to connect to garfield and so forth.
|
||||
PLEASE limit the number of hosts you will attempt to connect to down to 3.
|
||||
This is because of two main reasons:
|
||||
a) to save your server from causing extra load and delays
|
||||
to users
|
||||
b) to save internet from extra network traffic
|
||||
(remember the old rwho program with traffic problems when
|
||||
the number of machines increased).
|
||||
|
||||
The format for the CONNECT entry in the "irc.conf" is:
|
||||
|
||||
C:<TARGET Host Addr>:<Password>:<TARGET Host NAME>:<TARGET Host PORT>
|
||||
Field: 1 2 3 4 5
|
||||
|
||||
for example:
|
||||
|
||||
C:nic.funet.fi:passwd:nic.funet.fi:6667
|
||||
|
||||
- or -
|
||||
|
||||
C:128.214.6.100:passwd:nic.funet.fi:6667
|
||||
|
||||
- or -
|
||||
|
||||
C:root@nic.funet.fi:passwd:nic.funet.fi:6667
|
||||
|
||||
|
||||
Explanation:
|
||||
|
||||
Each field is separated with a ":" charcter:
|
||||
|
||||
Field 1: Field 1 tells the IRC program which option is being configured.
|
||||
"C" corresponds to a server Connect option.
|
||||
|
||||
Field 2: Specifies the host name or IP address of the machine to connect
|
||||
to. If "user@" prefixes the actual hostname or IP address
|
||||
the server will require that the remote username returned by
|
||||
the ident server be the same as the one given before the "@".
|
||||
|
||||
Field 3: The password of the other host. A password must always be
|
||||
present for the line to be recognized.
|
||||
|
||||
Field 4: The full hostname of the target machine. This is the name that
|
||||
the TARGET server will identify itself with when you connect
|
||||
to it. If you were connecting to nic.funet.fi you would receive
|
||||
"nic.funet.fi" and that is what you should place in
|
||||
this field.
|
||||
|
||||
Field 5: The INTERNET Port that you want to connect to on the TARGET
|
||||
machine. Most of the time this will be set to "6667".
|
||||
If this field is left blank, then no connections will
|
||||
be attempted to the TARGET host, and your host will accept
|
||||
connections FROM the TARGET host instead.
|
||||
|
||||
Some examples:
|
||||
|
||||
C:nic.funet.fi::nic.funet.fi:6667
|
||||
|
||||
This reads: Connect to host "nic.funet.fi", with no password
|
||||
and expect this server to identify itself to you as
|
||||
"nic.funet.fi". Your machine will connect to this host to
|
||||
PORT 6667.
|
||||
|
||||
C:18.72.0.252:Jeff:garfield.mit.edu:6667
|
||||
|
||||
This reads: Connect to a host at address "18.72.0.252", using a
|
||||
password of "Jeff". The TARGET server should identify
|
||||
itself as "garfield.mit.edu". You will connect to Internet
|
||||
Port 6667 on this host.
|
||||
|
||||
C:irc.nada.kth.se::irc.nada.kth.se
|
||||
|
||||
This reads: do not attempt to connect to "irc.nada.kth.se",
|
||||
but if "irc.nada.kth.se" requests a connection,
|
||||
allow it to connect.
|
||||
|
||||
Now back to our original problem, we wanted OUR server CONNECT to 3
|
||||
hosts, "nic.funet.fi", "irc.nada.kth.se" and "garfield.mit.edu" in
|
||||
that order. So as we enter these entries into the file they must be
|
||||
done in REVERSE order of how we could want to connect to them.
|
||||
|
||||
Here's how it would look if we connected "nic.funet.fi" first:
|
||||
|
||||
C:garfield.mit.edu::garfield.mit.edu:6667
|
||||
C:irc.nada.kth.se::irc.nada.kth.se:6667
|
||||
C:nic.funet.fi::nic.funet.fi:6667
|
||||
|
||||
Ircd will attempt to connect to nic.funet.fi first, then to irc.nada
|
||||
and finally to garfield.
|
||||
|
||||
Reciprocal entries:
|
||||
|
||||
Each "C" entry requires a corresponding 'N' entry that specifies
|
||||
connection priviliges to other hosts. The 'N' entry contains
|
||||
the password, if any, that you require other hosts to have before
|
||||
they can connect to you. These entries are of the same format as
|
||||
the "C" entries.
|
||||
|
||||
Let us assume that "garfield.mit.edu" connects to your server
|
||||
and you want to place password authorization authorization on garfield.
|
||||
The "N" entry would be:
|
||||
|
||||
N:garfield.mit.edu:golden:garfield.mit.edu
|
||||
|
||||
This line says: expect a connection from host "garfield.mit.edu",
|
||||
and expect a login password of "golden"
|
||||
and expect the host to identify itself as "garfield.mit.edu".
|
||||
|
||||
N:18.72.0.252::garfield.mit.edu
|
||||
|
||||
This line says: expect a Connection from host "18.72.0.252", and
|
||||
don't expect login password. The connecting host should identify itself
|
||||
as "garfield.mit.edu".
|
||||
|
||||
|
||||
Wildcards domains:
|
||||
To reduce the great amount of servers in IRCnet wildcard
|
||||
DOMAINS were introduced in 2.6. To explain the usage of
|
||||
wildcard domains we take an example of such:
|
||||
*.de - a domain name matching all machines
|
||||
in Germany.
|
||||
Wildcard domains are useful in that ALL SERVERS in Germany
|
||||
(or any other domain area) can be shown as one to the
|
||||
rest of the world. Imagine 100 servers in Germany, it
|
||||
would be incredible waste of netwotk bandwidth to broadcast
|
||||
all of them to all servers around the world.
|
||||
|
||||
So wildcard domains are a great help, but how to use them ?
|
||||
They can be defined in the N-line for a given connection,
|
||||
in place of port number you write a magic number called
|
||||
wildcard count.
|
||||
|
||||
Wildcard count tells you HOW MANY PARTS of your server's name
|
||||
should be replaced by a wildcard. For example, your server's
|
||||
name is "tolsun.oulu.fi" and you want to represent it as
|
||||
"*.oulu.fi" to "nic.funet.fi". In this case the wildcard count
|
||||
is 1, because only one word (tolsun) is replaced by a wildcard.
|
||||
If the wildcard count would be 2, then the wildcard domain would
|
||||
be "*.fi". Note that with wildcard name "*.fi" you could NOT
|
||||
connect to "nic.funet.fi", because that would result in a server
|
||||
name COLLISION (*.fi matches nic.funet.fi).
|
||||
|
||||
I advice you to not to use wildcard servers before you know
|
||||
for sure how they are used, they are mostly beneficial for
|
||||
backbones of countries and other large areas with common domain.
|
||||
|
||||
|
||||
2. MACHINE INFORMATION
|
||||
|
||||
IRC needs to know a few things about your UNIX site, and the "M" command
|
||||
specifies this information for IRC. The fomat of this command is:
|
||||
|
||||
M:<YOUR Host NAME>:xxx:<Geographic Location>:<Internet Port>
|
||||
Field: 1 2 3 4 5
|
||||
|
||||
Explanation:
|
||||
|
||||
Field 1: "M" specifies a Machine description line
|
||||
|
||||
Field 2: The name of YOUR host adding any Internet DOMAINNAME that
|
||||
might also be present.
|
||||
|
||||
Field 3: -- NOT USED --: Set to Value NULL (No spaces at ALL!).
|
||||
|
||||
Field 4: Geographic Location is used to say WHERE YOUR SEVRER is,
|
||||
and gives people in other parts of the world a good
|
||||
idea of where you are! If your server is in the USA, it is
|
||||
usually best to say: <CITY> <STATE>, USA. Like for Denver
|
||||
I say: "Denver Colorado, USA". Finnish sites (like
|
||||
tolsun.oulu.fi generally say something like "Oulu, Finland".
|
||||
|
||||
Field 5: The Internet port your server will use. Should be set to
|
||||
the same value as in the config.h file.
|
||||
|
||||
|
||||
Example:
|
||||
M:tolsun.oulu.fi::Oulu, Finland:6667
|
||||
|
||||
This line reads: My Host's name is "tolsun.oulu.fi" and
|
||||
my site is located in "Oulu, Finland". My ircd will use
|
||||
Internet Port 6667.
|
||||
|
||||
|
||||
M:orion.cair.du.edu::Denver Colorado, USA:6667
|
||||
|
||||
This line reads: My Hosts name is "orion.cair.du.edu"
|
||||
and my site is located in "Denver Colorado, USA".
|
||||
I have defined Internet Port number "6667" to be used
|
||||
as my IRCD Socket Port.
|
||||
|
||||
|
||||
3. CLIENT CONNECTIONS - How to let clients connect to your IRCD.
|
||||
|
||||
A client is a program that connects to the ircd daemon (ircd). Currently
|
||||
there are clients written in C and in GNU Emacs Lisp. The "irc"
|
||||
program is the C client. Each person that talks via IRC is running
|
||||
their own client.
|
||||
|
||||
The irc.conf files contains entries that specify which clients are allowed
|
||||
to connect to your irc daemon. Obviously you want to allow your cwn
|
||||
machine's clients to connect. You may want to allow clients from
|
||||
other sites to connect. These remote clients will use your server
|
||||
as a connection point. All messages sent by these clients will pass
|
||||
through your machine.
|
||||
|
||||
The format of this entry in the conf file is:
|
||||
|
||||
I:<TARGET Host Addr>:<Password>:<TARGET Hosts NAME>:<Internet Port>
|
||||
Field:1 2 3 4 5
|
||||
|
||||
|
||||
For example, if you were installing IRC on tolsun.oulu.fi and you wanted
|
||||
to allow examples sake let us assume you were making this file for
|
||||
tolsun and you wanted to let your own clients to connect to your
|
||||
server, you would add this entry to the file:
|
||||
|
||||
I:128.214.5.6::tolsun.oulu.fi
|
||||
or
|
||||
I:tolsun.oulu.fi::tolsun.oulu.fi
|
||||
|
||||
If you wanted to let remote clients connect, you could add the
|
||||
following lines:
|
||||
|
||||
I:*.du.edu::*.du.edu
|
||||
|
||||
Allow any clients from machines whose names end in "du.edu" to connect
|
||||
with no password.
|
||||
|
||||
I:128.214.6.100::nic.funet.fi
|
||||
|
||||
Allow clients from a machine with that IP number and the name
|
||||
nic.funet.fi to connect.
|
||||
|
||||
I:*.tut.fi:secret:*.tut.fi
|
||||
|
||||
Allow clients from machines matching *.tut.fi to connect
|
||||
with the password 'secret'.
|
||||
|
||||
I:*::*
|
||||
|
||||
Allow anyone from anywhere to connect your server.
|
||||
This is the easiest way, but it also allows people to for example
|
||||
dump files to your server, or connect 1000 (or how many open
|
||||
sockets per process your OS allows) clients to your machine
|
||||
and take your network ports. Of course the same things can be
|
||||
done by simply telnetting to your machine's SMTP port (for example).
|
||||
|
||||
NEW!!!
|
||||
As of the 2.7.2d version of the server, the server is able to accept
|
||||
connections on multiple ports. I-lines are required for each P-line
|
||||
to allow connections to be accepted. For unix sockets, this means
|
||||
either adding I:/path/port::/path/port or some variation (wildcards
|
||||
are recognised here). For internet ports, there must be an I-line
|
||||
which allows the host access as normal, but the port field of the
|
||||
I-line must match that of the port of the socket accepting the
|
||||
connectiion. A port number of 0 is a wildcard (matches all ports).
|
||||
|
||||
4. DEFAULT HOSTS (for local clients)
|
||||
|
||||
This defines the default connection for the irc client. If you are
|
||||
running an ircd server on the same machine, you will want to define
|
||||
this command to connect to your own host. If your site is not running
|
||||
a server then this command should contain the TARGET host's connection
|
||||
information and password (if any). The format for this command is:
|
||||
|
||||
U:<TARGET Host addr>:<Password>:<TARGET Host NAME>:<Internet Port>
|
||||
Field: 1 2 3 4 5
|
||||
|
||||
|
||||
For example:
|
||||
|
||||
U:tolsun.oulu.fi::tolsun.oulu.fi:6667
|
||||
U:128.214.5.6::tolsun.oulu.fi:6667
|
||||
U:tolsun.oulu.fi::tolsun.oulu.fi
|
||||
|
||||
If the port number is omitted, irc will default to using 6667.
|
||||
|
||||
5. OPERATOR Privileges: How to become the IRC administrator on your site
|
||||
|
||||
To become an IRC Administrator, IRC must know who is authorized to become
|
||||
an operator and what their "Nickname" and "Password" is. To add this
|
||||
information, EDIT your "irc.conf" file and add the following command
|
||||
line to it:
|
||||
|
||||
O:<TARGET Host NAME>:<password>:<nickname>:<port>:<class>
|
||||
Field: 1 2 3 4 5 6
|
||||
|
||||
Explanation:
|
||||
|
||||
Field 1: Speficies Operator record. If you use capital letter ('O')
|
||||
in it, it specifies a global operator. Small letter ('o')
|
||||
specifies a local operator. Local operator has basically the
|
||||
same rights except global operator with some restrictions.
|
||||
|
||||
Field 2: Tells IRC which host you have the privileges FROM. This
|
||||
means that you should be logged into this host when you
|
||||
ask for the priviliges. If you specify "tolsun.oulu.fi"
|
||||
then IRC will expect your CLIENT to be connected at
|
||||
"tolsun.oulu.fi" - when you ask for OPERATOR privileges
|
||||
from "tolsun.oulu.fi". You cannot be logged in at any
|
||||
other host and be able to use your OPERATOR privileges
|
||||
at tolsun, only when you are connected at TOLSUN will this
|
||||
work - this is a safeguard against unauthorized sites.
|
||||
|
||||
|
||||
Field 3: If your AUTHORIZATION Password - this is the password that
|
||||
let's IRC know you are who you say you are! Never tell anyone
|
||||
your password and always keep the "irc.conf" file protected
|
||||
from all of the other users.
|
||||
|
||||
Field 4: The Nickname you usually go by - but you can make this what
|
||||
you want. It is better to make this a NICKNAME that no one
|
||||
else knows, but anything will do. I usually use my own
|
||||
loginname.
|
||||
|
||||
Field 5: Unused.
|
||||
|
||||
Field 6: The class field should refer to an existing class (preferably
|
||||
having a lower number than that for the relevant I-line) and
|
||||
determines the maximum number of simultaneous uses of the
|
||||
O-line allowable through the max. links field in the Y-line.
|
||||
|
||||
Example:
|
||||
O:orion.cair.du.edu:pyunxc:Jeff
|
||||
|
||||
There is an OPERATOR at "orion.cair.du.edu" that can get
|
||||
Operator priviliges if he specifies a password of "pyunxc"
|
||||
and uses a NICKNAME of "Jeff".
|
||||
|
||||
|
||||
|
||||
6. ADMINISTRATIVE INFORMATION
|
||||
|
||||
The "A" command is used for administrative information about a site.
|
||||
The e-mail address of the person running the server should be included
|
||||
here in case problems arise.
|
||||
|
||||
|
||||
A:<Your Name/Location>:<Your Electronic Mailing Addr>:<other>
|
||||
Field: 1 2 3 4
|
||||
|
||||
Explanation:
|
||||
|
||||
Field 1: "A" specifies an Admin record.
|
||||
|
||||
|
||||
Field 2: Use this field to say tell your FULL NAME and where in the
|
||||
world your machine is. Be sure to add your City,
|
||||
State/Province and Country.
|
||||
|
||||
|
||||
Field 3: Use this field to specify your Electronic Mailing Address
|
||||
preferably your Internet Mailing Address. If you have
|
||||
a UUCP or ARAPnet address - please add that as well. Be
|
||||
sure to add any extra DOMAIN information that is needed,
|
||||
for example "mail jtrim@orion" probably won't work as a
|
||||
mail address to me if you happen to be in Alaska. But
|
||||
"mail jtrim@orion.cair.du.edu" would work because you
|
||||
know that "orion" is part of the DOMAIN "cair.du.edu".
|
||||
So be sure to add your DOMAINNAMES to your mailing addresses.
|
||||
|
||||
Field 4: Is really an OTHER field - you can add what you want here,
|
||||
|
||||
|
||||
Examples (the line is just one line in the confuration file, here it
|
||||
is cut into two lines to make it clearer to read):
|
||||
|
||||
A:Jeff Trim - Denver Colorado, USA:INET jtrim@orion.cair.du.edu UUCP {hao,
|
||||
isis}!udenva!jtrim:Terve! Heippa! Have you said hello in Finnish today?;)
|
||||
|
||||
Would look like this when printed out with the /admin command:
|
||||
|
||||
Jeff Trim - Denver Colorado, USA
|
||||
INET jtrim@orion.cair.du.edu UUCP {hao,isis}!udenva!jtrim
|
||||
Terve! Hei! Heippa! Have you said hello in Finnish today? ;)
|
||||
|
||||
|
||||
Note that the A record cannot be split across multiple lines; it will
|
||||
typically be longer than 80 characters and will therefore wrap around
|
||||
the screen.
|
||||
|
||||
|
||||
7. REMOVING A USER FROM IRC Remove an errant user from IRC on your site.
|
||||
|
||||
Obviously it is hoped that you wouldn't have to use this command.
|
||||
Unfortunately sometimes a user can become unmanageable and this is your
|
||||
only recourse - the KILL USER command. THIS COMMAND ONLY AFFECTS YOUR
|
||||
SERVER - If this user can connect to another SERVER somewhere else in
|
||||
the IRC-Network then you would have to talk to the administrator on that
|
||||
site to disable his access from that IRCD Server as well.
|
||||
|
||||
The format of this command is:
|
||||
|
||||
K:<Host Name>:<time interval(s)>:<User>
|
||||
Field: 1 2 3 4
|
||||
|
||||
Explanation:
|
||||
|
||||
Field 1: "K" tells the IRCD that you are making a KILL USER command
|
||||
entry.
|
||||
|
||||
Field 2: In this field you specify the Hostname that the user is
|
||||
connecting from. If you wanted to REMOVE connects
|
||||
to IRC from "orion.cair.du.edu" then you would want to enter
|
||||
"orion.cair.du.edu". If you want to REMOVE ALL HOSTS
|
||||
access you can use '*' (Wild Card notation) and no matter
|
||||
what host the USERNAME (specified in Field 4) connects from
|
||||
s/he will be denied access. Removing all hosts isn't
|
||||
very smart thing to do though, why would you run an ircd
|
||||
if you allow nobody to connect to it anyways ?
|
||||
|
||||
Field 3: Either leave this field empty (no spaces), then then lines
|
||||
is active continuously for the specified user/host machine.
|
||||
You may also specify intervals during the line should be
|
||||
active, see examples above.
|
||||
|
||||
Field 4: The USERNAME of the user you want removed from IRC. For
|
||||
example 'root'.
|
||||
|
||||
|
||||
Some Examples:
|
||||
K:orion.cair.du.edu::jtrim
|
||||
|
||||
If user 'jtrim' connects to IRC from host "orion.cair.du.edu"
|
||||
then IMMEDIATELY REMOVE HIM from my IRCD.
|
||||
|
||||
K:*.cair.du.edu::root
|
||||
|
||||
If user 'root' connects to IRC from any host that has the
|
||||
suffix "cair.du.edu" - then IMMEDIATELY REMOVE THEM from
|
||||
my IRCD.
|
||||
|
||||
K:*::vijay
|
||||
|
||||
This line reads "I don't care WHAT HOST user 'vijay' is on,
|
||||
I will NEVER allow username 'vijay' to login to my IRCD.
|
||||
|
||||
K:*.oulu.fi:0800-1200,1400-1900:*
|
||||
|
||||
This disallows all users from hosts with enddomain 'oulu.fi'
|
||||
access to your server between 8 and 12am, 2 and 7pm.
|
||||
Users get kicked off if they're already signed on when the
|
||||
line becomes active (they'll get a warning 5 minutes ago).
|
||||
|
||||
8. Disallowing SERVERS in your irc net.
|
||||
|
||||
In some cases people run into difficulties in net administration.
|
||||
For one reason or another you do not want a certain server to be
|
||||
in your net (for example because of the security holes it opens
|
||||
for every server if it's not secured carefully). In that case
|
||||
you should use Q-lines in your server. When you specify a server
|
||||
name in Q-line, everytime some server link tries to introduce you
|
||||
a server (remember, all server names are broadcast around the net),
|
||||
that name is checked if it matches the Q-lines in your server.
|
||||
If it matches, then your server disconnects the link. Note that
|
||||
just placing Q-lines to your server probably results in your server
|
||||
being left alone, unless other servers have agreed to have the
|
||||
same Q-line in their ircd configuration files as well.
|
||||
|
||||
Example:
|
||||
Q::of the security holes:foo.bar.baz
|
||||
|
||||
This command excludes a server named "foo.bar.baz", the reason
|
||||
is given to be security holes (you should give a reason, it is
|
||||
polite). The first field is unused, so leave it empty.
|
||||
|
||||
9. Connection Classes.
|
||||
|
||||
To enable more efficient use of MAXIMUM_LINKS, connection classes
|
||||
were implemented. To give a connection a class, add another field
|
||||
(a sixth) to the C/N lines for a particular server.
|
||||
Each line for a server should have the same number as the sixth
|
||||
field. If it is absent, the server deaults it to 0, using the
|
||||
defaults from the config.h file. To define a connection class,
|
||||
you need to include a Y: line in the irc.conf file. This enables
|
||||
you to define the ping frequency, connection frequency and maximum
|
||||
number of links that class should have. Currently, the Y: line MUST
|
||||
appear in the irc.conf file BEFORE it is used in any other way.
|
||||
|
||||
The format for the line is:
|
||||
|
||||
Y:<CLASS>:<PING FREQUENCY>:<CONNECT FREQUENCY>:<MAX LINKS>:<SENDQ>
|
||||
Field: 1 2 3 4 5 6
|
||||
|
||||
Field 2: This is the class number which gains the following attributes
|
||||
and should match that which is on the end of the C/N line.
|
||||
|
||||
Field 3: This field defines how long the server will let the connection
|
||||
remain "silent" before sending a PING message to make sure it is still
|
||||
alive. Unless you are sure of what you are doing, use the default value
|
||||
which is in your config.h file.
|
||||
|
||||
Field 4: By changing this number, you change how often your server
|
||||
checks to see if it can connect to this server. If you want to check
|
||||
very occasionally, use a large value, but if it is an important
|
||||
connection, you might want a smaller value so that you connect to it
|
||||
as soon as possible.
|
||||
|
||||
Field 5: This field defines the maximum number of links this class
|
||||
will allow from automatic connections. Using /CONNECT overrides this
|
||||
feature.
|
||||
|
||||
Field 6: This field defines the 'sendq' value for this class. If this
|
||||
field is not present, the default (from config.h) is assigned.
|
||||
|
||||
NOTE: leaving any of the fields out means their value is 0 (ZERO)!!
|
||||
|
||||
example:
|
||||
|
||||
Y:23:120:300:5
|
||||
|
||||
define class 23 to allow 5 auto-connections, which are checked every
|
||||
300 seconds. The connection is allowed to remain silent for 120
|
||||
seconds before a PING is sent. NOTE: fields 3 & 4 are in seconds.
|
||||
|
||||
You may also give I lines a class (again the sixth field to define
|
||||
which class). This is only usefull (currently) for redefining the
|
||||
ping frequency. It can also be useful as a diagnostic to see how
|
||||
much each I line is used when combined with the TRACE output.
|
||||
|
||||
Another feature of connection class is the ability to do automatic
|
||||
routing by using the class as a 'priority'. If you are connected
|
||||
to a server which has a class lower than one of the servers that is
|
||||
'behind' it, the server will disconnect the lower class one and
|
||||
schedule a 'new' connection for the higher class server.
|
||||
|
||||
10. Leaf Connections.
|
||||
|
||||
To stop servers which should only act as leaves from hubs becoming
|
||||
hubs accidently, the L line was introduced so that hubs can be aware
|
||||
of which servers should and shouldnt be treated as leaves. A leaf
|
||||
server is supposed to remain a node for the entirity of its life
|
||||
whilst connected to the IRC server network. It is quite easy, however
|
||||
for a leaf server to be incorrectly setup and create problems by
|
||||
becoming a node of 2 or more servers, ending its life as a leaf. The
|
||||
L line enables the administrator of an IRC 'Hub server' to 'stop' a
|
||||
server which is meant to act as a leaf trying to make itself a hub.
|
||||
If, for example, the leaf server connects to another server which doesnt
|
||||
have an L-line for it, the one which does will drop the connection, once
|
||||
again making the server a leaf.
|
||||
|
||||
L:<SERVER MASK>:*:<SERVER NAME>:<MAX DEPTH>
|
||||
Field: 1 2 3 4 5
|
||||
|
||||
Field 2 is a mask of which servers the leaf-like attributes are used on
|
||||
when the server receives SERVER messages. The wildcards * and ? may be
|
||||
used within this field for matching purposes. If this field is empty,
|
||||
it acts the same as if it were a single * (ie matches everything).
|
||||
|
||||
Field 4 is the the server connectted to you that for which you want to
|
||||
enforce leaf-like attributes upon.
|
||||
|
||||
Field 5 is the maximum depth allowed on that leaf and if not specified,
|
||||
a value of 1 is assumed. The depth is checked each time a SERVER message
|
||||
is received by the server, the hops to the server being the field checked
|
||||
against this max depth and if greater, the connection to the server that
|
||||
made its leaf too deep has its connection dropped.
|
||||
For the L-line to come into effect, both fields, 2 and 4, must match up
|
||||
with the new server being introduced and the server which is responsible
|
||||
for introducing this new server.
|
||||
|
||||
11. Service Connections (Not yet implemented)
|
||||
|
||||
Introduction.
|
||||
The Service is a special kind of IRC client. It does not have the full
|
||||
abilities of a normal user but can behave in a more active manner than
|
||||
a normal client. Services as they stand now are not fully implemented.
|
||||
The following line can be added to your ircd.conf file to enable a
|
||||
service:
|
||||
|
||||
S:<TARGET Host Mask>:<password>:<service_name>
|
||||
Field: 1 2 3 4
|
||||
|
||||
Explanation:
|
||||
|
||||
Field 2:
|
||||
The host mask should be set to match the hosts(s) from which the
|
||||
service will be connecting from. This may be either an IP# or full
|
||||
name (prefered).
|
||||
|
||||
Field 3:
|
||||
This is the password which must be passed in the SERVICE command.
|
||||
|
||||
Field 4:
|
||||
The 'service name' is only used for the purpose of finding the
|
||||
right S-line from the ircd.conf file for password matching. The
|
||||
actual service name used is that set by NICK commands prior to
|
||||
SERVICE being sent.
|
||||
|
||||
To connect a service to your server, you must first create an S-line
|
||||
entry in your ircd.conf file and get your server to read this in (ie
|
||||
rehash or reboot). Once your server has updated itself, you can then
|
||||
attempt to register your connection as a service.
|
||||
Registering as a service is similar to registering as a normal user
|
||||
except that you must send NICK first and then SERVICE. The service
|
||||
command should look something like this:
|
||||
|
||||
SERVICE secretpassword referencename :Service information
|
||||
|
||||
A successfull registering of a service at the server will result in
|
||||
a RPL_YOURESERVICE (383) being sent back to you. Any other reply as
|
||||
a result of sending service indicates an error has occured.
|
||||
|
||||
A service is not a very useful sort of client, it cannot join channels
|
||||
or issue certain commands although most are available to it. Services,
|
||||
however, are not affected by flood control. It is therefore wise to
|
||||
oversee the use of S-lines with some care.
|
||||
|
||||
12. Port Connections
|
||||
|
||||
Introduction.
|
||||
The port line adds flexibility to the server's ability to accept
|
||||
connections. By use of this line in the ircd.conf file, it is easy
|
||||
to setup both Unix Domain ports for the server to accept connections
|
||||
on as well as extra internet ports.
|
||||
|
||||
P:<Internet IP# Mask>:<*>:<*>:<PORT>
|
||||
Field: 1 2 3 4 5
|
||||
|
||||
or
|
||||
|
||||
P:<Directory>:<*>:<*>:<PORT>
|
||||
Field: 1 2 3 4 5
|
||||
|
||||
Explanation
|
||||
Internet Ports
|
||||
Field 1
|
||||
The internet IP mask defines where connections may come from and
|
||||
be accepted. The IP mask uses either *'s or 0's as wildcards. The
|
||||
following two lines are the same:
|
||||
|
||||
P:128.2.*:::6664
|
||||
P:128.2.0.0:::6664
|
||||
|
||||
The incoming isnt matched against the mask, rather the ip# string
|
||||
is decoded and compared segment by segment. Thus
|
||||
P:128.2*.1.2:::6664
|
||||
will not match 128.20.1.2.
|
||||
|
||||
Field 5
|
||||
The port number field tells the server which port number it should
|
||||
listen on for incoming connections.
|
||||
|
||||
Unix Socket Ports.
|
||||
Field 1
|
||||
The path set in field 1 should be the directory name in which to
|
||||
create the unix socket for later listening to. The server will
|
||||
attempt to create the directory before creating the unix socket.
|
||||
|
||||
Field 5
|
||||
The port field when used in combination with a pathname in a P-line
|
||||
is the filename created in the directory set in Field 1.
|
||||
|
||||
Example:
|
||||
P:/tmp/.ircd:::6667
|
||||
|
||||
Creates a unix socket in the /tmp/.ircd directory called "6667".
|
||||
The unix socket (file) must be a numerical.
|
||||
|
||||
13. Hub Connections
|
||||
|
||||
In direct contrast to L-lines, the server also implements H-lines to
|
||||
determine which servers may act as a hub and what they may 'hub for'.
|
||||
If a server is only going to supply its own name (ie act as a solitary
|
||||
leaf) then no H-line is required for, else a H-line must be added as
|
||||
follows:
|
||||
|
||||
H:<SERVER MASK>:*:<SERVER NAME>
|
||||
Field: 1 2 3 4
|
||||
|
||||
Explanation:
|
||||
Field 2
|
||||
All servers that are allowed via this H-line must match the mask
|
||||
given in this field.
|
||||
|
||||
Field 4
|
||||
This field is used to match exactly against a server name, wildcards
|
||||
being treated as literal characters.
|
||||
|
||||
Examples:
|
||||
|
||||
H:*.edu:*:*.bu.edu
|
||||
|
||||
Allows a server named "*.bu.edu" to introduce only servers that
|
||||
match the "*.edu" name mask.
|
||||
|
||||
H:*:*:eff.org
|
||||
|
||||
Allow "eff.org" to introduce (and act as a hub for) any server.
|
||||
|
||||
Note: It is possible to have and use multiple H-lines (or L-lines) for
|
||||
the one server. eg:
|
||||
|
||||
H:*.edu:*:*.bu.edu
|
||||
H:*.au:*:*.bu.edu
|
||||
|
||||
is allowed as is
|
||||
|
||||
L:*.edu:*:*.au
|
||||
L:*.com:*:*.au
|
||||
|
||||
|
||||
Appendix A: Difference between IP addresses and hostnames
|
||||
|
||||
|
||||
There are 2 different types of INTERNET addresses, NAME addresses and
|
||||
NUMERIC addresses. NAME addresses look like ENGLISH words (and indeed
|
||||
they are ENGLISH words that refer to a given host). A NAME address looks
|
||||
like "tolsun.oulu.fi" - and that particular address refers to the machine
|
||||
named TOLSUN in Finland. It is a UNIQUE address because no other machine
|
||||
in the world has its NAME address the same as "tolsun.oulu.fi". Anytime
|
||||
you say "telnet tolsun.oulu.fi" - you would always connect to TOLSUN in
|
||||
Finland. NUMERIC addresses refer to those addresses that are made up of
|
||||
NUMBERS for example "128.214.5.6" is the NUMERIC address for TOLSUN. This
|
||||
address is also UNIQUE in that no other machine in the world will be use
|
||||
those NUMERIC numbers. The NUMERIC address is usually more reliable than
|
||||
the NAME address because not all sites can recognize and translate the
|
||||
NAME address into it's numeric counterpart. NUMERIC always seems to work
|
||||
best, but use a NAME address when you can because it is easier to tell
|
||||
what host you are connected to.
|
||||
|
||||
|
||||
Every Unix machine has a file called "/etc/hosts" on it. This file
|
||||
contains NAME and NUMERIC addresses. When you supply IRC with a NAME
|
||||
address it will at first try to find it in /etc/hosts, and then (if it's
|
||||
really smart), use the local Domain Name Server (DNS) to find the NUMERIC
|
||||
address for the host you want to connect to. Thus if you plan to use NAME
|
||||
addresses keep in mind that on SOME sites the entry for the TARGET machine
|
||||
must be found in /etc/hosts or the NAME address will fail. A typical
|
||||
entry in /etc/hosts looks like this:
|
||||
|
||||
130.253.1.15 orion.cair.du.edu orion.du.edu orion # BSD 4.3
|
||||
|
||||
This particular example is the Host ORION at the University of Denver.
|
||||
Notice that on the far left is the NUMERIC Address for orion. The
|
||||
next few ENGLISH words are the NAME addresses that can be used for orion,
|
||||
"orion.cair.du.edu", "orion.du.edu", "orion". ALL of these NAME addresses
|
||||
will return the NUMERIC address "130.253.1.15" which IRC will use to
|
||||
connect to the TARGET UNIX. (when I say TARGET UNIX I am refering to the
|
||||
UNIX you want to connect to for IRC). Any futher questions about
|
||||
/etc/hosts should be directed to "man hosts".
|
||||
|
||||
|
||||
Appendix B: Enabling Summon Messages
|
||||
|
||||
+-----------------------------------------------------------------------+
|
||||
| E N A B L I N G / S U M M O N M E S S A G E S |
|
||||
+-----------------------------------------------------------------------+
|
||||
|
||||
*NOTE* You must have ROOT or special access to the GROUP tty ('/dev')
|
||||
to do this. If you want to allow users around the world to summon
|
||||
users at your site to irc, then you should make sure that summon works.
|
||||
|
||||
The "IRCD" program needs access to the GROUP of '/dev'. This
|
||||
directory is where user TTY's are stored (as UNIX treats each Terminal
|
||||
as a FILE!) IRCD needs GROUP ACCESS to /dev so that users can be
|
||||
SUMMONED to the program by others users that are *in* the program.
|
||||
This allows people from other Universities around the world to SUMMON
|
||||
your users to IRC so that they can chat with them. Berkeley, SUN, HP-UX
|
||||
and most of the newer versions of UNIX check to see if a USER is
|
||||
accepting MESSAGES via the GROUP access rights on their TTY listing
|
||||
in the /dev directory. For example an entry in '/dev' looks like this:
|
||||
|
||||
(Unix Path on BSD 4.3 UNIX is: /dev/ttyp0)
|
||||
|
||||
crw------- 1 jtrim 20, 0 Apr 29 10:35 ttyp0
|
||||
|
||||
You will note that 'jtrim' OWNS this terminal and can READ/WRITE to this
|
||||
terminal as well (which makes sense because I am ENTERING DATA and
|
||||
RECEIVEING DATA back from the UNIX). I logged into this particular
|
||||
UNIX on "April 29th" at "10:35am" and my TTY is "ttyp0". But further
|
||||
of *note* is that I do not have my MESSAGES ON! (mesg n) -- This is
|
||||
how my terminal would look with MESSAGES ON (mesg y):
|
||||
|
||||
crw--w---- 1 jtrim 20, 0 Apr 29 10:35 ttyp0
|
||||
|
||||
With my MESSAGES ON (mesg y) I can receive TALK(1) requests, use the
|
||||
UNIX WRITE(1) command and other commands that allow users to talk
|
||||
to one another. In IRC this would also allow me to get IRC /SUMMON
|
||||
messages. To set up the "IRCD" program to work with /SUMMON type
|
||||
the following: (using ROOT or an account that has access to '/dev').
|
||||
|
||||
% chgrp tty ircd
|
||||
% chmod 6111 ircd
|
||||
|
||||
The above commands read: "Give IRCD access to GROUP tty (which is /dev)
|
||||
and then when ANYONE runs the IRCD allow SETUID and SETGID priviliges
|
||||
so that they can use the /SUMMON command.
|
||||
@@ -1,382 +0,0 @@
|
||||
/************************************************************************
|
||||
* IRC - Internet Relay Chat, doc/MANUAL
|
||||
* Copyright (C) 1990, Karl Kleinpaste
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
* 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 1, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program 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, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
Date: 04 Apr 1989
|
||||
Author: Karl Kleinpaste
|
||||
karl@cis.ohio-state.edu
|
||||
|
||||
Last modification: 15 May 1992
|
||||
by Mauri Haikola
|
||||
mjh@stekt.oulu.fi
|
||||
|
||||
|
||||
INTERNET RELAY CHAT
|
||||
a real-time conversational system
|
||||
|
||||
|
||||
* 1: Irc - replacement for talk(1)
|
||||
|
||||
Irc is a functional replacement for and improvement to talk(1). Talk
|
||||
is an old, primitive, atrocious, minimalist sort of keyboard/screen
|
||||
conversation tool, using a grotesque, machine-dependent protocol.
|
||||
Irc does everything talk does, but with a better protocol, allowing
|
||||
more than 2 users to talk at once, with access across the aggregate
|
||||
Internet, and providing a whole raft of other useful features.
|
||||
|
||||
* 2: Entering Internet Relay Chat
|
||||
|
||||
There are two ways to enter Internet Relay Chat. If you are using the
|
||||
emacs lisp client, you need to load the client into your Emacs session
|
||||
and then M-x irc. If you are using the C client (easier for beginners)
|
||||
then type (usually) irc. If you wish to be known by a nickname which
|
||||
is not one's login name, type `irc chosen-nickname' instead.
|
||||
|
||||
* 3: How much can be seen from here
|
||||
|
||||
The universe - seriously.
|
||||
|
||||
This is most formally called Internet Relay Chat. Server hosts are
|
||||
connected via a tree structure. The various servers relay control and
|
||||
message data among themselves to advertise the existence of other
|
||||
servers, users, and the channels and other resources being occupied by
|
||||
those users.
|
||||
|
||||
* 4: Structure
|
||||
|
||||
There is quite a lot of structure to the operation of irc, as
|
||||
compared to crufty old talk(1). Since so little could be done with
|
||||
talk(1), it needed little structure. But to keep track of people
|
||||
spread literally around the world (the system was written by Jarkko
|
||||
Oikarinen of Finland, usually seen on the system as `Wiz'), the
|
||||
structure is useful so that one can speak to exactly those people with
|
||||
whom one wishes to speak.
|
||||
|
||||
** 4.1: Nicknames
|
||||
|
||||
All users of irc are known to the system by a `nickname.' By
|
||||
default, one's nickname is one's login name. Nickname clashes are not
|
||||
allowed; this is enforced by the servers. If one's intended nickname
|
||||
clashes with someone else as one enters chat, one will not be able to
|
||||
complete entry to irc until one changes one's nickname to something
|
||||
else.
|
||||
|
||||
** 4.2: Presence on a channel
|
||||
|
||||
Fundamental to the operation of irc is the concept of a channel. All
|
||||
users are `on a channel' while inside irc. One enters the `null
|
||||
channel' first. One cannot send any messages while not in any
|
||||
chatting channel unless one has set up a private conversation in some
|
||||
way. The number of channels is essentially unlimited - whatever will
|
||||
fit in a string of some ungodly length, that must start with a # sign.
|
||||
|
||||
** 4.3: Main modes of channels
|
||||
|
||||
Public
|
||||
|
||||
This is the default mode for a channel. When one is on a public
|
||||
channel, one can be seen by all other users (if one's own user mode
|
||||
permits this). Anyone can notice users on a public channel and join
|
||||
such a channel's conversation.
|
||||
|
||||
Private
|
||||
|
||||
This means that, although anyone can see that one is using chat, no
|
||||
one can tell what channel one is using unless one is already on that
|
||||
channel with oneself. Since the number of potential channels is in
|
||||
the billions, this is quite some security - all one gives away is the
|
||||
acknowledgement that one is using chat.
|
||||
|
||||
Secret
|
||||
|
||||
While one is on a secret channel, no one who is not on one's channel
|
||||
with oneself can even see that one is there. One's name does not show
|
||||
up in a list of active users. The only indication of one's presence
|
||||
is that, when entering chat, all new users are told that there are "N
|
||||
users on P servers." If one checks on all users and finds less than N
|
||||
of them, one knows that others are hiding on secret channels. But a
|
||||
secret channel user still cannot be found except by brute-force
|
||||
checking through all channels, a hopeless proposition in the face of
|
||||
the huge number of possible channel names. Security through obscurity
|
||||
finally means something.
|
||||
|
||||
Changing the mode
|
||||
|
||||
The mode of a channel (private, secret, invite-only, moderated,
|
||||
topic-limited, person-number-limited, no-messages-to-channel, ban
|
||||
someone from channel) is set by the channel operator, who is the
|
||||
first person to join a channel, or someone who has had channel
|
||||
operatorship bestowed on them by another channel operator.
|
||||
|
||||
|
||||
*** 4.4: Conversations not using channels
|
||||
|
||||
It is possible to conduct conversations with others without using the
|
||||
formalized channel structure. Doing so requires that two people set
|
||||
themselves up for private conversation using special commands; see
|
||||
User Commands below.
|
||||
|
||||
* 5: Screen/keyboard structure
|
||||
|
||||
Chat is a full-screen utility. It takes over the screen, with the
|
||||
bulk of activity happening in the top N-2 lines, a modeline (vaguely
|
||||
emacs-like) on the next to last line, and one's input being entered on
|
||||
the last line. A very good version of client is the IRC-II client,
|
||||
avaliable on anonymous ftp from various sites around the world.
|
||||
|
||||
** 5.1: Keyboard input
|
||||
|
||||
When typing commands at irc, one has a minimalist line-editing
|
||||
facility in an emacs style. That is, ^A moves the cursor to the
|
||||
beginning of the line, ^E goes to the end, ^D deletes the character
|
||||
under the cursor, ^K kills from the cursor to the end, and so on.
|
||||
|
||||
** 5.2: Screen activity
|
||||
|
||||
Almost everything happens in the upper bulk of the screen. This
|
||||
includes both messages from other users, as well as the output of the
|
||||
control commands.
|
||||
|
||||
Normal messages from other users appear with the originating nickname
|
||||
in <angle brackets>. Private messages arrive with the originating
|
||||
nickname in *asterisks*. Messages which one sends to everyone appear
|
||||
with a preceding "> " whereas messages which one sends privately to
|
||||
one other user appear with "-> *nickname*."
|
||||
|
||||
Other output (e.g., /who commands, invitations from other users to
|
||||
join channels, and so forth) appears interspersed with other activity
|
||||
on the screen.
|
||||
|
||||
* 6: Command structure
|
||||
|
||||
Ordinary text typed at irc is sent as one's messages to everyone else
|
||||
on the same channel, modulo personal choices for private messages and
|
||||
the like. Commands to irc itself all begin with a command character,
|
||||
which is initially `/' but may be changed to any other character
|
||||
desired.
|
||||
|
||||
Commands may in general be abbreviated to a unique prefix.
|
||||
|
||||
** 6.1: Leaving irc
|
||||
|
||||
The way to get out of irc is to enter the /signoff command. "/si" is
|
||||
sufficient. Also equivalent are "/exit," "/bye," and "/quit." A
|
||||
signoff command may include a comment which will be seen by everyone
|
||||
on the current channel of the person who left.
|
||||
|
||||
** 6.2: Getting help
|
||||
|
||||
Type "/help." Follow the instructions.
|
||||
|
||||
** 6.3: User commands
|
||||
|
||||
The most important commands supported by irc are:
|
||||
|
||||
help signoff who whois
|
||||
list topic join channel
|
||||
links msg invite ignore
|
||||
users stats nick away
|
||||
info clear query cmdch
|
||||
date mode
|
||||
|
||||
*** 6.3.1: help
|
||||
|
||||
Information on how to use the rest of the system is available via
|
||||
/help. The modeline says so as well.
|
||||
|
||||
*** 6.3.2: signoff {comment}
|
||||
|
||||
/signoff exits chat. Optional comment may be included; see above.
|
||||
|
||||
*** 6.3.3: who
|
||||
|
||||
/who returns information on who is using chat. /who without arguments
|
||||
prints info on all users that can be seen. Users of public channels
|
||||
show up with their channel identified. Users of private channels
|
||||
appear, but they are specified as being on a private, unspecified
|
||||
channel. Users of secret channels and users whose user mode is +i
|
||||
(invisible) do not appear at all.
|
||||
|
||||
Giving a channel name as an argument to /who returns only those users of the
|
||||
specified channel. This still doesn't show users of secret channel or
|
||||
invisible users one is actually on the same channel with them. Users
|
||||
of private channels are shown, if an exact channel name is given.
|
||||
|
||||
*** 6.3.4: whois
|
||||
|
||||
This returns information about individual users. Say "/whois
|
||||
nickname" to get information on the login name and host from which the
|
||||
nicknamed user comes.
|
||||
|
||||
*** 6.3.5: topic
|
||||
|
||||
Channels can be given off-the-cuff "topics." Saying "/topic some
|
||||
string of text" will associate that topic with the current channel.
|
||||
|
||||
*** 6.3.6: list
|
||||
|
||||
/list will give lists of active channels, the number of users of each,
|
||||
and the topics therewith associated. Again, secret channels do not
|
||||
appear and private channels only appear as Prv.
|
||||
|
||||
*** 6.3.7: join & channel
|
||||
|
||||
/join or /channel are the means to enter a channel. Give the channel
|
||||
name as an argument. If this is a secret or hidden channel, /who
|
||||
commands will show oneself and any other users of one's channel.
|
||||
|
||||
One's arrival on a channel is announced to the rest of the users
|
||||
already on that channel. Silent, anonymous "lurking" is not
|
||||
supported.
|
||||
|
||||
*** 6.3.8: links
|
||||
|
||||
/links lists the currently-active set of chat servers. Beware: this
|
||||
list can be quite long, and will undoubtedly get longer as chat gains
|
||||
wider use. As of 15 May, 1992, about 130 servers is typical.
|
||||
|
||||
*** 6.3.9: msg
|
||||
|
||||
A single message can be sent privately to a certain user with /msg.
|
||||
Type /msg nickname and the text to be sent. It will be sent privately
|
||||
to the indicated nickname.
|
||||
|
||||
*** 6.3.10: invite
|
||||
|
||||
If there is a user online to whom one wishes to speak, one may invite
|
||||
that user to join oneself on a certain channel. One types "/invite
|
||||
nickname" with an optional channel number. The receiving user gets a
|
||||
one-line message indicating the sender and the invitation. The
|
||||
receiving user is free to ignore the invitation, of course.
|
||||
|
||||
*** 6.3.11: ignore
|
||||
|
||||
If one wants to ignore messages sent by some other user or users, it
|
||||
may be done with /ignore command. One can ignore someone by their
|
||||
nickname, or by their user@host data. Wildcards may be used.
|
||||
|
||||
*** 6.3.12: users
|
||||
|
||||
/users will return a list of the users logged into one's system. With
|
||||
an optional hostname identifying a chat server host, the users logged
|
||||
into that system will be listed.
|
||||
|
||||
*** 6.3.13: stats
|
||||
|
||||
This command returns counts of various protocol operations of one's
|
||||
chat server. It is neither particularly useful nor interesting to
|
||||
users other than operators.
|
||||
|
||||
*** 6.3.14: nick
|
||||
|
||||
One can change nicknames by issuing "/nick new-nickname." All users
|
||||
on one's channel will be advised of the change. NOTE: If one enters
|
||||
chat with a nickname clash (e.g., one's login name is the same as
|
||||
someone else's, and the other user got there first), the system will
|
||||
not let one enter until one issues a /nick command with a unique
|
||||
nickname.
|
||||
|
||||
*** 6.3.15: away
|
||||
|
||||
Sometimes, one wishes to remain connected to the chat system, but one
|
||||
must be elsewhere for a while. One can issue an /away command with
|
||||
arbitrary text as argument, which will mark oneself as being away. If
|
||||
someone sends an away'd user a private message (via /msg or in a
|
||||
private session set up via /query; see below), the sender will get a
|
||||
message back from the server indicating the away-ness and the message
|
||||
which was set.
|
||||
|
||||
*** 6.3.16: info
|
||||
|
||||
/info returns information regarding the author and copyright of the
|
||||
chat system.
|
||||
|
||||
*** 6.3.17: clear
|
||||
|
||||
At times, one wishes that one's screen weren't so cluttered. /clear
|
||||
makes it so.
|
||||
|
||||
*** 6.3.18: query
|
||||
|
||||
This command is used to set up private communications `outside' the
|
||||
normal channel system.
|
||||
|
||||
When one enters "/query nickname," the indicated nickname is set up as
|
||||
the sole recipient of anything which one types thereafter. Thus, if
|
||||
user A executes "/query B" and user B executes "/query A," they have
|
||||
set up a private communication between themselves. Significantly, it
|
||||
remains possible for them to stay on their respective channels, which
|
||||
need not be the same, and listen to whatever conversation is going on
|
||||
around them as well, though they cannot respond to that ambient
|
||||
conversation without leaving the private conversation they have set up.
|
||||
|
||||
One leaves this private mode by issuing /query without arguments.
|
||||
|
||||
*** 6.3.19: cmdch
|
||||
|
||||
The `/' character may not be best for some people to use as their
|
||||
command character. It can be changed with "/cmdch <character>."
|
||||
|
||||
*** 6.3.20: mode
|
||||
|
||||
This command can be used for altering the various modes of a channel
|
||||
(see the explanation of channel modes above). /mode command can only
|
||||
be issued by channel operators.
|
||||
|
||||
** 6.4: Operator commands
|
||||
|
||||
The chat system administrators on each host have additional
|
||||
responsibilities and power over the configuration and operation of the
|
||||
servers. The commands to do so are delineated below.
|
||||
|
||||
*** 6.4.1: oper
|
||||
|
||||
Users who have the potential for operator privileges initially invoke
|
||||
those privileges by "/oper nickname password," where nickname is the
|
||||
nickname under which operation is intended, and password is the
|
||||
password known to the chat system for that nickname.
|
||||
|
||||
*** 6.4.2: kill
|
||||
|
||||
Obnoxious users had best beware the operator who's fast on the /kill
|
||||
command. "/kill nickname" blows any given nickname completely out of
|
||||
the chat system.
|
||||
|
||||
Obnoxiousness is not to be tolerated. But operators should not use
|
||||
/kill lightly.
|
||||
|
||||
*** 6.4.3: quote
|
||||
|
||||
Raw access to the underlying server protocol is possible through the
|
||||
user of the /quote command. "/quote any text at all" is used to send
|
||||
direct, unmodified commands to the servers. This has a wide variety
|
||||
of uses, such as deliberately killing a local or remote chat daemon,
|
||||
invoking operator privileges for otherwise-operator-priv-forbidden
|
||||
users, and related tasks. It is, again, a very powerful operation,
|
||||
and not to be used lightly.
|
||||
|
||||
* 7: Questions, problems, troubles?
|
||||
|
||||
If you have problems, please contact Christopher Davis (ckd@eff.org) or
|
||||
Helen Rose (hrose@eff.org). Known as "ckd" and "Trillian" on irc,
|
||||
respectively. You can also ask for help on some of the operator
|
||||
channels on irc, for example #twilight_zone and #eu-opers. They will
|
||||
be able to assist you in whatever problems you are having with IRC.
|
||||
|
||||
@@ -1,241 +0,0 @@
|
||||
Internet Relay Chat Operator Etiquette Guide (May, 1992)
|
||||
[ $Id$ ]
|
||||
|
||||
Welcome! You've either been selected to be an IRC Operator or you have set
|
||||
up your server and thus have taken on the dual task of IRC Server
|
||||
Administrator and IRC Operator. Your future days will be filled with hours
|
||||
of fun chatting on IRC, and then wondering why everyone you talked to went
|
||||
away, because the links had apparently broken.
|
||||
|
||||
Linking:
|
||||
========
|
||||
|
||||
You will be assigned links from the IRC Routing Coordinators. Please
|
||||
use these links and these links ONLY. The links have been designed to
|
||||
maximize efficiency and make delays in chatting minimal. You will
|
||||
usually be given two links, one to each regional backbone site.
|
||||
Connect to the primary site first and then to the secondary site. You
|
||||
should not need to connect to any other sites. You will be informed if
|
||||
this policy changes.
|
||||
|
||||
Kills
|
||||
=====
|
||||
|
||||
/kill is a special operator command. You should use it with
|
||||
care, and only if absolutely needed. The format is as follows:
|
||||
/kill NICKNAME comment. Comment can be a phrase of almost any length
|
||||
(within reason) and should be used for specifying the reason of the kill.
|
||||
Example: /kill Trillian She's a Ghost
|
||||
IRC Ghosts are created after a net split has occured and the net has yet to
|
||||
relink.
|
||||
|
||||
/wallops PHRASE This is used to talk to those users who have their
|
||||
user mode set to +w. /wallops used to be a way for operators to talk
|
||||
about important matters in linking etc., but it has little use
|
||||
nowadays.
|
||||
|
||||
/TRACE command /TRACE is useful to know what servers are connected to
|
||||
what. Sometimes /trace can be confusing, especially if you are using
|
||||
it for the first time. Here is an example of a trace from
|
||||
stekt1.oulu.fi to cdc835.cdc.polimi.it.
|
||||
|
||||
/TRACE cdc835.cdc.polimi.it
|
||||
|
||||
*** Link stekt1.oulu.fi<2.7.2> ==> cdc835.cdc.polimi.it
|
||||
*** Link rieska.oulu.fi<2.7.1>e ==> cdc835.cdc.polimi.it
|
||||
*** Link nic.funet.fi<2.7.1>e ==> cdc835.cdc.polimi.it
|
||||
*** Link ircserver.et.tudelft.nl<2.7.1>e ==> cdc835.cdc.polimi.it
|
||||
*** Link vesuv.unisg.ch<2.7.1>e ==> cdc835.cdc.polimi.it
|
||||
*** Link apollo.di.unipi.it<2.7.1>e ==> cdc835.cdc.polimi.it
|
||||
*** Oper Class[10] ==> Allanon[cdc835.cdc.polimi.it]
|
||||
*** User Class[11] ==> Lupandy[plus2.usr.dsi.unimi.it]
|
||||
*** Serv Class[3] ==> apollo.di.unipi.it[131.114.4.36] 132S 445C
|
||||
*** User Class[11] ==> Punk[pluto.sm.dsi.unimi.it]
|
||||
*** User Class[11] ==> TheEdge[pluto.sm.dsi.unimi.it]
|
||||
*** User Class[10] ==> Mork[cdc835.cdc.polimi.it]
|
||||
*** User Class[11] ==> Lollo[c700-2.sm.dsi.unimi.it]
|
||||
*** User Class[11] ==> Attila[hp2.sm.dsi.unimi.it]
|
||||
*** Class 0 Entries linked 1
|
||||
*** Class 11 Entries linked 5
|
||||
*** Class 10 Entries linked 2
|
||||
*** Class 3 Entries linked 1
|
||||
|
||||
From this output you can see that the route goes first to
|
||||
rieska.oulu.fi (running version 2.7.1e), then nic.funet.fi,
|
||||
ircserver.et.tudelft.nl, vesuv.unisg.ch, and apollo.di.unipi.it, after
|
||||
which cdc835 is the next server. Then we see the connections on
|
||||
cdc835: One operator (Allanon) and 6 users are on line. The class of
|
||||
each connection is given. There is only one server connected to cdc835
|
||||
at the moment, and that server is apollo.di.unipi.it (cdc835 is said
|
||||
to be a "leaf" server at the moment). The numbers 132S 445C in the end
|
||||
of line tell us, that there are 132 servers and 445 clients connected
|
||||
to the servers from apollo onwards. Finally we see a grand total of
|
||||
connections in each connection class.
|
||||
|
||||
|
||||
/SQUIT server {comment}
|
||||
/squit isolates a specified server from the next closest server, when
|
||||
you look at it along the trace path starting from your server.
|
||||
This is usually used in conjunction with CONNECT (explained later) to
|
||||
reroute traffic. This will be described in detail in the section
|
||||
"routing", preceding CONNECT.
|
||||
|
||||
Usage (and examples):
|
||||
|
||||
/squit E
|
||||
|
||||
If the network looks like this initially (and you are on server A)
|
||||
|
||||
|
||||
A <---> B <---> C <---> D
|
||||
^
|
||||
|
|
||||
v
|
||||
G <---> E <---> F <---> ... (rest of the net)
|
||||
|
||||
|
||||
Then after issuing the previous /squit the network would look like this:
|
||||
|
||||
A <---> B <---> C <---> D
|
||||
|
||||
|
||||
G <---> E <---> F <---> ...
|
||||
|
||||
|
||||
/squit E {comment}
|
||||
|
||||
It usually helps to give a reason why you are sending a
|
||||
SQUIT for a server. This can be accomplished by sending
|
||||
the command "/squit server This link is making the US route
|
||||
through Finland". The SQUIT will then be sent out, and the
|
||||
server sending the squit will WALLOP sending the comment
|
||||
so all operators can see it.
|
||||
|
||||
/CONNECT server {portnum server2}
|
||||
/connect is used to establish a link between two servers. These
|
||||
connections must be authorized by each server's ircd.conf file, but
|
||||
any operator can issue a CONNECT between authorized servers. This
|
||||
command is most often used in conjunction with SQUIT to reroute
|
||||
traffic.
|
||||
If only one argument is given, this command causes the server you
|
||||
are on to attempt to connect to the server specified. For example,
|
||||
"/connect B" (in the previous example) would cause your server (A) to
|
||||
connect to B.
|
||||
Suppose you wanted to reconnect server F to server E? You cannot
|
||||
contact server F since it is no longer part of your network. However,
|
||||
you can tell server E to connect to it. A remote CONNECT can be issued
|
||||
to server E.
|
||||
|
||||
Examples (assume you are on server A):
|
||||
|
||||
/connect B
|
||||
|
||||
If the network initially looks like this:
|
||||
|
||||
A B <---> ... (rest of network)
|
||||
|
||||
Then afterwards (if the connection succeeds) the network will look
|
||||
like this:
|
||||
|
||||
A <---> B <---> ...
|
||||
|
||||
|
||||
In the example where you wanted to reconnect server E to F, the
|
||||
following syntax would be appropriate (note: we are assuming that
|
||||
F's irc socket port is 6667, which is the default)
|
||||
|
||||
/connect F 6667 E
|
||||
|
||||
If the network initially looks like this:
|
||||
|
||||
A <---> B <---> C <---> D
|
||||
^
|
||||
|
|
||||
v
|
||||
G <---> E F <---> ...
|
||||
|
||||
Then after your CONNECT request the network topology will look like this:
|
||||
|
||||
A <---> B <---> C <---> D
|
||||
^
|
||||
|
|
||||
v
|
||||
G <---> E <---> F <---> ...
|
||||
|
||||
Be careful when connecting servers that you know which command to
|
||||
use! If you simply issued "/connect F" from your server, the
|
||||
network would look like this:
|
||||
|
||||
|
||||
... <---> F <---> A <---> B <---> C <---> D
|
||||
^
|
||||
|
|
||||
v
|
||||
G <---> E
|
||||
|
||||
which for various reasons (discussed below) might be very
|
||||
undesirable.
|
||||
|
||||
Routing
|
||||
=======
|
||||
|
||||
When and how should you do rerouting? This depends on where your
|
||||
server is topologically located and whether you route traffic. If you
|
||||
are a leaf node (i.e. only connect to one server at a time) then
|
||||
chances are you won't need to do any routing at all. Your ircd.conf
|
||||
file should be written to connect to the best possible servers first
|
||||
before trying alternates. At the most, you may decide to squit an
|
||||
alternate server and connect to your primary if/when it goes back up.
|
||||
This only involves local squits, however.
|
||||
|
||||
If you are operating a backbone site, you may find yourself
|
||||
rerouting things quite often. If the servers badger.ugcs.caltech.edu
|
||||
(Pasadena, CA), irc.mit.edu (Boston, MA), minnie.cc.utexas.edu
|
||||
(Austin, TX) and ucsu.colorado.edu (Boulder, CO) were routing traffic
|
||||
in the following way:
|
||||
|
||||
... <---> minnie <---> badger <---> bucsd <---> ucsu <---> ...
|
||||
|
||||
It would make sense to either squit ucsu and reconnect it to minnie,
|
||||
or disconnect minnie from badger and connect to ucsu, because
|
||||
topologically (and geographically) ucsu and minnie are rather close.
|
||||
There are occasions when US traffic for some reasons winds up being
|
||||
routed through Australia. This is another case where traffic should
|
||||
definitely be rerouted. However, there are sometimes occasions when
|
||||
routing is going through "backdoor" methods. If you see something
|
||||
totally outrageous (like the east coast and the west coast being
|
||||
connected by eff.org) please ask for example on channel #twilight_zone
|
||||
before you send any squits, because chances are, it's like that for a
|
||||
reason.
|
||||
|
||||
Of course, any operator can remotely squit or connect servers, so
|
||||
if you see a problem and you're sure you know how to fix it, it's a
|
||||
good idea to do so. If the operator of a server which is is being
|
||||
routed poorly is online, it's probably best to contact him/her first,
|
||||
though.
|
||||
|
||||
Chances are that hub operators will be more familiar with the
|
||||
general topology of the network and which servers connect to which
|
||||
(which is why most of the manual routing is left to them), so if you
|
||||
have any problems, talk to the other operators on operator channels
|
||||
(#twilight_zone, #eu-opers etc.) That's what they are there for!
|
||||
Also, be aware that servers will notify all the operators online of
|
||||
remote SQUITs and CONNECTs via WALLOPS.
|
||||
|
||||
Please let us know if there should be any additions to this guide. Again,
|
||||
this is not MANDATORY, this is just a GUIDE. Please conduct yourself as
|
||||
an IRC Operator would...you are looked upon for assistance, both emotional
|
||||
and mental.
|
||||
|
||||
Helen Rose Christopher Davis Noah Friedman
|
||||
<hrose@cs.bu.edu> <ckd@cs.bu.edu> <friedman@ai.mit.edu>
|
||||
|
||||
January, 1991
|
||||
|
||||
|
||||
Updated by
|
||||
|
||||
Mauri Haikola
|
||||
<mjh@stekt.oulu.fi>
|
||||
|
||||
May, 1992
|
||||
@@ -0,0 +1,41 @@
|
||||
|
||||
Some minor rules about patches & modifications to UnrealIRCd
|
||||
|
||||
1. When making a change, always add a small description in Changes, in the
|
||||
BOTTOM
|
||||
|
||||
2. If new files are made, it must contain proper copyright headers,
|
||||
and a $Id$ somewhere.
|
||||
|
||||
3. /*
|
||||
* These kind of comments
|
||||
*/
|
||||
|
||||
NOT
|
||||
|
||||
// These kind of comments
|
||||
|
||||
4. if (something == 1)
|
||||
{
|
||||
moo; /* comment */
|
||||
/* This does what what what */
|
||||
cow(go(moo));
|
||||
}
|
||||
|
||||
NOT
|
||||
|
||||
if (something == 1) {
|
||||
}
|
||||
|
||||
5. Do not touch version.c.SH or version.h, unless you are a head coder
|
||||
if you need a credit in, contact us
|
||||
|
||||
6. Patches are submitted to coders@lists.unrealircd.org,
|
||||
using "cvs diff -u > patchname". A submision must contain description of
|
||||
what it does, etc.
|
||||
|
||||
7. Protocol changes must be discussed before making patches for it.
|
||||
|
||||
8. We do NOT rip people off. If we use other people's code, it MUST be
|
||||
properly credited.
|
||||
|
||||
@@ -0,0 +1,334 @@
|
||||
Written by ^MrMike^ (mike@sector001.org) for the UnrealIRCd
|
||||
Modified by codemastr to include a few other commands
|
||||
(note, this file will be updated in CVS asap)
|
||||
|
||||
PRIVMSG
|
||||
- Used to send a message to a person or a channel
|
||||
Syntax: MSG <nick>,<nick2>,<nick3>,<nick4> <text>
|
||||
Example: PRIVMSG Stskeeps :Hello. Unreal is a very good ircd.
|
||||
Example: PRIVMSG Stskeeps,codemastr,DrBin :Hello Unreal Coding Team
|
||||
|
||||
NOTICE
|
||||
- Mainly used for one-time communication or for the results of a command.
|
||||
Syntax: NOTICE <nick>,<nick2>,<nick3>,<nick4> <text>
|
||||
Example: NOTICE codemastr :Hi. How are you?
|
||||
Example: NOTICE codemastr,Stskeeps :Hi codemastr and Stskeeps.
|
||||
|
||||
MODE
|
||||
- Used to change the mode of a channel or a user. You can only change modes for channel you are an Operator or Half-Op on. Also, you can only changes user modes for yourself.
|
||||
Syntax: MODE <channel/user> <mode>
|
||||
Example: MODE #UnrealIRCD +tn
|
||||
Example: MODE #UnrealIRCD +ootn codemastr Stskeeps
|
||||
|
||||
NICK
|
||||
- Changes your "online identity" on a server. All those in the channel you are in will be alerted of your nickname change.
|
||||
Syntax: NICK <new nickname>
|
||||
Example: NICK |codemastr|
|
||||
|
||||
JOIN
|
||||
- Used to enter one or more channels on an IRC server. All occupants of the channel will be notified of your arrival.
|
||||
Syntax: JOIN <chan>,<chan2>,<chan3>
|
||||
Example: JOIN #UnrealIRCD
|
||||
Example: JOIN #UnrealIRCD,#OperHelp
|
||||
|
||||
PING
|
||||
- Determines the amount of lag (time it takes for a response to reach a person and come back) between yourself and someone else.
|
||||
Syntax: PING <user>
|
||||
Example: PING Stskeeps
|
||||
|
||||
WHOIS
|
||||
- Shows information about the user in question, such as their "name", channels they are currently in, their hostmask, etc.
|
||||
Syntax: WHOIS <user>
|
||||
Example: WHOIS DrBin
|
||||
|
||||
ISON
|
||||
- Used to determine of a certain user or users are currently on the IRC server based upon their nickname.
|
||||
Syntax: ISON <user> <user2> <user3> <user4>
|
||||
Example: ISON Stskeeps DrBin codemastr NickServ ChanServ OperServ MemoServ
|
||||
|
||||
USER
|
||||
- Used during registration to server (i.e. during inital connection sequence.)
|
||||
|
||||
PART
|
||||
- Used to part (or leave) a channel you currently occupy. All those in the channel will be notified of your departure.
|
||||
Syntax: PART <chan>,<chan2>,<chan3>,<chan4>
|
||||
Example: PART #UnrealIRCD
|
||||
Example: PART #UnrealIRCD,#OperHelp
|
||||
|
||||
QUIT
|
||||
- Disconnects you from the IRC server. Those in the channels you occupy will be notified of your departure. If you do not specify a reason, your nickname becomes the reason.
|
||||
Syntax: QUIT <reason>
|
||||
Example: QUIT Leaving!
|
||||
|
||||
USERHOST
|
||||
- Returns the userhost of the user in question. Usually used by scripts or bots to retrieve userhost information.
|
||||
Syntax: USERHOST <nickname>
|
||||
Example: USERHOST codemastr
|
||||
|
||||
SVSNICK
|
||||
- Can only be used by a U:Lined server (i.e. services). Changes the nickname of the user in question.
|
||||
Syntax: SVSNICK <nickname> <new nickname> :<timestamp>
|
||||
Example: SVSNICK Stskeeps Techie :963086432
|
||||
|
||||
SVSMODE
|
||||
- Can only be used by a U:Lined server (i.e. services). Changes the mode of the channel or user in question.
|
||||
Syntax: SVSMODE <channel/user> :<mode>
|
||||
Example: SVSMODE #UnrealIRCD :+o Stskeeps
|
||||
Example: SVSMODE codemastr :+i
|
||||
|
||||
LUSERS
|
||||
- Provides local and global user information (such as current and maximum user count).
|
||||
Syntax: LUSERS <server>
|
||||
|
||||
CHANSERV
|
||||
- Will send a secure message to ChanServ. Similar to /msg ChanServ, but more secure. May not work if server is configured improperly.
|
||||
|
||||
TOPIC
|
||||
- Sets/Changes the topic of the channel in question, or just display the current topic.
|
||||
Syntax: TOPIC <channel>
|
||||
Syntax: TOPIC <channel> <topic>
|
||||
Example: TOPIC #operhelp
|
||||
Example: TOPIC #UnrealIRCD Welcome to the Unreal IRCD Home Channel.
|
||||
|
||||
INVITE
|
||||
- Sends a user an invitation to join a perticular channel. You must be an operator on the channel in order to invite a user into it.
|
||||
Syntax: INVITE <user> <channel>
|
||||
Example: INVITE codemastr #OperHelp
|
||||
|
||||
KICK
|
||||
- Removes a user from a channel. Can only be used by Operators or Half-Ops. If no reason is specified, your nickname becomes the reason.
|
||||
Syntax: KICK <channel> <user> <reason>
|
||||
|
||||
WALLOPS
|
||||
- Sends a "message" to all those with the umode +w. Only IRCops can send wallops, while anyone can view them.
|
||||
Syntax: WALLOPS <message>
|
||||
|
||||
KILL
|
||||
- Forcefully disconnects a user from an IRC Sever. Can only be used by IRCops.
|
||||
Syntax: KILL <user> <reason>
|
||||
Example: KILL Clone5 Cloning is not allowed
|
||||
|
||||
AWAY
|
||||
- Sets your online status to "away".
|
||||
Syntax: AWAY <reason> (AWAY without a reason will unset you away)
|
||||
Example: AWAY Walking the dog...
|
||||
|
||||
SQUIT
|
||||
- Disconnects an IRC Server from the network
|
||||
Syntax: SQUIT <server>
|
||||
Example: SQUIT leaf.*
|
||||
|
||||
WHO
|
||||
- Searches user information (-i users only) for supplied information. IRCops are a ble to search +i users.
|
||||
Syntax: WHO <search>
|
||||
Example: WHO *.aol.com
|
||||
|
||||
WHOWAS
|
||||
- Retrieves previous 'WHOIS' information for users no longer connected to the server.
|
||||
Syntax: WHOWAS <nickname>
|
||||
Example: WHOWAS Stskeeps
|
||||
|
||||
LIST
|
||||
- Provides a complete listing of all channels on the network. If a search string is specified, it will only show those matching the search string.
|
||||
Syntax: LIST <search string>
|
||||
Example: LIST
|
||||
Example: LIST *ircd*
|
||||
|
||||
NAMES
|
||||
- Provides a list of users on the specified channel.
|
||||
Syntax: NAMES <channel>
|
||||
Example: NAMES #help
|
||||
|
||||
OPER
|
||||
- Attempts to give a user IRCop status.
|
||||
Syntax: OPER <uid> <pass>
|
||||
Example: OPER codemastr codeit
|
||||
|
||||
CONNECT
|
||||
- Links another IRC server to the one you are currently on. Remote connections are also possible.
|
||||
Syntax: CONNECT <server>
|
||||
Syntax: <CONNECT> <hub> <port> <leaf>
|
||||
Example: CONNECT leaf.*
|
||||
Example: CONNECT hub.* 6667 leaf.*
|
||||
|
||||
VERSION
|
||||
- Provides version information of the IRCD software in usage.
|
||||
Syntax: VERSION
|
||||
|
||||
STATS
|
||||
- Provides certain statistical information about the server (for example, u will provide uptime information).
|
||||
Syntax: STATS <letter>
|
||||
Example: STATS u
|
||||
|
||||
LINKS
|
||||
- Lists all of the servers currently linked to the network.
|
||||
Syntax: LINKS
|
||||
|
||||
ADMIN
|
||||
- Provides administrative information regarding the server.
|
||||
Syntax: ADMIN <server>
|
||||
|
||||
SAMODE
|
||||
- Allowed a services administrator to change the mode on a channel, without having operator status.
|
||||
Syntax: SAMODE <channel> <mode>
|
||||
Example: SAMODE #UnrealIRCD +m
|
||||
|
||||
SVSKILL
|
||||
- Can only be used by a U:Lined server. Forcefully disconnects a user from the network.
|
||||
Syntax: SVSKILL <user> <reason>
|
||||
Example: SVSKILL codemastr Goodbye
|
||||
|
||||
SVSNOOP
|
||||
- Can only be used by a U:Lined server. Enabled or disables whether Global IRCop functions exist on the server in question or not.
|
||||
Syntax: SVSNOOP <server> <+/->
|
||||
Example: SVSNOOP leaf.* -
|
||||
|
||||
MOTD
|
||||
- Displays the Message of the Day.
|
||||
Syntax: MOTD
|
||||
Syntax: MOTD <server>
|
||||
|
||||
KLINE
|
||||
- "Bans" a hostmask from connection to the IRC server.
|
||||
Syntax: KLINE <hostmask> <reason>
|
||||
Example: KLINE *@*.aol.com Abuse
|
||||
|
||||
UNKLINE
|
||||
- Removes a k:line from the server.
|
||||
Syntax: UNKLINE <hostmask>
|
||||
Example: UNKLINE *@*.aol.com
|
||||
|
||||
ZLINE
|
||||
- Disables all access to the IRC server from a specified IP.
|
||||
Syntax: ZLINE <ip>
|
||||
Example: ZLINE 127.0.0.1
|
||||
|
||||
UNZLINE
|
||||
- Removes a currently active z:Line.
|
||||
Syntax: UNZLINE <ip>
|
||||
Example: ZLINE 127.0.0.1
|
||||
|
||||
GLOBOPS
|
||||
- Sends a global "message" to all IRCops. Only viewable by IRCops (unlike WallOps, which can be viewed by normal users).
|
||||
Syntax: GLOBOPS <message>
|
||||
Example: GLOBOPS Going to be akilling those clones...
|
||||
|
||||
CHATOPS
|
||||
- GLOBOPS is usually reserved for important network information. Therefore, for Oper Chat, CHATOPS was invented. IRCops with the +c flag enabled will be able to send/receive CHATOPS messages.
|
||||
Syntax: CHATOPS <message>
|
||||
Example: CHATOPS How's everyone doing today?
|
||||
|
||||
LOCOPS
|
||||
- Similar to GLOBOPS, except only received by those IRCops local to your server.
|
||||
Syntax: LOCOPS <message>
|
||||
Example: LOCOPS Going to be adding a temp k:line for that user...
|
||||
|
||||
REHASH
|
||||
- Prompts the server to reread its configuration file (ircd.conf). Will also remove any temporarly lines (i.e. k:line).
|
||||
Syntax: REHASH
|
||||
|
||||
RESTART
|
||||
- Kills and restarts the irc daemon, disconnecting all users currently on that server.
|
||||
Syntax: RESTART
|
||||
Syntax: RESTART <password>
|
||||
|
||||
DIE
|
||||
- Kills the irc daemon, disconnecting all users currently on that server.
|
||||
Syntax: DIE
|
||||
Syntax: DIE <password>
|
||||
|
||||
RULES
|
||||
- Reads the rules.conf file and sends the contents to the user.
|
||||
Syntax: RULES
|
||||
|
||||
MAP
|
||||
- Provides a "network map" of the IRC network. Mainly used for routing purposes.
|
||||
Syntax: MAP
|
||||
|
||||
DALINFO
|
||||
- Original DALnet ircd credits.
|
||||
Syntax: DALINFO
|
||||
|
||||
MKPASSWD
|
||||
- Used for generating an encrypted password. Mainly used for encrypted O:Line passwords.
|
||||
Syntax: MKPASSWD <password>
|
||||
Example: MKPASSWD codeit
|
||||
|
||||
ADDLINE
|
||||
- Adds a line to the server's ircd.conf file. After added, you must REHASH the server for it to take affect.
|
||||
Syntax: ADDLINE <line>
|
||||
Example: ADDLINE C:127.0.0.1:server.dal.net:linking:7325:50
|
||||
|
||||
TECHAT
|
||||
- Similar to CHATOPS, but only Technical Admins are able to send/receive messages on this "channel".
|
||||
Syntax: TECHAT <message>
|
||||
Example: TECHAT What do you think of the new routing map?
|
||||
|
||||
NACHAT
|
||||
- Similar to CHATOPS (and TECHAT), but only Network Admins are able to send/recieve messages.
|
||||
Syntax: NACHAT <message>
|
||||
Example: NACHAT Linking a new server in a couple minutes...
|
||||
|
||||
KNOCK
|
||||
- For channels which are invite only, you can "knock" on the channel to request an invite.
|
||||
Syntax: KNOCK <channel> <message>
|
||||
Example: KNOCK #secret_chan I'm an op, let me in!
|
||||
|
||||
CREDITS
|
||||
- Credits for Unreal IRCD.
|
||||
Syntax: CREDITS
|
||||
|
||||
LICENSE
|
||||
- GPL information.
|
||||
Syntax: LICENSE
|
||||
|
||||
SVSJOIN
|
||||
- Forces a user to join a channel. Can only be used by a U:Lined server.
|
||||
Syntax: SVSJOIN <nick> <channel>
|
||||
Example: SVSJOIN codemastr #jail
|
||||
|
||||
SAJOIN
|
||||
- Forces a user to join a channel. Can only be used by a Services Admin.
|
||||
Syntax: SAJOIN <nick> <channel>
|
||||
Example: SAJOIN Stskeeps #OperHelp
|
||||
|
||||
SVSPART
|
||||
- Forces a user to leave a channel. Can only be used by a U:Lined server.
|
||||
Syntax: SVSPART <nick> <channel>
|
||||
Example: SVSPART codemastr #jail
|
||||
|
||||
SAPART
|
||||
- Forces a user to leave a channel. Can only be used by a Services Admin.
|
||||
Syntax: SAPART <nick> <channel>
|
||||
Example: SAPART Stskeeps #OperHelp
|
||||
|
||||
SETHOST
|
||||
- Changes the hostname of yourself. Only available to IRCops.
|
||||
Syntax: SETHOST <host>
|
||||
Example: SETHOST coder.tspre.org
|
||||
|
||||
SETIDENT
|
||||
- Changes the ident of yourself. Only available to IRCops.
|
||||
Syntax: SETIDENT <ident>
|
||||
Example: SETIDENT coder
|
||||
|
||||
SETNAME
|
||||
- Changes the "IRC Name" (or "Real Name") of yourself. Available to everyone.
|
||||
Syntax: SETNAME <name>
|
||||
Example: SETNAME Unreal Coding Team Member
|
||||
|
||||
CHGHOST
|
||||
- Changes the hostname of a user currently on the IRC network. Only available to IRCops.
|
||||
Syntax: CHGHOST <nick> <host>
|
||||
Example: CHGHOST codemastr coder.tspre.org
|
||||
|
||||
CHGIDENT
|
||||
- Changes the ident of a user currently on the IRC network. Only available to IRCops.
|
||||
Syntax: CHGIDENT <nick> <ident>
|
||||
Example: CHGIDENT codemastr coder
|
||||
|
||||
CHGNAME
|
||||
- Changes the "IRC Name" (or "Real Name") of a user currently on the IRC network. Only available to IRCops.
|
||||
Syntax: CHGNAME <nick> <name>
|
||||
Example: CHGNAME codemastr Unreal Coding Team Member
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
/*
|
||||
* Example set {} block
|
||||
*/
|
||||
|
||||
set {
|
||||
/*
|
||||
* This is the mail users will get shown when k-lined
|
||||
*/
|
||||
kline-address "mail.to.mail.to";
|
||||
/*
|
||||
* What modes will users get when connecting to this server
|
||||
*/
|
||||
modes-on-connect "+ix";
|
||||
/* What channels users will autojoin */
|
||||
auto-join "0";
|
||||
/* What channels opers will autojoin on connect*/
|
||||
oper-auto-join "0";
|
||||
/* This needs to be an unused port, that the IRCd will bind
|
||||
* to, and make insecure proxies connect to.
|
||||
*/
|
||||
blackhole [ip]:port;
|
||||
dns {
|
||||
/* What IP has our DNS server got? */
|
||||
nameserver 127.0.0.1;
|
||||
/* How long time will we wait for each attempt? */
|
||||
timeout 2s;
|
||||
/* How many attempts will we do */
|
||||
retries 2s;
|
||||
};
|
||||
options {
|
||||
enable-opermotd;
|
||||
enable-chatops;
|
||||
hide-ulines;
|
||||
// webtv-support;
|
||||
identd-check;
|
||||
};
|
||||
|
||||
socks {
|
||||
ban-message "Insecure SOCKS server";
|
||||
quit-message "Insecure SOCKS server";
|
||||
ban-time "1d";
|
||||
};
|
||||
/*
|
||||
* How many channels each user can join
|
||||
*/
|
||||
maxchannelsperuser 10;
|
||||
/*
|
||||
* This is a new thing in Unreal3.2.
|
||||
* You _need_ to make three numbers up, bigger than 100000
|
||||
* These MUST be the SAME on EVERY server in your NETWORK
|
||||
* If people discover these keys, it is easier for them to crack
|
||||
* the +x algoritm.
|
||||
*/
|
||||
cloak-keys
|
||||
{
|
||||
0;
|
||||
0;
|
||||
0;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
@@ -52,7 +52,7 @@ A: T:Lines is a new Unreal feature that makes it able to show different
|
||||
T:*.dk:motds/danish.motd:rules/danish.rules
|
||||
T:*.fr:motds/french.motd:rules/french.rules
|
||||
|
||||
This will get people from Denmark to see the "Danish" MOTD and the "Dandish" RULLES
|
||||
This will get people from Denmark to see the "Danish" MOTD and the "Danish" RULLES
|
||||
and people from France to see the French ones:)
|
||||
|
||||
NOTE: T:Lines are read up side down so if you have a T:*:ircd.motd:ircd.rules in the bottom
|
||||
@@ -61,65 +61,16 @@ A: T:Lines is a new Unreal feature that makes it able to show different
|
||||
7) Where can i download updates to Unreal?
|
||||
|
||||
A: Mostly you can download the newest version at
|
||||
http://unreal.tspre.org
|
||||
http://www.unrealircd.com
|
||||
|
||||
Versions may be spewed out regulary due to new features and bugs..
|
||||
|
||||
8) Why does it say "unlimit core failed" or something when I boot the IRCd?
|
||||
A: It's just a warning, mainly just ignore it.
|
||||
|
||||
9) I use Linux Mandrake and ./Config always hangs! What can I do??
|
||||
A: Go edit the Config script and remove those lines:
|
||||
-SNIP START-
|
||||
cat > $TMP <<__EOF__
|
||||
#$STRINGH STRINGH
|
||||
#$STRINGSH STRINGSH
|
||||
#ifdef STRINGH
|
||||
#include <string.h>
|
||||
#endif
|
||||
#ifdef STRINGSH
|
||||
#include <strings.h>
|
||||
#endif
|
||||
main()
|
||||
{
|
||||
char *t = "a", *s = strtok(t, ",");
|
||||
if (!strcmp(t, s))
|
||||
exit(0);
|
||||
exit(1);
|
||||
}
|
||||
__EOF__
|
||||
$COMP >/dev/null 2>&1
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo $n " strtok$c"
|
||||
NSTRTOK=define
|
||||
else
|
||||
$EXEC
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo $n " strtok$c"
|
||||
NSTRTOK=define
|
||||
fi
|
||||
fi
|
||||
$RM -f $EXEC $TMP
|
||||
--- SNIP END---
|
||||
And replace it by
|
||||
NSTRTOK=undef
|
||||
|
||||
This should get it to work=) (thanks to Joe Whipple for reporting this bug)
|
||||
---END----
|
||||
|
||||
10) Hosts show up as (null).network.net !!
|
||||
A: This is because you have forgotten to include the network file.
|
||||
The correct form is (in unrealircd.conf)
|
||||
Include ..........: <network file>
|
||||
|
||||
If this doesn't work .. seek me at irc.global-irc.net #unrealircd
|
||||
|
||||
11) The IRCd uses like 66.7% CPU !!!?
|
||||
A: Try run it with nice :
|
||||
/usr/bin/nice -n 19 src/ircd
|
||||
|
||||
if services go this way too just place ./<name> instead of src/ircd
|
||||
Any more support seek me at the default place:P
|
||||
If this doesn't work .. seek me at irc.ircsystems.net #unrealircd
|
||||
|
||||
12) My IRCd which runs on a FreeBSD says something about FDs and
|
||||
Max: 0 What shall I do??
|
||||
@@ -190,4 +141,12 @@ match.c:247: argument 'n' doesn't match prototype
|
||||
Then go into include/setup.h and add this line:
|
||||
#define GOT_STRCASECMP
|
||||
|
||||
(C) Carsten Munk 1999
|
||||
14) I have my ircd linked to 3.2beta4 and lower servers and people walk
|
||||
bans!!
|
||||
|
||||
In include/config.h, define COMPAT_BETA4_KEYS, and make sure all servers
|
||||
are using the exact same cloak keys. If you are running pre-3.2 servers
|
||||
along with 3.2 servers this is unavoidable.
|
||||
|
||||
(C) Carsten Munk 1999-2000
|
||||
(C) also Finny Merrill 2001
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
|
||||
RPL_PROTOCTL (RPL_ISUPPORT):
|
||||
version: 2.1+ (new version: 3.1+)
|
||||
|
||||
This sends a numeric during client signon that lists various features that
|
||||
Unreal supports. This allows client and script writers to know what features
|
||||
they can use, and various parameters about the irc server. The numeric
|
||||
used is '005' to try and maintain some semblance of compatibility with
|
||||
DALnet which has a similar feature. The 005 numeric may be split across
|
||||
multiple lines if the length exceeds 512 characters.
|
||||
|
||||
The format is:
|
||||
:servername 005 target feature1 feature2... :are supported by this server.
|
||||
:servername 005 target feature200... :are supported by this server.
|
||||
|
||||
features are either a word describing the feature eg: 'SILENCE', or a word
|
||||
describing the feature and an equals and a list of parameters.
|
||||
eg: SILENCE=15 (says that we support silence, and we support up to 15 of
|
||||
them per user), or FOO=12,3 (says we support FOO with parameters 12 and 3)
|
||||
for example ircu2.10.08 lists:
|
||||
|
||||
:test.undernet.org 005 test SILENCE=15 WHOX WALLCHOPS USERIP CPRIVMSG
|
||||
CNOTICE MODES=6 MAXCHANNELS=10 MAXBANS=30 NICKLEN=9 TOPICLEN=160
|
||||
KICKLEN=160
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
UnrealIRCd Supports:
|
||||
|
||||
:unreal.server 005 nick MAP KNOCK SAFELIST HCN WATCH=%i SILENCE=%i MODES=%i
|
||||
MAXCHANNELS=%i MAXBANS=%i NICKLEN=%i TOPICLEN=%i
|
||||
KICKLEN=%i CHANTYPES=# PREFIX=%s :are supported by this server
|
||||
|
||||
Feature "MAP"
|
||||
-------------
|
||||
|
||||
/map shows the servers as the server percieves them, who's connected
|
||||
to who in a pretty display, with number of users attached to each server
|
||||
|
||||
Numerics used:
|
||||
|
||||
RPL_MAP (006)
|
||||
RPL_MAPEND (007)
|
||||
|
||||
Feature "KNOCK"
|
||||
---------------
|
||||
|
||||
Command: /KNOCK #Channel :<Reason>
|
||||
|
||||
This command will only work if you are not a member of the channel and the
|
||||
+K (No knocks) mode is not on, and the channel is not +i (and you are not
|
||||
banned). This will send a notice to ops in the channel, about that the user
|
||||
"knocked".
|
||||
|
||||
Feature "SAFELIST"
|
||||
------------------
|
||||
|
||||
|
||||
This note means that the user will not get disconnected when doing a /list,
|
||||
as some IRC networks do
|
||||
|
||||
Feature "HCN"
|
||||
-------------
|
||||
|
||||
This is a special feature that you activate using /protoctl +HCN,
|
||||
that will cause +c notices when being oper, being in the Hybrid IRCd style
|
||||
|
||||
Feature "WATCH"
|
||||
---------------
|
||||
|
||||
Parameters: How many watch entries are possible
|
||||
|
||||
This will ensure the server is able to do the DALnet WATCH command
|
||||
|
||||
|
||||
Feature "SILENCE"
|
||||
-----------------
|
||||
Parameters: How many silence entries you can have
|
||||
Version: unknown, ircu2.9.32 at least.
|
||||
|
||||
Silence is a server side ignore. You can /silence +hostmask or
|
||||
/silence +nick, to add someone to your silence list, or use /silence
|
||||
-hostmask to remove it. /silence will list your 'silence list'.
|
||||
you can /silence nick, to see someone elses silence list (useful for
|
||||
helping someone). Silence is preferably used as a last resort as it
|
||||
tends to use server CPU time.
|
||||
|
||||
Syntax:
|
||||
SILENCE +hostmask
|
||||
SILENCE +nick
|
||||
SILENCE -hostmask
|
||||
SILENCE -nick
|
||||
SILENCE nick
|
||||
|
||||
reply:
|
||||
RPL_SILELIST 217
|
||||
RPL_ENDOFSILELIST 218
|
||||
|
||||
|
||||
Feature/Modifier "MODES"
|
||||
------------------------
|
||||
Parameters: How many modes with parameters you can use in one /mode buffer
|
||||
|
||||
|
||||
Feature/Modifier "MAXCHANNELS"
|
||||
------------------------------
|
||||
Parameters: How many channels a normal user can join (opers may have
|
||||
unlimited)
|
||||
|
||||
Feature/Modifier "MAXBANS"
|
||||
@@ -1,82 +0,0 @@
|
||||
.\" $Id$
|
||||
.TH IRC 1 "7 October 1990"
|
||||
.SH NAME
|
||||
irc \- User Interface to Internet Relay Chat Protocol
|
||||
.SH SYNOPSIS
|
||||
\fBirc\fP [\fB-p\fP \fIportnum\fP] [\fB-c\fP \fIchannel\fP] [ \fInickname\fP [ \fIserver\fP ]]
|
||||
.SH DESCRIPTION
|
||||
.LP
|
||||
\fBIrc\fP is a user interface to the Internet Relay Chat, a CB-like
|
||||
interactive discussion environment. It is structured into \fIchannels\fP,
|
||||
which are public discussion forums, and also allows for private intercommunication.
|
||||
Each participant has a \fInickname\fP, which is the one specified in the command
|
||||
line or else his login name.
|
||||
.LP
|
||||
Once invoked, \fBirc\fP connects as a client to the specified server,
|
||||
\fIserver\fP or to the default one (see below). The screen splits into a dialogue
|
||||
window (the major part
|
||||
of the screen) and a command line, from which messages can be sent and
|
||||
commands given to control irc.
|
||||
.SH COMMAND SYNTAX
|
||||
The syntax of irc commands is of the form \fB/COMMAND\fP. The most notable
|
||||
ones are listed below. For an uptodate list, use the \fBHELP\fP command
|
||||
of \fBirc\fP. Case is ignored.
|
||||
.IP "\fB/ADMIN\fR [\fIserver\fP]"
|
||||
Prints administrative information about an IRC \fIserver\fP.
|
||||
.IP "\fB/AWAY\fP [\fImessage\fP]"
|
||||
Mark yourself as being away (with an automatic reply \fImessage\fP
|
||||
if specified)
|
||||
.IP "\fB/BYE\fR, \fB/EXIT\fR, \fB/QUIT\fR"
|
||||
Terminate the session
|
||||
.IP "\fB/CHANNEL\fR [\fIchannel\fP]"
|
||||
Join another \fIchannel\fP
|
||||
.IP "\fB/CLEAR\fR"
|
||||
Clear the screen
|
||||
.IP "\fB/HELP\fR [\fIcommand\fP]"
|
||||
Display a brief description of the \fIcommand\fP (or list all commands, if none
|
||||
specified).
|
||||
.IP "\fB/SUMMON\fR \fIuser\fP"
|
||||
Allows to summon a \fIuser\fP specified as a full Internet address, i.e.,
|
||||
\fIlogin@host.domain\fP, to an IRC dialogue session (in much the same
|
||||
way as the talk(1) command). It is usable ONLY if the irc daemon runs on
|
||||
the target machine (host.domain).
|
||||
.IP "\fB/TOPIC\fR \fItopic\fP"
|
||||
Sets the \fItopic\fP for the current channel
|
||||
.IP "\fB/WHO\fR [\fIchannel\fP|*]"
|
||||
Lists all users of IRC if no argument, of the specified \fIchannel\fP or of the
|
||||
current channel (*).
|
||||
.SH ARGUMENTS
|
||||
.IP "\fB-p\fP \fIportnum\fP"
|
||||
TCP/IP "port number. Default is 6667 and this option should seldom if ever"
|
||||
be used.
|
||||
.IP "\fB-c\fP \fIchannel\fP"
|
||||
\fIChannel\fP number to join upon beginning of the session. Default is no channel.
|
||||
.IP "\fInickname\fP"
|
||||
\fINickname\fP used in the session (can be changed with the \fB/NICK\fP command).
|
||||
Default is user login name.
|
||||
.IP "\fIserver\fP"
|
||||
\fIServer\fP to connect to. Default is specified in the irc system configuration
|
||||
file, and can be superseded with the environment variable IRCSERVER.
|
||||
.SH EXAMPLE
|
||||
.RS
|
||||
.nf
|
||||
tolmoon% \fBirc -p6667 Wizard tolsun\fP
|
||||
.fi
|
||||
.RE
|
||||
.LP
|
||||
connects you to irc server in host tolsun (port 6667) with nickname Wizard
|
||||
.SH COPYRIGHT
|
||||
Copyright (c) 1988 University of Oulu, Computing Center, Finland.
|
||||
.nf
|
||||
Copyright (c) 1988,1989,1990 Jarkko Oikarinen
|
||||
.nf
|
||||
All rights reserved.
|
||||
For full COPYRIGHT see LICENSE file with IRC package.
|
||||
.SH "SEE ALSO"
|
||||
ircd(8)
|
||||
.SH BUGS
|
||||
What bugs ?
|
||||
.SH AUTHOR
|
||||
Jarkko Oikarinen <jto@tolsun.oulu.fi>
|
||||
.nf
|
||||
Manual page updated by Michel Fingerhut <Michel.Fingerhut@ircam.fr>
|
||||
@@ -1,140 +0,0 @@
|
||||
.\" $Id$
|
||||
.TH IRCD 8 "29 March 1989"
|
||||
.SH NAME
|
||||
ircd \- The Internet Relay Chat Program Server
|
||||
.SH SYNOPSIS
|
||||
.hy 0
|
||||
.IP \fBircd\fP
|
||||
[-a] [-c] [-i] [-o] [-q] [-t] [-d directory]
|
||||
[-f configfile] [-x debuglevel] [-h hostname] [-p portnum]
|
||||
.SH DESCRIPTION
|
||||
.LP
|
||||
\fIircd\fP is the server (daemon) program for the Internet Relay Chat
|
||||
Program. The \fIircd\fP is a server in that its function is to "serve"
|
||||
the client program \fIirc(1)\fP with messages and commands. All commands
|
||||
and user messages are passed directly to the \fIircd\fP for processing
|
||||
and relaying to other ircd sites. The \fIirc(1)\fP program depends upon
|
||||
there being an \fIircd\fP server running somewhere (either on your local
|
||||
UNIX site or a remote ircd site) so that it will have somewhere to connect
|
||||
to and thus allow the user to begin talking to other users.
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.B \-d directory
|
||||
This option tells the server to change to that directory and use
|
||||
that as a reference point when opening \fIircd.conf\fP and other startup
|
||||
files.
|
||||
.TP
|
||||
.B \-o
|
||||
Starts up a local ircdaemon. Standard input can be used to send IRC
|
||||
commands to the daemon. The user logging in from standard input will
|
||||
be given operator privileges on this local ircd. If ircd is a setuid program,
|
||||
it will call setuid(getuid()) before going to local mode. This option
|
||||
can be used in inetd.conf to allow users to open their own irc clients
|
||||
by simply connecting their clients to the correct ports. For example:
|
||||
.TP
|
||||
.B
|
||||
irc stream tcp nowait irc /etc/ircd ircd \\-f/etc/ircd.conf \\-o
|
||||
|
||||
allows users connecting to irc port (specified in /etc/services) to start
|
||||
up their own ircdaemon. The configuration file should be used to check from
|
||||
which hosts these connections are allowed from. This option also turns
|
||||
on the autodie option -a.
|
||||
.TP
|
||||
.B \-a
|
||||
Instructs the server to automatically die off if it loses all it's clients.
|
||||
.TP
|
||||
.B \-t
|
||||
Instructs the server to direct debugging output to standard output.
|
||||
.TP
|
||||
.B \-x#
|
||||
Defines the debuglevel for ircd. The higher the debuglevel, the more stuff
|
||||
gets directed to debugging file (or standard output if -t option was used
|
||||
as well).
|
||||
.TP
|
||||
.B \-i
|
||||
The server was started by inetd and it should start accepting connections
|
||||
from standard input. The following inetd.conf-line could be used to start
|
||||
up ircd automatically when needed:
|
||||
.TP
|
||||
.B
|
||||
ircd stream tcp wait irc /etc/ircd ircd \-i
|
||||
|
||||
allows inetd to start up ircd on request.
|
||||
.TP
|
||||
.B \-f filename
|
||||
Specifies the ircd.conf file to be used for this ircdaemon. The option
|
||||
is used to override the default ircd.conf given at compile time.
|
||||
.TP
|
||||
.B \-c
|
||||
This flag must be given if you are running ircd from \fI/dev/console\fP or
|
||||
any other situation where fd 0 isnt a tty and you want the server to fork
|
||||
off and run in the background. This needs to be given if you are starting
|
||||
\fIircd\fP from an \fIrc\fP (such as \fI/etc/rc.local\fP) file.
|
||||
.TP
|
||||
.B \-q
|
||||
Using the -q option stops the server from doing DNS lookups on all the
|
||||
servers in your \fIircd.conf\fP file when it boots. This can take a lengthy
|
||||
amount of time if you have a large number of servers and they are not all
|
||||
close by.
|
||||
.TP
|
||||
.B \-h hostname
|
||||
Allows the user to manually set the server name at startup. The default
|
||||
name is hostname.domainname.
|
||||
.B \-p portname
|
||||
Specifies the port where the daemon should start waiting for connections.
|
||||
This overrides the default which is given at compile time.
|
||||
.TP
|
||||
.SH
|
||||
If you plan to connect your \fIircd\fP server to an existing Irc-Network,
|
||||
you will need to alter your local IRC CONFIGURATION FILE (typically named
|
||||
"ircd.conf") so that it will accept and make connections to other \fIircd\fP
|
||||
servers. This file contains the hostnames, Network Addresses, and sometimes
|
||||
passwords for connections to other ircds around the world. Because
|
||||
description of the actual file format of the "ircs.conf" file is beyond the
|
||||
scope of this document, please refer to the file INSTALL in the IRC source
|
||||
files documentation directory.
|
||||
.LP
|
||||
BOOTING THE SERVER: The \fIircd\fP server can be started as part of the
|
||||
UNIX boot procedure or just by placing the server into Unix Background.
|
||||
Keep in mind that if it is *not* part of your UNIXES Boot-up procedure
|
||||
then you will have to manually start the \fIircd\fP server each time your
|
||||
UNIX is rebooted. This means if your UNIX is prone to crashing
|
||||
or going for for repairs a lot it would make sense to start the \fIircd\fP
|
||||
server as part of your UNIX bootup procedure. In some cases the \fIirc(1)\fP
|
||||
will automatically attempt to boot the \fIircd\fP server if the user is
|
||||
on the SAME UNIX that the \fIircd\fP is supposed to be running on. If the
|
||||
\fIirc(1)\fP cannot connect to the \fIircd\fP server it will try to start
|
||||
the server on it's own and will then try to reconnect to the newly booted
|
||||
\fIircd\fP server.
|
||||
.SH EXAMPLE
|
||||
.RS
|
||||
.nf
|
||||
tolsun% \fBircd\fP
|
||||
.fi
|
||||
.RE
|
||||
.LP
|
||||
Places \fIircd\fP into UNIX Background and starts up the server for use.
|
||||
Note: You do not have to add the "&" to this command, the program will
|
||||
automatically detach itself from tty.
|
||||
.SH COPYRIGHT
|
||||
(c) 1988,1989 University of Oulu, Computing Center, Finland,
|
||||
.LP
|
||||
(c) 1988,1989 Department of Information Processing Science,
|
||||
University of Oulu, Finland
|
||||
.LP
|
||||
(c) 1988,1989,1990,1991 Jarkko Oikarinen
|
||||
.LP
|
||||
For full COPYRIGHT see LICENSE file with IRC package.
|
||||
.LP
|
||||
.RE
|
||||
.SH FILES
|
||||
/etc/utmp
|
||||
"irc.conf"
|
||||
.SH "SEE ALSO"
|
||||
irc(1)
|
||||
.SH BUGS
|
||||
None... ;-) if somebody finds one, please inform author
|
||||
.SH AUTHOR
|
||||
Jarkko Oikarinen, currently jto@tolsun.oulu.fi,
|
||||
manual page written by Jeff Trim, jtrim@orion.cair.du.edu,
|
||||
later modified by jto@tolsun.oulu.fi.
|
||||
@@ -1,47 +0,0 @@
|
||||
[ $Id$ ]
|
||||
The following macros are included in "ircd.m4" for use with the m4 text
|
||||
preprocessor. "ircd.m4" is parsed before the IRC server conf file so they
|
||||
are all available for use with that.
|
||||
|
||||
NOTE: The "ircd.m4" file is *ONLY* created by a "make install".
|
||||
|
||||
VERSION - current version string as in patchlevel.h
|
||||
DEBUGMODE - if DEBUGMODE is define in config.h, is also defined for m4.
|
||||
HOSTNAME - taken from hostname(1)
|
||||
USER - username of person doing the "make install"
|
||||
PORT - default port number as in config.h
|
||||
PFREQ - default ping frequency as in config.h
|
||||
CFREQ - default connect frequency as in config.h
|
||||
MAXSENDQ - default max sendq as in config.h
|
||||
CL - use this to wrap a class number
|
||||
HOST - use this to wrap a hostname
|
||||
HOSTM - use this to wrap the hostmask number in N-lines
|
||||
ID - when wrapping the host field in an I-line, causes ident string return
|
||||
to be used instead of user supplised username.
|
||||
PASS - use this to wrap passwords in C/N/I/O lines
|
||||
PING - use this to wrap the ping value in Y-lines
|
||||
APORT - use this to wrap the port number in I-lines
|
||||
CPORT - use this to wrap the port number in C-lines
|
||||
SERV - use this to wrap server names
|
||||
|
||||
You might use some of these as
|
||||
C:foo.bar.edu:PASS(boo):foo.bar.edu:APORT(6667)
|
||||
I:ID(128.250.*)::ID(*.mu.oz.au):CPORT(6667)
|
||||
|
||||
In addition to these (rather weak macros), some more complete ones are
|
||||
defined which already perform the above.
|
||||
|
||||
ADMIN - provide fields to it as you would an A-line
|
||||
ALLOW - provide fields to it as you would an N-line
|
||||
BAN - provide fields to it as you would an K-line
|
||||
CLASS - provide fields to it as you would an Y-line
|
||||
CLIENT - provide fields to it as you would an I-line
|
||||
CONNECT - provide fields to it as you would an C-line
|
||||
ME - provide fields to it as you would an M-line
|
||||
HUB - first parameter is server you want to hub, second is optional and is
|
||||
a mask against which other servers introduced must match against.
|
||||
LEAF - works like HUB, except that the mask is matched against server names
|
||||
to check if the link should be dropped.
|
||||
SERVER - uses 6 fields, the first 4 as are found in an N-line, the last two
|
||||
should be as you would use in a C-line. It expands out to provide
|
||||
both a C and N line.
|
||||
@@ -1,294 +0,0 @@
|
||||
[ $Id$ ]
|
||||
From: Carlo Kid - Runaway <carlo@sg.tn.tudelft.nl>
|
||||
Subject: GUIDE for compiling your server
|
||||
To: wastelanders@rush.cc.edu (New Wastelanders MailingList)
|
||||
Date: Thu, 26 May 94 13:44:10 METDST
|
||||
Cc: carlo@sg.tn.tudelft.nl
|
||||
Mailer: Elm [revision: 66.33]
|
||||
Status: RO
|
||||
|
||||
GUIDE for compiling your server, by Runaway
|
||||
===============================================
|
||||
|
||||
First of all you must get all the files you need, as an example
|
||||
I will explain how to compile irc2.8.19.U3.2.
|
||||
The files you'll need in general are:
|
||||
|
||||
- irc2.8.19.U3.2.tar.gz
|
||||
|
||||
Or, when you already have an older version -say irc2.8.19.U3.1- a patch:
|
||||
|
||||
- irc2.8.19.U3.1-2.patch
|
||||
|
||||
It is possible you need more then one patch, especially when you already
|
||||
upgraded more often. But in that case you already have those old patches.
|
||||
Of course, in that case, you also already have the old directory tree:
|
||||
|
||||
/home..../yourname/....ircd/irc2.8.19.U3.1/
|
||||
|
||||
Scripts, patches and directory trees
|
||||
====================================
|
||||
|
||||
It is good practise to:
|
||||
1) Call the directory tree after the version
|
||||
2) Let this directory ONLY contain what comes with the .tar.gz file!
|
||||
Thus: Do NOT put ircd.conf, or any patches etc in it!!!
|
||||
In general, you must be able to delete this whole directory tree
|
||||
when you still have the original .tar.gz file and patches applied to it.
|
||||
3) Put it in a directory ending on /ircd, THIS directory will contain
|
||||
your ircd.motd, ircd.pid, ircd.conf and patches...
|
||||
|
||||
So, you end up with:
|
||||
|
||||
...ircd/irc2.8.19.U3.1-2.patch
|
||||
...ircd/irc2.8.19.U3.1.tar.gz
|
||||
|
||||
or just:
|
||||
|
||||
...ircd/irc2.8.19.U3.2.tar.gz
|
||||
|
||||
at once.
|
||||
|
||||
Before you can delete the old directory tree, you must be SURE to save
|
||||
everything thats in it. This is thus the .tar.gz file, all patches but
|
||||
ALSO the following files:
|
||||
|
||||
Makefile
|
||||
include/config.h
|
||||
include/setup.h
|
||||
|
||||
You should always keep a copy of those files OUTSIDE the irc2.8.19.U3.2/
|
||||
directory tree. For instance:
|
||||
|
||||
...ircd/irc.personal/Makefile
|
||||
...ircd/irc.personal/include/config.h
|
||||
...ircd/irc.personal/include/setup.h
|
||||
|
||||
To make these backups easy, you should make a script, called backup.personal
|
||||
containing:
|
||||
|
||||
cp Makefile ../irc.personal/Makefile
|
||||
cp include/config.h ../irc.personal/include/config.h
|
||||
cp include/setup.h ../irc.personal/include/setup.h
|
||||
|
||||
If you also change anything in the other Makefiles (ircd/Makefile and
|
||||
common/Makefile) you can add those too. Be sure to make the directories
|
||||
by hand first.
|
||||
|
||||
Make the script 'backup.personal' executable with:
|
||||
chmod 700 backup.personal
|
||||
You must be able to run it from any directory, so put it in your ..bin/
|
||||
|
||||
Ok... so now you have a backup of everything. If you wanted to start
|
||||
ALL over you could delete the directory tree, unzip and untar the archive
|
||||
again, apply all patches to it, change the Makefile and config.h again,
|
||||
put setup.h back, recompile and reinstall.
|
||||
In some cases it is easy to do this with an other script, I call it 'repatch',
|
||||
it provides you with an easy-to-change overview of the patched you have used.
|
||||
Here is how my 'repatch' looks now (it is located in .../ircd/repatch).
|
||||
|
||||
cd ~/irc/ircd
|
||||
rm -rf irc2.8.19 irc2.8.19.U3.2
|
||||
zcat irc2.8.19.tar.gz | tar xf -
|
||||
mv irc2.8.19 irc2.8.19.U3.2
|
||||
cd irc2.8.19.U3.2
|
||||
#patch -p1 < ../Makefile.config.h.patch 2> ../patch.out
|
||||
#cp ../setup.h include/setup.h
|
||||
patch -p1 < ../irc2.8.19-TSpre8.2.patch 2>> ../patch.out
|
||||
patch -p1 < ../irc2.8.19.TSpre8-note.patch 2>> ../patch.out
|
||||
patch -p1 < ../irc2.8.19.TSpre8-wallops.patch 2>> ../patch.out
|
||||
patch -p1 < ../irc2.8.19.TSpre8-bquiet.patch 2>> ../patch.out
|
||||
patch -p1 < ../irc2.8.19.TSpre8-silence.2.patch 2>> ../patch.out
|
||||
#patch -p1 < ../irc2.8.19.U3-ban.patch 2>> ../patch.out
|
||||
make clean
|
||||
vi include/patchlevel.h
|
||||
grep -e '\.rej' -e '[Ff]ail' -e fuzz ../patch.out
|
||||
|
||||
As you can see I commented out the patches Makefile.config.h.patch and
|
||||
irc2.8.19.U3-ban.patch, and don't copy setup.h here. This is because
|
||||
I wanted to make a virgin .U3.2.tar.gz for distribution via ftp-sites.
|
||||
If I change the name of the directory, I have to change it in three
|
||||
places :/
|
||||
This script forces me to edit the patchlevel.h :) :)
|
||||
The last grep warns me if anything went wrong with the patches.
|
||||
|
||||
Moreover, as you can see, I have a 'Makefile.config.h.patch'.
|
||||
You should make your own as soon as you completely installed
|
||||
and tested your server. It is very handy for re-installing a new
|
||||
version.
|
||||
|
||||
To make this patch, edit the Makefile's and and config.h and type:
|
||||
|
||||
backup.personal
|
||||
cd ..
|
||||
rm -rf irc2.8.19
|
||||
zcat irc2.8.19.tar.gz | tar xf -
|
||||
diff -rc irc2.8.19 irc.personal > Makefile.config.h.patch
|
||||
|
||||
Check it with an editor if it looks ok. In the above, 'irc2.8.19.tar.gz'
|
||||
is the virgin 'Avalon' version, I change the Makefiles in the .U3
|
||||
however also, so you might wanna use the virgin .U3.2.tar.gz.
|
||||
|
||||
Starting ALL over (or begining for the first time)
|
||||
==================================================
|
||||
|
||||
This is about EDITTING the Makefile(s) and config.h, and creating the
|
||||
setup.h for the first time.
|
||||
|
||||
2.8.19 is different from 2.8.16 and before. You will have to EDIT the
|
||||
Makefile and config.h that comes with the distribution. You can NOT
|
||||
use the old Makefile and config.h you had !
|
||||
|
||||
First write down the path you want to use where you are going to put
|
||||
the ircd.conf etc...
|
||||
|
||||
Edit the Makefile. Comments are in it. You should simply define that
|
||||
what is needed for your Operating System.
|
||||
|
||||
Then edit the config.h
|
||||
|
||||
Then run ./Config to create setup.h ... at first simply hit return all the
|
||||
time. If you insist on using gcc instead of cc, you must edit that in your
|
||||
Makefile BEFORE running setup.h. You can't change that running Config,
|
||||
although it asks for it. If you have more then one cc, you can add the
|
||||
right path to in the Makefile (if it uses the wrong one).
|
||||
|
||||
Since U3.2, I changed the Makefile and config.h a little. The changes are:
|
||||
- I added note.o to the dependency
|
||||
- I added *.orig files to the 'make clean' (otherwise the *.orig generated
|
||||
by some 'patch' programs will be left).
|
||||
If you want this too, and you have .U3.1, you can get the patch from
|
||||
sg.tn.tudelft.nl (file: Makefile.conf.U3.patch).
|
||||
|
||||
As soon as you are done, run backup.personal. To stay up to date with your
|
||||
backup.
|
||||
|
||||
Then make the Makefile.conf.patch as described above. (or wait with that
|
||||
till you are sure it works... otherwise it might be done more then once
|
||||
which is a waste of time).
|
||||
|
||||
Special remarks
|
||||
---------------
|
||||
|
||||
Makefile:
|
||||
First occurance of
|
||||
CC=cc
|
||||
Change this NOT if you want another compiler, add another CC= later, close
|
||||
to your OS specific #defines...
|
||||
|
||||
# IRCDDIR must be the same as DPATH in include/config.h
|
||||
#
|
||||
IRCDDIR=/sb/users/carlo/irc/ircd
|
||||
Make sure you use the same path in the config.h :)
|
||||
|
||||
SUBDIRS=common ircd
|
||||
By removing the 'irc' from this line, you stop 'make' from making the client
|
||||
as well.
|
||||
|
||||
config.h:
|
||||
/*
|
||||
* NOTE: On some systems, valloc() causes many problems.
|
||||
*/
|
||||
#undef VALLOC /* Define this if you have valloc(3) */
|
||||
I never try it, even if I have it.
|
||||
|
||||
#define USE_VARARGS
|
||||
For defines like this, you best check the online manual if you have them
|
||||
(man vprintf in this case)... I didn't have man page for vscanf() but it
|
||||
still worked... (I DO have them for vprintf and vsprinf).
|
||||
|
||||
#undef DEBUGMODE /* define DEBUGMODE to enable debugging mode.*/
|
||||
Debug mode uses a lot more memory and is a lot slower. ONLY define
|
||||
when your server gives problems like crashing/coredumping, or other
|
||||
things like not wanting to startup etc. In other words: when you are really
|
||||
*USING* this feature to do DEBUGing !
|
||||
|
||||
#define NPATH "/sb/users/carlo/irc/server/Undernet/.ircdnote"
|
||||
The '#ifdef notdef' '#endif' around NPATH mean: notdef = NOT DEFINED.
|
||||
You should *never* #define notdef... It is used to "comment out" *examples*.
|
||||
By defining it, you enable all examples (like making your server SUI :/)
|
||||
Simply *remove* the lines '#ifdef notdef' and '#endif' around the NPATH.
|
||||
|
||||
#define DPATH "/sb/users/carlo/irc/ircd"
|
||||
Must be the same as in the Makefile!
|
||||
#define SPATH "/sb/users/carlo/bin/ircd" /* path to server executeable */
|
||||
This is used when you do a /RESTART. For fast restarting a NEW version (upgrade)you can let this point to a symbolic link, and then change this link to the
|
||||
new executable. Do a 'restart' and voila...
|
||||
For instance:
|
||||
.../bin/ircd.U3.2*
|
||||
.../bin/ircd -> ircd.U3.2
|
||||
The last made with:
|
||||
ln -s ircd.U3.2 ircd
|
||||
Then when you upgrade:
|
||||
rm ircd
|
||||
ln -s ircd.U3.3 ircd
|
||||
and a /RESTART
|
||||
|
||||
#undef CRYPT_LINK_PASSWORD
|
||||
Make sure your ircd.conf isn't world readable like on pasadena :/
|
||||
(and on ircserver.et.tudelft.nl once - we DID have to change all passwords
|
||||
then)
|
||||
|
||||
Compiling the server
|
||||
====================
|
||||
|
||||
*** FIRST edit your include/patchlevel.h ***
|
||||
|
||||
If you don't want to compile the client, you can change the Makefile
|
||||
as mentioned above, or type:
|
||||
make server
|
||||
|
||||
After a succesfull compilation (ignore warning ;), you can type
|
||||
make install
|
||||
or just
|
||||
cp ircd/ircd ~/bin/ircd.U3.2
|
||||
cd ~/bin
|
||||
chmod 700 ircd.U3.2
|
||||
rm ircd
|
||||
ln -s ircd.U3.2 ircd
|
||||
|
||||
I changed my Makefile to do the latter thing when I type 'make install'
|
||||
|
||||
Then run the server by typing 'ircd'. Don't do this on the
|
||||
...ircd/irc2.8.19.U3.2/ircd/ directory, because when in your PATH the
|
||||
'.' comes before your '~/bin' you start up THAT exucutable, disallowing
|
||||
you to recompile later (text file busy).
|
||||
|
||||
Compile errors
|
||||
==============
|
||||
|
||||
If anything goes wrong with note, it most likely is because you
|
||||
1) Didn't define NPATH correctly
|
||||
2) Didn't add the note.o to the dependencies.. remove note.o and recompile.
|
||||
|
||||
[ For a non-undernet version: irc2.8.19.tar.gz is bugged, get the -note.patch
|
||||
from ftp.undernet.org. ]
|
||||
|
||||
If you get problems while linking saying it has undefined _something
|
||||
and something is something with 'res', you must add -lresolv to your
|
||||
IRCDLIBS in the Makefile.
|
||||
|
||||
If you get problems with any function beging defines twice are giving
|
||||
errors like not compatible with previous definition (likely atol() in
|
||||
note.c), just remove that whole function from the .c file (put #ifdef notdef
|
||||
around it). You have it already in your system libraries.
|
||||
|
||||
Last remarks
|
||||
============
|
||||
|
||||
Add those U: lines!!!
|
||||
And change your ircd.motd to reflect the new commands/features :)
|
||||
( /MOTD uxb* -- Nice motd RedRum! :)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
Run
|
||||
|
||||
--
|
||||
-------------------------------------------------------------------------------
|
||||
| carlo@sg.tn.tudelft.nl | Run @ IRC |
|
||||
| | Admin of Delft.NL.EU.undernet.org |
|
||||
| * Don't expect anything of live, | and Ircserver.et.tudelft.nl |
|
||||
| or you'll miss all the rest of it.| |
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
Services Install Guide For Unreal 3.2 by zyrorl (zyrorl@unrealircd.org)
|
||||
=======================================================================
|
||||
|
||||
last updated: 4/5/2001 (4th May 2001)
|
||||
|
||||
|
||||
First of all you will be required to download a services package for your
|
||||
network.
|
||||
|
||||
A few of the most popular services are:
|
||||
|
||||
IRCServices - http://www.ircservices.za.net/
|
||||
Epona - http://www.pegsoft.net/epona/
|
||||
Wrecked - http://www.wrecked.net/services/index.html
|
||||
Magick - http://www.magick.tm/
|
||||
Sirius - http://ircsystems.net/sirius
|
||||
|
||||
After you have downloaded the appropriate services package, you will have to
|
||||
upload it to your shell, and untar and un-gzip the file by typing: tar -zxvf
|
||||
services.x.x.tar.gz
|
||||
|
||||
Then you will need to enter the directory created by your services package (for
|
||||
a listing type ls -a) and type ./configure . This will run the configure script
|
||||
to setup your services. The script will ask you questions regarding the path
|
||||
want to install your services to, where you want the services data files to be
|
||||
installed to, encryption options, and the type of ircd that you are using (Most
|
||||
probably Unreal). If you have previously used any other services package, it
|
||||
may also ask you if you would like to convert their databases. It may also ask
|
||||
you if you would like the services to dump a core file when a segmentation fault
|
||||
occurs so that you can find out the cause of the problem and bug report to the
|
||||
developers of the ircd services.
|
||||
|
||||
Then you will be required to compile your services package by typing "make" or
|
||||
possibly "gmake". To install services after compiled, type "make install".
|
||||
Then you will need to enter the directory that you specified for the location
|
||||
for the data of the services. You will most likely see a example.conf file in
|
||||
the folder. You will need to rename this file to services.conf by typing "mv
|
||||
example.conf services.conf" and then you will need to edit the services.conf
|
||||
file in your favourite text editor. We recommend new users use pico, to edit
|
||||
the file using pico type "pico services.conf". Edit the file to your liking,
|
||||
make sure you follow their recommendations in settings, and make sure you edit
|
||||
the root services passwords, server to link to, password and port.
|
||||
|
||||
After you have configured your services you will then be required to edit your
|
||||
unrealircd.conf. You will require to add server connection lines to your server
|
||||
in order for services to work. All services on your network will need to have
|
||||
the same U line as the server that services are linking to. A sample of the
|
||||
configuration for services for unrealircd.conf is listed below:
|
||||
|
||||
link services.yournetwork.net {
|
||||
username *;
|
||||
hostname 0.0.0.0; /*Server Ip Address Or Hostmask */
|
||||
bind-ip *; /* IP To Bind To When Connecting */
|
||||
port 6667; /* Port Number */
|
||||
password-connect "passwordsend"; /*Password To Send On Connection*/
|
||||
password-receive "passwordreceive"; /* Password To Receive From
|
||||
Server Connecting */
|
||||
class servers;
|
||||
};
|
||||
|
||||
Make sure you then add a u:line entry for services. All the servers on your
|
||||
network will be required to have a U:line. For UnrealIRCD 3.2 the U:lines
|
||||
should look something like this:
|
||||
|
||||
ulines {
|
||||
services.yournetwork.net;
|
||||
};
|
||||
|
||||
Servers Running UnrealIRCD 3.1.1 Darkshades or below the U:Line for the servers
|
||||
should look something like this:
|
||||
|
||||
U:services.yournetwork.net:*:*
|
||||
|
||||
You will then be required to edit your unrealircd.conf's network configuration
|
||||
services name line, which has to be the same name as chosen on the connection
|
||||
line for your services. ie. in this case your network configuration line would
|
||||
look something like:
|
||||
|
||||
services-name "services.yournetwork.net";
|
||||
|
||||
Then you will require to /rehash your ircd and then go back to your services
|
||||
directory and type ./services to run services.
|
||||
@@ -0,0 +1,432 @@
|
||||
* * * * * * * * * * * * * * * * * * *
|
||||
* Unrealircd.conf Documentation *
|
||||
* http://www.unrealircd.com *
|
||||
* Made for Version 3.2+ Daemon *
|
||||
* by devdev *
|
||||
* * * * * * * * * * * * * * * * * * *
|
||||
|
||||
|
||||
* * * * T a b l e o f C o n t e n t s * * * *
|
||||
|
||||
Section 1.0 : Introduction
|
||||
Section 2.0 : me{} line
|
||||
2.1 : Syntax
|
||||
2.2 : Variables
|
||||
Section 3.0 : admin{} line
|
||||
3.1 : Syntax
|
||||
3.2 : Variables
|
||||
Section 4.0 : class{} line
|
||||
4.1 : Syntax
|
||||
4.2 : Variables
|
||||
Section 5.0 : allow{} line
|
||||
5.1 : Syntax
|
||||
5.2 : Variables
|
||||
Section 6.0 : drpass{} line
|
||||
6.1 : Syntax
|
||||
6.2 : Variables
|
||||
Section 7.0 : oper{} line
|
||||
7.1 : Syntax
|
||||
7.2 : Variables
|
||||
7.3 : Oper Flags
|
||||
7.4 : Flag Usage
|
||||
Section 8.0 : listen{} line
|
||||
8.1 : Syntax
|
||||
8.2 : Variables
|
||||
8.3 : Port Options
|
||||
9.0 : link{} line
|
||||
9.1 : Syntax
|
||||
9.2 : Variables
|
||||
9.3 : Link Options
|
||||
Section 10.0 : ulines{} line
|
||||
10.1 : Syntax
|
||||
10.2 : Variables
|
||||
Section 11.0 : tld{} line
|
||||
11.1 : Syntax
|
||||
11.2 : Variables
|
||||
Section 12.0 : ban{} line
|
||||
12.1 : ban nick{}
|
||||
12.2 : ban ip{}
|
||||
12.3 : ban server{}
|
||||
12.4 : ban realname{}
|
||||
12.5 : ban user{}
|
||||
Section 13.0 : except{} line
|
||||
13.1 : except ban{}
|
||||
13.2 : except socks{}
|
||||
Section 14.0 : vhost{} line
|
||||
14.1 : Syntax
|
||||
14.2 : Variables
|
||||
|
||||
* * * * * * * * * * * * * * * * * * * * * * * *
|
||||
|
||||
1.0) Introduction:
|
||||
|
||||
As you may have noticed, in this version of Unreal, the ircd.conf
|
||||
has changed dramatically and has a new name... unrealircd.conf.
|
||||
|
||||
This will be a fully explanatory guide to the new unrealircd.conf
|
||||
Every aspect of the new config file is explained below.
|
||||
|
||||
2.0) me{} (Server Information Line):
|
||||
|
||||
This is the same idea as the old M:line. Gives the server name,
|
||||
description, and numeric. This, however, does not include the ip
|
||||
of the server.
|
||||
|
||||
2.1) Syntax:
|
||||
me {
|
||||
name <server>;
|
||||
info "<description>";
|
||||
numeric <numeric>;
|
||||
};
|
||||
|
||||
2.2) Variables:
|
||||
|
||||
<server> Server name (irc.network.com)
|
||||
<description> Server description (Network Hub)
|
||||
<numeric> Connection Numeric (Number 1-254)
|
||||
|
||||
3.0) admin{} (Administrator Line):
|
||||
|
||||
This is the same as the A:line. This line gives information about
|
||||
the server owner/administrator including Name, nickname, and email.
|
||||
This is not restricted to a number of lines. Shown at /admin
|
||||
|
||||
3.1) Syntax:
|
||||
admin {
|
||||
"<line>";
|
||||
};
|
||||
|
||||
3.2) Variables:
|
||||
<line> Text shown at /admin (Admin Name)
|
||||
|
||||
The "<line>"; can be repeated as many times as you wish. We suggest
|
||||
placing the admins nickname and an email to reach them at.
|
||||
|
||||
4.0) class{} (Connection Classes Line):
|
||||
|
||||
These connection classes are used to define the ping freqency, maximum
|
||||
amount of clients, and sendq limit for a certain class.
|
||||
|
||||
4.1) Syntax:
|
||||
class <class name> {
|
||||
connfreq <connfreq>; /*server only*/
|
||||
ping freq <pingfrq>;
|
||||
maxclients <maxclients>;
|
||||
sendq <sendqlimit>;
|
||||
};
|
||||
|
||||
4.2) Variables:
|
||||
<class type> Name of connection class (client, server, oper)
|
||||
<connfreq> Seconds between connection attempts (seconds)
|
||||
<pingfrq> Ping Frequency (every x seconds) (seconds)
|
||||
<maxclients> Number of maximum connections (number)
|
||||
<sendqlimit> Limit for sends (number)
|
||||
|
||||
5.0) allow{} (Allowed Connections):
|
||||
|
||||
This line specifies from which hostnames/ips users can connect from and their
|
||||
restrictions.
|
||||
|
||||
5.1) Syntax:
|
||||
allow {
|
||||
ip "<ip>";
|
||||
hostname "<host>";
|
||||
class <classname>;
|
||||
password "<password>";
|
||||
maxperip <max>;
|
||||
};
|
||||
|
||||
5.2) Variables:
|
||||
<ip> IP to allow connections from (1.2.3.4)
|
||||
<host> Hostname to allow connections from (ident@host)
|
||||
<classname> Class name to use defined above (name)
|
||||
<password> Password required for connection (password)
|
||||
<max> Maximum per ip address (number)
|
||||
|
||||
6.0) drpass{} (Die/Restart Password):
|
||||
|
||||
This line will defy the passwords required to restart or shutdown the irc server.
|
||||
|
||||
6.1) Syntax:
|
||||
drpass {
|
||||
die "<diepass>";
|
||||
restart "<restartpass>";
|
||||
};
|
||||
|
||||
6.2) Variables:
|
||||
<diepass> Password to shutdown the server (password)
|
||||
<restartpass> Password to restart the server (password)
|
||||
|
||||
7.0) oper{} (IRC Operator Line):
|
||||
|
||||
This line will define who (after suppling a login and password) will be allowed to have certain permissions
|
||||
granted. Such as global kills compared to local kills, and being able to restart the server.
|
||||
|
||||
7.1) Syntax:
|
||||
oper <login> {
|
||||
class <classname>;
|
||||
from {
|
||||
userhost <host>;
|
||||
userhost <host>
|
||||
};
|
||||
password "<password>";
|
||||
flags {
|
||||
<flag>;
|
||||
<flag>;
|
||||
}
|
||||
};
|
||||
|
||||
7.2) Variables
|
||||
<login> Login user name (opername)
|
||||
<classname> Class the oper will connect from (class)
|
||||
<host> Host the oper is allowed to op from (ident@host)
|
||||
<password> Password to accompany login-name (password)
|
||||
<flag> Flags to define permissions (see 7.3)
|
||||
|
||||
7.3) Oper Flags (old and new)
|
||||
|
||||
Old | New |Description
|
||||
------- |---------------- |------------------------------
|
||||
N | netadmin | Network Admnistrator
|
||||
T | techadmin | Technical Administrator
|
||||
A | admin | Server Administrator
|
||||
a | sadmin | Services Operator
|
||||
C | coadmin | Co Administrator
|
||||
o | local | Local IRC Operator
|
||||
O | global | Global IRC Operator
|
||||
r | can_rehash | Is able to rehash the server
|
||||
e | eyes | Can use the eyes message mode
|
||||
D | can_die | Can shutdown the server (with password)
|
||||
R | can_restart | Can restart the server (with password)
|
||||
h | helpop | ..is available for help. Can see /helpops
|
||||
g | can_globops | Can use /globops
|
||||
w | can_wallops | Can use /wallops
|
||||
l | locop | Can't kill remote users
|
||||
c | can_localroute | Can locally /connect and /squit servers
|
||||
L | can_globalroute | Can globally /connect and /squit servers
|
||||
k | can_localkill | Can do local /kills
|
||||
K | can_globalkill | Can do global /kills
|
||||
b | can_kline | Can set a /kline
|
||||
B | can_unkline | Can unset a /kline
|
||||
n | can_localnotice | Can send local notices
|
||||
G | can_globalnotice| Can send global notices
|
||||
z | can_zline | Can set /zlines
|
||||
^ | can_stealth | Is invisible to /names
|
||||
|
||||
|
||||
7.4) Oper Flag Usage:
|
||||
|
||||
Usage:
|
||||
flags oldflags;
|
||||
[or]
|
||||
flags { new flag; new flag; };
|
||||
|
||||
Example:
|
||||
flags oN;
|
||||
[or]
|
||||
flags { netadmin; helpop; };
|
||||
|
||||
|
||||
Local operators are defined by having no additional flags in the oper line or if the IRCD finsd an error in
|
||||
the flags, locop will be set (default).
|
||||
|
||||
8.0) listen{} (Available Ports):
|
||||
|
||||
These line(s) define which ports the IRCd will be using. Ports that servers and clients can connect to.
|
||||
|
||||
8.1) Syntax:
|
||||
listen <ip>:<port>;
|
||||
{
|
||||
options
|
||||
{
|
||||
<option>;
|
||||
<option>;
|
||||
};
|
||||
};
|
||||
|
||||
8.2) Variables:
|
||||
<ip> IP Address to bind to (1.2.3.4)
|
||||
<port> Port to listen on (port)
|
||||
<option> Option for the port to use (see 8.3)
|
||||
|
||||
8.3) Port Options
|
||||
|
||||
standard Normally listens on the port
|
||||
ssl Port is available to accept SSL connections.
|
||||
serveronly Port can only have servers connect to it (not clients)
|
||||
clientsonly Port can only have clients connect to it
|
||||
|
||||
9.0) link{} (Connecting Servers):
|
||||
|
||||
This line will define what server can connect to yours.
|
||||
|
||||
9.1) Syntax:
|
||||
|
||||
link <servername>;
|
||||
{
|
||||
username <usermask>;
|
||||
hostname <hostname>;
|
||||
bind-ip <bindip>;
|
||||
port <port>;
|
||||
hub *; /* for connecting a hub */
|
||||
leaf *; /* for connecting a leaf */
|
||||
leaf-depth <leaf-depth>; /* for connecting a leaf */
|
||||
password-connect "<cpassword>";
|
||||
password-receive "<rpassword>";
|
||||
class <class>;
|
||||
rsa-auth "<keypath>";
|
||||
options {
|
||||
<option>;
|
||||
<option>;
|
||||
};
|
||||
};
|
||||
|
||||
9.2) Variables
|
||||
<servername> Server name to connect to (server.network.com)
|
||||
<username> Username for authenticating connection (username)
|
||||
<hostname> Hostname for authenticating connection (hostname)
|
||||
<bindip> IP your server will bind to to connect (ip)
|
||||
hub or leaf Place hub *; or leaf *; depending on
|
||||
what type of server you're linking to
|
||||
<leaf-depth> Number of servers below yours (number)
|
||||
<cpassword> Password to send to the server (password)
|
||||
<rpassword> Password you expect to receive (password)
|
||||
<class> Class for servers (classname)
|
||||
<keypath> Path use for rsa-authentication (keypath)
|
||||
<option> Option used for connecting (see 9.3)
|
||||
|
||||
9.3) Link Options
|
||||
|
||||
autoconnect Automaticlly tries to connect to the server
|
||||
ssl Defines you are connecting to a SSL server
|
||||
zip Will make them compressed later
|
||||
|
||||
10.0) ulines{} (Ulined Servers):
|
||||
|
||||
This line will define servers that can have more control over the network. Services
|
||||
require this line in order to modify channels without being irc-operators.
|
||||
|
||||
10.1) Syntax:
|
||||
|
||||
ulines {
|
||||
<server>;
|
||||
<server>;
|
||||
};
|
||||
|
||||
10.2) Variables:
|
||||
<server> Server to be u:lined, can be infinate (servername)
|
||||
|
||||
11.0) tld{} (MOTD and Rules by Domains):
|
||||
|
||||
This line defines which hosts will read which set of MOTDs/Rules. For instance, if you have
|
||||
a bilingual network, connections from .fr can show a french MOTD and Rule file instead
|
||||
of the default ircd.motd and ircd.rules
|
||||
|
||||
11.1) Syntax:
|
||||
|
||||
tld {
|
||||
mask <mask>;
|
||||
motd "<motd>";
|
||||
rules "<rules>";
|
||||
};
|
||||
|
||||
11.2) Variables:
|
||||
<mask> Mask that will define the new set (ident@host)
|
||||
<motd> Filename of the motd file (filename)
|
||||
<rules> Filename of the rules file (filename)
|
||||
|
||||
12.0) ban{} (Bans):
|
||||
|
||||
This line has many parts to it and can ban different things. See the sections below
|
||||
on more information on banning.
|
||||
|
||||
12.1) ban nick{}
|
||||
|
||||
This line is used for restricting the use of certain nicknames
|
||||
|
||||
Syntax:
|
||||
ban nick {
|
||||
mask "<nickname>";
|
||||
reason "<reason>";
|
||||
};
|
||||
|
||||
12.2) ban ip{}
|
||||
|
||||
Used for removing a entire ip from connecting.
|
||||
|
||||
Syntax:
|
||||
ban ip { mask <ipaddress>; reason "<reason>"; };
|
||||
|
||||
12.3) ban server{}
|
||||
|
||||
Used for restrictring a server from connecting to you.
|
||||
|
||||
Syntax:
|
||||
ban server {
|
||||
mask <servername>;
|
||||
reason "<reason>";
|
||||
};
|
||||
|
||||
12.4) ban realname{}
|
||||
|
||||
Used to keep select individuals with certain realnames off the server.
|
||||
|
||||
Syntax:
|
||||
ban realname {
|
||||
mask "<real name>";
|
||||
reason "<reason>";
|
||||
};
|
||||
|
||||
12.5) ban user{}
|
||||
|
||||
This line is the same as the old K:Lines. It bans a host mask from connecting.
|
||||
|
||||
Syntax:
|
||||
ban user { mask <ident@host>; reason "<reason>"; };
|
||||
|
||||
13.0) except{} (Cannot Be Banned):
|
||||
|
||||
Used to make sure your own IRCops dont ban you, or so you dont accidently ban an entire
|
||||
nation's worth of addresses, etc.
|
||||
|
||||
13.1) except ban{}
|
||||
|
||||
This is so a realname and user cannot be banned.
|
||||
|
||||
Syntax:
|
||||
except ban {
|
||||
mask <ident@host>;
|
||||
};
|
||||
|
||||
13.2) except socks{}
|
||||
|
||||
This line is used so the socks server does not ban a client.
|
||||
|
||||
Syntax:
|
||||
except socks {
|
||||
mask 216.73.27.177;
|
||||
};
|
||||
|
||||
14.0) vhost{} (Vanity Hosts):
|
||||
|
||||
The vhost{} line is used so a user can change their hostname from blah.dialup.com to
|
||||
a more fun hostname such as tends.to.write.some.really.evildocs.net
|
||||
/vhost <login> <password>
|
||||
|
||||
14.1) Syntax:
|
||||
|
||||
vhost {
|
||||
vhost <vhost>;
|
||||
from {
|
||||
userhost <mask>;
|
||||
};
|
||||
login <login>;
|
||||
password <password>;
|
||||
};
|
||||
|
||||
14.2) Variables:
|
||||
<vhost> Name of the vhost to use (vhost)
|
||||
<mask> Allowed masks to use the vhost (ident@host)
|
||||
<login> A login name to use (login)
|
||||
<password> Password to supply with login (password)
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
[ $Id$ ]
|
||||
Dynamic Configuration Guide
|
||||
|
||||
Okay first you have to go edit the file "unrealircd.conf" in
|
||||
the directory "networks/". In that file you see a field with
|
||||
name "Include" .. if you want to create your own network file
|
||||
(IRC network specification) you have to write like
|
||||
"networks/<irc network>.network" like "networks/myircnetwork.network"
|
||||
|
||||
If there is already a network file you can just put in the path
|
||||
like : "networks/dragonwings.org"
|
||||
|
||||
If you want to create your own network file
|
||||
copy the file "template.network" to the name you want to use for
|
||||
your network file and edit it.
|
||||
|
||||
If you experince any problems email me at stskeeps@tspre.org
|
||||
or try msg me at /server irc.global-irc.net : #UnrealIRCd
|
||||
My nick is mostly Stskeeps or Techie (or Nightwalker if i had a bad night:P)
|
||||
|
||||
--Stskeeps
|
||||
@@ -0,0 +1,311 @@
|
||||
/*
|
||||
** burst.c
|
||||
**
|
||||
** Nicolas Pioch, Dec 93
|
||||
** <Nicolas.Pioch@enst.fr>
|
||||
** Carsten V. Munk Nov 2000
|
||||
*/
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/param.h>
|
||||
#include <sys/signal.h>
|
||||
#include <netinet/in.h>
|
||||
#include <sys/un.h>
|
||||
#include <netdb.h>
|
||||
#include <errno.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <ctype.h>
|
||||
#include <string.h>
|
||||
#include <fcntl.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#ifdef POSIX
|
||||
#include <sys/select.h>
|
||||
#endif
|
||||
|
||||
#define MYBUFSIZE 2048
|
||||
|
||||
char *jupedservername, *uplinkservername, *jupereason;
|
||||
int options;
|
||||
char *password;
|
||||
typedef struct aClient {
|
||||
int socket;
|
||||
char buffer[MYBUFSIZE+1];
|
||||
int read;
|
||||
int write;
|
||||
} aClient;
|
||||
|
||||
void fatalrestart(aClient *robotptr, const char *s);
|
||||
|
||||
void fatal(const char *s) {
|
||||
perror(s);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
typedef void (*signalhandler)(int);
|
||||
static void signal_catcher(int sig, int code, struct sigcontext *scp) {
|
||||
fprintf(stderr, "Caught signal %d with code %d\n", sig, code);
|
||||
|
||||
switch(sig) {
|
||||
case SIGFPE: /* Floating point exception */
|
||||
case SIGILL: /* Illegal instruction */
|
||||
case SIGSEGV: /* Segmentation violation */
|
||||
case SIGBUS: /* Bus error */
|
||||
case SIGSYS: /* Bad argument to system call */
|
||||
fatal("Fatal signal received, aborting...");
|
||||
break;
|
||||
|
||||
case SIGQUIT:
|
||||
case SIGINT:
|
||||
case SIGTERM: /* On se barre */
|
||||
fatal("AAAAAAAAArrrrrrrrgh!");
|
||||
break;
|
||||
}
|
||||
|
||||
signal(sig, (signalhandler)signal_catcher);
|
||||
}
|
||||
|
||||
|
||||
typedef union socket_address {
|
||||
struct sockaddr_un unixx;
|
||||
struct sockaddr_in inet;
|
||||
} socket_address;
|
||||
|
||||
void name_to_number(int address_family, const char *hostname, int port,
|
||||
socket_address *addr, int *len2) {
|
||||
u_long iaddr;
|
||||
int len;
|
||||
struct hostent *host;
|
||||
char *inaddr;
|
||||
bzero ((char *) addr, sizeof (socket_address) );
|
||||
|
||||
if ( address_family == AF_UNIX ) {
|
||||
strcpy(addr->unixx.sun_path,hostname);
|
||||
*len2=sizeof( struct sockaddr_un );
|
||||
} else {
|
||||
if ((hostname) && (hostname[0])) {
|
||||
if (hostname[0] >= '0' && hostname[0] <= '9') {
|
||||
iaddr = inet_addr(hostname);
|
||||
inaddr = (char *) &iaddr;
|
||||
len=sizeof(iaddr);
|
||||
} else {
|
||||
host=gethostbyname (hostname);
|
||||
if (!host)
|
||||
fatal("Unknown host");
|
||||
inaddr=host->h_addr_list[0];
|
||||
len=host->h_length;
|
||||
}
|
||||
bcopy(inaddr, (char *)&addr->inet.sin_addr, len);
|
||||
}
|
||||
addr->inet.sin_port=htons((u_short) port);
|
||||
*len2=sizeof(struct sockaddr_in);
|
||||
}
|
||||
addr->inet.sin_family = address_family;
|
||||
}
|
||||
|
||||
int read_data(aClient *robotptr) {
|
||||
int nbytes;
|
||||
|
||||
if ((nbytes=read(robotptr->socket, &(robotptr->buffer[robotptr->write]),
|
||||
(sizeof(robotptr->buffer) - robotptr->write - 1))) < 0)
|
||||
fatalrestart(robotptr, "read on socket");
|
||||
|
||||
if (nbytes == 0) {
|
||||
close(robotptr->socket);
|
||||
fatalrestart(robotptr, "Connection Closed");
|
||||
}
|
||||
|
||||
robotptr->write+=nbytes;
|
||||
robotptr->buffer[robotptr->write]=0;
|
||||
|
||||
return(nbytes);
|
||||
}
|
||||
|
||||
void send_data(int socketfd, const char *data, int length) {
|
||||
int length2;
|
||||
length2=write(socketfd, data, length);
|
||||
if (length2 != length)
|
||||
fprintf(stderr, "*** write truncated to %d chars...\n", length2);
|
||||
}
|
||||
|
||||
int create_client(const char *hostname, const int hostport) {
|
||||
int descript;
|
||||
socket_address hostaddr;
|
||||
int adlen;
|
||||
|
||||
/* winlocal
|
||||
if ((descript=socket(PF_INET, SOCK_STREAM, 0)) < 0)
|
||||
*/
|
||||
if ((descript=socket(PF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) // winlocal
|
||||
fatal("socket");
|
||||
|
||||
name_to_number(AF_INET, hostname, hostport, &hostaddr, &adlen);
|
||||
|
||||
if (connect(descript, &hostaddr.inet, adlen) < 0)
|
||||
fatal("connect");
|
||||
|
||||
return(descript);
|
||||
}
|
||||
|
||||
void parse_line(aClient *robotptr) {
|
||||
char *toparse;
|
||||
|
||||
toparse=(robotptr->buffer + robotptr->read);
|
||||
|
||||
printf("%s\n",toparse);
|
||||
/* Special handling for PING messages */
|
||||
if (!strncasecmp(toparse, "PING ", 5) || !strncasecmp(toparse, "8 ", 2)){
|
||||
toparse=strtok(toparse, "\r\n");
|
||||
toparse[1]='\0';
|
||||
send_data(robotptr->socket, toparse, strlen(toparse));
|
||||
return;
|
||||
}
|
||||
if (!strncasecmp(toparse, "AO", 2) || !strncasecmp(toparse, "NETINFO", 7))
|
||||
{
|
||||
if (!(options & 0x80))
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
void parse_data(aClient *robotptr) {
|
||||
int next;
|
||||
|
||||
while((robotptr->read < robotptr->write)
|
||||
&& ((robotptr->buffer[robotptr->read] == '\r')
|
||||
|| (robotptr->buffer[robotptr->read] == '\n')))
|
||||
robotptr->read++;
|
||||
|
||||
for(next=robotptr->read; next<=robotptr->write; next++) {
|
||||
if ((robotptr->buffer[next] == '\r')
|
||||
|| (robotptr->buffer[next] == '\n'))
|
||||
break;
|
||||
}
|
||||
|
||||
if (next<robotptr->write) {
|
||||
robotptr->buffer[next]=0;
|
||||
next++;
|
||||
parse_line(robotptr);
|
||||
robotptr->read=next;
|
||||
parse_data(robotptr);
|
||||
}
|
||||
|
||||
if (robotptr->read == robotptr->write) {
|
||||
robotptr->read=robotptr->write=0;
|
||||
} else {
|
||||
bcopy((robotptr->buffer + robotptr->read),
|
||||
(robotptr->buffer), (robotptr->write-robotptr->read));
|
||||
robotptr->write-=robotptr->read;
|
||||
robotptr->read=0;
|
||||
}
|
||||
}
|
||||
|
||||
void run_client(aClient *robotptr) {
|
||||
fd_set mask, returnmask[3];
|
||||
int selectval;
|
||||
|
||||
FD_ZERO(&mask);
|
||||
FD_SET(robotptr->socket, &mask);
|
||||
|
||||
while (1) {
|
||||
bcopy((char *)&mask,(char *)returnmask,sizeof(fd_set));
|
||||
FD_ZERO(returnmask+1);
|
||||
bcopy((char *)&mask,(char *)(returnmask+2),sizeof(fd_set));
|
||||
|
||||
selectval=select(FD_SETSIZE,
|
||||
returnmask, returnmask+1, returnmask+2, NULL);
|
||||
|
||||
if (selectval) {
|
||||
read_data(robotptr);
|
||||
parse_data(robotptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void initialize(aClient *robotptr) {
|
||||
char passphrase[MYBUFSIZE];
|
||||
robotptr->socket=create_client(uplinkservername, atol(jupereason));
|
||||
sprintf(passphrase,
|
||||
"PROTOCTL %s %s %s %s %s %s %s %s %s\r\n",
|
||||
(options & 0x1) ? "NOQUIT" : "",
|
||||
(options & 0x2) ? "TOKEN" : "",
|
||||
(options & 0x4) ? "NICKv2" : "",
|
||||
(options & 0x8) ? "SJOIN" : "",
|
||||
(options & 0x10) ? "SJOIN2" : "",
|
||||
(options & 0x20) ? "UMODE2" : "",
|
||||
(options & 0x40) ? "NS" : "",
|
||||
(options & 0x100) ? "SJ3" : "",
|
||||
(options & 0x200) ? "SJB64" : "");
|
||||
write(robotptr->socket, passphrase, strlen(passphrase));
|
||||
sprintf(passphrase, "PASS %s\r\nSERVER %s 1 :[Burst analysis].\r\n",
|
||||
password,jupedservername);
|
||||
write(robotptr->socket, passphrase, strlen(passphrase));
|
||||
}
|
||||
|
||||
void fatalrestart(aClient *robotptr, const char *s) {
|
||||
perror(s);
|
||||
close(robotptr->socket);
|
||||
sleep(10);
|
||||
initialize(robotptr);
|
||||
run_client(robotptr);
|
||||
}
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
aClient robot;
|
||||
char *p;
|
||||
|
||||
if (argc != 6) {
|
||||
fprintf(stderr, "IRCd burst generator, by Carsten V. Munk 2000, based off jupe.c by Nicolas Pioch\n");
|
||||
fprintf(stderr,
|
||||
"Usage: %s <burstservername> <uplink> <port> <options> <password>\n", argv[0]);
|
||||
fprintf(stderr, "Options can be a combination of these:\n");
|
||||
fprintf(stderr, "1 = Enable NOQUIT 2 = Enable TOKEN\n");
|
||||
fprintf(stderr, "3 = Enable NICKv2 4 = Enable SJOIN\n");
|
||||
fprintf(stderr, "5 = Enable SJOIN2 6 = Enable UMODE2\n");
|
||||
fprintf(stderr, "7 = Enable NS 8 = Ignore end of burst\n");
|
||||
fprintf(stderr, "9 = Enable SJ3 a = Enable SJB64\n");
|
||||
fatal("incorrect argument count");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
jupedservername=argv[1];
|
||||
uplinkservername=argv[2];
|
||||
jupereason=argv[3];
|
||||
password = argv[5];
|
||||
p = argv[4];
|
||||
for (; *p; p++)
|
||||
{
|
||||
if (*p == '1')
|
||||
options |= 0x1;
|
||||
if (*p == '2')
|
||||
options |= 0x2;
|
||||
if (*p == '3')
|
||||
options |= 0x4;
|
||||
if (*p == '4')
|
||||
options |= 0x8;
|
||||
if (*p == '5')
|
||||
options |= 0x10;
|
||||
if (*p == '6')
|
||||
options |= 0x20;
|
||||
if (*p == '7')
|
||||
options |= 0x40;
|
||||
if (*p == '8')
|
||||
options |= 0x80;
|
||||
if (*p == '9')
|
||||
options |= 0x100;
|
||||
if (*p == 'a')
|
||||
options |= 0x200;
|
||||
}
|
||||
/* installe le signal_catcher */
|
||||
signal(SIGTERM,(signalhandler)signal_catcher);
|
||||
|
||||
robot.read=robot.write=0;
|
||||
|
||||
initialize(&robot);
|
||||
run_client(&robot);
|
||||
|
||||
exit(0);
|
||||
}
|
||||
@@ -0,0 +1,98 @@
|
||||
# Makefile for regex.
|
||||
#
|
||||
# Copyright (C) 1992, 1993 Free Software Foundation, Inc.
|
||||
#
|
||||
# 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, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# This program 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, write to the Free Software
|
||||
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
version = 0.12
|
||||
|
||||
# You can define CPPFLAGS on the command line. Aside from system-specific
|
||||
# flags, you can define:
|
||||
# -DREGEX_MALLOC to use malloc/realloc/free instead of alloca.
|
||||
# -DDEBUG to enable the compiled pattern disassembler and execution
|
||||
# tracing; code runs substantially slower.
|
||||
# -DEXTRACT_MACROS to use the macros EXTRACT_* (as opposed to
|
||||
# the corresponding C procedures). If not -DDEBUG, the macros
|
||||
# are used.
|
||||
CPPFLAGS =
|
||||
|
||||
# Likewise, you can override CFLAGS to optimize, use -Wall, etc.
|
||||
CFLAGS = -g
|
||||
|
||||
# Ditto for LDFLAGS and LOADLIBES.
|
||||
LDFLAGS =
|
||||
LOADLIBES =
|
||||
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
|
||||
CC = @CC@
|
||||
DEFS = @DEFS@
|
||||
|
||||
SHELL = /bin/sh
|
||||
|
||||
subdirs = moo
|
||||
|
||||
default all:: regex.o
|
||||
.PHONY: default all
|
||||
|
||||
regex.o: regex.c regex.h
|
||||
$(CC) $(CFLAGS) $(CPPFLAGS) $(DEFS) -I. -I$(srcdir) -c $<
|
||||
|
||||
clean mostlyclean::
|
||||
rm -f *.o
|
||||
|
||||
distclean:: clean
|
||||
rm -f Makefile config.status
|
||||
|
||||
extraclean:: distclean
|
||||
rm -f patch* *~* *\#* *.orig *.rej *.bak core a.out
|
||||
|
||||
configure: configure.in
|
||||
autoconf
|
||||
|
||||
config.status: configure
|
||||
sh configure --no-create
|
||||
|
||||
Makefile: Makefile.in config.status
|
||||
sh config.status
|
||||
|
||||
makeargs = $(MFLAGS) CPPFLAGS='$(CPPFLAGS)' CFLAGS='$(CFLAGS)' CC='$(CC)' \
|
||||
DEFS='$(DEFS)' LDFLAGS='$(LDFLAGS)' LOADLIBES='$(LOADLIBES)'
|
||||
|
||||
default all install \
|
||||
mostlyclean clean distclean extraclean realclean \
|
||||
TAGS check::
|
||||
for d in $(subdirs); do (cd $$d; $(MAKE) $(makeargs) $@); done
|
||||
.PHONY: install mostlyclean clean distclean extraclean realclean TAGS check
|
||||
|
||||
# Prevent GNU make 3 from overflowing arg limit on system V.
|
||||
.NOEXPORT:
|
||||
|
||||
distfiles = AUTHORS ChangeLog COPYING INSTALL NEWS README \
|
||||
*.in configure regex.c regex.h
|
||||
distdir = regex-$(version)
|
||||
distargs = version=$(version) distdir=../$(distdir)/$$d
|
||||
dist: TAGS configure
|
||||
@echo "Version numbers in: Makefile.in, ChangeLog, NEWS,"
|
||||
@echo " regex.c, regex.h,"
|
||||
@echo " and doc/xregex.texi (if modified)."
|
||||
rm -rf $(distdir)
|
||||
mkdir $(distdir)
|
||||
ln $(distfiles) $(distdir)
|
||||
for d in $(subdirs); do (cd $$d; $(MAKE) $(distargs) dist); done
|
||||
tar czhf $(distdir).tar.Z $(distdir)
|
||||
rm -rf $(distdir)
|
||||
.PHONY: dist
|
||||
@@ -0,0 +1,60 @@
|
||||
This directory contains the GNU regex library. It is compliant with
|
||||
POSIX.2, except for internationalization features.
|
||||
|
||||
See the file NEWS for a list of major changes in the current release.
|
||||
|
||||
See the file INSTALL for compilation instructions. (The only thing
|
||||
installed is the documentation; regex.c is compiled into regex.o, but
|
||||
not installed anywhere.)
|
||||
|
||||
The subdirectory `doc' contains a (programmers') manual for the library.
|
||||
It's probably out-of-date. Improvements are welcome.
|
||||
|
||||
The subdirectory `test' contains the various tests we've written.
|
||||
|
||||
We know this code is not as fast as it might be. If you have specific
|
||||
suggestions, profiling results, or other such useful information to
|
||||
report, please do.
|
||||
|
||||
Emacs 18 is not going use this revised regex (but Emacs 19 will). If
|
||||
you want to try it with Emacs 18, apply the patch at the end of this
|
||||
file first.
|
||||
|
||||
Mail bug reports to bug-gnu-utils@prep.ai.mit.edu.
|
||||
|
||||
Please include an actual regular expression that fails (and the syntax
|
||||
used to compile it); without that, there's no way to reproduce the bug,
|
||||
so there's no way we can fix it. Even if you include a patch, also
|
||||
include the regular expression in error; otherwise, we can't know for
|
||||
sure what you're trying to fix.
|
||||
|
||||
Here is the patch to make this version of regex work with Emacs 18.
|
||||
|
||||
*** ORIG/search.c Tue Jan 8 13:04:55 1991
|
||||
--- search.c Sun Jan 5 10:57:00 1992
|
||||
***************
|
||||
*** 25,26 ****
|
||||
--- 25,28 ----
|
||||
#include "commands.h"
|
||||
+
|
||||
+ #include <sys/types.h>
|
||||
#include "regex.h"
|
||||
***************
|
||||
*** 477,479 ****
|
||||
/* really needed. */
|
||||
! && *(searchbuf.buffer) == (char) exactn /* first item is "exact match" */
|
||||
&& searchbuf.buffer[1] + 2 == searchbuf.used) /*first is ONLY item */
|
||||
--- 479,482 ----
|
||||
/* really needed. */
|
||||
! /* first item is "exact match" */
|
||||
! && *(searchbuf.buffer) == (char) RE_EXACTN_VALUE
|
||||
&& searchbuf.buffer[1] + 2 == searchbuf.used) /*first is ONLY item */
|
||||
***************
|
||||
*** 1273,1275 ****
|
||||
searchbuf.allocated = 100;
|
||||
! searchbuf.buffer = (char *) malloc (searchbuf.allocated);
|
||||
searchbuf.fastmap = search_fastmap;
|
||||
--- 1276,1278 ----
|
||||
searchbuf.allocated = 100;
|
||||
! searchbuf.buffer = (unsigned char *) malloc (searchbuf.allocated);
|
||||
searchbuf.fastmap = search_fastmap;
|
||||
@@ -0,0 +1,462 @@
|
||||
#!/bin/sh
|
||||
# Guess values for system-dependent variables and create Makefiles.
|
||||
# Generated automatically using autoconf.
|
||||
# Copyright (C) 1991, 1992, 1993 Free Software Foundation, Inc.
|
||||
|
||||
# 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, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program 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, write to the Free Software
|
||||
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
# Usage: configure [--srcdir=DIR] [--host=HOST] [--gas] [--nfp] [--no-create]
|
||||
# [--prefix=PREFIX] [--exec-prefix=PREFIX] [--with-PACKAGE] [TARGET]
|
||||
# Ignores all args except --srcdir, --prefix, --exec-prefix, --no-create, and
|
||||
# --with-PACKAGE unless this script has special code to handle it.
|
||||
|
||||
|
||||
for arg
|
||||
do
|
||||
# Handle --exec-prefix with a space before the argument.
|
||||
if test x$next_exec_prefix = xyes; then exec_prefix=$arg; next_exec_prefix=
|
||||
# Handle --host with a space before the argument.
|
||||
elif test x$next_host = xyes; then next_host=
|
||||
# Handle --prefix with a space before the argument.
|
||||
elif test x$next_prefix = xyes; then prefix=$arg; next_prefix=
|
||||
# Handle --srcdir with a space before the argument.
|
||||
elif test x$next_srcdir = xyes; then srcdir=$arg; next_srcdir=
|
||||
else
|
||||
case $arg in
|
||||
# For backward compatibility, also recognize exact --exec_prefix.
|
||||
-exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* | --exec=* | --exe=* | --ex=* | --e=*)
|
||||
exec_prefix=`echo $arg | sed 's/[-a-z_]*=//'` ;;
|
||||
-exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- | --exec | --exe | --ex | --e)
|
||||
next_exec_prefix=yes ;;
|
||||
|
||||
-gas | --gas | --ga | --g) ;;
|
||||
|
||||
-host=* | --host=* | --hos=* | --ho=* | --h=*) ;;
|
||||
-host | --host | --hos | --ho | --h)
|
||||
next_host=yes ;;
|
||||
|
||||
-nfp | --nfp | --nf) ;;
|
||||
|
||||
-no-create | --no-create | --no-creat | --no-crea | --no-cre | --no-cr | --no-c | --no- | --no)
|
||||
no_create=1 ;;
|
||||
|
||||
-prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
|
||||
prefix=`echo $arg | sed 's/[-a-z_]*=//'` ;;
|
||||
-prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
|
||||
next_prefix=yes ;;
|
||||
|
||||
-srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=* | --s=*)
|
||||
srcdir=`echo $arg | sed 's/[-a-z_]*=//'` ;;
|
||||
-srcdir | --srcdir | --srcdi | --srcd | --src | --sr | --s)
|
||||
next_srcdir=yes ;;
|
||||
|
||||
-with-* | --with-*)
|
||||
package=`echo $arg|sed 's/-*with-//'`
|
||||
# Delete all the valid chars; see if any are left.
|
||||
if test -n "`echo $package|sed 's/[-a-zA-Z0-9_]*//g'`"; then
|
||||
echo "configure: $package: invalid package name" >&2; exit 1
|
||||
fi
|
||||
eval "with_`echo $package|sed s/-/_/g`=1" ;;
|
||||
|
||||
*) ;;
|
||||
esac
|
||||
fi
|
||||
done
|
||||
|
||||
trap 'rm -f conftest* core; exit 1' 1 3 15
|
||||
|
||||
rm -f conftest*
|
||||
compile='${CC-cc} $CFLAGS $DEFS conftest.c -o conftest $LIBS >/dev/null 2>&1'
|
||||
|
||||
# A filename unique to this package, relative to the directory that
|
||||
# configure is in, which we can look for to find out if srcdir is correct.
|
||||
unique_file=regex.c
|
||||
|
||||
# Find the source files, if location was not specified.
|
||||
if test -z "$srcdir"; then
|
||||
srcdirdefaulted=yes
|
||||
# Try the directory containing this script, then `..'.
|
||||
prog=$0
|
||||
confdir=`echo $prog|sed 's%/[^/][^/]*$%%'`
|
||||
test "X$confdir" = "X$prog" && confdir=.
|
||||
srcdir=$confdir
|
||||
if test ! -r $srcdir/$unique_file; then
|
||||
srcdir=..
|
||||
fi
|
||||
fi
|
||||
if test ! -r $srcdir/$unique_file; then
|
||||
if test x$srcdirdefaulted = xyes; then
|
||||
echo "configure: Can not find sources in \`${confdir}' or \`..'." 1>&2
|
||||
else
|
||||
echo "configure: Can not find sources in \`${srcdir}'." 1>&2
|
||||
fi
|
||||
exit 1
|
||||
fi
|
||||
# Preserve a srcdir of `.' to avoid automounter screwups with pwd.
|
||||
# But we can't avoid them for `..', to make subdirectories work.
|
||||
case $srcdir in
|
||||
.|/*|~*) ;;
|
||||
*) srcdir=`cd $srcdir; pwd` ;; # Make relative path absolute.
|
||||
esac
|
||||
|
||||
|
||||
if test -z "$CC"; then
|
||||
echo checking for gcc
|
||||
saveifs="$IFS"; IFS="${IFS}:"
|
||||
for dir in $PATH; do
|
||||
test -z "$dir" && dir=.
|
||||
if test -f $dir/gcc; then
|
||||
CC="gcc"
|
||||
break
|
||||
fi
|
||||
done
|
||||
IFS="$saveifs"
|
||||
fi
|
||||
test -z "$CC" && CC="cc"
|
||||
|
||||
# Find out if we are using GNU C, under whatever name.
|
||||
cat > conftest.c <<EOF
|
||||
#ifdef __GNUC__
|
||||
yes
|
||||
#endif
|
||||
EOF
|
||||
${CC-cc} -E conftest.c > conftest.out 2>&1
|
||||
if egrep yes conftest.out >/dev/null 2>&1; then
|
||||
GCC=1 # For later tests.
|
||||
fi
|
||||
rm -f conftest*
|
||||
|
||||
# Make sure to not get the incompatible SysV /etc/install and
|
||||
# /usr/sbin/install, which might be in PATH before a BSD-like install,
|
||||
# or the SunOS /usr/etc/install directory, or the AIX /bin/install,
|
||||
# or the AFS install, which mishandles nonexistent args. (Sigh.)
|
||||
if test -z "$INSTALL"; then
|
||||
echo checking for install
|
||||
saveifs="$IFS"; IFS="${IFS}:"
|
||||
for dir in $PATH; do
|
||||
test -z "$dir" && dir=.
|
||||
case $dir in
|
||||
/etc|/usr/sbin|/usr/etc|/usr/afsws/bin) ;;
|
||||
*)
|
||||
if test -f $dir/install; then
|
||||
if grep dspmsg $dir/install >/dev/null 2>&1; then
|
||||
: # AIX
|
||||
else
|
||||
INSTALL="$dir/install -c"
|
||||
INSTALL_PROGRAM='$(INSTALL)'
|
||||
INSTALL_DATA='$(INSTALL) -m 644'
|
||||
break
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
done
|
||||
IFS="$saveifs"
|
||||
fi
|
||||
INSTALL=${INSTALL-cp}
|
||||
INSTALL_PROGRAM=${INSTALL_PROGRAM-'$(INSTALL)'}
|
||||
INSTALL_DATA=${INSTALL_DATA-'$(INSTALL)'}
|
||||
|
||||
|
||||
echo checking for AIX
|
||||
echo checking how to run the C preprocessor
|
||||
if test -z "$CPP"; then
|
||||
CPP='${CC-cc} -E'
|
||||
cat > conftest.c <<EOF
|
||||
#include <stdio.h>
|
||||
EOF
|
||||
err=`eval "$CPP $DEFS conftest.c 2>&1 >/dev/null"`
|
||||
if test -z "$err"; then
|
||||
:
|
||||
else
|
||||
CPP=/lib/cpp
|
||||
fi
|
||||
rm -f conftest*
|
||||
fi
|
||||
|
||||
cat > conftest.c <<EOF
|
||||
#ifdef _AIX
|
||||
yes
|
||||
#endif
|
||||
|
||||
EOF
|
||||
eval "$CPP $DEFS conftest.c > conftest.out 2>&1"
|
||||
if egrep "yes" conftest.out >/dev/null 2>&1; then
|
||||
DEFS="$DEFS -D_ALL_SOURCE=1"
|
||||
fi
|
||||
rm -f conftest*
|
||||
|
||||
|
||||
echo checking for DYNIX/ptx libseq
|
||||
cat > conftest.c <<EOF
|
||||
#if defined(_SEQUENT_)
|
||||
yes
|
||||
#endif
|
||||
|
||||
EOF
|
||||
eval "$CPP $DEFS conftest.c > conftest.out 2>&1"
|
||||
if egrep "yes" conftest.out >/dev/null 2>&1; then
|
||||
SEQUENT=1
|
||||
fi
|
||||
rm -f conftest*
|
||||
|
||||
test -n "$SEQUENT" && test -f /usr/lib/libseq.a &&
|
||||
LIBS="$LIBS -lseq"
|
||||
|
||||
echo checking for POSIXized ISC
|
||||
if test -d /etc/conf/kconfig.d &&
|
||||
grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
|
||||
then
|
||||
ISC=1 # If later tests want to check for ISC.
|
||||
DEFS="$DEFS -D_POSIX_SOURCE=1"
|
||||
if test -n "$GCC"; then
|
||||
CC="$CC -posix"
|
||||
else
|
||||
CC="$CC -Xp"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo checking for minix/config.h
|
||||
cat > conftest.c <<EOF
|
||||
#include <minix/config.h>
|
||||
EOF
|
||||
err=`eval "$CPP $DEFS conftest.c 2>&1 >/dev/null"`
|
||||
if test -z "$err"; then
|
||||
MINIX=1
|
||||
fi
|
||||
rm -f conftest*
|
||||
|
||||
# The Minix shell can't assign to the same variable on the same line!
|
||||
if test -n "$MINIX"; then
|
||||
DEFS="$DEFS -D_POSIX_SOURCE=1"
|
||||
DEFS="$DEFS -D_POSIX_1_SOURCE=2"
|
||||
DEFS="$DEFS -D_MINIX=1"
|
||||
fi
|
||||
|
||||
|
||||
echo checking for ANSI C header files
|
||||
cat > conftest.c <<EOF
|
||||
#include <stdlib.h>
|
||||
#include <stdarg.h>
|
||||
#include <string.h>
|
||||
#include <float.h>
|
||||
EOF
|
||||
err=`eval "$CPP $DEFS conftest.c 2>&1 >/dev/null"`
|
||||
if test -z "$err"; then
|
||||
# SunOS string.h does not declare mem*, contrary to ANSI.
|
||||
echo '#include <string.h>' > conftest.c
|
||||
eval "$CPP $DEFS conftest.c > conftest.out 2>&1"
|
||||
if egrep "memchr" conftest.out >/dev/null 2>&1; then
|
||||
# SGI's /bin/cc from Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
|
||||
cat > conftest.c <<EOF
|
||||
#include <ctype.h>
|
||||
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
|
||||
#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
|
||||
#define XOR(e,f) (((e) && !(f)) || (!(e) && (f)))
|
||||
int main () { int i; for (i = 0; i < 256; i++)
|
||||
if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
|
||||
exit (0); }
|
||||
|
||||
EOF
|
||||
eval $compile
|
||||
if test -s conftest && (./conftest; exit) 2>/dev/null; then
|
||||
DEFS="$DEFS -DSTDC_HEADERS=1"
|
||||
fi
|
||||
rm -f conftest*
|
||||
fi
|
||||
rm -f conftest*
|
||||
|
||||
fi
|
||||
rm -f conftest*
|
||||
|
||||
for hdr in string.h
|
||||
do
|
||||
trhdr=HAVE_`echo $hdr | tr '[a-z]./' '[A-Z]__'`
|
||||
echo checking for ${hdr}
|
||||
cat > conftest.c <<EOF
|
||||
#include <${hdr}>
|
||||
EOF
|
||||
err=`eval "$CPP $DEFS conftest.c 2>&1 >/dev/null"`
|
||||
if test -z "$err"; then
|
||||
DEFS="$DEFS -D${trhdr}=1"
|
||||
fi
|
||||
rm -f conftest*
|
||||
done
|
||||
|
||||
|
||||
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
|
||||
# for constant arguments. Useless!
|
||||
echo checking for working alloca.h
|
||||
cat > conftest.c <<EOF
|
||||
#include <alloca.h>
|
||||
main() { exit(0); }
|
||||
t() { char *p = alloca(2 * sizeof(int)); }
|
||||
EOF
|
||||
if eval $compile; then
|
||||
DEFS="$DEFS -DHAVE_ALLOCA_H=1"
|
||||
fi
|
||||
rm -f conftest*
|
||||
|
||||
decl="#ifdef __GNUC__
|
||||
#define alloca __builtin_alloca
|
||||
#else
|
||||
#if HAVE_ALLOCA_H
|
||||
#include <alloca.h>
|
||||
#else
|
||||
#ifdef _AIX
|
||||
#pragma alloca
|
||||
#else
|
||||
char *alloca ();
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
"
|
||||
echo checking for alloca
|
||||
cat > conftest.c <<EOF
|
||||
$decl
|
||||
main() { exit(0); }
|
||||
t() { char *p = (char *) alloca(1); }
|
||||
EOF
|
||||
if eval $compile; then
|
||||
:
|
||||
else
|
||||
alloca_missing=1
|
||||
fi
|
||||
rm -f conftest*
|
||||
|
||||
if test -n "$alloca_missing"; then
|
||||
# The SVR3 libPW and SVR4 libucb both contain incompatible functions
|
||||
# that cause trouble. Some versions do not even contain alloca or
|
||||
# contain a buggy version. If you still want to use their alloca,
|
||||
# use ar to extract alloca.o from them instead of compiling alloca.c.
|
||||
ALLOCA=alloca.o
|
||||
fi
|
||||
|
||||
prog='/* Ultrix mips cc rejects this. */
|
||||
typedef int charset[2]; const charset x;
|
||||
/* SunOS 4.1.1 cc rejects this. */
|
||||
char const *const *p;
|
||||
char **p2;
|
||||
/* HPUX 7.0 cc rejects these. */
|
||||
++p;
|
||||
p2 = (char const* const*) p;'
|
||||
echo checking for working const
|
||||
cat > conftest.c <<EOF
|
||||
|
||||
main() { exit(0); }
|
||||
t() { $prog }
|
||||
EOF
|
||||
if eval $compile; then
|
||||
:
|
||||
else
|
||||
DEFS="$DEFS -Dconst="
|
||||
fi
|
||||
rm -f conftest*
|
||||
|
||||
|
||||
if test -z "$prefix"
|
||||
then
|
||||
echo checking for gcc to derive installation directory prefix
|
||||
saveifs="$IFS"; IFS="$IFS:"
|
||||
for dir in $PATH; do
|
||||
test -z "$dir" && dir=.
|
||||
if test $dir != . && test -f $dir/gcc; then
|
||||
# Not all systems have dirname.
|
||||
prefix=`echo $dir|sed 's%/[^/][^/]*$%%'`
|
||||
break
|
||||
fi
|
||||
done
|
||||
IFS="$saveifs"
|
||||
fi
|
||||
|
||||
|
||||
if test -n "$prefix"; then
|
||||
test -z "$exec_prefix" && exec_prefix='${prefix}'
|
||||
prsub="s%^prefix\\([ ]*\\)=\\([ ]*\\).*$%prefix\\1=\\2$prefix%"
|
||||
fi
|
||||
if test -n "$exec_prefix"; then
|
||||
prsub="$prsub
|
||||
s%^exec_prefix\\([ ]*\\)=\\([ ]*\\).*$%\
|
||||
exec_prefix\\1=\\2$exec_prefix%"
|
||||
fi
|
||||
|
||||
trap 'rm -f config.status; exit 1' 1 3 15
|
||||
echo creating config.status
|
||||
rm -f config.status
|
||||
cat > config.status <<EOF
|
||||
#!/bin/sh
|
||||
# Generated automatically by configure.
|
||||
# Run this file to recreate the current configuration.
|
||||
# This directory was configured as follows,
|
||||
# on host `(hostname || uname -n) 2>/dev/null`:
|
||||
#
|
||||
# $0 $*
|
||||
|
||||
for arg
|
||||
do
|
||||
case "\$arg" in
|
||||
-recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
|
||||
exec /bin/sh $0 $* ;;
|
||||
*) echo "Usage: config.status --recheck" 2>&1; exit 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
trap 'rm -f Makefile; exit 1' 1 3 15
|
||||
CC='$CC'
|
||||
INSTALL='$INSTALL'
|
||||
INSTALL_PROGRAM='$INSTALL_PROGRAM'
|
||||
INSTALL_DATA='$INSTALL_DATA'
|
||||
CPP='$CPP'
|
||||
ALLOCA='$ALLOCA'
|
||||
LIBS='$LIBS'
|
||||
srcdir='$srcdir'
|
||||
DEFS='$DEFS'
|
||||
prefix='$prefix'
|
||||
exec_prefix='$exec_prefix'
|
||||
prsub='$prsub'
|
||||
EOF
|
||||
cat >> config.status <<\EOF
|
||||
|
||||
top_srcdir=$srcdir
|
||||
for file in .. Makefile; do if [ "x$file" != "x.." ]; then
|
||||
srcdir=$top_srcdir
|
||||
# Remove last slash and all that follows it. Not all systems have dirname.
|
||||
dir=`echo $file|sed 's%/[^/][^/]*$%%'`
|
||||
if test "$dir" != "$file"; then
|
||||
test "$top_srcdir" != . && srcdir=$top_srcdir/$dir
|
||||
test ! -d $dir && mkdir $dir
|
||||
fi
|
||||
echo creating $file
|
||||
rm -f $file
|
||||
echo "# Generated automatically from `echo $file|sed 's|.*/||'`.in by configure." > $file
|
||||
sed -e "
|
||||
$prsub
|
||||
s%@CC@%$CC%g
|
||||
s%@INSTALL@%$INSTALL%g
|
||||
s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
|
||||
s%@INSTALL_DATA@%$INSTALL_DATA%g
|
||||
s%@CPP@%$CPP%g
|
||||
s%@ALLOCA@%$ALLOCA%g
|
||||
s%@LIBS@%$LIBS%g
|
||||
s%@srcdir@%$srcdir%g
|
||||
s%@DEFS@%$DEFS%
|
||||
" $top_srcdir/${file}.in >> $file
|
||||
fi; done
|
||||
|
||||
exit 0
|
||||
EOF
|
||||
chmod +x config.status
|
||||
test -n "$no_create" || ./config.status
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
AC_INIT(regex.c)
|
||||
|
||||
AC_PROG_CC
|
||||
AC_PROG_INSTALL
|
||||
|
||||
dnl I'm not sure if AC_AIX and AC_DYNIX_SEQ are really necessary. The
|
||||
dnl Autoconf documentation isn't specific about which BSD functions they
|
||||
dnl provide.
|
||||
AC_AIX
|
||||
AC_DYNIX_SEQ
|
||||
AC_ISC_POSIX
|
||||
AC_MINIX
|
||||
|
||||
AC_STDC_HEADERS
|
||||
AC_HAVE_HEADERS(string.h)
|
||||
|
||||
AC_ALLOCA
|
||||
AC_CONST
|
||||
|
||||
AC_PREFIX(gcc)
|
||||
|
||||
AC_OUTPUT(Makefile doc/Makefile test/Makefile)
|
||||
@@ -0,0 +1,4 @@
|
||||
clean:
|
||||
default:
|
||||
all:
|
||||
echo "."
|
||||
@@ -0,0 +1,490 @@
|
||||
/* Definitions for data structures and routines for the regular
|
||||
expression library, version 0.12.
|
||||
|
||||
Copyright (C) 1985, 1989, 1990, 1991, 1992, 1993 Free Software Foundation, Inc.
|
||||
|
||||
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, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program 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, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||
|
||||
#ifndef __REGEXP_LIBRARY_H__
|
||||
#define __REGEXP_LIBRARY_H__
|
||||
|
||||
/* POSIX says that <sys/types.h> must be included (by the caller) before
|
||||
<regex.h>. */
|
||||
|
||||
#ifdef VMS
|
||||
/* VMS doesn't have `size_t' in <sys/types.h>, even though POSIX says it
|
||||
should be there. */
|
||||
#include <stddef.h>
|
||||
#endif
|
||||
|
||||
|
||||
/* The following bits are used to determine the regexp syntax we
|
||||
recognize. The set/not-set meanings are chosen so that Emacs syntax
|
||||
remains the value 0. The bits are given in alphabetical order, and
|
||||
the definitions shifted by one from the previous bit; thus, when we
|
||||
add or remove a bit, only one other definition need change. */
|
||||
typedef unsigned reg_syntax_t;
|
||||
|
||||
/* If this bit is not set, then \ inside a bracket expression is literal.
|
||||
If set, then such a \ quotes the following character. */
|
||||
#define RE_BACKSLASH_ESCAPE_IN_LISTS (1)
|
||||
|
||||
/* If this bit is not set, then + and ? are operators, and \+ and \? are
|
||||
literals.
|
||||
If set, then \+ and \? are operators and + and ? are literals. */
|
||||
#define RE_BK_PLUS_QM (RE_BACKSLASH_ESCAPE_IN_LISTS << 1)
|
||||
|
||||
/* If this bit is set, then character classes are supported. They are:
|
||||
[:alpha:], [:upper:], [:lower:], [:digit:], [:alnum:], [:xdigit:],
|
||||
[:space:], [:print:], [:punct:], [:graph:], and [:cntrl:].
|
||||
If not set, then character classes are not supported. */
|
||||
#define RE_CHAR_CLASSES (RE_BK_PLUS_QM << 1)
|
||||
|
||||
/* If this bit is set, then ^ and $ are always anchors (outside bracket
|
||||
expressions, of course).
|
||||
If this bit is not set, then it depends:
|
||||
^ is an anchor if it is at the beginning of a regular
|
||||
expression or after an open-group or an alternation operator;
|
||||
$ is an anchor if it is at the end of a regular expression, or
|
||||
before a close-group or an alternation operator.
|
||||
|
||||
This bit could be (re)combined with RE_CONTEXT_INDEP_OPS, because
|
||||
POSIX draft 11.2 says that * etc. in leading positions is undefined.
|
||||
We already implemented a previous draft which made those constructs
|
||||
invalid, though, so we haven't changed the code back. */
|
||||
#define RE_CONTEXT_INDEP_ANCHORS (RE_CHAR_CLASSES << 1)
|
||||
|
||||
/* If this bit is set, then special characters are always special
|
||||
regardless of where they are in the pattern.
|
||||
If this bit is not set, then special characters are special only in
|
||||
some contexts; otherwise they are ordinary. Specifically,
|
||||
* + ? and intervals are only special when not after the beginning,
|
||||
open-group, or alternation operator. */
|
||||
#define RE_CONTEXT_INDEP_OPS (RE_CONTEXT_INDEP_ANCHORS << 1)
|
||||
|
||||
/* If this bit is set, then *, +, ?, and { cannot be first in an re or
|
||||
immediately after an alternation or begin-group operator. */
|
||||
#define RE_CONTEXT_INVALID_OPS (RE_CONTEXT_INDEP_OPS << 1)
|
||||
|
||||
/* If this bit is set, then . matches newline.
|
||||
If not set, then it doesn't. */
|
||||
#define RE_DOT_NEWLINE (RE_CONTEXT_INVALID_OPS << 1)
|
||||
|
||||
/* If this bit is set, then . doesn't match NUL.
|
||||
If not set, then it does. */
|
||||
#define RE_DOT_NOT_NULL (RE_DOT_NEWLINE << 1)
|
||||
|
||||
/* If this bit is set, nonmatching lists [^...] do not match newline.
|
||||
If not set, they do. */
|
||||
#define RE_HAT_LISTS_NOT_NEWLINE (RE_DOT_NOT_NULL << 1)
|
||||
|
||||
/* If this bit is set, either \{...\} or {...} defines an
|
||||
interval, depending on RE_NO_BK_BRACES.
|
||||
If not set, \{, \}, {, and } are literals. */
|
||||
#define RE_INTERVALS (RE_HAT_LISTS_NOT_NEWLINE << 1)
|
||||
|
||||
/* If this bit is set, +, ? and | aren't recognized as operators.
|
||||
If not set, they are. */
|
||||
#define RE_LIMITED_OPS (RE_INTERVALS << 1)
|
||||
|
||||
/* If this bit is set, newline is an alternation operator.
|
||||
If not set, newline is literal. */
|
||||
#define RE_NEWLINE_ALT (RE_LIMITED_OPS << 1)
|
||||
|
||||
/* If this bit is set, then `{...}' defines an interval, and \{ and \}
|
||||
are literals.
|
||||
If not set, then `\{...\}' defines an interval. */
|
||||
#define RE_NO_BK_BRACES (RE_NEWLINE_ALT << 1)
|
||||
|
||||
/* If this bit is set, (...) defines a group, and \( and \) are literals.
|
||||
If not set, \(...\) defines a group, and ( and ) are literals. */
|
||||
#define RE_NO_BK_PARENS (RE_NO_BK_BRACES << 1)
|
||||
|
||||
/* If this bit is set, then \<digit> matches <digit>.
|
||||
If not set, then \<digit> is a back-reference. */
|
||||
#define RE_NO_BK_REFS (RE_NO_BK_PARENS << 1)
|
||||
|
||||
/* If this bit is set, then | is an alternation operator, and \| is literal.
|
||||
If not set, then \| is an alternation operator, and | is literal. */
|
||||
#define RE_NO_BK_VBAR (RE_NO_BK_REFS << 1)
|
||||
|
||||
/* If this bit is set, then an ending range point collating higher
|
||||
than the starting range point, as in [z-a], is invalid.
|
||||
If not set, then when ending range point collates higher than the
|
||||
starting range point, the range is ignored. */
|
||||
#define RE_NO_EMPTY_RANGES (RE_NO_BK_VBAR << 1)
|
||||
|
||||
/* If this bit is set, then an unmatched ) is ordinary.
|
||||
If not set, then an unmatched ) is invalid. */
|
||||
#define RE_UNMATCHED_RIGHT_PAREN_ORD (RE_NO_EMPTY_RANGES << 1)
|
||||
|
||||
/* This global variable defines the particular regexp syntax to use (for
|
||||
some interfaces). When a regexp is compiled, the syntax used is
|
||||
stored in the pattern buffer, so changing this does not affect
|
||||
already-compiled regexps. */
|
||||
extern reg_syntax_t re_syntax_options;
|
||||
|
||||
/* Define combinations of the above bits for the standard possibilities.
|
||||
(The [[[ comments delimit what gets put into the Texinfo file, so
|
||||
don't delete them!) */
|
||||
/* [[[begin syntaxes]]] */
|
||||
#define RE_SYNTAX_EMACS 0
|
||||
|
||||
#define RE_SYNTAX_AWK \
|
||||
(RE_BACKSLASH_ESCAPE_IN_LISTS | RE_DOT_NOT_NULL \
|
||||
| RE_NO_BK_PARENS | RE_NO_BK_REFS \
|
||||
| RE_NO_BK_VBAR | RE_NO_EMPTY_RANGES \
|
||||
| RE_UNMATCHED_RIGHT_PAREN_ORD)
|
||||
|
||||
#define RE_SYNTAX_POSIX_AWK \
|
||||
(RE_SYNTAX_POSIX_EXTENDED | RE_BACKSLASH_ESCAPE_IN_LISTS)
|
||||
|
||||
#define RE_SYNTAX_GREP \
|
||||
(RE_BK_PLUS_QM | RE_CHAR_CLASSES \
|
||||
| RE_HAT_LISTS_NOT_NEWLINE | RE_INTERVALS \
|
||||
| RE_NEWLINE_ALT)
|
||||
|
||||
#define RE_SYNTAX_EGREP \
|
||||
(RE_CHAR_CLASSES | RE_CONTEXT_INDEP_ANCHORS \
|
||||
| RE_CONTEXT_INDEP_OPS | RE_HAT_LISTS_NOT_NEWLINE \
|
||||
| RE_NEWLINE_ALT | RE_NO_BK_PARENS \
|
||||
| RE_NO_BK_VBAR)
|
||||
|
||||
#define RE_SYNTAX_POSIX_EGREP \
|
||||
(RE_SYNTAX_EGREP | RE_INTERVALS | RE_NO_BK_BRACES)
|
||||
|
||||
/* P1003.2/D11.2, section 4.20.7.1, lines 5078ff. */
|
||||
#define RE_SYNTAX_ED RE_SYNTAX_POSIX_BASIC
|
||||
|
||||
#define RE_SYNTAX_SED RE_SYNTAX_POSIX_BASIC
|
||||
|
||||
/* Syntax bits common to both basic and extended POSIX regex syntax. */
|
||||
#define _RE_SYNTAX_POSIX_COMMON \
|
||||
(RE_CHAR_CLASSES | RE_DOT_NEWLINE | RE_DOT_NOT_NULL \
|
||||
| RE_INTERVALS | RE_NO_EMPTY_RANGES)
|
||||
|
||||
#define RE_SYNTAX_POSIX_BASIC \
|
||||
(_RE_SYNTAX_POSIX_COMMON | RE_BK_PLUS_QM)
|
||||
|
||||
/* Differs from ..._POSIX_BASIC only in that RE_BK_PLUS_QM becomes
|
||||
RE_LIMITED_OPS, i.e., \? \+ \| are not recognized. Actually, this
|
||||
isn't minimal, since other operators, such as \`, aren't disabled. */
|
||||
#define RE_SYNTAX_POSIX_MINIMAL_BASIC \
|
||||
(_RE_SYNTAX_POSIX_COMMON | RE_LIMITED_OPS)
|
||||
|
||||
#define RE_SYNTAX_POSIX_EXTENDED \
|
||||
(_RE_SYNTAX_POSIX_COMMON | RE_CONTEXT_INDEP_ANCHORS \
|
||||
| RE_CONTEXT_INDEP_OPS | RE_NO_BK_BRACES \
|
||||
| RE_NO_BK_PARENS | RE_NO_BK_VBAR \
|
||||
| RE_UNMATCHED_RIGHT_PAREN_ORD)
|
||||
|
||||
/* Differs from ..._POSIX_EXTENDED in that RE_CONTEXT_INVALID_OPS
|
||||
replaces RE_CONTEXT_INDEP_OPS and RE_NO_BK_REFS is added. */
|
||||
#define RE_SYNTAX_POSIX_MINIMAL_EXTENDED \
|
||||
(_RE_SYNTAX_POSIX_COMMON | RE_CONTEXT_INDEP_ANCHORS \
|
||||
| RE_CONTEXT_INVALID_OPS | RE_NO_BK_BRACES \
|
||||
| RE_NO_BK_PARENS | RE_NO_BK_REFS \
|
||||
| RE_NO_BK_VBAR | RE_UNMATCHED_RIGHT_PAREN_ORD)
|
||||
/* [[[end syntaxes]]] */
|
||||
|
||||
/* Maximum number of duplicates an interval can allow. Some systems
|
||||
(erroneously) define this in other header files, but we want our
|
||||
value, so remove any previous define. */
|
||||
#ifdef RE_DUP_MAX
|
||||
#undef RE_DUP_MAX
|
||||
#endif
|
||||
#define RE_DUP_MAX ((1 << 15) - 1)
|
||||
|
||||
|
||||
/* POSIX `cflags' bits (i.e., information for `regcomp'). */
|
||||
|
||||
/* If this bit is set, then use extended regular expression syntax.
|
||||
If not set, then use basic regular expression syntax. */
|
||||
#define REG_EXTENDED 1
|
||||
|
||||
/* If this bit is set, then ignore case when matching.
|
||||
If not set, then case is significant. */
|
||||
#define REG_ICASE (REG_EXTENDED << 1)
|
||||
|
||||
/* If this bit is set, then anchors do not match at newline
|
||||
characters in the string.
|
||||
If not set, then anchors do match at newlines. */
|
||||
#define REG_NEWLINE (REG_ICASE << 1)
|
||||
|
||||
/* If this bit is set, then report only success or fail in regexec.
|
||||
If not set, then returns differ between not matching and errors. */
|
||||
#define REG_NOSUB (REG_NEWLINE << 1)
|
||||
|
||||
|
||||
/* POSIX `eflags' bits (i.e., information for regexec). */
|
||||
|
||||
/* If this bit is set, then the beginning-of-line operator doesn't match
|
||||
the beginning of the string (presumably because it's not the
|
||||
beginning of a line).
|
||||
If not set, then the beginning-of-line operator does match the
|
||||
beginning of the string. */
|
||||
#define REG_NOTBOL 1
|
||||
|
||||
/* Like REG_NOTBOL, except for the end-of-line. */
|
||||
#define REG_NOTEOL (1 << 1)
|
||||
|
||||
|
||||
/* If any error codes are removed, changed, or added, update the
|
||||
`re_error_msg' table in regex.c. */
|
||||
typedef enum
|
||||
{
|
||||
REG_NOERROR = 0, /* Success. */
|
||||
REG_NOMATCH, /* Didn't find a match (for regexec). */
|
||||
|
||||
/* POSIX regcomp return error codes. (In the order listed in the
|
||||
standard.) */
|
||||
REG_BADPAT, /* Invalid pattern. */
|
||||
REG_ECOLLATE, /* Not implemented. */
|
||||
REG_ECTYPE, /* Invalid character class name. */
|
||||
REG_EESCAPE, /* Trailing backslash. */
|
||||
REG_ESUBREG, /* Invalid back reference. */
|
||||
REG_EBRACK, /* Unmatched left bracket. */
|
||||
REG_EPAREN, /* Parenthesis imbalance. */
|
||||
REG_EBRACE, /* Unmatched \{. */
|
||||
REG_BADBR, /* Invalid contents of \{\}. */
|
||||
REG_ERANGE, /* Invalid range end. */
|
||||
REG_ESPACE, /* Ran out of memory. */
|
||||
REG_BADRPT, /* No preceding re for repetition op. */
|
||||
|
||||
/* Error codes we've added. */
|
||||
REG_EEND, /* Premature end. */
|
||||
REG_ESIZE, /* Compiled pattern bigger than 2^16 bytes. */
|
||||
REG_ERPAREN /* Unmatched ) or \); not returned from regcomp. */
|
||||
} reg_errcode_t;
|
||||
|
||||
/* This data structure represents a compiled pattern. Before calling
|
||||
the pattern compiler, the fields `buffer', `allocated', `fastmap',
|
||||
`translate', and `no_sub' can be set. After the pattern has been
|
||||
compiled, the `re_nsub' field is available. All other fields are
|
||||
private to the regex routines. */
|
||||
|
||||
struct re_pattern_buffer
|
||||
{
|
||||
/* [[[begin pattern_buffer]]] */
|
||||
/* Space that holds the compiled pattern. It is declared as
|
||||
`unsigned char *' because its elements are
|
||||
sometimes used as array indexes. */
|
||||
unsigned char *buffer;
|
||||
|
||||
/* Number of bytes to which `buffer' points. */
|
||||
unsigned long allocated;
|
||||
|
||||
/* Number of bytes actually used in `buffer'. */
|
||||
unsigned long used;
|
||||
|
||||
/* Syntax setting with which the pattern was compiled. */
|
||||
reg_syntax_t syntax;
|
||||
|
||||
/* Pointer to a fastmap, if any, otherwise zero. re_search uses
|
||||
the fastmap, if there is one, to skip over impossible
|
||||
starting points for matches. */
|
||||
char *fastmap;
|
||||
|
||||
/* Either a translate table to apply to all characters before
|
||||
comparing them, or zero for no translation. The translation
|
||||
is applied to a pattern when it is compiled and to a string
|
||||
when it is matched. */
|
||||
char *translate;
|
||||
|
||||
/* Number of subexpressions found by the compiler. */
|
||||
size_t re_nsub;
|
||||
|
||||
/* Zero if this pattern cannot match the empty string, one else.
|
||||
Well, in truth it's used only in `re_search_2', to see
|
||||
whether or not we should use the fastmap, so we don't set
|
||||
this absolutely perfectly; see `re_compile_fastmap' (the
|
||||
`duplicate' case). */
|
||||
unsigned can_be_null : 1;
|
||||
|
||||
/* If REGS_UNALLOCATED, allocate space in the `regs' structure
|
||||
for `max (RE_NREGS, re_nsub + 1)' groups.
|
||||
If REGS_REALLOCATE, reallocate space if necessary.
|
||||
If REGS_FIXED, use what's there. */
|
||||
#define REGS_UNALLOCATED 0
|
||||
#define REGS_REALLOCATE 1
|
||||
#define REGS_FIXED 2
|
||||
unsigned regs_allocated : 2;
|
||||
|
||||
/* Set to zero when `regex_compile' compiles a pattern; set to one
|
||||
by `re_compile_fastmap' if it updates the fastmap. */
|
||||
unsigned fastmap_accurate : 1;
|
||||
|
||||
/* If set, `re_match_2' does not return information about
|
||||
subexpressions. */
|
||||
unsigned no_sub : 1;
|
||||
|
||||
/* If set, a beginning-of-line anchor doesn't match at the
|
||||
beginning of the string. */
|
||||
unsigned not_bol : 1;
|
||||
|
||||
/* Similarly for an end-of-line anchor. */
|
||||
unsigned not_eol : 1;
|
||||
|
||||
/* If true, an anchor at a newline matches. */
|
||||
unsigned newline_anchor : 1;
|
||||
|
||||
/* [[[end pattern_buffer]]] */
|
||||
};
|
||||
|
||||
typedef struct re_pattern_buffer regex_t;
|
||||
|
||||
|
||||
/* search.c (search_buffer) in Emacs needs this one opcode value. It is
|
||||
defined both in `regex.c' and here. */
|
||||
#define RE_EXACTN_VALUE 1
|
||||
|
||||
/* Type for byte offsets within the string. POSIX mandates this. */
|
||||
typedef int regoff_t;
|
||||
|
||||
|
||||
/* This is the structure we store register match data in. See
|
||||
regex.texinfo for a full description of what registers match. */
|
||||
struct re_registers
|
||||
{
|
||||
unsigned num_regs;
|
||||
regoff_t *start;
|
||||
regoff_t *end;
|
||||
};
|
||||
|
||||
|
||||
/* If `regs_allocated' is REGS_UNALLOCATED in the pattern buffer,
|
||||
`re_match_2' returns information about at least this many registers
|
||||
the first time a `regs' structure is passed. */
|
||||
#ifndef RE_NREGS
|
||||
#define RE_NREGS 30
|
||||
#endif
|
||||
|
||||
|
||||
/* POSIX specification for registers. Aside from the different names than
|
||||
`re_registers', POSIX uses an array of structures, instead of a
|
||||
structure of arrays. */
|
||||
typedef struct
|
||||
{
|
||||
regoff_t rm_so; /* Byte offset from string's start to substring's start. */
|
||||
regoff_t rm_eo; /* Byte offset from string's start to substring's end. */
|
||||
} regmatch_t;
|
||||
|
||||
/* Declarations for routines. */
|
||||
|
||||
/* To avoid duplicating every routine declaration -- once with a
|
||||
prototype (if we are ANSI), and once without (if we aren't) -- we
|
||||
use the following macro to declare argument types. This
|
||||
unfortunately clutters up the declarations a bit, but I think it's
|
||||
worth it. */
|
||||
|
||||
#if __STDC__
|
||||
|
||||
#define _RE_ARGS(args) args
|
||||
|
||||
#else /* not __STDC__ */
|
||||
|
||||
#define _RE_ARGS(args) ()
|
||||
|
||||
#endif /* not __STDC__ */
|
||||
|
||||
/* Sets the current default syntax to SYNTAX, and return the old syntax.
|
||||
You can also simply assign to the `re_syntax_options' variable. */
|
||||
extern reg_syntax_t re_set_syntax _RE_ARGS ((reg_syntax_t syntax));
|
||||
|
||||
/* Compile the regular expression PATTERN, with length LENGTH
|
||||
and syntax given by the global `re_syntax_options', into the buffer
|
||||
BUFFER. Return NULL if successful, and an error string if not. */
|
||||
extern const char *re_compile_pattern
|
||||
_RE_ARGS ((const char *pattern, int length,
|
||||
struct re_pattern_buffer *buffer));
|
||||
|
||||
|
||||
/* Compile a fastmap for the compiled pattern in BUFFER; used to
|
||||
accelerate searches. Return 0 if successful and -2 if was an
|
||||
internal error. */
|
||||
extern int re_compile_fastmap _RE_ARGS ((struct re_pattern_buffer *buffer));
|
||||
|
||||
|
||||
/* Search in the string STRING (with length LENGTH) for the pattern
|
||||
compiled into BUFFER. Start searching at position START, for RANGE
|
||||
characters. Return the starting position of the match, -1 for no
|
||||
match, or -2 for an internal error. Also return register
|
||||
information in REGS (if REGS and BUFFER->no_sub are nonzero). */
|
||||
extern int re_search
|
||||
_RE_ARGS ((struct re_pattern_buffer *buffer, const char *string,
|
||||
int length, int start, int range, struct re_registers *regs));
|
||||
|
||||
|
||||
/* Like `re_search', but search in the concatenation of STRING1 and
|
||||
STRING2. Also, stop searching at index START + STOP. */
|
||||
extern int re_search_2
|
||||
_RE_ARGS ((struct re_pattern_buffer *buffer, const char *string1,
|
||||
int length1, const char *string2, int length2,
|
||||
int start, int range, struct re_registers *regs, int stop));
|
||||
|
||||
|
||||
/* Like `re_search', but return how many characters in STRING the regexp
|
||||
in BUFFER matched, starting at position START. */
|
||||
extern int re_match
|
||||
_RE_ARGS ((struct re_pattern_buffer *buffer, const char *string,
|
||||
int length, int start, struct re_registers *regs));
|
||||
|
||||
|
||||
/* Relates to `re_match' as `re_search_2' relates to `re_search'. */
|
||||
extern int re_match_2
|
||||
_RE_ARGS ((struct re_pattern_buffer *buffer, const char *string1,
|
||||
int length1, const char *string2, int length2,
|
||||
int start, struct re_registers *regs, int stop));
|
||||
|
||||
|
||||
/* Set REGS to hold NUM_REGS registers, storing them in STARTS and
|
||||
ENDS. Subsequent matches using BUFFER and REGS will use this memory
|
||||
for recording register information. STARTS and ENDS must be
|
||||
allocated with malloc, and must each be at least `NUM_REGS * sizeof
|
||||
(regoff_t)' bytes long.
|
||||
|
||||
If NUM_REGS == 0, then subsequent matches should allocate their own
|
||||
register data.
|
||||
|
||||
Unless this function is called, the first search or match using
|
||||
PATTERN_BUFFER will allocate its own register data, without
|
||||
freeing the old data. */
|
||||
extern void re_set_registers
|
||||
_RE_ARGS ((struct re_pattern_buffer *buffer, struct re_registers *regs,
|
||||
unsigned num_regs, regoff_t *starts, regoff_t *ends));
|
||||
|
||||
/* 4.2 bsd compatibility. */
|
||||
extern char *re_comp _RE_ARGS ((const char *));
|
||||
extern int re_exec _RE_ARGS ((const char *));
|
||||
|
||||
/* POSIX compatibility. */
|
||||
extern int regcomp _RE_ARGS ((regex_t *preg, const char *pattern, int cflags));
|
||||
extern int regexec
|
||||
_RE_ARGS ((const regex_t *preg, const char *string, size_t nmatch,
|
||||
regmatch_t pmatch[], int eflags));
|
||||
extern size_t regerror
|
||||
_RE_ARGS ((int errcode, const regex_t *preg, char *errbuf,
|
||||
size_t errbuf_size));
|
||||
extern void regfree _RE_ARGS ((regex_t *preg));
|
||||
|
||||
#endif /* not __REGEXP_LIBRARY_H__ */
|
||||
|
||||
/*
|
||||
Local variables:
|
||||
make-backup-files: t
|
||||
version-control: t
|
||||
trim-versions-without-asking: nil
|
||||
End:
|
||||
*/
|
||||
|
After Width: | Height: | Size: 57 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 56 B |
@@ -0,0 +1,124 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
|
||||
<title>
|
||||
$ TITLE
|
||||
</title>
|
||||
<style type="text/css" media="screen">
|
||||
BODY {
|
||||
scrollbar-base-color : Black;
|
||||
scrollbar-3d-light-color : #D3D3D3;
|
||||
scrollbar-dark-shadow-color : #D3D3D3;
|
||||
scrollbar-shadow-color : #D3D3D3;
|
||||
scrollbar-highlight-color : #D3D3D3;
|
||||
scrollbar-arrow-color : Black;
|
||||
scrollbar-face-color : #D3D3D3;
|
||||
background-color : #FFFFFF;
|
||||
font-size : 8pt;
|
||||
font-family : "Trebuchet MS", Arial, Tahoma;
|
||||
}
|
||||
|
||||
.text, INPUT {
|
||||
font-family : "Trebuchet MS", Arial, Tahoma;
|
||||
font-size : 12px;
|
||||
}
|
||||
.status {
|
||||
font-family : "Trebuchet MS", Arial, Tahoma;
|
||||
font-size : 10px;
|
||||
}
|
||||
.title {
|
||||
font-family : "Trebuchet MS", Arial, Tahoma;
|
||||
font-size : 15pt;
|
||||
}
|
||||
|
||||
.button {
|
||||
font-family : Tahoma;
|
||||
border : 1px solid #C8C8C8;
|
||||
font-size : 11px;
|
||||
cursor : hand;
|
||||
background-color : #E5E5E5;
|
||||
}
|
||||
#background { position: absolute; z-index: 0; top: 0px; left: 0px; width: 650px; height: 450px; visibility: visible }
|
||||
#content { position: absolute; top: 77px; left: 133px; width: 399px; height: 283px; visibility: visible }
|
||||
#unrealIRCdLink { font-size: 8pt; font-family: "Trebuchet MS", Arial, Tahoma; position: absolute; top: 432px; left: 0px; width: 650px; height: 16px; visibility: visible; }
|
||||
#icon { z-index: 1; font-size: 8pt; font-family: "Trebuchet MS", Arial, Tahoma; position: absolute; top: 13px; left: 22px; width: 72px; height: 73px; visibility: visible; scrollbar-3d-light-color: #D3D3D3; scrollbar-arrow-color: Black; scrollbar-base-color: Black; scrollbar-dark-shadow-color: #D3D3D3; scrollbar-face-color: #D3D3D3; scrollbar-highlight-color: #D3D3D3; scrollbar-shadow-color: #D3D3D3 }
|
||||
|
||||
#button1img { z-index: 3; position: absolute; top: 150px; left: 11px; width: 111px; height: 23px; }
|
||||
#button1text { font-size: 10px; font-family: "Trebuchet MS", Arial, Tahoma; position: absolute; z-index: 2; top: 150px; left: 11px; width: 111px; height: 23px; padding: 1px}
|
||||
#button1bg { z-index: 1; position: absolute; top: 150px; left: 11px; width: 111px; height: 23px; }
|
||||
|
||||
#button2img { z-index: 3; position: absolute; top: 180px; left: 11px; width: 111px; height: 23px; }
|
||||
#button2text { font-size: 10px; font-family: "Trebuchet MS", Arial, Tahoma; position: absolute; z-index: 2; top: 180px; left: 11px; width: 111px; height: 23px; padding: 1px}
|
||||
#button2bg { z-index: 1; position: absolute; top: 180px; left: 11px; width: 111px; height: 23px; }
|
||||
|
||||
#button3img { z-index: 3; position: absolute; top: 210px; left: 11px; width: 111px; height: 23px; }
|
||||
#button3text { font-size: 10px; font-family: "Trebuchet MS", Arial, Tahoma; position: absolute; z-index: 2; top: 210px; left: 11px; width: 111px; height: 23px; padding: 1px}
|
||||
#button3bg { z-index: 1; position: absolute; top: 210px; left: 11px; width: 111px; height: 23px; }
|
||||
|
||||
#button4img { z-index: 3; position: absolute; top: 240px; left: 11px; width: 111px; height: 23px; }
|
||||
#button4text { font-size: 10px; font-family: "Trebuchet MS", Arial, Tahoma; position: absolute; z-index: 2; top: 240px; left: 11px; width: 111px; height: 23px; padding: 1px}
|
||||
#button4bg { z-index: 1; position: absolute; top: 240px; left: 11px; width: 111px; height: 23px; }
|
||||
|
||||
#button5img { z-index: 3; position: absolute; top: 270px; left: 11px; width: 111px; height: 23px; }
|
||||
#button5text { font-size: 10px; font-family: "Trebuchet MS", Arial, Tahoma; position: absolute; z-index: 2; top: 270px; left: 11px; width: 111px; height: 23px; padding: 1px}
|
||||
#button5bg { z-index: 1; position: absolute; top: 270px; left: 11px; width: 111px; height: 23px; }
|
||||
|
||||
#button6img { z-index: 3; position: absolute; top: 300px; left: 11px; width: 111px; height: 23px; }
|
||||
#button6text { font-size: 10px; font-family: "Trebuchet MS", Arial, Tahoma; position: absolute; z-index: 2; top: 300px; left: 11px; width: 111px; height: 23px; padding: 1px}
|
||||
#button6bg { z-index: 1; position: absolute; top: 300px; left: 11px; width: 111px; height: 23px; }
|
||||
|
||||
|
||||
#button7img { z-index: 3; position: absolute; top: 330px; left: 11px; width: 111px; height: 23px; }
|
||||
#button7text { font-size: 10px; font-family: "Trebuchet MS", Arial, Tahoma; position: absolute; z-index: 2; top: 330px; left: 11px; width: 111px; height: 23px; padding: 1px}
|
||||
#button7bg { z-index: 1; position: absolute; top: 330px; left: 11px; width: 111px; height: 23px; }
|
||||
|
||||
|
||||
#button8img { z-index: 3; position: absolute; top: 360px; left: 11px; width: 111px; height: 23px; }
|
||||
#button8text { font-size: 10px; font-family: "Trebuchet MS", Arial, Tahoma; position: absolute; z-index: 2; top: 360px; left: 11px; width: 111px; height: 23px; padding: 1px}
|
||||
#button8bg { z-index: 1; position: absolute; top: 360px; left: 11px; width: 111px; height: 23px; }
|
||||
|
||||
#button9img { z-index: 3; position: absolute; top: 390px; left: 11px; width: 111px; height: 23px; }
|
||||
#button9text { font-size: 10px; font-family: "Trebuchet MS", Arial, Tahoma; position: absolute; z-index: 2; top: 390px; left: 11px; width: 111px; height: 23px; padding: 1px}
|
||||
#button9bg { z-index: 1; position: absolute; top: 390px; left: 11px; width: 111px; height: 23px; }
|
||||
|
||||
#button10img { z-index: 3; position: absolute; top: 420px; left: 11px; width: 111px; height: 23px; }
|
||||
#button10text { font-size: 10px; font-family: "Trebuchet MS", Arial, Tahoma; position: absolute; z-index: 2; top: 420px; left: 11px; width: 111px; height: 23px; padding: 1px}
|
||||
#button10bg { z-index: 1; position: absolute; top: 420px; left: 11px; width: 111px; height: 23px; }
|
||||
|
||||
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff" text="black" link="black" vlink="black" alink="black">
|
||||
<div id="button1img"><a href="http://www.unrealircd.org" onMouseOver="document.button1.src='../sections/active.gif';" onMouseOut="document.button1.src='../sections/inactive.gif';"><img src="../sections/inactive.gif" name="button1" border="0"></a></div>
|
||||
<div id="button1text" align="center"><center>Operators</center></div>
|
||||
<div id="button1bg"><img src="../sections/bg.gif" border="0"></div>
|
||||
|
||||
<div id="button2img"><a href="http://www.unrealircd.org" onMouseOver="document.button2.src='../sections/active.gif';" onMouseOut="document.button2.src='../sections/inactive.gif';"><img src="../sections/inactive.gif" name="button2" border="0"></a></div>
|
||||
<div id="button2text" align="center"><center>Other stuff</center></div>
|
||||
<div id="button2bg"><img src="../sections/bg.gif" border="0"></div>
|
||||
|
||||
<div id="icon"><img
|
||||
$ ICON
|
||||
width="72" height="73" border="0"></div>
|
||||
<div id="background"><img src="../back/background.jpg" width="650" border="0"></div>
|
||||
<div id="unrealIRCdLink">
|
||||
<table width="650" height="18" border="0" cellpadding="0" cellspacing="0">
|
||||
<tr><td colspan="3"><img src="../back/line.gif" width="650"></td></tr>
|
||||
<tr width="650"><td valign="middle" align="right" height="9" width="97"><a target="_blank" href="http://www.unrealircd.com/" onMouseOver="document.unreallink.src='../unrealircd.com/active.gif';" onMouseOut="document.unreallink.src='../unrealircd.com/inactive.gif';"><img src="../unrealircd.com/inactive.gif" name="unreallink" border="0"></a></td>
|
||||
$ STATUSLINE
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div id="content">
|
||||
<div align="left"><i><span class="title">
|
||||
$ SECTION
|
||||
</span></i></div>
|
||||
<center><table border="0" cellpadding="20" cellspacing="0" width="470" height="250" borderColorDark="black" borderColorLight="black"><tr><td valign="top" borderColorDark="#ffffff" borderColorLight="#ffffff">
|
||||
$ DATA
|
||||
</td></tr></table></center>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,90 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
|
||||
<title>
|
||||
$ TITLE
|
||||
</title>
|
||||
<style type="text/css" media="screen">
|
||||
<!--
|
||||
BODY {
|
||||
scrollbar-base-color : Black;
|
||||
scrollbar-3d-light-color : #D3D3D3;
|
||||
scrollbar-dark-shadow-color : #D3D3D3;
|
||||
scrollbar-shadow-color : #D3D3D3;
|
||||
scrollbar-highlight-color : #D3D3D3;
|
||||
scrollbar-arrow-color : Black;
|
||||
scrollbar-face-color : #D3D3D3;
|
||||
background-color : #FFFFFF;
|
||||
font-size : 8pt;
|
||||
font-family : "Trebuchet MS", Arial, Tahoma;
|
||||
}
|
||||
|
||||
.text, INPUT {
|
||||
font-family : "Trebuchet MS", Arial, Tahoma;
|
||||
font-size : 12px;
|
||||
}
|
||||
.status {
|
||||
font-family : "Trebuchet MS", Arial, Tahoma;
|
||||
font-size : 10px;
|
||||
}
|
||||
.title {
|
||||
font-family : "Trebuchet MS", Arial, Tahoma;
|
||||
font-size : 15pt;
|
||||
}
|
||||
|
||||
.button {
|
||||
font-family : Tahoma;
|
||||
border : 1px solid #C8C8C8;
|
||||
font-size : 11px;
|
||||
cursor : hand;
|
||||
background-color : #E5E5E5;
|
||||
}
|
||||
#background { position: absolute; z-index: 0; top: 0px; left: 0px; width: 650px; height: 450px; visibility: visible }
|
||||
#content { position: absolute; top: 77px; left: 133px; width: 399px; height: 283px; visibility: visible }
|
||||
#unrealIRCdLink { font-size: 8pt; font-family: "Trebuchet MS", Arial, Tahoma; position: absolute; top: 432px; left: 0px; width: 650px; height: 16px; visibility: visible; }
|
||||
#icon { z-index: 1; font-size: 8pt; font-family: "Trebuchet MS", Arial, Tahoma; position: absolute; top: 13px; left: 22px; width: 72px; height: 73px; visibility: visible; scrollbar-3d-light-color: #D3D3D3; scrollbar-arrow-color: Black; scrollbar-base-color: Black; scrollbar-dark-shadow-color: #D3D3D3; scrollbar-face-color: #D3D3D3; scrollbar-highlight-color: #D3D3D3; scrollbar-shadow-color: #D3D3D3 }
|
||||
|
||||
#button1img { z-index: 3; position: absolute; top: 150px; left: 11px; width: 111px; height: 23px; }
|
||||
#button1text { font-size: 10px; font-family: "Trebuchet MS", Arial, Tahoma; position: absolute; z-index: 2; top: 150px; left: 11px; width: 111px; height: 23px; padding: 1px}
|
||||
#button1bg { z-index: 1; position: absolute; top: 150px; left: 11px; width: 111px; height: 23px; }
|
||||
|
||||
#button2img { z-index: 3; position: absolute; top: 180px; left: 11px; width: 111px; height: 23px; }
|
||||
#button2text { font-size: 10px; font-family: "Trebuchet MS", Arial, Tahoma; position: absolute; z-index: 2; top: 180px; left: 11px; width: 111px; height: 23px; padding: 1px}
|
||||
#button2bg { z-index: 1; position: absolute; top: 180px; left: 11px; width: 111px; height: 23px; }
|
||||
--></style>
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff" text="black" link="black" vlink="black" alink="black">
|
||||
<div id="button1img"><a href="http://www.unrealircd.org" onMouseOver="document.button1.src='../sections/active.gif';" onMouseOut="document.button1.src='../sections/inactive.gif';"><img src="../sections/inactive.gif" name="button1" border="0"></a></div>
|
||||
<div id="button1text" align="center"><center>Operators</center></div>
|
||||
<div id="button1bg"><img src="../sections/bg.gif" border="0"></div>
|
||||
|
||||
<div id="button2img"><a href="http://www.unrealircd.org" onMouseOver="document.button2.src='../sections/active.gif';" onMouseOut="document.button2.src='../sections/inactive.gif';"><img src="../sections/inactive.gif" name="button2" border="0"></a></div>
|
||||
<div id="button2text" align="center"><center>Other stuff</center></div>
|
||||
<div id="button2bg"><img src="../sections/bg.gif" border="0"></div>
|
||||
|
||||
<div id="icon"><img
|
||||
$ ICON
|
||||
width="72" height="73" border="0"></div>
|
||||
<div id="background"><img src="../back/background.jpg" width="650" border="0"></div>
|
||||
<div id="unrealIRCdLink">
|
||||
<table width="650" height="18" border="0" cellpadding="0" cellspacing="0">
|
||||
<tr><td colspan="3"><img src="../back/line.gif" width="650"></td></tr>
|
||||
<tr width="650"><td valign="middle" align="right" height="9" width="97"><a target="_blank" href="http://www.unrealircd.com/" onMouseOver="document.unreallink.src='../unrealircd.com/active.gif';" onMouseOut="document.unreallink.src='../unrealircd.com/inactive.gif';"><img src="../unrealircd.com/inactive.gif" name="unreallink" border="0"></a></td>
|
||||
$ STATUSLINE
|
||||
|
||||
<!-- statusline <td align="center" height="9" width="450"><table width="398" height="9" border="0" cellspacing="0" cellpadding="0"><tr><td valign="top" align="center"><span class="status">Status Text goes here</span></td></tr></table></td><td align="right" height="9" width="159"><img src="../back/grad.jpg"></td></tr></table> -->
|
||||
|
||||
|
||||
</div>
|
||||
<div id="content">
|
||||
<div align="left"><i><span class="title">
|
||||
$ SECTION
|
||||
</span></i></div>
|
||||
<center><table border="0" cellpadding="20" cellspacing="0" width="470" height="250" borderColorDark="black" borderColorLight="black"><tr><td valign="top" borderColorDark="#ffffff" borderColorLight="#ffffff">
|
||||
$ DATA
|
||||
</td></tr></table></center>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
After Width: | Height: | Size: 7.9 KiB |
|
After Width: | Height: | Size: 8.2 KiB |
|
After Width: | Height: | Size: 8.2 KiB |
|
After Width: | Height: | Size: 8.7 KiB |
|
After Width: | Height: | Size: 8.7 KiB |
|
After Width: | Height: | Size: 7.7 KiB |
@@ -0,0 +1,81 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
|
||||
<title>loader</title>
|
||||
<csactions>
|
||||
<csaction name="3093F4DA0" class="Open Window" type="onevent" val0="section/opers" val1="" val2="650" val3="450" val4="false" val5="false" val6="false" val7="false" val8="false" val9="false" val10="false">
|
||||
</csactions>
|
||||
<csscriptdict>
|
||||
<script><!--
|
||||
function CSClickReturn () {
|
||||
var bAgent = window.navigator.userAgent;
|
||||
var bAppName = window.navigator.appName;
|
||||
if ((bAppName.indexOf("Explorer") >= 0) && (bAgent.indexOf("Mozilla/3") >= 0) && (bAgent.indexOf("Mac") >= 0))
|
||||
return true; // dont follow link
|
||||
else return false; // dont follow link
|
||||
}
|
||||
|
||||
CSStopExecution = false;
|
||||
function CSAction(array) {
|
||||
return CSAction2(CSAct, array);
|
||||
}
|
||||
function CSAction2(fct, array) {
|
||||
var result;
|
||||
for (var i=0;i<array.length;i++) {
|
||||
if(CSStopExecution) return false;
|
||||
var actArray = fct[array[i]];
|
||||
if(actArray == null) return false;
|
||||
var tempArray = new Array;
|
||||
for(var j=1;j<actArray.length;j++) {
|
||||
if((actArray[j] != null) && (typeof(actArray[j]) == "object") && (actArray[j].length == 2)) {
|
||||
if(actArray[j][0] == "VAR") {
|
||||
tempArray[j] = CSStateArray[actArray[j][1]];
|
||||
}
|
||||
else {
|
||||
if(actArray[j][0] == "ACT") {
|
||||
tempArray[j] = CSAction(new Array(new String(actArray[j][1])));
|
||||
}
|
||||
else
|
||||
tempArray[j] = actArray[j];
|
||||
}
|
||||
}
|
||||
else
|
||||
tempArray[j] = actArray[j];
|
||||
}
|
||||
result = actArray[0](tempArray);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
CSAct = new Object;
|
||||
|
||||
function CSOpenWindow(action) {
|
||||
var wf = "";
|
||||
wf = wf + "width=" + action[3];
|
||||
wf = wf + ",height=" + action[4];
|
||||
wf = wf + ",resizable=" + (action[5] ? "yes" : "no");
|
||||
wf = wf + ",scrollbars=" + (action[6] ? "yes" : "no");
|
||||
wf = wf + ",menubar=" + (action[7] ? "yes" : "no");
|
||||
wf = wf + ",toolbar=" + (action[8] ? "yes" : "no");
|
||||
wf = wf + ",directories=" + (action[9] ? "yes" : "no");
|
||||
wf = wf + ",location=" + (action[10] ? "yes" : "no");
|
||||
wf = wf + ",status=" + (action[11] ? "yes" : "no");
|
||||
window.open(action[1],action[2],wf);
|
||||
}
|
||||
|
||||
// --></script>
|
||||
</csscriptdict>
|
||||
<csactiondict>
|
||||
<script><!--
|
||||
CSAct[/*CMP*/ '3093F4DA0'] = new Array(CSOpenWindow,/*URL*/ 'section/opers','',650,450,false,false,false,false,false,false,false);
|
||||
|
||||
// --></script>
|
||||
</csactiondict>
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
<p><br><br><br><br>
|
||||
<center><a href="#" onclick="CSAction(new Array(/*CMP*/'3093F4DA0'));" csclick="3093F4DA0">Load the Configuration Console</a></center>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
After Width: | Height: | Size: 124 B |
|
After Width: | Height: | Size: 87 B |
|
After Width: | Height: | Size: 124 B |
|
After Width: | Height: | Size: 139 B |
|
After Width: | Height: | Size: 132 B |
@@ -0,0 +1,47 @@
|
||||
/************************************************************************
|
||||
* Unreal Internet Relay Chat Daemon, include/auth.h
|
||||
* Copyright (C) 2001 Carsten V. Munk (stskeeps@tspre.org)
|
||||
*
|
||||
* 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 1, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program 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, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
typedef struct {
|
||||
char *data;
|
||||
short type;
|
||||
} anAuthStruct;
|
||||
|
||||
#define AUTHTYPE_PLAINTEXT 0
|
||||
#define AUTHTYPE_UNIXCRYPT 1
|
||||
#define AUTHTYPE_MD5 2
|
||||
#define AUTHTYPE_SHA1 3
|
||||
#define AUTHTYPE_SSL_PUBKEY 4
|
||||
|
||||
#ifdef USE_SSL
|
||||
//#define AUTHENABLE_MD5
|
||||
//#define AUTHENABLE_SHA1
|
||||
//#define AUTHENABLE_SSL_PUBKEY
|
||||
/* OpenSSL provides a crypt() */
|
||||
#ifndef AUTHENABLE_UNIXCRYPT
|
||||
#define AUTHENABLE_UNIXCRYPT
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -4,17 +4,19 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#ifdef HAVE_REGEX
|
||||
#include <regex.h>
|
||||
#else
|
||||
#include "../extras/regex/regex.h"
|
||||
#endif
|
||||
|
||||
#define MAX_MATCH 1
|
||||
#define MAX_WORDLEN 64
|
||||
#define MAX_WORDS 30
|
||||
|
||||
#define PATTERN "\\w*%s\\w*"
|
||||
#define REPLACEWORD "<censored>"
|
||||
|
||||
char *stripbadwords(char *, int);
|
||||
int loadbadwords(char *, int);
|
||||
void freebadwords(void);
|
||||
char *stripbadwords(char *, int);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
|
||||
#ifndef __channel_include__
|
||||
#define __channel_include__
|
||||
#define CREATE 1 /* whether a channel should be
|
||||
created or just tested for existance */
|
||||
#define CREATE 1 /* whether a channel should be
|
||||
created or just tested for existance */
|
||||
|
||||
#define MODEBUFLEN 200
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
|
||||
#define ChannelExists(n) (find_channel(n, NullChn) != NullChn)
|
||||
|
||||
#define IsULine(cptr,sptr) (sptr->flags & FLAGS_ULINE)
|
||||
#define IsULine(sptr) (sptr->flags & FLAGS_ULINE)
|
||||
|
||||
/* NOTE: Timestamps will be added to MODE-commands, so never make
|
||||
* RESYNCMODES and MODEPARAMS higher than MAXPARA-3. DALnet servers
|
||||
@@ -38,7 +38,7 @@
|
||||
*/
|
||||
#include "msg.h"
|
||||
#define MAXMODEPARAMS (MAXPARA-2) /* Maximum modes processed */
|
||||
#define RESYNCMODES 12 /* Max modes per MODE in resync */
|
||||
#define MODEPARAMS 6 /* Max modes from user */
|
||||
#define RESYNCMODES 12 /* Max modes per MODE in resync */
|
||||
#define MODEPARAMS 6 /* Max modes from user */
|
||||
|
||||
#endif
|
||||
|
||||
@@ -7,21 +7,18 @@
|
||||
#ifndef CIO
|
||||
#define CIO
|
||||
|
||||
typedef struct tag_CioLine
|
||||
{
|
||||
BYTE *Data;
|
||||
WORD Len;
|
||||
struct tag_CioLine *Prev, *Next;
|
||||
typedef struct tag_CioLine {
|
||||
BYTE *Data;
|
||||
WORD Len;
|
||||
struct tag_CioLine *Prev, *Next;
|
||||
} CioLine;
|
||||
|
||||
typedef struct tag_CioWndInfo
|
||||
{
|
||||
typedef struct tag_CioWndInfo {
|
||||
CioLine *FirstLine, *CurLine;
|
||||
int Lines, Scroll;
|
||||
int Width, Height, XChar, YChar, YJunk, ScrollMe;
|
||||
HFONT hFont;
|
||||
BYTE FR, FG, FB;
|
||||
int Lines, Scroll;
|
||||
int Width, Height, XChar, YChar, YJunk, ScrollMe;
|
||||
HFONT hFont;
|
||||
BYTE FR, FG, FB;
|
||||
} CioWndInfo;
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -10,11 +10,12 @@ BOOL Cio_Init(HINSTANCE hInstance);
|
||||
|
||||
// Cio_Main.c
|
||||
LRESULT CALLBACK Cio_WndProc(HWND, UINT, WPARAM, LPARAM);
|
||||
HWND Cio_Create(HINSTANCE hInstance, HWND hParent, DWORD Style, int X, int Y, int W, int H);
|
||||
HWND Cio_Create(HINSTANCE hInstance, HWND hParent, DWORD Style, int X, int Y,
|
||||
int W, int H);
|
||||
BOOL Cio_WndCreate(HWND hWnd);
|
||||
BOOL Cio_WndPaint(HWND hWnd);
|
||||
BOOL Cio_WndDestroy(HWND hWnd);
|
||||
BOOL Cio_WndAddString(HWND hWnd, int Len, char *Buffer);
|
||||
BOOL Cio_WndSize(HWND hWnd, LPARAM lParam);
|
||||
void Cio_Scroll(HWND hWnd, CioWndInfo *CWI, int Scroll);
|
||||
void Cio_Scroll(HWND hWnd, CioWndInfo * CWI, int Scroll);
|
||||
BOOL Cio_PrintF(HWND hWnd, char *InBuf, ...);
|
||||
|
||||
@@ -31,12 +31,12 @@
|
||||
#endif
|
||||
|
||||
typedef struct Class {
|
||||
int class;
|
||||
int conFreq;
|
||||
int pingFreq;
|
||||
int maxLinks;
|
||||
long maxSendq;
|
||||
int links;
|
||||
int class;
|
||||
int conFreq;
|
||||
int pingFreq;
|
||||
int maxLinks;
|
||||
long maxSendq;
|
||||
int links;
|
||||
struct Class *next;
|
||||
} aClass;
|
||||
|
||||
@@ -57,15 +57,15 @@ typedef struct Class {
|
||||
#define FirstClass() classes
|
||||
#define NextClass(x) ((x)->next)
|
||||
|
||||
extern aClass *classes;
|
||||
extern aClass *classes;
|
||||
|
||||
extern aClass *find_class PROTO((int));
|
||||
extern int get_conf_class PROTO((aConfItem *));
|
||||
extern int get_client_class PROTO((aClient *));
|
||||
extern int get_client_ping PROTO((aClient *));
|
||||
extern int get_con_freq PROTO((aClass *));
|
||||
extern void add_class PROTO((int, int, int, int, long));
|
||||
extern void check_class PROTO((void));
|
||||
extern void initclass PROTO((void));
|
||||
extern aClass *find_class PROTO((int));
|
||||
extern int get_conf_class PROTO((aConfItem *));
|
||||
extern int get_client_class PROTO((aClient *));
|
||||
extern int get_client_ping PROTO((aClient *));
|
||||
extern int get_con_freq PROTO((aClass *));
|
||||
extern void add_class PROTO((int, int, int, int, long));
|
||||
extern void check_class PROTO((void));
|
||||
extern void initclass PROTO((void));
|
||||
|
||||
#endif /* __class_include__ */
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
#include <winsock.h>
|
||||
#include <process.h>
|
||||
#include <io.h>
|
||||
#include "struct.h"
|
||||
//#include "struct.h"
|
||||
#endif
|
||||
#include "dynconf.h"
|
||||
#include "ircsprintf.h"
|
||||
@@ -37,6 +37,9 @@
|
||||
#ifdef PARAMH
|
||||
#include <sys/param.h>
|
||||
#endif
|
||||
#if !defined(IN_ADDR)
|
||||
#include "sys.h"
|
||||
#endif
|
||||
|
||||
#ifndef PROTO
|
||||
#if __STDC__
|
||||
@@ -47,17 +50,21 @@
|
||||
#endif
|
||||
|
||||
#ifdef DEVELOP_CVS
|
||||
#define ID_CVS(x) static char id_cvs[] = x
|
||||
#define ID_Copyright(x) static char id_copyright[] = x
|
||||
#define ID_Notes(x) static char id_notes[] = x
|
||||
#else
|
||||
#define ID_CVS(x)
|
||||
#define ID_Copyright(x)
|
||||
#define ID_Notes(x)
|
||||
#endif
|
||||
|
||||
#define BMAGIC 0x4675636B596F754661736369737473
|
||||
|
||||
#define BASE_VERSION "Unreal"
|
||||
#ifndef _WIN32
|
||||
#define FDwrite(x,y,z) write(x, y, z)
|
||||
#else
|
||||
#define FDwrite(x,y,z) send(x, y, z, 0)
|
||||
#endif
|
||||
#ifndef NULL
|
||||
#define NULL 0
|
||||
#endif
|
||||
@@ -79,27 +86,29 @@
|
||||
|
||||
#if 0
|
||||
#ifndef MALLOCH
|
||||
char *malloc(), *calloc();
|
||||
void free();
|
||||
char *malloc(), *calloc();
|
||||
void free();
|
||||
#else
|
||||
#include MALLOCH
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define TS time_t
|
||||
|
||||
extern int match PROTO((char *, char *));
|
||||
|
||||
extern int match PROTO((char *, char *));
|
||||
#define mycmp(a,b) \
|
||||
( (toupper((a)[0])!=toupper((b)[0])) || smycmp((a)+1,(b)+1) )
|
||||
extern int smycmp PROTO((char *, char *));
|
||||
extern int smycmp PROTO((char *, char *));
|
||||
#ifndef GLIBC2_x
|
||||
extern int myncmp PROTO((char *, char *, int));
|
||||
#endif
|
||||
extern int myncmp PROTO((char *, char *, int));
|
||||
#endif
|
||||
|
||||
#ifdef NEED_STRTOK
|
||||
extern char *strtok2 PROTO((char *, char *));
|
||||
extern char *strtok2 PROTO((char *, char *));
|
||||
#endif
|
||||
#ifdef NEED_STRTOKEN
|
||||
extern char *strtoken PROTO((char **, char *, char *));
|
||||
extern char *strtoken PROTO((char **, char *, char *));
|
||||
#endif
|
||||
#ifdef NEED_INET_ADDR
|
||||
extern unsigned long inet_addr PROTO((char *));
|
||||
@@ -116,7 +125,7 @@ extern char *inet_ntoa PROTO((struct IN_ADDR));
|
||||
extern int inet_netof PROTO((struct IN_ADDR));
|
||||
#endif
|
||||
|
||||
int global_count, max_global_count;
|
||||
int global_count, max_global_count;
|
||||
extern char *myctime PROTO((time_t));
|
||||
extern char *strtoken PROTO((char **, char *, char *));
|
||||
|
||||
@@ -133,6 +142,10 @@ extern char *strtoken PROTO((char **, char *, char *));
|
||||
|
||||
extern u_char tolowertab[], touppertab[];
|
||||
|
||||
#if defined(CHINESE_NICK) || defined(JAPANESE_NICK)
|
||||
#define USE_LOCALE
|
||||
#endif
|
||||
|
||||
#ifndef USE_LOCALE
|
||||
#undef tolower
|
||||
#define tolower(c) (tolowertab[(c)])
|
||||
@@ -187,40 +200,138 @@ extern unsigned char char_atribs[];
|
||||
#define ispunct(c) (!(char_atribs[(u_char)(c)]&(CNTRL|ALPHA|DIGIT)))
|
||||
#endif
|
||||
|
||||
// #ifndef DMALLOC
|
||||
extern char *MyMalloc();
|
||||
// #else
|
||||
// #define MyMalloc malloc
|
||||
// #define MyRealloc realloc
|
||||
// #define MyFree free
|
||||
// #endif
|
||||
extern void flush_connections();
|
||||
extern struct SLink *find_user_link(/* struct SLink *, struct Client * */);
|
||||
#ifndef MALLOCD
|
||||
#define MyFree free
|
||||
#define MyMalloc malloc
|
||||
#define MyRealloc realloc
|
||||
#else
|
||||
#define MyFree(x) ircd_log("%s:%i: free %02x", __FILE__, __LINE__, x); free(x)
|
||||
#define MyMalloc(x) StsMalloc(x, __FILE__, __LINE__)
|
||||
#define MyRealloc realloc
|
||||
static char *StsMalloc(size_t size, char *file, long line)
|
||||
{
|
||||
void *x;
|
||||
|
||||
x = malloc(size);
|
||||
ircd_log("%s:%i: malloc %02x", file, line, x);
|
||||
return x;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
extern struct SLink *find_user_link( /* struct SLink *, struct Client * */ );
|
||||
|
||||
#define EVENT_HASHVALUE 337
|
||||
#define EVENT_CHECKIT match
|
||||
#define EVENT_CRC unreallogo
|
||||
/*
|
||||
* Protocol support text. DO NO CHANGE THIS unless you know what
|
||||
* you are doing.
|
||||
*/
|
||||
#define PROTOCTL_CLIENT "TOKEN WATCH=128 SAFELIST HCN PREFIX=@+%"
|
||||
#define PROTOCTL_SERVER "NOQUIT TOKEN NICKv2 SJOIN SJOIN2 UMODE2 ALN"
|
||||
|
||||
#ifdef ZIP_LINKS
|
||||
#define ZIPSTUFF " ZIP"
|
||||
#else
|
||||
#define ZIPSTUFF ""
|
||||
#endif
|
||||
|
||||
/* IRCu/Hybrid/Unreal way now :) -Stskeeps */
|
||||
|
||||
#define PROTOCTL_CLIENT \
|
||||
" MAP" \
|
||||
" KNOCK" \
|
||||
" SAFELIST" \
|
||||
" HCN" \
|
||||
" WALLCHOPS" \
|
||||
" WATCH=%i" \
|
||||
" SILENCE=%i" \
|
||||
" MODES=%i" \
|
||||
" MAXCHANNELS=%i" \
|
||||
" MAXBANS=%i" \
|
||||
" NICKLEN=%i" \
|
||||
" TOPICLEN=%i" \
|
||||
" KICKLEN=%i" \
|
||||
" CHANTYPES=%s" \
|
||||
" PREFIX=%s" \
|
||||
" CHANMODES=%s,%s,%s,%s" \
|
||||
" NETWORK=%s" \
|
||||
" :are supported by this server"
|
||||
|
||||
#define PROTOCTL_PARAMETERS MAXWATCH, \
|
||||
MAXSILES, \
|
||||
MAXMODEPARAMS, \
|
||||
MAXCHANNELSPERUSER, \
|
||||
MAXBANS, \
|
||||
NICKLEN, \
|
||||
TOPICLEN, \
|
||||
TOPICLEN, \
|
||||
"#", \
|
||||
"(ohv)@%+", \
|
||||
"ohvbeqa", \
|
||||
"k", \
|
||||
"lfL", \
|
||||
"psmntirRcOAQKVHGCuzN", \
|
||||
ircnet005
|
||||
|
||||
/* Server-Server PROTOCTL -Stskeeps */
|
||||
#define PROTOCTL_SERVER "NOQUIT" \
|
||||
" TOKEN" \
|
||||
" NICKv2" \
|
||||
" SJOIN" \
|
||||
" SJOIN2" \
|
||||
" UMODE2" \
|
||||
" VL" \
|
||||
" SJ3" \
|
||||
" NS" \
|
||||
" SJB64" \
|
||||
ZIPSTUFF
|
||||
|
||||
#ifdef _WIN32
|
||||
/*
|
||||
* Used to display a string to the GUI interface.
|
||||
* Windows' internal strerror() function doesn't work with socket errors.
|
||||
*/
|
||||
extern int DisplayString(HWND hWnd, char *InBuf, ...);
|
||||
extern int DisplayString(HWND hWnd, char *InBuf, ...);
|
||||
#undef strerror
|
||||
// winlocal
|
||||
#else
|
||||
typedef int SOCKET;
|
||||
#define INVALID_SOCKET -1
|
||||
// winlocal
|
||||
#endif
|
||||
|
||||
#if defined(__FreeBSD__) || defined(__APPLE__)
|
||||
extern char *malloc_options;
|
||||
#endif
|
||||
|
||||
extern int lu_noninv, lu_inv, lu_serv, lu_oper,
|
||||
lu_unknown, lu_channel, lu_lu, lu_lulocal, lu_lserv,
|
||||
lu_clu, lu_mlu, lu_cglobalu, lu_mglobalu;
|
||||
|
||||
time_t now;
|
||||
extern int lu_noninv, lu_inv, lu_serv, lu_oper,
|
||||
lu_unknown, lu_channel, lu_lu, lu_lulocal, lu_lserv,
|
||||
lu_clu, lu_mlu, lu_cglobalu, lu_mglobalu;
|
||||
|
||||
TS now;
|
||||
|
||||
#if defined(__STDC__)
|
||||
#define __const const
|
||||
#define __signed signed
|
||||
#define __volatile volatile
|
||||
#ifndef __GNUC__
|
||||
#define __inline
|
||||
#endif
|
||||
|
||||
#else
|
||||
#ifndef __GNUC__
|
||||
#define __const
|
||||
#define __inline
|
||||
#define __signed
|
||||
#define __volatile
|
||||
#ifndef NO_ANSI_KEYWORDS
|
||||
#define const /* delete ANSI C keywords */
|
||||
#define inline
|
||||
#define signed
|
||||
#define volatile
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* __common_include__ */
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
* Copyright (C) 1990 Jarkko Oikarinen
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*
|
||||
* 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 1, or (at your option)
|
||||
@@ -23,7 +23,7 @@
|
||||
#define __config_include__
|
||||
|
||||
#include "setup.h"
|
||||
#include "settings.h"
|
||||
|
||||
/*
|
||||
*
|
||||
* NOTICE
|
||||
@@ -44,14 +44,14 @@
|
||||
#undef WIN32_SPECIFY
|
||||
|
||||
#ifdef WIN32_SPECIFY
|
||||
#define WIN32_PORTER ""
|
||||
#define WIN32_PORTER "McSkaf"
|
||||
#define WIN32_URL ""
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Define this if you're testing/debugging/programming.
|
||||
*/
|
||||
* Define this if you're testing/debugging/programming.
|
||||
#undef DEBUG
|
||||
*/
|
||||
|
||||
/* Type of host. These should be made redundant somehow. -avalon */
|
||||
|
||||
@@ -59,27 +59,21 @@
|
||||
/* HPUX Nothing needed (A.08/A.09) */
|
||||
/* ULTRIX Nothing needed (4.2) */
|
||||
/* OSF Nothing needed (1.2) */
|
||||
/* #undef AIX /* IBM ugly so-called Unix, AIX */
|
||||
/* #undef MIPS /* MIPS Unix */
|
||||
/* #undef AIX IBM ugly so-called Unix, AIX */
|
||||
/* #undef MIPS MIPS Unix */
|
||||
/* SGI Nothing needed (IRIX 4.0.4) */
|
||||
/* #undef SVR3 /* SVR3 stuff - being worked on where poss. */
|
||||
/* #undef DYNIXPTX /* Sequents Brain-dead Posix implement. */
|
||||
/* #undef SOL20 /* Solaris2 */
|
||||
/* #undef ESIX /* ESIX */
|
||||
/* #undef NEXT /* NeXTStep */
|
||||
/* #undef SVR4 /* */
|
||||
/* #undef SVR3 SVR3 stuff - being worked on where poss. */
|
||||
/* #undef DYNIXPTX Sequents Brain-dead Posix implement. */
|
||||
/* #undef SOL20 Solaris2 */
|
||||
/* #undef ESIX ESIX */
|
||||
/* #undef NEXT NeXTStep */
|
||||
/* #undef SVR4 */
|
||||
|
||||
/* Additional flags to give FreeBSD's malloc, only play with this if you
|
||||
* know what you're doing.
|
||||
*/
|
||||
|
||||
|
||||
#define MALLOC_FLAGS_EXTRA ""
|
||||
/*
|
||||
ConferenceRoom Java Client Hack -Fish
|
||||
if you want it to work #define CONFROOM_JAVA_PORT <port>
|
||||
where port MUST be a seperate port java clients connects on ..
|
||||
*/
|
||||
#undef CONFROOM_JAVA_PORT
|
||||
|
||||
/*
|
||||
dog3/comstud ircd fdlists
|
||||
@@ -88,17 +82,80 @@
|
||||
|
||||
#undef NO_FDLIST
|
||||
|
||||
/*
|
||||
* Defining this will allow all ircops to see people in +s channels
|
||||
* By default, only net/tech admins can see this
|
||||
*/
|
||||
#undef SEE_SECRET
|
||||
|
||||
/*
|
||||
* This allows you to see modes in /list
|
||||
*/
|
||||
#define LIST_SHOW_MODES
|
||||
|
||||
/*
|
||||
* Admin's chat...
|
||||
*/
|
||||
#define ADMINCHAT 1
|
||||
|
||||
/*
|
||||
* If we should catch SIGSEGVs..
|
||||
*/
|
||||
#define PROPER_COREDUMP
|
||||
|
||||
/*
|
||||
* be compatible with older cloak keys? If you link to servers beta4 and
|
||||
* earlier without this the cloak keys will produce diff results
|
||||
* Not recommended, however, as beta4 and earlier 3.2 has an insecure
|
||||
* cloak algo -griever
|
||||
*/
|
||||
#undef COMPAT_BETA4_KEYS
|
||||
|
||||
/*
|
||||
* Kill logging -otherguy
|
||||
*/
|
||||
#undef KILL_LOGGING
|
||||
|
||||
/*
|
||||
If you want SHUN_NOTICES, define this
|
||||
*/
|
||||
#undef SHUN_NOTICES
|
||||
|
||||
/*
|
||||
If you want to support chinese and/or japanese nicks
|
||||
*/
|
||||
#undef CHINESE_NICK
|
||||
#undef JAPANESE_NICK
|
||||
|
||||
/*
|
||||
Remote rehash
|
||||
*/
|
||||
#define REMOTE_REHASH
|
||||
|
||||
/*
|
||||
/*
|
||||
Stripbadwords patch
|
||||
*/
|
||||
#define STRIPBADWORDS
|
||||
|
||||
/*
|
||||
* NO_OPEROVERRIDE
|
||||
* This will disable OperMode, OperTopic and Banwalks
|
||||
*/
|
||||
#undef NO_OPEROVERRIDE
|
||||
|
||||
/*
|
||||
* NAZIISH_CHBAN_HANDLING (formerly ANNOYING_BAN_THING)
|
||||
* Reject bans that are matched by existing bans, causes chanserv
|
||||
* To flood-kick an akicked user if their akick is matched by another
|
||||
* Ban, but if you don't mind, this can free up ban list space I guess
|
||||
#undef NAZIISH_CHBAN_HANDLING
|
||||
|
||||
/*
|
||||
* Disable /sethost, /setident, /chgname, /chghost, /chgident
|
||||
*/
|
||||
#undef DISABLE_USERMOD
|
||||
|
||||
/*
|
||||
Ident checking
|
||||
#define this to disable ident checking
|
||||
*/
|
||||
@@ -109,49 +166,13 @@
|
||||
*
|
||||
* This enables the spoof protection.
|
||||
*/
|
||||
/* #define NOSPOOF 1 /* */
|
||||
|
||||
/*
|
||||
*
|
||||
* This controls the "nospoof" system. These numbers are "seeds" of the
|
||||
* "random" number generating formula. Choose any number you like in the
|
||||
* range of 0x00000000 to 0xFFFFFFFF. Don't tell anyone these numbers, and
|
||||
* don't use the default ones. Change both #define NOSPOOF... lines below.
|
||||
*
|
||||
* Other data is mixed in as well, but these guarantee a per-server secret.
|
||||
* Also, these values need not remain constant over compilations... Change
|
||||
* them as often as you like.
|
||||
*/
|
||||
#ifdef NOSPOOF
|
||||
|
||||
#ifndef NOSPOOF_SEED01
|
||||
#define NOSPOOF_SEED01 0x12345678
|
||||
#endif
|
||||
|
||||
#ifndef NOSPOOF_SEED02
|
||||
#define NOSPOOF_SEED02 0x87654321
|
||||
#endif
|
||||
|
||||
#endif /* NOSPOOF */
|
||||
/* #define NOSPOOF 1 */
|
||||
|
||||
/*
|
||||
* HOSTILENAME - Define this if you want the hostile username patch included,
|
||||
* it will strip characters that are not 0-9,a-z,A-Z,_,- or .
|
||||
*/
|
||||
#define HOSTILENAME /* */
|
||||
|
||||
/*
|
||||
* Define this to prevent mixed case userids that clonebots use. However
|
||||
* this affects the servers running telclients WLD* FIN* etc.
|
||||
*/
|
||||
#undef DISALLOW_MIXED_CASE
|
||||
|
||||
/*
|
||||
* Define this if you wish to ignore the case of the first character of
|
||||
* the user id when disallowing mixed case. This allows PC users to
|
||||
* enter the more intuitive first name with the first letter capitalised
|
||||
*/
|
||||
#define IGNORE_CASE_FIRST_CHAR
|
||||
#define HOSTILENAME /* */
|
||||
|
||||
/*
|
||||
** Nick flood limit
|
||||
@@ -161,7 +182,7 @@
|
||||
** Define NICK_DELAY if you want this feature.
|
||||
*/
|
||||
|
||||
#define NICK_DELAY 15 /* recommended value 15 */
|
||||
#define NICK_DELAY 15 /* recommended value 15 */
|
||||
|
||||
/*
|
||||
** Freelinks garbage collector -Stskeeps
|
||||
@@ -170,10 +191,10 @@
|
||||
** HOW_MANY_FREELINKS_ALLOWED - how many freelinks allowed
|
||||
*/
|
||||
#ifndef GARBAGE_COLLECT_EVERY
|
||||
#define GARBAGE_COLLECT_EVERY 600 /* default: 600 (10 mins) */
|
||||
#define GARBAGE_COLLECT_EVERY 600 /* default: 600 (10 mins) */
|
||||
#endif
|
||||
|
||||
#define HOW_MANY_FREELINKS_ALLOWED 200 /* default: 200 */
|
||||
#define HOW_MANY_FREELINKS_ALLOWED 200 /* default: 200 */
|
||||
|
||||
/*
|
||||
* Define this if you wish to output a *file* to a K lined client rather
|
||||
@@ -181,12 +202,17 @@
|
||||
*/
|
||||
#undef COMMENT_IS_FILE
|
||||
|
||||
/*
|
||||
* MAXUNKNOWNCONNECTIONSPERIP
|
||||
*/
|
||||
#define MAXUNKNOWNCONNECTIONSPERIP 3
|
||||
|
||||
|
||||
/* Do these work? I dunno... */
|
||||
|
||||
/* #undef VMS /* Should work for IRC client, not server */
|
||||
/* #undef MAIL50 /* If you're running VMS 5.0 */
|
||||
/* #undef PCS /* PCS Cadmus MUNIX, use with BSD flag! */
|
||||
/* #undef VMS Should work for IRC client, not server */
|
||||
/* #undef MAIL50 If you're running VMS 5.0 */
|
||||
/* #undef PCS PCS Cadmus MUNIX, use with BSD flag! */
|
||||
|
||||
/*
|
||||
* NOTE: On some systems, valloc() causes many problems.
|
||||
@@ -206,57 +232,41 @@
|
||||
* If your host supports varargs and has vsprintf(), vprintf() and vscanf()
|
||||
* C calls in its library, then you can define USE_VARARGS to use varargs
|
||||
* instead of imitation variable arg passing.
|
||||
*/
|
||||
#define USE_VARARGS
|
||||
|
||||
* NOTE: with current server code, varargs doesn't survive because it can't
|
||||
/* NOTE: with current server code, varargs doesn't survive because it can't
|
||||
* be used in a chain of 3 or more funtions which all have a variable
|
||||
* number of params. If anyone has a solution to this, please notify
|
||||
* the maintainer.
|
||||
*/
|
||||
|
||||
/* #undef DEBUGMODE /* define DEBUGMODE to enable debugging mode.*/
|
||||
/* #undef DEBUGMODE define DEBUGMODE to enable debugging mode.*/
|
||||
|
||||
/* We not check whether this is ok at compile time -- codemastr */
|
||||
/*
|
||||
* defining FORCE_CORE will automatically "unlimit core", forcing the
|
||||
* server to dump a core file whenever it has a fatal error. -mlv
|
||||
*/
|
||||
#define FORCE_CORE
|
||||
/* #define FORCE_CORE */
|
||||
|
||||
/*
|
||||
* Full pathnames and defaults of irc system's support files. Please note that
|
||||
* these are only the recommened names and paths. Change as needed.
|
||||
* You must define these to something, even if you don't really want them.
|
||||
*/
|
||||
#define CPATH "ircd.conf" /* server configuration file */
|
||||
#define CPATH "unrealircd.conf" /* server configuration file */
|
||||
#define MPATH "ircd.motd" /* server MOTD file */
|
||||
#define RPATH "ircd.rules" /* server rules file */
|
||||
#define RPATH "ircd.rules" /* server rules file */
|
||||
#define ZPATH "ircd.notes" /* server notes */
|
||||
#define ZCONF "networks/unrealircd.conf" /* ircd configuration .. */
|
||||
#define OPATH "oper.motd" /* Operators MOTD file */
|
||||
#define ZCONF "networks/unrealircd.conf" /* ircd configuration .. */
|
||||
#define OPATH "oper.motd" /* Operators MOTD file */
|
||||
#define LPATH "debug.log" /* Where the debug file lives, if DEBUGMODE */
|
||||
#define PPATH "ircd.pid" /* file for server pid */
|
||||
#define lPATH "ircd.log" /* server log file */
|
||||
#define VPATH "ircd.svsmotd" /* Services MOTD append. */
|
||||
#define VPATH "ircd.svsmotd" /* Services MOTD append. */
|
||||
#define BPATH "bot.motd" /* Bot MOTD */
|
||||
#define IRCDTUNE "ircd.tune" /* tuning .. */
|
||||
|
||||
/*
|
||||
* Define this filename to maintain a list of persons who log
|
||||
* into this server. Logging will stop when the file does not exist.
|
||||
* Logging will be disable also if you do not define this.
|
||||
* FNAME_USERLOG just logs user connections, FNAME_OPERLOG logs every
|
||||
* successful use of /oper. These are either full paths or files within DPATH.
|
||||
*/
|
||||
#define FNAME_USERLOG "users.log"
|
||||
#define FNAME_OPERLOG "opers.log"
|
||||
|
||||
/* FAILOPER_WARN
|
||||
*
|
||||
* When defined, warns users on a failed oper attempt that it was/is logged
|
||||
* Only works when FNAME_OPERLOG is defined, and a logfile exists.
|
||||
* NOTE: Failed oper attempts are logged regardless.
|
||||
*/
|
||||
#define FAILOPER_WARN
|
||||
#define IRCDTUNE "ircd.tune" /* tuning .. */
|
||||
|
||||
/* CHROOTDIR
|
||||
*
|
||||
@@ -267,7 +277,7 @@
|
||||
*
|
||||
* You may want to define IRC_UID and IRC_GID
|
||||
*/
|
||||
/* #define CHROOTDIR /* */
|
||||
/* #define CHROOTDIR */
|
||||
|
||||
/* SHOW_INVISIBLE_LUSERS
|
||||
*
|
||||
@@ -278,13 +288,6 @@
|
||||
*/
|
||||
#define SHOW_INVISIBLE_LUSERS
|
||||
|
||||
|
||||
/* OPER_* defines
|
||||
*
|
||||
* See ./docs/example.conf for examples of how to restrict access for
|
||||
* your IRC Operators
|
||||
*/
|
||||
|
||||
/* MAXIMUM LINKS
|
||||
*
|
||||
* This define is useful for leaf nodes and gateways. It keeps you from
|
||||
@@ -323,14 +326,7 @@
|
||||
* starts up the server with a new conf file that has some extra
|
||||
* O-lines. So don't use this unless you're debugging.
|
||||
*/
|
||||
#define CMDLINE_CONFIG /* allow conf-file to be specified on command line */
|
||||
|
||||
/*
|
||||
* To use m4 as a preprocessor on the ircd.conf file, define M4_PREPROC.
|
||||
* The server will then call m4 each time it reads the ircd.conf file,
|
||||
* reading m4 output as the server's ircd.conf file.
|
||||
*/
|
||||
#undef M4_PREPROC
|
||||
#define CMDLINE_CONFIG /* allow conf-file to be specified on command line */
|
||||
|
||||
/*
|
||||
* If you wish to have the server send 'vital' messages about server
|
||||
@@ -349,11 +345,11 @@
|
||||
* If you use syslog above, you may want to turn some (none) of the
|
||||
* spurious log messages for KILL/SQUIT off.
|
||||
*/
|
||||
#undef SYSLOG_KILL /* log all operator kills to syslog */
|
||||
#undef SYSLOG_SQUIT /* log all remote squits for all servers to syslog */
|
||||
#undef SYSLOG_CONNECT /* log remote connect messages for other all servs */
|
||||
#undef SYSLOG_USERS /* send userlog stuff to syslog */
|
||||
#undef SYSLOG_OPER /* log all users who successfully become an Op */
|
||||
#undef SYSLOG_KILL /* log all operator kills to syslog */
|
||||
#undef SYSLOG_SQUIT /* log all remote squits for all servers to syslog */
|
||||
#undef SYSLOG_CONNECT /* log remote connect messages for other all servs */
|
||||
#undef SYSLOG_USERS /* send userlog stuff to syslog */
|
||||
#undef SYSLOG_OPER /* log all users who successfully become an Op */
|
||||
|
||||
/*
|
||||
* If you want to log to a different facility than DAEMON, change
|
||||
@@ -363,15 +359,6 @@
|
||||
#endif /* USE_SYSLOG */
|
||||
|
||||
/*
|
||||
* IDLE_FROM_MSG
|
||||
*
|
||||
* Idle-time nullified only from privmsg, if undefined idle-time
|
||||
* is nullified from everything except ping/pong.
|
||||
* Added 3.8.1992, kny@cs.hut.fi (nam)
|
||||
*/
|
||||
#define IDLE_FROM_MSG
|
||||
|
||||
/*
|
||||
* Size of the LISTEN request. Some machines handle this large
|
||||
* without problem, but not all. It defaults to 5, but can be
|
||||
* raised if you know your machine handles it.
|
||||
@@ -404,7 +391,7 @@
|
||||
|
||||
/*
|
||||
* Ok this one is being changed. it is advisable never to run anything that
|
||||
* uses sockets etc. and has the potential for the outside world to connect to it
|
||||
* uses sockets etc. and has the potential for the outside world to connect to it
|
||||
* to run as root... Hackers do things like buffer overruns, and get dumped on
|
||||
* a shell with root access effectivley ... so DONT do it.. if a program uses a
|
||||
* port <1024 it will run as root, once the program has binded to the socket it
|
||||
@@ -413,13 +400,13 @@
|
||||
* If you _must_ insist on running as root and not wanting the program to change its
|
||||
* UID, then define BIG_SECURITY_HOLE below
|
||||
*/
|
||||
#if !defined(_WIN32) && !defined(_AMIGA)
|
||||
/* Change This Line Below \/ */
|
||||
#define BIG_SECURITY_HOLE
|
||||
#if !defined(_WIN32)
|
||||
/* Change This Line Below \/ */
|
||||
#define BIG_SECURITY_HOLE
|
||||
/* Its the one above ^^^^^^^ */
|
||||
#ifndef BIG_SECUTIRY_HOLE
|
||||
#define IRC_UID un_uid
|
||||
#define IRC_GID un_gid
|
||||
#ifndef BIG_SECURITY_HOLE
|
||||
#define IRC_UID un_uid
|
||||
#define IRC_GID un_gid
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -432,11 +419,7 @@
|
||||
*/
|
||||
#define CLIENT_FLOOD 8000
|
||||
|
||||
/* Define this if you want the server to accomplish ircII standard */
|
||||
/* Sends an extra NOTICE in the beginning of client connection */
|
||||
#undef IRCII_KLUDGE
|
||||
|
||||
/*
|
||||
/*
|
||||
* Define your network service names here.
|
||||
*/
|
||||
#define ChanServ "ChanServ"
|
||||
@@ -445,7 +428,8 @@
|
||||
#define OperServ "OperServ"
|
||||
#define HelpServ "HelpServ"
|
||||
#define StatServ "StatServ"
|
||||
|
||||
#define InfoServ "InfoServ"
|
||||
#define BotServ "BotServ"
|
||||
/*
|
||||
* How many seconds in between simultaneous nick changes?
|
||||
*/
|
||||
@@ -459,33 +443,6 @@
|
||||
#define MAXTARGETS 20
|
||||
#define TARGET_DELAY 120
|
||||
|
||||
/*
|
||||
* Would you like all clients to see the progress of their connections?
|
||||
*/
|
||||
|
||||
#define SHOWCONNECTINFO
|
||||
|
||||
/*
|
||||
* SOCKS proxy checker
|
||||
*
|
||||
* At the moment this isn't an ideal solution, however it's better
|
||||
* than nothing. Smaller servers shouldn't notice much of a performance
|
||||
* hit, larger servers might have to reduce their Y-lines. In either
|
||||
* case it's advisable to increase the number of FD's you define by
|
||||
* about 10%.
|
||||
*
|
||||
* This determines the port on the local ircd machine that the open
|
||||
* SOCKS server test attempts to connect back to. The default should
|
||||
* be fine except for those unusual situations where the default
|
||||
* port is in use for some reason.
|
||||
*
|
||||
* Undefining this will eliminate the checker from ircd.
|
||||
*/
|
||||
#define SOCKSPORT 6013
|
||||
|
||||
/* Define default Z:line time for SOCKS -taz */
|
||||
#define ZLINE_TIME 300
|
||||
|
||||
/* STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP */
|
||||
|
||||
/* You shouldn't change anything below this line, unless absolutely needed. */
|
||||
@@ -494,7 +451,7 @@
|
||||
* Port where ircd resides. NOTE: This *MUST* be greater than 1024 if you
|
||||
* plan to run ircd under any other uid than root.
|
||||
*/
|
||||
#define PORTNUM 6667 /* 6667 is default */
|
||||
#define PORTNUM 6667 /* 6667 is default */
|
||||
|
||||
/*
|
||||
* Maximum number of network connections your server will allow. This should
|
||||
@@ -507,7 +464,7 @@
|
||||
* 1 server = 1 connection, 1 user = 1 connection.
|
||||
* This should be at *least* 3: 1 listen port, 1 dns port + 1 client
|
||||
*
|
||||
* Note: this figure will be too high for most systems. If you get an
|
||||
* Note: this figure will be too high for most systems. If you get an
|
||||
* fd-related error on compile, change this to 256.
|
||||
*
|
||||
* Windows users: This should be a fairly high number. Some operations
|
||||
@@ -535,12 +492,12 @@
|
||||
* chasing possible for mode and kick.
|
||||
*/
|
||||
#ifndef NICKNAMEHISTORYLENGTH
|
||||
#define NICKNAMEHISTORYLENGTH 2000
|
||||
#define NICKNAMEHISTORYLENGTH 2000
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Time interval to wait and if no messages have been received, then check for
|
||||
* PINGFREQUENCY and CONNECTFREQUENCY
|
||||
* PINGFREQUENCY and CONNECTFREQUENCY
|
||||
*/
|
||||
#define TIMESEC 60 /* Recommended value: 60 */
|
||||
|
||||
@@ -553,7 +510,7 @@
|
||||
#define PINGFREQUENCY 120 /* Recommended value: 120 */
|
||||
|
||||
/*
|
||||
* If the connection to to uphost is down, then attempt to reconnect every
|
||||
* If the connection to to uphost is down, then attempt to reconnect every
|
||||
* CONNECTFREQUENCY seconds.
|
||||
*/
|
||||
#define CONNECTFREQUENCY 600 /* Recommended value: 600 */
|
||||
@@ -581,23 +538,13 @@
|
||||
* CONNECTTIMEOUT - 10 seconds for its host to respond to an ident lookup
|
||||
* query and for a DNS answer to be retrieved.
|
||||
*/
|
||||
#define CONNECTTIMEOUT 60 /* Recommended value: 60 */
|
||||
#define CONNECTTIMEOUT 30 /* Recommended value: 60 */
|
||||
|
||||
/*
|
||||
* Max time from the nickname change that still causes KILL
|
||||
* automaticly to switch for the current nick of that user. (seconds)
|
||||
*/
|
||||
#define KILLCHASETIMELIMIT 90 /* Recommended value: 90 */
|
||||
|
||||
|
||||
/*
|
||||
* SendQ-Always causes the server to put all outbound data into the sendq and
|
||||
* flushing the sendq at the end of input processing. This should cause more
|
||||
* efficient write's to be made to the network.
|
||||
* There *shouldn't* be any problems with this method.
|
||||
* -avalon
|
||||
*/
|
||||
#define SENDQ_ALWAYS
|
||||
#define KILLCHASETIMELIMIT 90 /* Recommended value: 90 */
|
||||
|
||||
/* ------------------------- END CONFIGURATION SECTION -------------------- */
|
||||
#define MOTD MPATH
|
||||
@@ -618,11 +565,6 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef _SEQUENT_ /* Dynix 1.4 or 2.0 Generic Define.. */
|
||||
#undef BSD
|
||||
#define SYSV /* Also #define SYSV */
|
||||
#endif
|
||||
|
||||
#ifdef ultrix
|
||||
#define ULTRIX
|
||||
#endif
|
||||
@@ -643,21 +585,24 @@
|
||||
#endif
|
||||
|
||||
#ifdef DEBUGMODE
|
||||
extern void debug();
|
||||
# define Debug(x) debug x
|
||||
# define LOGFILE LPATH
|
||||
#ifndef _WIN32
|
||||
extern void debug(int, char *, ...);
|
||||
#define Debug(x) debug x
|
||||
#else
|
||||
# define Debug(x) ;
|
||||
# if VMS
|
||||
# define LOGFILE "NLA0:"
|
||||
# else
|
||||
# define LOGFILE "/dev/null"
|
||||
# endif
|
||||
extern void debug(int, char *, ...);
|
||||
#define Debug(x) debug x
|
||||
#endif
|
||||
#define LOGFILE LPATH
|
||||
#else
|
||||
#define Debug(x) ;
|
||||
#if VMS
|
||||
#define LOGFILE "NLA0:"
|
||||
#else
|
||||
#define LOGFILE "/dev/null"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef ENABLE_SUMMON
|
||||
# undef LEAST_IDLE
|
||||
#endif
|
||||
#undef LEAST_IDLE
|
||||
|
||||
#if defined(mips) || defined(PCS)
|
||||
#undef SYSV
|
||||
@@ -665,72 +610,57 @@ extern void debug();
|
||||
|
||||
#ifdef MIPS
|
||||
#undef BSD
|
||||
#define BSD 1 /* mips only works in bsd43 environment */
|
||||
#endif
|
||||
|
||||
#ifdef sequent /* Dynix (sequent OS) */
|
||||
#define SEQ_NOFILE 128 /* set to your current kernel impl, */
|
||||
#endif /* max number of socket connections */
|
||||
|
||||
#ifdef _SEQUENT_
|
||||
#define DYNIXPTX
|
||||
#define BSD 1 /* mips only works in bsd43 environment */
|
||||
#endif
|
||||
|
||||
#ifdef BSD_RELIABLE_SIGNALS
|
||||
# if defined(SYSV_UNRELIABLE_SIGNALS) || defined(POSIX_SIGNALS)
|
||||
error You stuffed up config.h signals #defines use only one.
|
||||
error You stuffed up config.h signals
|
||||
#defines use only one.
|
||||
# endif
|
||||
#define HAVE_RELIABLE_SIGNALS
|
||||
#endif
|
||||
|
||||
#ifdef SYSV_UNRELIABLE_SIGNALS
|
||||
# ifdef POSIX_SIGNALS
|
||||
error You stuffed up config.h signals #defines use only one.
|
||||
error You stuffed up config.h signals
|
||||
#defines use only one.
|
||||
# endif
|
||||
#undef HAVE_RELIABLE_SIGNALS
|
||||
#endif
|
||||
|
||||
#ifdef POSIX_SIGNALS
|
||||
#define HAVE_RELIABLE_SIGNALS
|
||||
#endif
|
||||
|
||||
/*
|
||||
* safety margin so we can always have one spare fd, for motd/authd or
|
||||
* whatever else. -4 allows "safety" margin of 1 and space reserved.
|
||||
*/
|
||||
#define MAXCLIENTS (MAXCONNECTIONS-4)
|
||||
|
||||
#ifdef HAVECURSES
|
||||
# define DOCURSES
|
||||
#else
|
||||
# undef DOCURSES
|
||||
#endif
|
||||
|
||||
#ifdef HAVETERMCAP
|
||||
# define DOTERMCAP
|
||||
#else
|
||||
# undef DOTERMCAP
|
||||
#endif
|
||||
|
||||
# define stricmp strcasecmp
|
||||
# define strnicmp strncasecmp
|
||||
|
||||
#if defined(CLIENT_FLOOD)
|
||||
# if (CLIENT_FLOOD > 8000)
|
||||
# define CLIENT_FLOOD 8000
|
||||
# else
|
||||
# if (CLIENT_FLOOD < 512)
|
||||
error CLIENT_FLOOD needs redefining.
|
||||
error CLIENT_FLOOD needs redefining.
|
||||
# endif
|
||||
# endif
|
||||
#else
|
||||
error CLIENT_FLOOD undefined
|
||||
error CLIENT_FLOOD undefined
|
||||
#endif
|
||||
|
||||
#if (NICKNAMEHISTORYLENGTH < 100)
|
||||
# define NICKNAMEHISTORYLENGTH 100
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Some ugliness for AIX platforms.
|
||||
*/
|
||||
@@ -748,13 +678,11 @@ error CLIENT_FLOOD undefined
|
||||
# define BSD_INCLUDES
|
||||
#endif
|
||||
/*
|
||||
* This is just to make Solaris porting easier -- codemastr
|
||||
* This is just to make Solaris porting easier -- codemastr
|
||||
*/
|
||||
#if defined(SOL20) || defined(SOL25) || defined(SOL26) || defined(SOL27)
|
||||
#define _SOLARIS
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* Cleaup for WIN32 platform.
|
||||
*/
|
||||
@@ -763,17 +691,23 @@ error CLIENT_FLOOD undefined
|
||||
#endif
|
||||
/* use cflag longmodes */
|
||||
#define USE_LONGMODE
|
||||
#define Reg1 register
|
||||
#define Reg2 register
|
||||
#define Reg3 register
|
||||
#define Reg4 register
|
||||
#define Reg5 register
|
||||
#define Reg6 register
|
||||
#define Reg7 register
|
||||
#define Reg8 register
|
||||
#define Reg9 register
|
||||
#define Reg10 register
|
||||
|
||||
#endif /* __config_include__ */
|
||||
#ifdef NEED_BCMP
|
||||
#define bcmp memcmp
|
||||
#endif
|
||||
#ifdef NEED_BCOPY
|
||||
#define bcopy(a,b,c) memcpy(b,a,c)
|
||||
#endif
|
||||
#ifdef NEED_BZERO
|
||||
#define bzero(a,b) memset(a,0,b)
|
||||
#endif
|
||||
#ifdef HAVE_CRYPT
|
||||
#define AUTHENABLE_UNIXCRYPT
|
||||
#endif
|
||||
#if defined(AIX) && defined(_XOPEN_SOURCE_EXTENDED) && _XOPEN_SOURCE_EXTENDED
|
||||
# define SOCK_LEN_TYPE size_t
|
||||
#else
|
||||
# define SOCK_LEN_TYPE int
|
||||
#endif
|
||||
|
||||
#endif /* __config_include__ */
|
||||
|
||||
|
||||
@@ -45,25 +45,14 @@
|
||||
** implementation of this package without changing the
|
||||
** interface.
|
||||
*/
|
||||
#if !defined(_SEQUENT_)
|
||||
typedef struct dbuf
|
||||
{
|
||||
u_int length; /* Current number of bytes stored */
|
||||
u_int offset; /* Offset to the first byte */
|
||||
struct dbufbuf *head; /* First data buffer, if length > 0 */
|
||||
typedef struct dbuf {
|
||||
u_int length; /* Current number of bytes stored */
|
||||
u_int offset; /* Offset to the first byte */
|
||||
struct dbufbuf *head; /* First data buffer, if length > 0 */
|
||||
/* added by mnystrom@mit.edu: */
|
||||
struct dbufbuf *tail; /* last data buffer, if length > 0 */
|
||||
} dbuf;
|
||||
#else
|
||||
typedef struct dbuf
|
||||
{
|
||||
uint length; /* Current number of bytes stored */
|
||||
uint offset; /* Offset to the first byte */
|
||||
struct dbufbuf *head; /* First data buffer, if length > 0 */
|
||||
/* added by mnystrom@mit.edu: */
|
||||
struct dbufbuf *tail; /* last data buffer, if length > 0 */
|
||||
} dbuf;
|
||||
#endif
|
||||
struct dbufbuf *tail; /* last data buffer, if length > 0 */
|
||||
} dbuf;
|
||||
|
||||
/*
|
||||
** And this 'dbufbuf' should never be referenced outside the
|
||||
** implementation of 'dbuf'--would be "hidden" if C had such
|
||||
@@ -73,11 +62,10 @@ typedef struct dbuf
|
||||
** as long as a pointer is 4 bytes, we get 2032 bytes for buffer
|
||||
** data after we take away a bit for malloc to play with. -avalon
|
||||
*/
|
||||
typedef struct dbufbuf
|
||||
{
|
||||
struct dbufbuf *next; /* Next data buffer, NULL if this is last */
|
||||
char data[2032]; /* Actual data stored here */
|
||||
} dbufbuf;
|
||||
typedef struct dbufbuf {
|
||||
struct dbufbuf *next; /* Next data buffer, NULL if this is last */
|
||||
char data[2032]; /* Actual data stored here */
|
||||
} dbufbuf;
|
||||
|
||||
/*
|
||||
** dbuf_put
|
||||
@@ -88,10 +76,10 @@ typedef struct dbufbuf
|
||||
** returns > 0, if operation successfull
|
||||
** < 0, if failed (due memory allocation problem)
|
||||
*/
|
||||
int dbuf_put PROTO((dbuf *, char *, int));
|
||||
int dbuf_put PROTO((dbuf *, char *, int));
|
||||
/* Dynamic buffer header */
|
||||
/* Pointer to data to be stored */
|
||||
/* Number of bytes to store */
|
||||
/* Pointer to data to be stored */
|
||||
/* Number of bytes to store */
|
||||
|
||||
/*
|
||||
** dbuf_get
|
||||
@@ -108,10 +96,10 @@ int dbuf_put PROTO((dbuf *, char *, int));
|
||||
** Negative return values indicate some unspecified
|
||||
** error condition, rather fatal...
|
||||
*/
|
||||
int dbuf_get PROTO(( dbuf *, char *, int));
|
||||
int dbuf_get PROTO((dbuf *, char *, int));
|
||||
/* Dynamic buffer header */
|
||||
/* Pointer to buffer to receive the data */
|
||||
/* Max amount of bytes that can be received */
|
||||
/* Pointer to buffer to receive the data */
|
||||
/* Max amount of bytes that can be received */
|
||||
|
||||
/*
|
||||
** dbuf_map, dbuf_delete
|
||||
@@ -138,8 +126,8 @@ int dbuf_get PROTO(( dbuf *, char *, int));
|
||||
** between map and delete functions...
|
||||
*/
|
||||
char *dbuf_map PROTO((dbuf *, int *));
|
||||
/* Dynamic buffer header */
|
||||
/* Return number of bytes accessible */
|
||||
/* Dynamic buffer header */
|
||||
/* Return number of bytes accessible */
|
||||
|
||||
int dbuf_delete PROTO((dbuf *, int));
|
||||
/* Dynamic buffer header */
|
||||
@@ -160,6 +148,6 @@ int dbuf_delete PROTO((dbuf *, int));
|
||||
*/
|
||||
#define DBufClear(dyn) dbuf_delete((dyn),DBufLength(dyn))
|
||||
|
||||
extern int dbuf_getmsg PROTO((dbuf *, char *, int));
|
||||
extern int dbuf_getmsg PROTO((dbuf *, char *, int));
|
||||
|
||||
#endif /* __dbuf_include__ */
|
||||
|
||||
@@ -26,71 +26,61 @@
|
||||
#define DYNCONF_CONF_VERSION "1.5"
|
||||
#define DYNCONF_NETWORK_VERSION "2.2"
|
||||
|
||||
typedef struct zNetwork aNetwork;
|
||||
struct zNetwork {
|
||||
unsigned x_inah : 1;
|
||||
char *x_ircnetwork;
|
||||
char *x_defserv;
|
||||
char *x_services_name;
|
||||
char *x_oper_host;
|
||||
char *x_admin_host;
|
||||
char *x_locop_host;
|
||||
char *x_sadmin_host;
|
||||
char *x_netadmin_host;
|
||||
char *x_coadmin_host;
|
||||
char *x_techadmin_host;
|
||||
char *x_hidden_host;
|
||||
char *x_netdomain;
|
||||
char *x_helpchan;
|
||||
char *x_stats_server;
|
||||
typedef struct zNetwork aNetwork;
|
||||
struct zNetwork {
|
||||
long key;
|
||||
long key2;
|
||||
long key3;
|
||||
long keycrc;
|
||||
unsigned x_inah:1;
|
||||
char *x_ircnetwork;
|
||||
char *x_ircnet005;
|
||||
char *x_defserv;
|
||||
char *x_services_name;
|
||||
char *x_oper_host;
|
||||
char *x_admin_host;
|
||||
char *x_locop_host;
|
||||
char *x_sadmin_host;
|
||||
char *x_netadmin_host;
|
||||
char *x_coadmin_host;
|
||||
char *x_hidden_host;
|
||||
char *x_prefix_quit;
|
||||
char *x_helpchan;
|
||||
char *x_stats_server;
|
||||
};
|
||||
|
||||
typedef struct zConfiguration aConfiguration;
|
||||
struct zConfiguration {
|
||||
unsigned som : 1;
|
||||
unsigned mode_x : 1;
|
||||
unsigned mode_i : 1;
|
||||
unsigned mode_stripbadwords : 1;
|
||||
unsigned truehub : 1;
|
||||
unsigned stop : 1;
|
||||
unsigned showopers : 1;
|
||||
unsigned killdiff : 1;
|
||||
unsigned hide_ulines : 1;
|
||||
unsigned allow_chatops : 1;
|
||||
unsigned webtv_support : 1;
|
||||
unsigned no_oper_hiding : 1;
|
||||
/* long nospoof_seed01;
|
||||
long nospoof_seed02; */
|
||||
long host_timeout;
|
||||
int host_retries;
|
||||
char *kline_address;
|
||||
char *include;
|
||||
char *domainname;
|
||||
char *domainmask; /* '*' + domainname */
|
||||
char *auto_join_chans;
|
||||
char *oper_auto_join_chans;
|
||||
int socksbantime;
|
||||
int maxchannelsperuser;
|
||||
char *socksbanmessage;
|
||||
char *socksquitmessage;
|
||||
aNetwork network;
|
||||
struct zConfiguration {
|
||||
unsigned som:1;
|
||||
unsigned hide_ulines:1;
|
||||
unsigned allow_chatops:1;
|
||||
unsigned webtv_support:1;
|
||||
unsigned no_oper_hiding:1;
|
||||
unsigned ident_check:1;
|
||||
unsigned fail_oper_warn:1;
|
||||
unsigned show_connect_info:1;
|
||||
long host_timeout;
|
||||
int host_retries;
|
||||
char *name_server;
|
||||
char *kline_address;
|
||||
long conn_modes;
|
||||
char *auto_join_chans;
|
||||
char *oper_auto_join_chans;
|
||||
char *oper_only_stats;
|
||||
int socksbantime;
|
||||
int maxchannelsperuser;
|
||||
int anti_spam_quit_message_time;
|
||||
char *socksbanmessage;
|
||||
char *socksquitmessage;
|
||||
aNetwork network;
|
||||
};
|
||||
|
||||
#ifndef DYNCONF_C
|
||||
extern aConfiguration iConf;
|
||||
extern aConfiguration iConf;
|
||||
#endif
|
||||
|
||||
// #define NOSPOOF_SEED01 iConf.nospoof_seed01
|
||||
// #define NOSPOOF_SEED02 iConf.nospoof_seed02
|
||||
#define KLINE_ADDRESS iConf.kline_address
|
||||
#define INCLUDE iConf.include
|
||||
#define DOMAINNAMEMASK "*" DOMAINNAME
|
||||
#define MODE_X iConf.mode_x
|
||||
#define MODE_I iConf.mode_i
|
||||
#define MODE_STRIPWORDS iConf.mode_stripbadwords
|
||||
#define TRUEHUB iConf.truehub
|
||||
#define SHOWOPERS iConf.showopers
|
||||
#define KILLDIFF iConf.killdiff
|
||||
#define CONN_MODES iConf.conn_modes
|
||||
#define SHOWOPERMOTD iConf.som
|
||||
#define HIDE_ULINES iConf.hide_ulines
|
||||
#define ALLOW_CHATOPS iConf.allow_chatops
|
||||
@@ -101,8 +91,18 @@ extern aConfiguration iConf;
|
||||
#define OPER_AUTO_JOIN_CHANS iConf.oper_auto_join_chans
|
||||
#define HOST_TIMEOUT iConf.host_timeout
|
||||
#define HOST_RETRIES iConf.host_retries
|
||||
#define SOCKSBANMSG iConf.socksbanmessage
|
||||
#define SOCKSQUITMSG iConf.socksquitmessage
|
||||
#define SOCKSBANTIME iConf.socksbantime
|
||||
#define NAME_SERVER iConf.name_server
|
||||
#define IDENT_CHECK iConf.ident_check
|
||||
#define FAILOPER_WARN iConf.fail_oper_warn
|
||||
#define SHOWCONNECTINFO iConf.show_connect_info
|
||||
#define OPER_ONLY_STATS iConf.oper_only_stats
|
||||
#define ANTI_SPAM_QUIT_MSG_TIME iConf.anti_spam_quit_message_time
|
||||
|
||||
#define ircnetwork iConf.network.x_ircnetwork
|
||||
#define ircnet005 iConf.network.x_ircnet005
|
||||
#define defserv iConf.network.x_defserv
|
||||
#define SERVICES_NAME iConf.network.x_services_name
|
||||
#define oper_host iConf.network.x_oper_host
|
||||
@@ -113,9 +113,12 @@ extern aConfiguration iConf;
|
||||
#define coadmin_host iConf.network.x_coadmin_host
|
||||
#define techadmin_host iConf.network.x_techadmin_host
|
||||
#define hidden_host iConf.network.x_hidden_host
|
||||
#define netdomain iConf.network.x_netdomain
|
||||
#define helpchan iConf.network.x_helpchan
|
||||
#define STATS_SERVER iConf.network.x_stats_server
|
||||
#define iNAH iConf.network.x_inah
|
||||
#define net_quit iConf.network.x_net_quit
|
||||
#define STOPSE iConf.network.x_se
|
||||
#define prefix_quit iConf.network.x_prefix_quit
|
||||
|
||||
#define CLOAK_KEY1 iConf.network.key
|
||||
#define CLOAK_KEY2 iConf.network.key2
|
||||
#define CLOAK_KEY3 iConf.network.key3
|
||||
#define CLOAK_KEYCRC iConf.network.keycrc
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
/************************************************************************
|
||||
* Unreal Internet Relay Chat Daemon, include/events.h
|
||||
* (C) Carsten V. Munk 2001 <stskeeps@tspre.org>
|
||||
*
|
||||
* 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 1, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program 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, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#define EVENT(x) void (x) (void *data)
|
||||
|
||||
typedef struct _event Event;
|
||||
|
||||
struct _event {
|
||||
Event *prev, *next;
|
||||
char *name;
|
||||
time_t every;
|
||||
long howmany;
|
||||
vFP event;
|
||||
void *data;
|
||||
time_t last;
|
||||
};
|
||||
|
||||
Event *EventAdd(char *name, long every, long howmany,
|
||||
vFP event, void *data);
|
||||
Event *EventDel(Event *event);
|
||||
|
||||
Event *EventFind(char *name);
|
||||
|
||||
void EventModEvery(Event *event, long every);
|
||||
|
||||
void DoEvents(void);
|
||||
|
||||
void EventStatus(aClient *sptr);
|
||||
|
||||
void SetupEvents(void);
|
||||
|
||||
@@ -4,21 +4,26 @@
|
||||
/* $Id$ */
|
||||
|
||||
typedef struct fdstruct {
|
||||
int entry[MAXCONNECTIONS + 2];
|
||||
int last_entry;
|
||||
int entry[MAXCONNECTIONS + 2];
|
||||
int last_entry;
|
||||
} fdlist;
|
||||
|
||||
void addto_fdlist(int a, fdlist * b);
|
||||
void delfrom_fdlist(int a, fdlist * b);
|
||||
void init_fdlist(fdlist * b);
|
||||
void addto_fdlist(int a, fdlist * b);
|
||||
void delfrom_fdlist(int a, fdlist * b);
|
||||
void init_fdlist(fdlist * b);
|
||||
|
||||
#ifndef NO_FDLIST
|
||||
extern fdlist oper_fdlist;
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef TRUE
|
||||
#define TRUE 1
|
||||
#endif
|
||||
|
||||
|
||||
#define LOADCFREQ 5
|
||||
#define LOADRECV 35
|
||||
#define FDLISTCHKFREQ 2
|
||||
#define FDLISTCHKFREQ 2
|
||||
|
||||
#endif /*
|
||||
* _IRCD_DOG3_FDLIST
|
||||
|
||||
@@ -29,28 +29,106 @@
|
||||
#include "fdlist.h"
|
||||
#endif
|
||||
|
||||
extern time_t nextconnect, nextdnscheck, nextping;
|
||||
extern aClient *client, me, *local[];
|
||||
extern aChannel *channel;
|
||||
extern struct stats *ircstp;
|
||||
extern int bootopt;
|
||||
extern time_t TSoffset;
|
||||
/* Prototype added to force errors -- Barubary */
|
||||
extern time_t check_pings(time_t now, int check_kills);
|
||||
/* for the new s_err.c */
|
||||
extern char *getreply(int);
|
||||
#define rpl_str(x) getreply(x)
|
||||
#define err_str(x) getreply(x)
|
||||
|
||||
extern Member *freemember;
|
||||
extern Membership *freemembership;
|
||||
extern MembershipL *freemembershipL;
|
||||
extern TS nextconnect, nextdnscheck, nextping;
|
||||
extern aClient *client, me, *local[];
|
||||
extern aChannel *channel;
|
||||
extern struct stats *ircstp;
|
||||
extern int bootopt;
|
||||
extern time_t TSoffset;
|
||||
/* Prototype added to force errors -- Barubary */
|
||||
extern TS check_pings(TS now, int check_kills);
|
||||
extern TS TS2ts(char *s);
|
||||
extern time_t timeofday;
|
||||
/* newconf */
|
||||
#define get_sendq(x) ((x)->class ? (x)->class->sendq : MAXSENDQLENGTH)
|
||||
|
||||
|
||||
#ifndef NO_FDLIST
|
||||
extern float currentrate;
|
||||
extern float currentrate2; /* outgoing */
|
||||
extern float highest_rate;
|
||||
extern float highest_rate2;
|
||||
extern int lifesux;
|
||||
extern int LRV;
|
||||
extern time_t LCF;
|
||||
extern int currlife;
|
||||
extern int HTMLOCK;
|
||||
extern int noisy_htm;
|
||||
extern long lastsendK, lastrecvK;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Configuration linked lists
|
||||
*/
|
||||
extern ConfigItem_me *conf_me;
|
||||
extern ConfigItem_class *conf_class;
|
||||
extern ConfigItem_class *default_class;
|
||||
extern ConfigItem_admin *conf_admin;
|
||||
extern ConfigItem_admin *conf_admin_tail;
|
||||
extern ConfigItem_drpass *conf_drpass;
|
||||
extern ConfigItem_ulines *conf_ulines;
|
||||
extern ConfigItem_tld *conf_tld;
|
||||
extern ConfigItem_oper *conf_oper;
|
||||
extern ConfigItem_listen *conf_listen;
|
||||
extern ConfigItem_allow *conf_allow;
|
||||
extern ConfigItem_except *conf_except;
|
||||
extern ConfigItem_vhost *conf_vhost;
|
||||
extern ConfigItem_link *conf_link;
|
||||
extern ConfigItem_ban *conf_ban;
|
||||
extern ConfigItem_badword *conf_badword_channel;
|
||||
extern ConfigItem_badword *conf_badword_message;
|
||||
extern ConfigItem_deny_dcc *conf_deny_dcc;
|
||||
extern ConfigItem_deny_channel *conf_deny_channel;
|
||||
extern ConfigItem_deny_link *conf_deny_link;
|
||||
extern ConfigItem_allow_channel *conf_allow_channel;
|
||||
extern ConfigItem_deny_version *conf_deny_version;
|
||||
extern ConfigItem_log *conf_log;
|
||||
extern ConfigItem_unknown *conf_unknown;
|
||||
extern ConfigItem_unknown_ext *conf_unknown_set;
|
||||
extern ConfigItem_alias *conf_alias;
|
||||
extern ConfigItem_include *conf_include;
|
||||
extern void clear_unknown();
|
||||
extern EVENT(tkl_check_expire);
|
||||
extern EVENT(e_unload_module_delayed);
|
||||
ConfigItem_class *Find_class(char *name);
|
||||
ConfigItem_deny_dcc *Find_deny_dcc(char *name);
|
||||
ConfigItem_oper *Find_oper(char *name);
|
||||
ConfigItem_listen *Find_listen(char *ipmask, int port);
|
||||
ConfigItem_ulines *Find_uline(char *host);
|
||||
ConfigItem_except *Find_except(char *host, short type);
|
||||
ConfigItem_tld *Find_tld(char *host);
|
||||
ConfigItem_link *Find_link(char *username, char *hostname, char *ip, char *servername);
|
||||
ConfigItem_ban *Find_ban(char *host, short type);
|
||||
ConfigItem_ban *Find_banEx(char *host, short type, short type2);
|
||||
ConfigItem_vhost *Find_vhost(char *name);
|
||||
ConfigItem_deny_channel *Find_channel_allowed(char *name);
|
||||
ConfigItem_alias *Find_alias(char *name);
|
||||
int AllowClient(aClient *cptr, struct hostent *hp, char *sockhost);
|
||||
int parse_netmask(const char *text, struct IN_ADDR *addr, int *b);
|
||||
int match_ipv4(struct IN_ADDR *addr, struct IN_ADDR *mask, int b);
|
||||
#ifdef INET6
|
||||
int match_ipv6(struct IN_ADDR *addr, struct IN_ADDR *mask, int b);
|
||||
#endif
|
||||
aMotd *read_motd(char *filename);
|
||||
aMotd *read_rules(char *filename);
|
||||
extern struct tm *motd_tm;
|
||||
extern Link *Servers;
|
||||
void add_ListItem(ListStruct *, ListStruct **);
|
||||
ListStruct *del_ListItem(ListStruct *, ListStruct **);
|
||||
/* Remmed out for win32 compatibility.. as stated of 467leaf win32 port.. */
|
||||
|
||||
#ifdef _WIN32
|
||||
// extern void *hCio;
|
||||
#endif
|
||||
extern LoopStruct loop;
|
||||
|
||||
#ifdef SHOWCONNECTINFO
|
||||
|
||||
#ifdef SOCKSPORT
|
||||
#define BREPORT_DO_SOCKS "NOTICE AUTH :*** Checking for open socks server...\r\n"
|
||||
#define BREPORT_GOOD_SOCKS "NOTICE AUTH :*** Secure socks found (good!)...\r\n"
|
||||
#define BREPORT_NO_SOCKS "NOTICE AUTH :*** No socks server found (good!)...\r\n"
|
||||
#endif
|
||||
|
||||
#define BREPORT_DO_DNS "NOTICE AUTH :*** Looking up your hostname...\r\n"
|
||||
#define BREPORT_FIN_DNS "NOTICE AUTH :*** Found your hostname\r\n"
|
||||
@@ -61,284 +139,295 @@ extern time_t check_pings(time_t now, int check_kills);
|
||||
#define BREPORT_FAIL_ID "NOTICE AUTH :*** No ident response; username prefixed with ~\r\n"
|
||||
|
||||
extern char REPORT_DO_DNS[128], REPORT_FIN_DNS[128], REPORT_FIN_DNSC[128],
|
||||
REPORT_FAIL_DNS[128], REPORT_DO_ID[128], REPORT_FIN_ID[128],
|
||||
REPORT_FAIL_ID[128];
|
||||
#ifdef SOCKSPORT
|
||||
extern char REPORT_DO_SOCKS[128], REPORT_GOOD_SOCKS[128],
|
||||
REPORT_NO_SOCKS[128];
|
||||
#endif
|
||||
REPORT_FAIL_DNS[128], REPORT_DO_ID[128], REPORT_FIN_ID[128],
|
||||
REPORT_FAIL_ID[128];
|
||||
|
||||
extern int R_do_dns, R_fin_dns, R_fin_dnsc, R_fail_dns,
|
||||
R_do_id, R_fin_id, R_fail_id;
|
||||
#ifdef SOCKSPORT
|
||||
extern int R_do_socks,
|
||||
R_good_socks, R_no_socks;
|
||||
#endif
|
||||
R_do_id, R_fin_id, R_fail_id;
|
||||
|
||||
#endif
|
||||
extern aChannel *find_channel PROTO((char *, aChannel *));
|
||||
extern void remove_user_from_channel PROTO((aClient *, aChannel *));
|
||||
extern inline aCommand *find_Command(char *cmd, short token, int flags);
|
||||
extern aCommand *find_Command_simple(char *cmd);
|
||||
extern aChannel *find_channel(char *, aChannel *);
|
||||
extern Member *find_member_link(Member *, aClient *);
|
||||
extern void remove_user_from_channel(aClient *, aChannel *);
|
||||
extern char *base64enc(long);
|
||||
extern long base64dec(char *);
|
||||
extern void add_server_to_table(aClient *);
|
||||
extern void remove_server_from_tabel(aClient *);
|
||||
|
||||
/* for services */
|
||||
extern void del_invite PROTO((aClient *, aChannel *));
|
||||
extern int del_silence PROTO((aClient *, char *));
|
||||
extern void send_user_joins PROTO((aClient *, aClient *));
|
||||
extern void clean_channelname PROTO((char *));
|
||||
extern int do_nick_name PROTO((char *));
|
||||
extern int can_send PROTO((aClient *, aChannel *, char *));
|
||||
extern int is_chan_op PROTO((aClient *, aChannel *));
|
||||
extern int is_zombie PROTO((aClient *, aChannel *));
|
||||
extern int has_voice PROTO((aClient *, aChannel *));
|
||||
extern int is_chanowner PROTO((aClient *, aChannel *));
|
||||
extern int count_channels PROTO((aClient *));
|
||||
extern Ban *is_banned PROTO((aClient *, aClient *, aChannel *));
|
||||
extern int parse_help PROTO((aClient *, char *, char *));
|
||||
extern void del_invite(aClient *, aChannel *);
|
||||
extern int del_silence(aClient *, char *);
|
||||
extern void send_user_joins(aClient *, aClient *);
|
||||
extern void clean_channelname(char *);
|
||||
extern int do_nick_name(char *);
|
||||
extern int can_send(aClient *, aChannel *, char *);
|
||||
extern int is_chan_op(aClient *, aChannel *);
|
||||
extern int has_voice(aClient *, aChannel *);
|
||||
extern int is_chanowner(aClient *, aChannel *);
|
||||
extern Ban *is_banned(aClient *, aClient *, aChannel *);
|
||||
extern int parse_help(aClient *, char *, char *);
|
||||
|
||||
extern void ircd_log PROTO((char *, ...));
|
||||
extern aClient *find_client PROTO((char *, aClient *));
|
||||
extern aClient *find_name PROTO((char *, aClient *));
|
||||
extern aClient *find_nickserv PROTO((char *, aClient *));
|
||||
extern aClient *find_person PROTO((char *, aClient *));
|
||||
extern aClient *find_server PROTO((char *, aClient *));
|
||||
extern aClient *find_service PROTO((char *, aClient *));
|
||||
extern void ircd_log(int, char *, ...);
|
||||
extern aClient *find_client(char *, aClient *);
|
||||
extern aClient *find_name(char *, aClient *);
|
||||
extern aClient *find_nickserv(char *, aClient *);
|
||||
extern aClient *find_person(char *, aClient *);
|
||||
extern aClient *find_server(char *, aClient *);
|
||||
extern aClient *find_server_quickx(char *, aClient *);
|
||||
extern aClient *find_service(char *, aClient *);
|
||||
#define find_server_quick(x) find_server_quickx(x, NULL)
|
||||
extern char *find_or_add(char *);
|
||||
extern int attach_conf(aClient *, aConfItem *);
|
||||
extern void inittoken();
|
||||
extern void reset_help();
|
||||
|
||||
extern char *find_or_add PROTO((char *));
|
||||
extern int attach_conf PROTO((aClient *, aConfItem *));
|
||||
extern aConfItem *attach_confs PROTO((aClient*, char *, int));
|
||||
extern aConfItem *attach_confs_host PROTO((aClient*, char *, int));
|
||||
extern int attach_Iline PROTO((aClient *, struct hostent *, char *));
|
||||
extern aConfItem *conf, *find_me PROTO(()), *find_admin PROTO(());
|
||||
extern aConfItem *count_cnlines PROTO((Link *));
|
||||
extern aSqlineItem *sqline;
|
||||
extern void det_confs_butmask PROTO((aClient *, int));
|
||||
extern int detach_conf PROTO((aClient *, aConfItem *));
|
||||
extern aSqlineItem *find_sqline_nick PROTO((char *));
|
||||
extern aSqlineItem *find_sqline_match PROTO((char *));
|
||||
extern aConfItem *det_confs_butone PROTO((aClient *, aConfItem *));
|
||||
extern char *find_diepass();
|
||||
extern char *find_restartpass();
|
||||
extern aConfItem *find_conf PROTO((Link *, char*, int));
|
||||
extern aConfItem *find_conf_exact PROTO((char *, char *, char *, int));
|
||||
extern aConfItem *find_conf_host PROTO((Link *, char *, int));
|
||||
extern aConfItem *find_conf_ip PROTO((Link *, char *, char *, int));
|
||||
extern aConfItem *find_conf_name PROTO((char *, int));
|
||||
extern aConfItem *find_temp_conf_entry PROTO((aConfItem *, u_int));
|
||||
extern aConfItem *find_conf_servern PROTO((char *));
|
||||
extern int find_kill PROTO((aClient *));
|
||||
extern char *find_zap PROTO((aClient *, int));
|
||||
extern int find_restrict PROTO((aClient *));
|
||||
extern int rehash PROTO((aClient *, aClient *, int));
|
||||
extern int initconf PROTO((int));
|
||||
extern void add_temp_conf();
|
||||
extern void inittoken PROTO(());
|
||||
extern void reset_help PROTO(());
|
||||
extern int find_exception(char *); /* hidden host */
|
||||
|
||||
extern char *MyMalloc PROTO((int)), *MyRealloc PROTO((char *, int));
|
||||
|
||||
extern char *debugmode, *configfile, *sbrk0;
|
||||
extern char *getfield PROTO((char *));
|
||||
extern void get_sockhost PROTO((aClient *, char *));
|
||||
extern char *rpl_str PROTO((int)), *err_str PROTO((int));
|
||||
extern char *strerror PROTO((int));
|
||||
extern int dgets PROTO((int, char *, int));
|
||||
extern char *inetntoa PROTO((char *));
|
||||
extern char *debugmode, *configfile, *sbrk0;
|
||||
extern char *getfield(char *);
|
||||
extern void get_sockhost(aClient *, char *);
|
||||
extern char *strerror(int);
|
||||
extern int dgets(int, char *, int);
|
||||
extern char *inetntoa(char *);
|
||||
|
||||
#ifdef _WIN32
|
||||
extern int dbufalloc, dbufblocks, debuglevel;
|
||||
extern int dbufalloc, dbufblocks, debuglevel;
|
||||
#else
|
||||
extern int dbufalloc, dbufblocks, debuglevel, errno, h_errno;
|
||||
extern int dbufalloc, dbufblocks, debuglevel, errno, h_errno;
|
||||
#endif
|
||||
extern int highest_fd, debuglevel, portnum, debugtty, maxusersperchannel;
|
||||
extern int readcalls, udpfd, resfd;
|
||||
extern aClient *add_connection PROTO((aClient *, int));
|
||||
extern int add_listener PROTO((aConfItem *));
|
||||
extern void add_local_domain PROTO((char *, int));
|
||||
extern int check_client PROTO((aClient *));
|
||||
extern int check_server PROTO((aClient *, struct hostent *, \
|
||||
aConfItem *, aConfItem *, int));
|
||||
extern int check_server_init PROTO((aClient *));
|
||||
extern void close_connection PROTO((aClient *));
|
||||
extern void close_listeners PROTO(());
|
||||
extern int connect_server PROTO((aConfItem *, aClient *, struct hostent *));
|
||||
extern void get_my_name PROTO((aClient *, char *, int));
|
||||
extern int get_sockerr PROTO((aClient *));
|
||||
extern int inetport PROTO((aClient *, char *, int));
|
||||
extern void init_sys PROTO(());
|
||||
extern short LastSlot; /* last used index in local client array */
|
||||
extern int OpenFiles; /* number of files currently open */
|
||||
extern int debuglevel, portnum, debugtty, maxusersperchannel;
|
||||
extern int readcalls, udpfd, resfd;
|
||||
extern aClient *add_connection(aClient *, int);
|
||||
extern int add_listener(aConfItem *);
|
||||
extern void add_local_domain(char *, int);
|
||||
extern int check_client(aClient *);
|
||||
extern int check_server(aClient *, struct hostent *, aConfItem *,
|
||||
aConfItem *, int);
|
||||
extern int check_server_init(aClient *);
|
||||
extern void close_connection(aClient *);
|
||||
extern void close_listeners();
|
||||
extern int connect_server(ConfigItem_link *, aClient *, struct hostent *);
|
||||
extern void get_my_name(aClient *, char *, int);
|
||||
extern int get_sockerr(aClient *);
|
||||
extern int inetport(aClient *, char *, int);
|
||||
extern void init_sys();
|
||||
|
||||
#ifdef NO_FDLIST
|
||||
extern int read_message PROTO((time_t));
|
||||
extern int read_message(time_t);
|
||||
#else
|
||||
extern int read_message PROTO((time_t, fdlist *));
|
||||
extern int read_message(time_t, fdlist *);
|
||||
#endif
|
||||
|
||||
extern void report_error PROTO((char *, aClient *));
|
||||
extern void set_non_blocking PROTO((int, aClient *));
|
||||
extern int setup_ping PROTO(());
|
||||
extern void summon PROTO((aClient *, char *, char *, char *));
|
||||
extern int unixport PROTO((aClient *, char *, int));
|
||||
extern int utmp_open PROTO(());
|
||||
extern int utmp_read PROTO((int, char *, char *, char *, int));
|
||||
extern int utmp_close PROTO((int));
|
||||
extern void report_error(char *, aClient *);
|
||||
extern void set_non_blocking(int, aClient *);
|
||||
extern int setup_ping();
|
||||
|
||||
extern void start_auth PROTO((aClient *));
|
||||
extern void read_authports PROTO((aClient *));
|
||||
extern void send_authports PROTO((aClient *));
|
||||
extern void start_auth(aClient *);
|
||||
extern void read_authports(aClient *);
|
||||
extern void send_authports(aClient *);
|
||||
|
||||
#ifdef SOCKSPORT
|
||||
extern void init_socks PROTO((aClient *));
|
||||
extern void start_socks PROTO((aClient *));
|
||||
extern void send_socksquery PROTO((aClient *));
|
||||
extern void read_socks PROTO((aClient *));
|
||||
#endif
|
||||
|
||||
extern void restart PROTO((char *));
|
||||
extern void send_channel_modes PROTO((aClient *, aChannel *));
|
||||
extern void server_reboot PROTO((char *));
|
||||
extern void terminate PROTO(()), write_pidfile PROTO(());
|
||||
extern void restart(char *);
|
||||
extern void send_channel_modes(aClient *, aChannel *);
|
||||
extern void server_reboot(char *);
|
||||
extern void terminate(), write_pidfile();
|
||||
|
||||
extern int send_queued PROTO((aClient *));
|
||||
/*VARARGS2*/
|
||||
// extern void sendto_one(char *, ...);
|
||||
/*VARARGS4*/
|
||||
extern int send_queued(aClient *);
|
||||
/* i know this is naughty but :P --stskeeps */
|
||||
extern void sendto_channel_butone(aClient *, aClient *, aChannel *, char *, ...);
|
||||
extern void sendto_channelops_butone(aClient *, aClient *, aChannel *, char *, ...);
|
||||
extern void sendto_channelvoice_butone(aClient *, aClient *, aChannel *, char *, ...);
|
||||
/*VARARGS2*/
|
||||
extern void sendto_serv_butone(aClient *, char *, ...);
|
||||
/*VARARGS2*/
|
||||
extern void sendto_serv_butone_quit(aClient *, char *, ...);
|
||||
extern void sendto_serv_butone_sjoin(aClient *, char *, ...);
|
||||
extern void sendto_serv_sjoin(aClient *, char *, ...);
|
||||
/*VARARGS2*/
|
||||
extern void sendto_channel_butone(aClient *, aClient *, aChannel *, char *,
|
||||
...);
|
||||
extern void sendto_channelops_butone(aClient *, aClient *, aChannel *,
|
||||
char *, ...);
|
||||
extern void sendto_channelvoice_butone(aClient *, aClient *, aChannel *,
|
||||
char *, ...);
|
||||
extern void sendto_serv_butone(aClient *, char *, ...);
|
||||
extern void sendto_serv_butone_quit(aClient *, char *, ...);
|
||||
extern void sendto_serv_butone_sjoin(aClient *, char *, ...);
|
||||
extern void sendto_serv_sjoin(aClient *, char *, ...);
|
||||
extern void sendto_common_channels(aClient *, char *, ...);
|
||||
extern void sendto_channel_butserv(aChannel *, aClient *, char *, ...);
|
||||
extern void sendto_match_servs(aChannel *, aClient *, char *, ...);
|
||||
extern void sendto_match_butone(aClient *, aClient *, char *, int,
|
||||
char *pattern, ...);
|
||||
extern void sendto_all_butone(aClient *, aClient *, char *, ...);
|
||||
extern void sendto_ops(char *, ...);
|
||||
extern void sendto_ops_butone(aClient *, aClient *, char *, ...);
|
||||
extern void sendto_ops_butme(aClient *, char *, ...);
|
||||
extern void sendto_prefix_one(aClient *, aClient *, const char *, ...);
|
||||
extern void sendto_failops_whoare_opers(char *, ...);
|
||||
extern void sendto_failops(char *, ...);
|
||||
extern void sendto_opers(char *, ...);
|
||||
extern void sendto_umode(int, char *, ...);
|
||||
extern void sendto_conn_hcn(char *, ...);
|
||||
extern int writecalls, writeb[];
|
||||
extern int deliver_it(aClient *, char *, int);
|
||||
|
||||
extern void sendto_common_channels(aClient *, char *, ...);
|
||||
/*VARARGS3*/
|
||||
extern void sendto_channel_butserv(aChannel *, aClient *, char *, ...);
|
||||
/*VARARGS3*/
|
||||
extern void sendto_match_servs(aChannel *, aClient *, char *, ...);
|
||||
/*VARARGS5*/
|
||||
extern void sendto_match_butone(aClient *, aClient *, char *, int, char *pattern, ...);
|
||||
/*VARARGS3*/
|
||||
extern void sendto_all_butone(aClient *, aClient *, char *, ...);
|
||||
/*VARARGS1*/
|
||||
extern void sendto_ops(char *, ...);
|
||||
/*VARARGS3*/
|
||||
extern void sendto_ops_butone(aClient *, aClient *, char *, ...);
|
||||
/*VARARGS3*/
|
||||
extern void sendto_ops_butme(aClient *, char *, ...);
|
||||
/*VARARGS3*/
|
||||
extern void sendto_prefix_one(aClient *, aClient *, const char *, ...);
|
||||
/*VARARGS3*/
|
||||
extern void sendto_failops_whoare_opers(char *, ...);
|
||||
/*VARARGS3*/
|
||||
extern void sendto_failops(char *, ...);
|
||||
/*VARARGS3*/
|
||||
extern void sendto_opers(char *, ...);
|
||||
/*VARARGS?*/
|
||||
extern void sendto_umode(int, char *, ...);
|
||||
extern void sendto_conn_hcn(char *, ...);
|
||||
extern int writecalls, writeb[];
|
||||
extern int deliver_it PROTO((aClient *, char *, int));
|
||||
extern int check_registered(aClient *);
|
||||
extern int check_registered_user(aClient *);
|
||||
extern char *get_client_name(aClient *, int);
|
||||
extern char *get_client_host(aClient *);
|
||||
extern char *my_name_for_link(char *, aConfItem *);
|
||||
extern char *myctime(time_t), *date(time_t);
|
||||
extern int exit_client(aClient *, aClient *, aClient *, char *);
|
||||
extern void initstats(), tstats(aClient *, char *);
|
||||
extern char *check_string(char *);
|
||||
extern char *make_nick_user_host(char *, char *, char *);
|
||||
extern char *make_user_host(char *, char *);
|
||||
extern int parse(aClient *, char *, char *);
|
||||
extern int do_numeric(int, aClient *, aClient *, int, char **);
|
||||
extern int hunt_server(aClient *, aClient *, char *, int, int, char **);
|
||||
extern aClient *next_client(aClient *, char *);
|
||||
extern int m_umode(aClient *, aClient *, int, char **);
|
||||
extern int m_names(aClient *, aClient *, int, char **);
|
||||
extern int m_server_estab(aClient *);
|
||||
extern void umode_init(void);
|
||||
extern long umode_get(char ch);
|
||||
extern void send_umode(aClient *, aClient *, long, long, char *);
|
||||
extern void send_umode_out(aClient *, aClient *, long);
|
||||
|
||||
extern int check_registered PROTO((aClient *));
|
||||
extern int check_registered_user PROTO((aClient *));
|
||||
extern char *get_client_name PROTO((aClient *, int));
|
||||
extern char *get_client_host PROTO((aClient *));
|
||||
extern char *my_name_for_link PROTO((char *, aConfItem *));
|
||||
extern char *myctime PROTO((time_t)), *date PROTO((time_t));
|
||||
extern int exit_client PROTO((aClient *, aClient *, aClient *, char *));
|
||||
extern void initstats PROTO(()), tstats PROTO((aClient *, char *));
|
||||
extern char *check_string PROTO((char *));
|
||||
extern char *make_nick_user_host PROTO((char *, char *, char *));
|
||||
extern void free_client(aClient *);
|
||||
extern void free_link(Link *);
|
||||
extern void free_ban(Ban *);
|
||||
extern void free_class(aClass *);
|
||||
extern void free_user(anUser *, aClient *);
|
||||
extern int find_str_match_link(Link *, char *);
|
||||
extern void free_str_list(Link *);
|
||||
extern Link *make_link();
|
||||
extern Ban *make_ban();
|
||||
extern anUser *make_user(aClient *);
|
||||
extern aClass *make_class();
|
||||
extern aServer *make_server();
|
||||
extern aClient *make_client(aClient *, aClient *);
|
||||
extern Link *find_user_link(Link *, aClient *);
|
||||
extern Member *find_channel_link(Member *, aChannel *);
|
||||
extern char *pretty_mask(char *);
|
||||
extern void add_client_to_list(aClient *);
|
||||
extern void checklist();
|
||||
extern void remove_client_from_list(aClient *);
|
||||
extern void initlists();
|
||||
extern struct hostent *get_res(char *);
|
||||
extern struct hostent *gethost_byaddr(char *, Link *);
|
||||
extern struct hostent *gethost_byname(char *, Link *);
|
||||
extern void flush_cache();
|
||||
extern int init_resolver(int);
|
||||
extern time_t timeout_query_list(time_t);
|
||||
extern time_t expire_cache(time_t);
|
||||
extern void del_queries(char *);
|
||||
|
||||
extern int parse PROTO((aClient *, char *, char *, struct Message *));
|
||||
extern int do_numeric PROTO((int, aClient *, aClient *, int, char **));
|
||||
extern int hunt_server PROTO((aClient *,aClient *,char *,int,int,char **));
|
||||
extern aClient *next_client PROTO((aClient *, char *));
|
||||
extern int m_umode PROTO((aClient *, aClient *, int, char **));
|
||||
extern int m_names PROTO((aClient *, aClient *, int, char **));
|
||||
extern int m_server_estab PROTO((aClient *));
|
||||
extern void send_umode PROTO((aClient *, aClient *, int, int, char *));
|
||||
extern void send_umode_out PROTO((aClient*, aClient *, int));
|
||||
extern void clear_channel_hash_table();
|
||||
extern void clear_client_hash_table();
|
||||
extern void clear_watch_hash_table();
|
||||
extern int add_to_client_hash_table(char *, aClient *);
|
||||
extern int del_from_client_hash_table(char *, aClient *);
|
||||
extern int add_to_channel_hash_table(char *, aChannel *);
|
||||
extern int del_from_channel_hash_table(char *, aChannel *);
|
||||
extern int add_to_watch_hash_table(char *, aClient *);
|
||||
extern int del_from_watch_hash_table(char *, aClient *);
|
||||
extern int hash_check_watch(aClient *, int);
|
||||
extern int hash_del_watch_list(aClient *);
|
||||
extern void count_watch_memory(int *, u_long *);
|
||||
extern aWatch *hash_get_watch(char *);
|
||||
extern aChannel *hash_get_chan_bucket(unsigned int);
|
||||
extern aClient *hash_find_client(char *, aClient *);
|
||||
extern aClient *hash_find_nickserver(char *, aClient *);
|
||||
extern aClient *hash_find_server(char *, aClient *);
|
||||
extern char *find_by_aln(char *);
|
||||
extern char *convert2aln(int);
|
||||
extern int convertfromaln(char *);
|
||||
extern char *find_server_aln(char *);
|
||||
extern atime(char *xtime);
|
||||
|
||||
extern void free_client PROTO((aClient *));
|
||||
extern void free_link PROTO((Link *));
|
||||
extern void free_ban PROTO((Ban *));
|
||||
extern void free_conf PROTO((aConfItem *));
|
||||
extern void free_class PROTO((aClass *));
|
||||
extern void free_user PROTO((anUser *, aClient *));
|
||||
extern int find_str_match_link PROTO((Link **, char *));
|
||||
extern void free_str_list PROTO ((Link *));
|
||||
extern Link *make_link PROTO(());
|
||||
extern Ban *make_ban PROTO(());
|
||||
extern anUser *make_user PROTO((aClient *));
|
||||
extern aSqlineItem *make_sqline PROTO(());
|
||||
extern aConfItem *make_conf PROTO(());
|
||||
extern aClass *make_class PROTO(());
|
||||
extern aServer *make_server PROTO(());
|
||||
extern aClient *make_client PROTO((aClient *, aClient *));
|
||||
extern Link *find_user_link PROTO((Link *, aClient *));
|
||||
extern Link *find_channel_link PROTO((Link *, aChannel *));
|
||||
extern char *pretty_mask PROTO((char *));
|
||||
extern void add_client_to_list PROTO((aClient *));
|
||||
extern void checklist PROTO(());
|
||||
extern void remove_client_from_list PROTO((aClient *));
|
||||
extern void initlists PROTO(());
|
||||
|
||||
extern void add_class PROTO((int, int, int, int, long));
|
||||
extern void fix_class PROTO((aConfItem *, aConfItem *));
|
||||
extern long get_sendq PROTO((aClient *));
|
||||
extern int get_con_freq PROTO((aClass *));
|
||||
extern int get_client_ping PROTO((aClient *));
|
||||
extern int get_client_class PROTO((aClient *));
|
||||
extern int get_conf_class PROTO((aConfItem *));
|
||||
extern void report_classes PROTO((aClient *));
|
||||
/* Mode externs
|
||||
*/
|
||||
extern long UMODE_INVISIBLE; /* 0x0001 makes user invisible */
|
||||
extern long UMODE_OPER; /* 0x0002 Operator */
|
||||
extern long UMODE_WALLOP; /* 0x0004 send wallops to them */
|
||||
extern long UMODE_FAILOP; /* 0x0008 Shows some global messages */
|
||||
extern long UMODE_HELPOP; /* 0x0010 Help system operator */
|
||||
extern long UMODE_REGNICK; /* 0x0020 Nick set by services as registered */
|
||||
extern long UMODE_SADMIN; /* 0x0040 Services Admin */
|
||||
extern long UMODE_ADMIN; /* 0x0080 Admin */
|
||||
extern long UMODE_SERVNOTICE;/* 0x0100 server notices such as kill */
|
||||
extern long UMODE_LOCOP; /* 0x0200 Local operator -- SRB */
|
||||
extern long UMODE_RGSTRONLY; /* 0x0400 Only reg nick message */
|
||||
extern long UMODE_WEBTV; /* 0x0800 WebTV Client */
|
||||
extern long UMODE_SERVICES; /* 0x4000 services */
|
||||
extern long UMODE_HIDE; /* 0x8000 Hide from Nukes */
|
||||
extern long UMODE_NETADMIN; /* 0x10000 Network Admin */
|
||||
extern long UMODE_COADMIN; /* 0x80000 Co Admin */
|
||||
extern long UMODE_WHOIS; /* 0x100000 gets notice on /whois */
|
||||
extern long UMODE_KIX; /* 0x200000 usermode +q */
|
||||
extern long UMODE_BOT; /* 0x400000 User is a bot */
|
||||
extern long UMODE_SECURE; /* 0x800000 User is a secure connect */
|
||||
extern long UMODE_HIDING; /* 0x2000000 Totally invisible .. */
|
||||
extern long UMODE_VICTIM; /* 0x8000000 Intentional Victim */
|
||||
extern long UMODE_DEAF; /* 0x10000000 Deaf */
|
||||
extern long UMODE_HIDEOPER; /* 0x20000000 Hide oper mode */
|
||||
extern long UMODE_SETHOST; /* 0x40000000 used sethost */
|
||||
extern long UMODE_STRIPBADWORDS; /* 0x80000000 */
|
||||
|
||||
extern struct hostent *get_res PROTO((char *));
|
||||
extern struct hostent *gethost_byaddr PROTO((char *, Link *));
|
||||
extern struct hostent *gethost_byname PROTO((char *, Link *));
|
||||
extern void flush_cache PROTO(());
|
||||
extern int init_resolver PROTO((int));
|
||||
extern time_t timeout_query_list PROTO((time_t));
|
||||
extern time_t expire_cache PROTO((time_t));
|
||||
extern void del_queries PROTO((char *));
|
||||
|
||||
extern void clear_channel_hash_table PROTO(());
|
||||
extern void clear_client_hash_table PROTO(());
|
||||
extern void clear_notify_hash_table PROTO(());
|
||||
extern int add_to_client_hash_table PROTO((char *, aClient *));
|
||||
extern int del_from_client_hash_table PROTO((char *, aClient *));
|
||||
extern int add_to_channel_hash_table PROTO((char *, aChannel *));
|
||||
extern int del_from_channel_hash_table PROTO((char *, aChannel *));
|
||||
extern int add_to_notify_hash_table PROTO((char *, aClient *));
|
||||
extern int del_from_notify_hash_table PROTO((char *, aClient *));
|
||||
extern int hash_check_notify PROTO((aClient *, int));
|
||||
extern int hash_del_notify_list PROTO((aClient *));
|
||||
extern void count_watch_memory PROTO((int *, u_long *));
|
||||
extern aNotify *hash_get_notify PROTO((char *));
|
||||
extern aChannel *hash_get_chan_bucket PROTO((int));
|
||||
extern aClient *hash_find_client PROTO((char *, aClient *));
|
||||
extern aClient *hash_find_nickserver PROTO((char *, aClient *));
|
||||
extern aClient *hash_find_server PROTO((char *, aClient *));
|
||||
extern char *find_by_aln PROTO((char *));
|
||||
extern char *convert2aln PROTO((int));
|
||||
extern int convertfromaln PROTO((char *));
|
||||
extern char *find_server_aln PROTO((char *));
|
||||
extern int dopacket PROTO((aClient *, char *, int));
|
||||
|
||||
/*VARARGS2*/
|
||||
extern void debug();
|
||||
extern int dopacket(aClient *, char *, int);
|
||||
|
||||
extern void debug(int, char *, ...);
|
||||
#if defined(DEBUGMODE)
|
||||
extern void send_usage PROTO((aClient *, char *));
|
||||
extern void send_listinfo PROTO((aClient *, char *));
|
||||
extern void count_memory PROTO((aClient *, char *));
|
||||
extern void send_usage(aClient *, char *);
|
||||
extern void send_listinfo(aClient *, char *);
|
||||
extern void count_memory(aClient *, char *);
|
||||
#endif
|
||||
|
||||
#ifdef INET6
|
||||
extern char *inetntop(int af, const void *in, char *local_dummy, size_t the_size);
|
||||
extern char *inetntop(int af, const void *in, char *local_dummy,
|
||||
size_t the_size);
|
||||
#endif
|
||||
|
||||
char *crule_parse PROTO((char *));
|
||||
int crule_eval PROTO((char *));
|
||||
void crule_free PROTO((char **));
|
||||
/*
|
||||
* socket.c
|
||||
*/
|
||||
|
||||
char *Inet_si2p(struct SOCKADDR_IN *sin);
|
||||
char *Inet_si2pB(struct SOCKADDR_IN *sin, char *buf, int sz);
|
||||
char *Inet_ia2p(struct IN_ADDR *ia);
|
||||
|
||||
/*
|
||||
* CommandHash -Stskeeps
|
||||
*/
|
||||
extern aCommand *CommandHash[256];
|
||||
void init_CommandHash(void);
|
||||
void add_Command_backend(char *cmd, int (*func)(), unsigned char parameters, unsigned char token, int flags);
|
||||
void add_Command(char *cmd, char *token, int (*func)(), unsigned char parameters);
|
||||
void add_Command_to_list(aCommand *item, aCommand **list);
|
||||
aCommand *del_Command_from_list(aCommand *item, aCommand **list);
|
||||
int del_Command(char *cmd, char *token, int (*func)());
|
||||
|
||||
/* CRULE */
|
||||
char *crule_parse(char *);
|
||||
int crule_eval(char *);
|
||||
void crule_free(char **);
|
||||
|
||||
/* Add clients to LocalClients array */
|
||||
extern void add_local_client(aClient* cptr);
|
||||
/* Remove clients from LocalClients array */
|
||||
extern void remove_local_client(aClient* cptr);
|
||||
/*
|
||||
* Close all local socket connections, invalidate client fd's
|
||||
* WIN32 cleanup winsock lib
|
||||
*/
|
||||
extern void close_connections(void);
|
||||
extern void flush_connections(aClient *cptr);
|
||||
|
||||
extern int b64_encode(unsigned char const *src, size_t srclength, char *target, size_t targsize);
|
||||
extern int b64_decode(char const *src, unsigned char *target, size_t targsize);
|
||||
|
||||
extern int Auth_FindType(char *type);
|
||||
extern anAuthStruct *Auth_ConvertConf2AuthStruct(ConfigEntry *ce);
|
||||
extern void Auth_DeleteAuthStruct(anAuthStruct *as);
|
||||
extern int Auth_Check(aClient *cptr, anAuthStruct *as, char *para);
|
||||
extern char *Auth_Make(short type, char *para);
|
||||
|
||||
|
||||
#define EVENT_DRUGS BASE_VERSION
|
||||
|
||||