Compare commits
828 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 |
@@ -1,19 +1,19 @@
|
||||
Welcome to the UnrealIRCd configuration program. This program
|
||||
will help you compile your IRC server by asking you questions
|
||||
regarding your system and how you want the ircd to function.
|
||||
|
||||
If you need help setting up your server, mail
|
||||
supporters@lists.unrealircd.org or ask on IRC:
|
||||
/server irc.ircsystems.net, /join #unreal-support
|
||||
_ _ _ ___________ _____ _
|
||||
| | | | | |_ _| ___ \/ __ \ | |
|
||||
| | | |_ __ _ __ ___ __ _| | | | | |_/ /| / \/ __| |
|
||||
| | | | '_ \| '__/ _ \/ _ | | | | | / | | / _ |
|
||||
| |_| | | | | | | __/ (_| | |_| |_| |\ \ | \__/\ (_| |
|
||||
\___/|_| |_|_| \___|\__,_|_|\___/\_| \_| \____/\__,_|
|
||||
|
||||
Regardless, please read Unreal.nfo first along with all documentation
|
||||
and FAQ's in doc/. If you do not do this, we will NOT help you!
|
||||
|
||||
If the code is changed in any way, or the version string is modified,
|
||||
we will _NOT_ support the product. (Unless of course you got explicit
|
||||
permission from one of the UnrealIRCd coders.)
|
||||
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.
|
||||
|
||||
Finally, unofficial UnrealIRCd/32 builds (if it doesn't say "genuine"
|
||||
in the display) are _NOT_ supported.
|
||||
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.
|
||||
|
||||
- Luke (luke@unrealircd.com)
|
||||
|
||||
@@ -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
|
||||
@@ -1,17 +1,86 @@
|
||||
|
||||
Unreal3.1.6-Noon Release Notes
|
||||
===================================
|
||||
Unreal3.2-Selene (BETA4) RELEASE NOTES
|
||||
======================================
|
||||
|
||||
I M P O R T A N T R E A D I N G
|
||||
|
||||
* Initial release preparation, no bugs fixed yet!
|
||||
|
||||
* If you are upgrading from Unreal3.1.4-Meadows, please read
|
||||
doc/RELEASE-NOTES.3.1.5 as well.
|
||||
* 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
|
||||
|
||||
* If you are upgrading from an even earlier version (before 3.1.4),
|
||||
please read the doc/RELEASE-NOTES.3.1.4 file as well. There
|
||||
were numerous important/significant changes between 3.1.4 and
|
||||
earlier versions.
|
||||
* 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)
|
||||
|
||||
* Finally, read Unreal.nfo as usual AND THE DOCS in doc/.
|
||||
* We use autoconf to help with compiliation, and this should make us able
|
||||
to a lot more platform (we have even ported to BeOS).
|
||||
|
||||
- Luke (luke@unrealircd.com)
|
||||
* 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
|
||||
|
||||
@@ -4,14 +4,17 @@
|
||||
| some kind of Certification Authority (CA), so your users can check that |
|
||||
| they are really connected to the real server, so they feel secure? |
|
||||
| |
|
||||
| An initiative has been started, to help this problem, as more and more |
|
||||
| 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 OpenIRC CA - They offer you to sign |
|
||||
| SSL certificates for use with your IRCd for free, |
|
||||
| so your users can be sure that they can trust you and your server. |
|
||||
| To get a signed certificate from them please visit the website |
|
||||
| http://www.openirc-ca.eu.org |
|
||||
| | Press enter to continue |
|
||||
| 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,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,2 @@
|
||||
List of helpers in the alpha/beta phase:
|
||||
* Headbang, Alpha/beta tester
|
||||
@@ -10,6 +10,10 @@ 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://www.unrealircd.com
|
||||
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.1.tar.gz
|
||||
tar -xvf Unreal3.1.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,10 +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=
|
||||
CRYPTOLIB=
|
||||
|
||||
#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)
|
||||
@@ -88,62 +92,48 @@ 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=
|
||||
|
||||
#
|
||||
# If your system is lacking regex, uncomment this line
|
||||
#
|
||||
#REGEX=../extras/regex/regex.o
|
||||
REGEX=
|
||||
|
||||
# [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=
|
||||
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@
|
||||
|
||||
# Where is your openssl binary
|
||||
OPENSSLPATH=
|
||||
OPENSSLPATH=@OPENSSLPATH@
|
||||
|
||||
CFLAGS=-I$(INCLUDEDIR) $(XCFLAGS) $(NEED_U_INT32_T) $(FD_SETSIZE)
|
||||
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}'
|
||||
|
||||
@@ -185,12 +175,9 @@ 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:
|
||||
chmod +x Config newnet ircd ircdcron/ircdchk killircd
|
||||
@@ -219,11 +206,27 @@ 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
|
||||
pem: src/ssl.cnf
|
||||
@echo "Generating certificate request .. "
|
||||
$(OPENSSLPATH) req -new -config src/ssl.cnf -out server.req.pem \
|
||||
$(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 \
|
||||
@@ -231,8 +234,7 @@ pem: src/ssl.cnf
|
||||
@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!"
|
||||
@echo "Done!."
|
||||
@@ -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,15 @@
|
||||
Some notes to remember:
|
||||
-----------------------
|
||||
* Don't EVER try to link it to incompatible IRCds (this does not
|
||||
include services). It is *INCOMPATIBLE*. Please HEED this warning!!!
|
||||
|
||||
* If you need any help you can email me at stskeeps@tspre.org
|
||||
|
||||
* Please read the Changes file about release notes
|
||||
|
||||
* Bugs? Read Unreal.nfo
|
||||
|
||||
* Unreal IRCd is not meant to be a simple IRCd, rather an advanced
|
||||
IRCd, please read the documentation before asking questions
|
||||
|
||||
[ $Id$ ]
|
||||
@@ -17,7 +17,7 @@ fi
|
||||
echo "Press enter to proceed to compiling..."
|
||||
read cc
|
||||
make
|
||||
echo "Press enter to proceed to ircd.conf making..."
|
||||
echo "Press enter to proceed to unrealircd.conf making..."
|
||||
read cc
|
||||
./makeconf
|
||||
echo "Press enter to proceed to network configuration..."
|
||||
@@ -31,7 +31,5 @@ read cc
|
||||
if [ "$cc" == "no" ] ; then
|
||||
./makenet
|
||||
fi
|
||||
echo "Press enter to proceed to dynamic ircd configuration..."
|
||||
read cc
|
||||
pico unrealircd.conf
|
||||
echo "You should be able to run UnrealIRCd using ./ircd now".
|
||||
echo "Now just edit your unrealircd.conf and you should be ready to run"
|
||||
echo "UnrealIRCd with ./ircd"
|
||||
|
||||
@@ -1,11 +1,25 @@
|
||||
===============================================
|
||||
= UnrealIRCd v3.1.6 =
|
||||
= UnrealIRCd v3.2-Selene (beta1) =
|
||||
===============================================
|
||||
Was brought to you by:
|
||||
* Stskeeps <stskeeps@unrealircd.com>
|
||||
* codemastr <codemastr@unrealircd.com>
|
||||
* Luke <luke@unrealircd.com>
|
||||
|
||||
The core team:
|
||||
==============
|
||||
* Stskeeps <stskeeps@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://www.unrealircd.com
|
||||
|
||||
@@ -29,8 +43,12 @@ latest beta:
|
||||
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?
|
||||
======================
|
||||
@@ -42,18 +60,18 @@ latest beta:
|
||||
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
|
||||
@@ -1,53 +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
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
pussy
|
||||
fuck
|
||||
whore
|
||||
slut
|
||||
shit
|
||||
asshole
|
||||
bitch
|
||||
cunt
|
||||
vagina
|
||||
penis
|
||||
jackass
|
||||
*fucker*
|
||||
faggot
|
||||
fag
|
||||
horny
|
||||
gay
|
||||
dickhead
|
||||
sonuvabitch
|
||||
*fuck*
|
||||
boobs
|
||||
tits
|
||||
/*
|
||||
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"; };
|
||||
|
||||
@@ -1,53 +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
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
pussy
|
||||
fuck
|
||||
whore
|
||||
slut
|
||||
shit
|
||||
asshole
|
||||
bitch
|
||||
cunt
|
||||
vagina
|
||||
penis
|
||||
jackass
|
||||
*fucker*
|
||||
faggot
|
||||
fag
|
||||
horny
|
||||
gay
|
||||
dickhead
|
||||
sonuvabitch
|
||||
*fuck*
|
||||
boobs
|
||||
tits
|
||||
/*
|
||||
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"; };
|
||||
|
||||
@@ -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,40 +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
|
||||
LIBS=-lcrypt
|
||||
|
||||
all: mkpasswd
|
||||
crypt: install
|
||||
|
||||
mkpasswd: mkpasswd.c
|
||||
cc ${LIBS} -O mkpasswd.c -o mkpasswd
|
||||
|
||||
install:
|
||||
chmod 700 crypter
|
||||
./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,77 +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];
|
||||
|
||||
$ircdout = "IRCDOUT";
|
||||
|
||||
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
|
||||
if ($text =~ /^o/i) {
|
||||
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");
|
||||
}
|
||||
elsif ($text =~ /^n/i) {
|
||||
chop($text);
|
||||
@nline = split(':', $text);
|
||||
$salt = $saltset[rand(time)%64].$saltset[(rand(time)>>6)%64];
|
||||
$nline[2] = crypt(@nline[2], $salt);
|
||||
print ($ircdout join(':',@nline)."\n");
|
||||
}
|
||||
elsif ($text =~ /^x/i) {
|
||||
chop($text);
|
||||
@xline = split(':', $text);
|
||||
$salt1 = $saltset[rand(time)%64].$saltset[(rand(time)>>6)%64];
|
||||
$salt2 = $saltset[rand(time)%64].$saltset[(rand(time)>>6)%64];
|
||||
$xline[1] = crypt(@xline[1], $salt1);
|
||||
$xline[2] = crypt(@xline[2], $salt2);
|
||||
print ($ircdout join(':',@xline)."\n");
|
||||
}
|
||||
else {
|
||||
print $ircdout "$text";
|
||||
}
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
The foll. patches are NEW in 19.mu1 (besides the old patches of stats-w,
|
||||
ban, topic, client connect, signon time, trace times in previous .mu
|
||||
versions):
|
||||
|
||||
* All the modifications contained in U3.2, namely - TSpre8, silence, bquiet
|
||||
|
||||
* The K line comments patch.
|
||||
|
||||
* The operfail notification patch
|
||||
|
||||
* The mixed case userid reject patch
|
||||
|
||||
For info on these check the file README.patches
|
||||
|
||||
- Mmmm
|
||||
[ $Id$ ]
|
||||
@@ -0,0 +1,34 @@
|
||||
|
||||
For starters, not a lot is new. What is ?
|
||||
|
||||
* STATS o and STATS h added;
|
||||
|
||||
* most STATS options are no longer oper-only;
|
||||
|
||||
* privacy fixes to all of WHO, WHOIS, TRACE and STATS;
|
||||
|
||||
* more options in the ircd.conf file;
|
||||
|
||||
* non-debilitating DNS/ident use (DNS routines written specifically
|
||||
for ircd which indludes small local cache);
|
||||
|
||||
* less bugs;
|
||||
|
||||
* easier to compile;
|
||||
|
||||
* heaps and heaps of new numerics;
|
||||
|
||||
* more problems for old clients that do stupid things;
|
||||
|
||||
* more numeric replies which replace old NOTICE's;
|
||||
|
||||
* compulsory ident checks and optional result usage;
|
||||
|
||||
* sendQ can now be class dependant;
|
||||
|
||||
* server handles client flooding better;
|
||||
|
||||
* for more information on changes, bug fixes during development, see
|
||||
ircd/ChangeLog and common/ChangeLog
|
||||
|
||||
[ $Id$ ]
|
||||
@@ -0,0 +1,41 @@
|
||||
The Internet Relay Chat Program - IRC
|
||||
|
||||
Author: Jeff Trim, April '89
|
||||
Revised: Greg Lindahl, Oct '90 (gl8f@virginia.edu)
|
||||
Re-Revised: Helen Rose, March '94 (hrose@kei.com)
|
||||
|
||||
Have you ever wanted to talk with other computer users in other parts of
|
||||
the world? Well guess what? You can! The program is called IRC and it
|
||||
is networked much over North America, Europe, and Asia, Oceania, and parts
|
||||
of Africa. This program is a substitution for talk(1), ytalk(1) and many
|
||||
other multiple talk programs you might have read about. When you are
|
||||
talking in IRC, everything you type will instantly be transmitted around
|
||||
the world to other users that might be watching their terminals at the
|
||||
time - they can then type something and RESPOND to your messages - and
|
||||
vise versa. I should warn you that the program can be very addictive once
|
||||
you begin to make friends and contacts on IRC ;-) especially when you
|
||||
learn how to cuss in 14 languages.
|
||||
|
||||
Topics of discussion on IRC are varied, just like the topics of Usenet
|
||||
newsgroups are varied. Technical and political discussions are
|
||||
popular, especially when world events are in progress. IRC is also a
|
||||
way to expand your horizons, as people from many countries and
|
||||
cultures are on, 24 hours a day. Most conversations are in English,
|
||||
but there are always channels in German, Japanese, and Finnish, and
|
||||
occasionally other languages.
|
||||
|
||||
How To Get IRC (technical)
|
||||
|
||||
IRC is a fully-distributed client-server system, much like
|
||||
NNTP-Usenet, with several clients availble in C and elisp. You may ftp
|
||||
documentation and clients from any of the following sites:
|
||||
|
||||
many kinds of clients (C, elisp, X11, VMS, REXX for VM, MSDOS, Macintosh):
|
||||
cs.bu.edu:/irc/clients
|
||||
ftp.acsu.buffalo.edu:/pub/irc
|
||||
ftp.funet.fi:/pub/unix/irc
|
||||
coombs.anu.edu.au:/pub/irc
|
||||
|
||||
If you have any questions about IRC installation, write to hrose@kei.com.
|
||||
|
||||
[ $Id$ ]
|
||||
@@ -0,0 +1,86 @@
|
||||
/************************************************************************
|
||||
* IRC - Internet Relay Chat, doc/etiquette
|
||||
* Copyright (C) 1990, Lea Viljanen and Ari Husa
|
||||
*
|
||||
* 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$
|
||||
*/
|
||||
|
||||
HOW TO BEHAVE ON IRC
|
||||
|
||||
Authors: Lea Viljanen (LadyBug) viljanen@kreeta.helsinki.fi
|
||||
Ari Husa (luru) so-luru@tolsun.oulu.fi
|
||||
|
||||
|
||||
1) Language
|
||||
|
||||
The most widely understood and spoken language on IRC is English.
|
||||
However! As IRC is used in many different countries, English is by
|
||||
no means the only language. If you want to speak some other language
|
||||
than English (for example with your friends), go to a separate channel
|
||||
and set the topic (with /topic) to indicate that. For example
|
||||
/topic Finnish only!
|
||||
would mean that this channel would be reserved for Finnish discussion.
|
||||
On the other hand, you should check the topic (with /list command)
|
||||
before you move to a channel to see if there are any restrictions about
|
||||
language.
|
||||
On a channel not restricted by /topic, please speak a language
|
||||
everybody can understand. If you want to do otherwise, change channels
|
||||
and set the topic accordingly.
|
||||
|
||||
|
||||
2) Hello/Goodbye
|
||||
|
||||
It's not necessary to greet everybody on a channel personally.
|
||||
Usually one "Hello" or equivalent is enough. And don't expect everybody
|
||||
to greet you back. On a channel with 20 people that would mean one
|
||||
screenful of hellos. It's sensible not to greet, in order not to be rude
|
||||
to the rest of the channel. If you must say hello, do it with a private /msg.
|
||||
The same applies to goodbyes.
|
||||
|
||||
|
||||
3) Discussion
|
||||
|
||||
When you come to a new channel it's advised you to listen
|
||||
for a while to get an impression of what's discussed. Please feel free
|
||||
to join in, but do not try to force your topic into the discussion
|
||||
if that doesn't come naturally.
|
||||
|
||||
|
||||
4) {}|[]\
|
||||
|
||||
IRC has quite a lot of people from Scandinavian countries,
|
||||
the above characters are letters in their alphabet. This
|
||||
has been explained on IRC about a thousand and one times, so
|
||||
read the following, do not ask it on IRC:
|
||||
|
||||
{ is an A with 2 dots over it
|
||||
} is an A with a small circle above it
|
||||
| is either an O with 2 dots over it or an O with a dash (/) through it
|
||||
[, ], and \ are the preceding three letters in upper case.
|
||||
|
||||
There are a lot of people from Japan as well, who use Kanji characters
|
||||
which may look quite exotic as well. As I don't know Kanji I don't
|
||||
even try to explain any of the characters.
|
||||
|
||||
5) ATTENTION!
|
||||
|
||||
Remember, people on IRC form their opinions about you only by
|
||||
your actions, writings and comments on IRC. So think before you type.
|
||||
Do not "dump" to a channel or user (send large amounts of unwanted
|
||||
information). This is likely to get you /kicked off the channel or
|
||||
/killed off from irc. Dumping causes network 'burbs', connections going
|
||||
down because servers cannot handle the large amount of traffic any more.
|
||||
@@ -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
|
||||
@@ -1,39 +0,0 @@
|
||||
|
||||
Unreal3.1.4-Meadows Release Notes
|
||||
===================================
|
||||
|
||||
* This is yet another significant upgrade over the last version. Most notable
|
||||
compatibility wise is the backporting of the new host cloaking from 3.2.
|
||||
As a result of this, we strongly recommend that you convert all of your servers
|
||||
to 3.1.4 and avoid running a network with mixed versions. They'll link fine
|
||||
and operate okay, but the differences in cloaking will make it easier for
|
||||
individuals to evade bans by simply switching servers.
|
||||
|
||||
* Before this version if a 3.2 server with IPv6 enabled was linked to the
|
||||
network, and a client connected using IPv6, it caused 3.1.x servers to segfault,
|
||||
as the cloaking routine was unable to deal with IPv6 format addresses. This is
|
||||
also corrected in this version
|
||||
|
||||
* Other serious bugs involving the mode system have been resolved. These problems
|
||||
include problems that could potentially generate a desynch on the network. This is
|
||||
yet another reason you should use all 3.1.4 servers.
|
||||
|
||||
* The OperOverride system is completely redone. You must now invite yourself (as an
|
||||
oper) into a channel in order to walk any modes on join.
|
||||
|
||||
* Please Note: There have been a couple of configuration file changes! This is
|
||||
IMPORTANT. Your IRCd WILL NOT START if you don't change the cloak key values found
|
||||
in unrealircd.conf. Additionally, it would be prudent to note that there is a
|
||||
new directive in unrealircd.conf, exempt_all, which permits exempt lines in
|
||||
ircd.conf to match glines in addition to klines. It defaults to 1. Finally, both
|
||||
version numbers in the .network file and unrealircd.conf have been changed. In
|
||||
unrealircd.conf, because of the 4 new directives. In the .network file because
|
||||
we removed techadmin, and the host directive for it. We will NOT bring techadmin
|
||||
back. If you don't like it, readd it yourself, and be sure to note that we won't
|
||||
provide support for modified versions of Unreal.
|
||||
|
||||
* The rest of the changes can be found (obviously) in the Changes file.
|
||||
|
||||
* Finally, read Unreal.nfo as usual AND THE DOCS in doc/.
|
||||
|
||||
- Luke (luke@unrealircd.com)
|
||||
@@ -1,25 +0,0 @@
|
||||
|
||||
Unreal3.1.5-Valek Release Notes
|
||||
===================================
|
||||
|
||||
* IMPORTANT: OperOverride has been modified. In order to be
|
||||
able to override anything as an oper, you MUST have the letter
|
||||
"v" in your O line flags!
|
||||
|
||||
* This release is mostly a bug fix release. It resolves the
|
||||
following issues as well as some others:
|
||||
- Bug with /invite not propagating
|
||||
- Bug with channel exempts being added multiple times
|
||||
- Bug with channel exempts multiplying on synch (to resolve
|
||||
this bug entirely *all* your servers must run 3.1.5)
|
||||
- Bug with /userhost always displaying *
|
||||
- Others (read the Changes file in .)
|
||||
|
||||
* If you are upgrading from an earlier version (before 3.1.4),
|
||||
please read the doc/RELEASE-NOTES.3.1.4 file as well. There
|
||||
were numerous important/significant changes between 3.1.4 and
|
||||
earlier versions.
|
||||
|
||||
* Finally, read Unreal.nfo as usual AND THE DOCS in doc/.
|
||||
|
||||
- Luke (luke@unrealircd.com)
|
||||
@@ -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.
|
||||
|
||||
@@ -259,8 +259,13 @@ ADDLINE
|
||||
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, but only Network Admins are able to send/recieve messages.
|
||||
- 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...
|
||||
|
||||
|
||||
@@ -60,6 +60,7 @@ modified for UnrealIRCD3.1 by codemastr
|
||||
8.8) .......................... Set sadmin_host Line
|
||||
8.9) .......................... Set netadmin_host Line
|
||||
8.10) ......................... Set coadmin_host Line
|
||||
8.11) ......................... Set techadmin_host Line
|
||||
8.12) ......................... Set hidden_host Line
|
||||
8.13) ......................... Set netdomain Line
|
||||
8.14) ......................... Set helpchan Line
|
||||
@@ -457,6 +458,7 @@ o = local oper, flags included: rhgwlckbBnuf
|
||||
O = global oper, flags included: oRDCK
|
||||
a = services admin, access to /samode
|
||||
C = co admin
|
||||
T = tech admin
|
||||
A = admin
|
||||
N = network admin access to remote /rehash and remote /restart and a bunch more
|
||||
* = flags included: AaNCTzSHW^
|
||||
@@ -1633,6 +1635,25 @@ Set coadmin_host ..: coadmin.starspace.net
|
||||
|
||||
--------------------
|
||||
|
||||
8.11) Set techadmin_host Line:
|
||||
|
||||
This allows you to specify a host that TechAdmins will receive when they
|
||||
/oper, this only works if iNAH (See section 8.17) is enabled. If this is left
|
||||
blank it can cause some problems in your IRCd so it is recommended that you
|
||||
fill in a value.
|
||||
|
||||
Syntax:
|
||||
Set techadmin_host : techadminhost
|
||||
This tells the server to switch the host of the TechAdmin to techadminhost when
|
||||
they /oper.
|
||||
|
||||
Examples:
|
||||
Set techadmin_host : techadmin.starspace.net
|
||||
This will make a TechAdmin's host change to techadmin.starspace.net when they
|
||||
/oper up if iNAH is enabled.
|
||||
|
||||
--------------------
|
||||
|
||||
8.12) Set hidden_host Line:
|
||||
|
||||
The Set hidden_host line allows you to specify what the masked part of a users
|
||||
|
||||
@@ -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
|
||||
@@ -141,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-2000
|
||||
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"
|
||||
@@ -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)
|
||||
|
||||
@@ -19,14 +19,6 @@
|
||||
time , this manual will be ever changing :-)
|
||||
|
||||
|
||||
This Manual is written at the time when I am running Unreal-3.1.1-Darkshades (Not public release).
|
||||
However most of these commands will also work on Unreal3.1+sf-Silverheart. In case of any problems ,
|
||||
please visit #UnrealIRCd on irc.fyremoon.net (Official Help Channel) & Bugs can be emailed to
|
||||
unreal-dev@lists.sourceforge.net.
|
||||
Some modes only apply to Unreal-SSL or Unreal-3.1.1 because they require SSL (Secure Sockets Layer)
|
||||
support.
|
||||
|
||||
|
||||
Here is the command list :
|
||||
|
||||
|
||||
@@ -441,6 +433,7 @@
|
||||
a = Is a Services Administrator
|
||||
A = Is a Server Administrator
|
||||
N = Is a Network Administrator
|
||||
T = Is a Tech Admininistator
|
||||
C = Is a Co Administrator
|
||||
c = See's all Connects/Disconnects on local server
|
||||
f = Listen to flood alerts from server
|
||||
@@ -570,12 +563,20 @@
|
||||
|
||||
*** NACHAT Command ***
|
||||
|
||||
This command sends to all NetAdmins online
|
||||
Only for Netadmins. This is a ChatOps style command
|
||||
This command sends to all NetAdmins & TechAdmins online
|
||||
Only for Net/Techadmins. This is a ChatOps style command
|
||||
|
||||
Syntax: NACHAT <text>
|
||||
Example: NACHAT Hey guys!
|
||||
|
||||
*** TECHAT Command ***
|
||||
|
||||
This command sends to all TechAdmins online
|
||||
Only for Net/Techadmins. This is a ChatOps style command
|
||||
|
||||
Syntax: TECHAT <text>
|
||||
Example: TECHAT Hey guys!
|
||||
|
||||
*** KILL Command ***
|
||||
|
||||
Forcefully Disconnects a user from an IRC Server.
|
||||
@@ -674,7 +675,7 @@
|
||||
If servername and flags are not specified this rehashes the ircd.conf , removing
|
||||
any temporary k:lines.
|
||||
If servername is specified, this is used to rehash config files on servername
|
||||
Only NetAdmins may specify a server name
|
||||
Only TechAdmins and NetAdmins may specify a server name
|
||||
|
||||
The flags are used to rehash other config files, valid flags are:
|
||||
-dccdeny - Rehashes dccdeny.conf
|
||||
@@ -753,7 +754,7 @@
|
||||
IRC Operators only.
|
||||
|
||||
Syntax: CHGNAME <nick> <name>
|
||||
Example: CHGNAME hAtbLaDe NetAdmin on SomeNet
|
||||
Example: CHGNAME hAtbLaDe TechAdmin on SomeNet
|
||||
|
||||
*** SQUIT Command ***
|
||||
|
||||
@@ -1051,10 +1052,11 @@
|
||||
A = Gets +A on oper up. Server Administrator
|
||||
a = Gets +a on oper up. Services Administrator
|
||||
N = Gets +N on oper up. Network Administrator
|
||||
T = Gets +T on oper up. Technical Administator
|
||||
C = Gets +C on oper up. Co Administrator
|
||||
Y = Access to do remote /squits and /connects
|
||||
z = Can add /zlines
|
||||
H = Gets +x on oper up.
|
||||
W = Gets +W on oper up.
|
||||
^ = Allows to use umode +I
|
||||
* = Flags AaNCTzSHW^
|
||||
* = Flags AaNCTzSHW^
|
||||
@@ -1,16 +0,0 @@
|
||||
Compiling UnrealIRCd 3.1.x for Windows
|
||||
--------------------------------------
|
||||
This document assumes you have a working build environment for
|
||||
Visual Studio .NET or Visual Studio 6.0. Other versions may work
|
||||
as well, but have not been tested.
|
||||
|
||||
1. Copy include/win32/settings.h and setup.h to include/
|
||||
2. Copy extras/regex/regex.h to include/
|
||||
3. Copy extras/regex/regex.c to src/
|
||||
4. Edit include/settings.h to your liking (pretty much change DOMAINNAME)
|
||||
5. Unzip src/win32/unrealircd.bmp.gz
|
||||
6. Execute "nmake makefile.win32"
|
||||
|
||||
Congratulations, you should have a functioning win32 binary.
|
||||
|
||||
--Luke (luke@unrealircd.com)
|
||||
@@ -1,21 +0,0 @@
|
||||
Dynamic Configuration Guide
|
||||
|
||||
- Edit ircd.conf to correctly reflect your server configuration.
|
||||
|
||||
- Edit networks/unrealircd.conf to suit you. If you're going
|
||||
to use your own network file (encouraged), change the "Include"
|
||||
line to point to your own network file.
|
||||
|
||||
- Assuming you do want your own network file, copy template.network
|
||||
in networks/ to yourircnet.network. Edit it to your liking.
|
||||
|
||||
If you've completed all these steps *correctly* your server should
|
||||
start up without any problems. If there are errors, there is an
|
||||
extremely high chance that it's due to user configuration error.
|
||||
Please read the documentation and check over your configuration files
|
||||
before contacting us.
|
||||
|
||||
If the problem persists, and you cannot fix it, email luke@unrealircd.com
|
||||
or come on irc.ircsystems.net and /join #unreal-support.
|
||||
|
||||
- Luke (luke@unrealircd.com)
|
||||
@@ -136,7 +136,10 @@ int create_client(const char *hostname, const int hostport) {
|
||||
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);
|
||||
|
||||
|
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
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -13,13 +13,10 @@
|
||||
|
||||
#define MAX_MATCH 1
|
||||
#define MAX_WORDLEN 64
|
||||
#define MAX_WORDS 50
|
||||
|
||||
#define PATTERN "\\w*%s\\w*"
|
||||
#define REPLACEWORD "<censored>"
|
||||
|
||||
char *stripbadwords(char *, int);
|
||||
int loadbadwords(char *, int);
|
||||
void freebadwords(void);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
* before Dreamforge aren't safe with more than six. -Donwulff
|
||||
*/
|
||||
#include "msg.h"
|
||||
#define MAXMODEPARAMS (MAXPARA-3) /* Maximum modes processed */
|
||||
#define MAXMODEPARAMS (MAXPARA-2) /* Maximum modes processed */
|
||||
#define RESYNCMODES 12 /* Max modes per MODE in resync */
|
||||
#define MODEPARAMS 6 /* Max modes from user */
|
||||
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
// $Id$
|
||||
#include <windows.h>
|
||||
|
||||
|
||||
#define CIOCLASS "CioClass"
|
||||
|
||||
#ifndef CIO
|
||||
#define CIO
|
||||
|
||||
typedef struct tag_CioLine {
|
||||
BYTE *Data;
|
||||
WORD Len;
|
||||
struct tag_CioLine *Prev, *Next;
|
||||
} CioLine;
|
||||
|
||||
typedef struct tag_CioWndInfo {
|
||||
CioLine *FirstLine, *CurLine;
|
||||
int Lines, Scroll;
|
||||
int Width, Height, XChar, YChar, YJunk, ScrollMe;
|
||||
HFONT hFont;
|
||||
BYTE FR, FG, FB;
|
||||
} CioWndInfo;
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,21 @@
|
||||
// $Id$
|
||||
#include "Cio.h"
|
||||
|
||||
#define GWL_USER 0
|
||||
#define CIO_ADDSTRING WM_USER
|
||||
#define CIO_CLEAR WM_USER+1
|
||||
|
||||
// Cio_Init.c
|
||||
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);
|
||||
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);
|
||||
BOOL Cio_PrintF(HWND hWnd, char *InBuf, ...);
|
||||
@@ -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__
|
||||
@@ -90,9 +93,9 @@ void free();
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
#define TS time_t
|
||||
|
||||
|
||||
extern int match PROTO((char *, char *));
|
||||
#define mycmp(a,b) \
|
||||
( (toupper((a)[0])!=toupper((b)[0])) || smycmp((a)+1,(b)+1) )
|
||||
@@ -123,7 +126,7 @@ extern int inet_netof PROTO((struct IN_ADDR));
|
||||
#endif
|
||||
|
||||
int global_count, max_global_count;
|
||||
extern char *myctime PROTO((TS));
|
||||
extern char *myctime PROTO((time_t));
|
||||
extern char *strtoken PROTO((char **, char *, char *));
|
||||
|
||||
#define PRECISE_CHECK
|
||||
@@ -139,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)])
|
||||
@@ -193,29 +200,49 @@ extern unsigned char char_atribs[];
|
||||
#define ispunct(c) (!(char_atribs[(u_char)(c)]&(CNTRL|ALPHA|DIGIT)))
|
||||
#endif
|
||||
|
||||
#ifndef DMALLOC
|
||||
extern char *MyMalloc();
|
||||
#else
|
||||
#ifndef MALLOCD
|
||||
#define MyFree free
|
||||
#define MyMalloc malloc
|
||||
#define MyRealloc realloc
|
||||
#define MyFree free
|
||||
#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 void flush_connections();
|
||||
|
||||
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.
|
||||
*/
|
||||
|
||||
#ifdef ZIP_LINKS
|
||||
#define ZIPSTUFF " ZIP"
|
||||
#else
|
||||
#define ZIPSTUFF ""
|
||||
#endif
|
||||
|
||||
/* IRCu/Hybrid/Unreal way now :) -Stskeeps */
|
||||
|
||||
#define PROTOCTL_CLIENT \
|
||||
":%s 005 %s" \
|
||||
" MAP" \
|
||||
" KNOCK" \
|
||||
" SAFELIST" \
|
||||
" HCN" \
|
||||
" WALLCHOPS" \
|
||||
" WATCH=%i" \
|
||||
" SILENCE=%i" \
|
||||
" MODES=%i" \
|
||||
@@ -227,6 +254,7 @@ extern struct SLink *find_user_link( /* struct SLink *, struct Client * */ );
|
||||
" CHANTYPES=%s" \
|
||||
" PREFIX=%s" \
|
||||
" CHANMODES=%s,%s,%s,%s" \
|
||||
" NETWORK=%s" \
|
||||
" :are supported by this server"
|
||||
|
||||
#define PROTOCTL_PARAMETERS MAXWATCH, \
|
||||
@@ -239,11 +267,12 @@ extern struct SLink *find_user_link( /* struct SLink *, struct Client * */ );
|
||||
TOPICLEN, \
|
||||
"#", \
|
||||
"(ohv)@%+", \
|
||||
"ohvbeqa", \
|
||||
"kfL", \
|
||||
"l", \
|
||||
"psmntirRcOAQKVGCuzNSM"
|
||||
|
||||
"ohvbeqa", \
|
||||
"k", \
|
||||
"lfL", \
|
||||
"psmntirRcOAQKVHGCuzN", \
|
||||
ircnet005
|
||||
|
||||
/* Server-Server PROTOCTL -Stskeeps */
|
||||
#define PROTOCTL_SERVER "NOQUIT" \
|
||||
" TOKEN" \
|
||||
@@ -254,7 +283,8 @@ extern struct SLink *find_user_link( /* struct SLink *, struct Client * */ );
|
||||
" VL" \
|
||||
" SJ3" \
|
||||
" NS" \
|
||||
" SJB64"
|
||||
" SJB64" \
|
||||
ZIPSTUFF
|
||||
|
||||
#ifdef _WIN32
|
||||
/*
|
||||
@@ -263,6 +293,11 @@ extern struct SLink *find_user_link( /* struct SLink *, struct Client * */ );
|
||||
*/
|
||||
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__)
|
||||
|
||||
@@ -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,15 @@
|
||||
#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.
|
||||
*/
|
||||
#undef DEBUG
|
||||
*/
|
||||
|
||||
/* Type of host. These should be made redundant somehow. -avalon */
|
||||
|
||||
/* BSD Nothing Needed 4.{2,3} BSD, SunOS 3.x, 4.x */
|
||||
@@ -83,7 +84,7 @@
|
||||
|
||||
/*
|
||||
* Defining this will allow all ircops to see people in +s channels
|
||||
* By default, only net admins can see this
|
||||
* By default, only net/tech admins can see this
|
||||
*/
|
||||
#undef SEE_SECRET
|
||||
|
||||
@@ -98,7 +99,25 @@
|
||||
#define ADMINCHAT 1
|
||||
|
||||
/*
|
||||
If you want SHUN_NOTICES, define this
|
||||
* 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
|
||||
|
||||
@@ -118,12 +137,6 @@
|
||||
*/
|
||||
#define STRIPBADWORDS
|
||||
|
||||
/* STATS_ONLYOPER
|
||||
* This changes all stats related commands so that the output
|
||||
* is only visible if the user is an oper.
|
||||
*/
|
||||
#undef STATS_ONLYOPER
|
||||
|
||||
/*
|
||||
* NO_OPEROVERRIDE
|
||||
* This will disable OperMode, OperTopic and Banwalks
|
||||
@@ -131,23 +144,18 @@
|
||||
#undef NO_OPEROVERRIDE
|
||||
|
||||
/*
|
||||
* OPEROVERRIDE_VERIFY
|
||||
* This will prompt opers before permitting them to join +s/+p
|
||||
* channels, preventing them from "accidentally" joining random
|
||||
* channels
|
||||
*/
|
||||
#ifndef NO_OPEROVERRIDE
|
||||
#define OPEROVERRIDE_VERIFY 1
|
||||
#else
|
||||
#undef OPEROVERRIDE_VERIFY
|
||||
#endif
|
||||
* 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
|
||||
* Disable /sethost, /setident, /chgname, /chghost, /chgident
|
||||
*/
|
||||
#undef DISABLE_USERMOD
|
||||
|
||||
/*
|
||||
/*
|
||||
Ident checking
|
||||
#define this to disable ident checking
|
||||
*/
|
||||
@@ -194,6 +202,11 @@
|
||||
*/
|
||||
#undef COMMENT_IS_FILE
|
||||
|
||||
/*
|
||||
* MAXUNKNOWNCONNECTIONSPERIP
|
||||
*/
|
||||
#define MAXUNKNOWNCONNECTIONSPERIP 3
|
||||
|
||||
|
||||
/* Do these work? I dunno... */
|
||||
|
||||
@@ -219,9 +232,10 @@
|
||||
* 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.
|
||||
@@ -241,7 +255,7 @@
|
||||
* 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 ZPATH "ircd.notes" /* server notes */
|
||||
@@ -254,24 +268,6 @@
|
||||
#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
|
||||
|
||||
/* CHROOTDIR
|
||||
*
|
||||
* Define for value added security if you are a rooter.
|
||||
@@ -362,7 +358,7 @@
|
||||
#define LOG_FACILITY LOG_DAEMON
|
||||
#endif /* USE_SYSLOG */
|
||||
|
||||
/*
|
||||
/*
|
||||
* 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.
|
||||
@@ -395,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
|
||||
@@ -423,7 +419,7 @@
|
||||
*/
|
||||
#define CLIENT_FLOOD 8000
|
||||
|
||||
/*
|
||||
/*
|
||||
* Define your network service names here.
|
||||
*/
|
||||
#define ChanServ "ChanServ"
|
||||
@@ -447,30 +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
|
||||
|
||||
/* 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. */
|
||||
@@ -492,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
|
||||
@@ -525,7 +497,7 @@
|
||||
|
||||
/*
|
||||
* 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 */
|
||||
|
||||
@@ -538,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 */
|
||||
@@ -613,17 +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
|
||||
|
||||
#undef LEAST_IDLE
|
||||
|
||||
#if defined(mips) || defined(PCS)
|
||||
#undef SYSV
|
||||
@@ -699,7 +678,7 @@ error You stuffed up config.h signals
|
||||
# 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
|
||||
@@ -711,14 +690,24 @@ error You stuffed up config.h signals
|
||||
# undef FORCE_CORE
|
||||
#endif
|
||||
/* use cflag longmodes */
|
||||
#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
|
||||
#define USE_LONGMODE
|
||||
#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__ */
|
||||
|
||||
|
||||
@@ -23,13 +23,18 @@
|
||||
#define DYNCONF_H
|
||||
|
||||
/* config level */
|
||||
#define DYNCONF_CONF_VERSION "1.6"
|
||||
#define DYNCONF_NETWORK_VERSION "2.3"
|
||||
#define DYNCONF_CONF_VERSION "1.5"
|
||||
#define DYNCONF_NETWORK_VERSION "2.2"
|
||||
|
||||
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;
|
||||
@@ -39,7 +44,7 @@ struct zNetwork {
|
||||
char *x_netadmin_host;
|
||||
char *x_coadmin_host;
|
||||
char *x_hidden_host;
|
||||
char *x_netdomain;
|
||||
char *x_prefix_quit;
|
||||
char *x_helpchan;
|
||||
char *x_stats_server;
|
||||
};
|
||||
@@ -47,35 +52,26 @@ struct zNetwork {
|
||||
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; */
|
||||
unsigned ident_check:1;
|
||||
unsigned fail_oper_warn:1;
|
||||
unsigned show_connect_info:1;
|
||||
long host_timeout;
|
||||
int host_retries;
|
||||
int exempt_all;
|
||||
char *name_server;
|
||||
char *kline_address;
|
||||
char *include;
|
||||
char *domainname;
|
||||
char *domainmask; /* '*' + domainname */
|
||||
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;
|
||||
long ckey_1;
|
||||
long ckey_2;
|
||||
long ckey_3;
|
||||
aNetwork network;
|
||||
};
|
||||
|
||||
@@ -84,14 +80,7 @@ extern aConfiguration iConf;
|
||||
#endif
|
||||
|
||||
#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,13 +90,19 @@ extern aConfiguration iConf;
|
||||
#define AUTO_JOIN_CHANS iConf.auto_join_chans
|
||||
#define OPER_AUTO_JOIN_CHANS iConf.oper_auto_join_chans
|
||||
#define HOST_TIMEOUT iConf.host_timeout
|
||||
#define EXEMPT_ALL iConf.exempt_all
|
||||
#define HOST_RETRIES iConf.host_retries
|
||||
#define CLOAK_KEY1 iConf.ckey_1
|
||||
#define CLOAK_KEY2 iConf.ckey_2
|
||||
#define CLOAK_KEY3 iConf.ckey_3
|
||||
#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
|
||||
@@ -116,10 +111,14 @@ extern aConfiguration iConf;
|
||||
#define sadmin_host iConf.network.x_sadmin_host
|
||||
#define netadmin_host iConf.network.x_netadmin_host
|
||||
#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);
|
||||
|
||||
@@ -12,6 +12,11 @@ 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
|
||||
|
||||
@@ -34,27 +34,101 @@ 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 TS TSoffset;
|
||||
extern time_t TSoffset;
|
||||
/* Prototype added to force errors -- Barubary */
|
||||
extern TS check_pings(TS now);
|
||||
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.. */
|
||||
|
||||
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"
|
||||
@@ -67,280 +141,243 @@ extern LoopStruct loop;
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
#endif
|
||||
extern aChannel *find_channel PROTO((char *, aChannel *));
|
||||
extern void remove_user_from_channel PROTO((aClient *, aChannel *));
|
||||
extern char *base64enc PROTO((long));
|
||||
extern long base64dec PROTO((char *));
|
||||
extern void add_server_to_table PROTO((aClient *));
|
||||
extern void remove_server_from_tabel PROTO((aClient *));
|
||||
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 has_voice PROTO((aClient *, aChannel *));
|
||||
extern int is_chanowner PROTO((aClient *, aChannel *));
|
||||
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_server_quickx 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 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 *find_or_add(char *);
|
||||
extern int attach_conf(aClient *, aConfItem *);
|
||||
extern void inittoken();
|
||||
extern void reset_help();
|
||||
|
||||
#ifndef DMALLOC
|
||||
extern char *MyMalloc PROTO((int)), *MyRealloc PROTO((char *, int));
|
||||
#endif
|
||||
extern char *debugmode, *configfile, *sbrk0;
|
||||
extern char *getfield PROTO((char *));
|
||||
extern void get_sockhost PROTO((aClient *, char *));
|
||||
extern char *strerror PROTO((int));
|
||||
extern int dgets PROTO((int, char *, int));
|
||||
extern char *inetntoa PROTO((char *));
|
||||
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;
|
||||
#else
|
||||
extern int dbufalloc, dbufblocks, debuglevel, errno, h_errno;
|
||||
#endif
|
||||
extern int highest_fd, debuglevel, portnum, debugtty, maxusersperchannel;
|
||||
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 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 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((TS));
|
||||
extern int read_message(time_t);
|
||||
#else
|
||||
extern int read_message PROTO((TS, 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 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_connectnotice(char *nick, anUser *user, aClient *sptr, int disconnect, char *comment);
|
||||
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_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 deliver_it(aClient *, char *, int);
|
||||
|
||||
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((TS)), *date PROTO((TS));
|
||||
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 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 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 *, long, long, char *));
|
||||
extern void send_umode_out PROTO((aClient *, aClient *, long));
|
||||
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 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 *));
|
||||
|
||||
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 TS timeout_query_list PROTO((TS));
|
||||
extern TS expire_cache PROTO((TS));
|
||||
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 time_t atime(char *xtime);
|
||||
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 int dopacket PROTO((aClient *, char *, int));
|
||||
/* 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 */
|
||||
|
||||
/*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
|
||||
@@ -348,6 +385,49 @@ 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
|
||||
|
||||
@@ -58,7 +58,7 @@ typedef struct hashentry {
|
||||
#define WW_MAX_INITIAL_MASK (WW_MAX_INITIAL-1)
|
||||
#define WW_MAX (WW_MAX_INITIAL*MAX_SUB)
|
||||
|
||||
#define NOTIFYHASHSIZE 10007 /* prime number */
|
||||
#define WATCHHASHSIZE 10007 /* prime number */
|
||||
|
||||
#define NullChn ((aChannel *)0)
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
#ifdef __STDC__
|
||||
# ifndef _WIN32
|
||||
extern __u_l inet_addr(char *);
|
||||
extern char *inet_ntoa(char *);
|
||||
extern char *inet_ntoa(struct IN_ADDR);
|
||||
# endif
|
||||
extern __u_l inet_makeaddr(int, int);
|
||||
extern __u_l inet_network(char *);
|
||||
|
||||
@@ -0,0 +1,172 @@
|
||||
/************************************************************************
|
||||
* Unreal Internet Relay Chat Daemon, include/modules.h
|
||||
* (C) Carsten V. Munk 2000 <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 MOD_VERSION "3.2-b5-1"
|
||||
#define MOD_WE_SUPPORT "3.2-b5*"
|
||||
#define MAXHOOKTYPES 20
|
||||
|
||||
#if defined(_WIN32) && !defined(STATIC_LINKING)
|
||||
#define DLLFUNC _declspec(dllexport)
|
||||
#define irc_dlopen(x,y) LoadLibrary(x)
|
||||
#define irc_dlclose FreeLibrary
|
||||
#define irc_dlsym(x,y,z) z = (void *)GetProcAddress(x,y)
|
||||
#undef irc_dlerror
|
||||
#elif defined(HPUX)
|
||||
#define irc_dlopen(x,y) shl_load(x,y,0L)
|
||||
#define irc_dlsym(x,y,z) shl_findsym(x,y,z)
|
||||
#define irc_dlclose shl_unload
|
||||
#define irc_dlerror() strerror(errno)
|
||||
#else
|
||||
#define irc_dlopen dlopen
|
||||
#define irc_dlclose dlclose
|
||||
#define irc_dlsym(x,y,z) z = dlsym(x,y)
|
||||
#define irc_dlerror dlerror
|
||||
#define DLLFUNC
|
||||
#endif
|
||||
|
||||
typedef void (*vFP)(); /* Void function pointer */
|
||||
typedef int (*iFP)(); /* Integer function pointer */
|
||||
typedef char (*cFP)(); /* char * function pointer */
|
||||
|
||||
/*
|
||||
* For resolving symbols
|
||||
* Look further down for definition of the structure
|
||||
*/
|
||||
typedef struct _mod_symboltable Mod_SymbolDepTable;
|
||||
|
||||
/*
|
||||
* Module header that every module must include, with the name of
|
||||
* mod_header
|
||||
*/
|
||||
|
||||
typedef struct _ModuleHeader {
|
||||
char *name;
|
||||
char *version;
|
||||
char *description;
|
||||
char *modversion;
|
||||
Mod_SymbolDepTable *symdep;
|
||||
} ModuleHeader;
|
||||
|
||||
/*
|
||||
* One piece of Borg ass..
|
||||
*/
|
||||
typedef struct _Module Module;
|
||||
|
||||
typedef struct _ModuleChild
|
||||
{
|
||||
struct _ModuleChild *prev, *next;
|
||||
Module *child; /* Aww. aint it cute? */
|
||||
} ModuleChild;
|
||||
|
||||
/*
|
||||
* What we use to keep track internally of the modules
|
||||
*/
|
||||
|
||||
struct _Module
|
||||
{
|
||||
struct _Module *prev, *next;
|
||||
ModuleHeader *header; /* The module's header */
|
||||
#ifdef _WIN32
|
||||
HMODULE dll; /* Return value of LoadLibrary */
|
||||
#elif defined(HPUX)
|
||||
shl_t dll;
|
||||
#else
|
||||
void *dll; /* Return value of dlopen */
|
||||
#endif
|
||||
unsigned char flags; /* 8-bits for flags .. */
|
||||
ModuleChild *children;
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Symbol table
|
||||
*/
|
||||
|
||||
struct _mod_symboltable
|
||||
{
|
||||
#ifndef STATIC_LINKING
|
||||
char *symbol;
|
||||
#else
|
||||
void *realfunc;
|
||||
#endif
|
||||
vFP *pointer;
|
||||
#ifndef STATIC_LINKING
|
||||
char *module;
|
||||
#endif
|
||||
};
|
||||
|
||||
#ifndef STATIC_LINKING
|
||||
#define MOD_Dep(name, container,module) {#name, (vFP *) &container, module}
|
||||
#else
|
||||
#define MOD_Dep(name, container,module) {(void *)&name, (vFP *) &container}
|
||||
#endif
|
||||
|
||||
|
||||
extern Hook *Hooks[MAXHOOKTYPES];
|
||||
extern Hook *global_i;
|
||||
|
||||
void Module_Init(void);
|
||||
char *Module_Load(char *path, int load);
|
||||
int Module_Unload(char *name, int unload);
|
||||
vFP Module_Sym(char *name);
|
||||
vFP Module_SymX(char *name, Module **mptr);
|
||||
int Module_free(Module *mod);
|
||||
|
||||
#define add_Hook(hooktype, func) HookAddEx(hooktype, func, NULL)
|
||||
#define del_Hook(hooktype, func) HookDelEx(hooktype, func, NULL)
|
||||
#define HookAdd(hooktype, func) HookAddEx(hooktype, func, NULL)
|
||||
#define HookDel(hooktype, func) HookDelEx(hooktype, func, NULL)
|
||||
|
||||
#define add_HookX(hooktype, func1, func2) HookAddEx(hooktype, func1, func2)
|
||||
#define del_HookX(hooktype, func1, func2) HookDelEx(hooktype, func1, func2)
|
||||
|
||||
void HookAddEx(int hooktype, int (*intfunc)(), void (*voidfunc)());
|
||||
void HookDelEx(int hooktype, int (*intfunc)(), void (*voidfunc)());
|
||||
|
||||
#define RunHook0(hooktype) for (global_i = Hooks[hooktype]; global_i; global_i = global_i->next)(*(global_i->func.intfunc))()
|
||||
#define RunHook(hooktype,x) for (global_i = Hooks[hooktype]; global_i; global_i = global_i->next) (*(global_i->func.intfunc))(x)
|
||||
#define RunHookReturn(hooktype,x,ret) for (global_i = Hooks[hooktype]; global_i; global_i = global_i->next) if((*(global_i->func.intfunc))(x) ret) return
|
||||
#define RunHook2(hooktype,x,y) for (global_i = Hooks[hooktype]; global_i; global_i = global_i->next) (*(global_i->func.intfunc))(x,y)
|
||||
|
||||
|
||||
/* Hook types */
|
||||
#define HOOKTYPE_LOCAL_QUIT 1
|
||||
#define HOOKTYPE_LOCAL_NICKCHANGE 2
|
||||
#define HOOKTYPE_LOCAL_CONNECT 3
|
||||
#define HOOKTYPE_SCAN_HOST 4 /* Taken care of in scan.c */
|
||||
#define HOOKTYPE_SCAN_INFO 5 /* Taken care of in scan.c */
|
||||
#define HOOKTYPE_CONFIG_UNKNOWN 6
|
||||
#define HOOKTYPE_REHASH 7
|
||||
#define HOOKTYPE_PRE_LOCAL_CONNECT 8
|
||||
#define HOOKTYPE_HTTPD_URL 9
|
||||
#define HOOKTYPE_GUEST 10
|
||||
#define HOOKTYPE_SERVER_CONNECT 11
|
||||
#define HOOKTYPE_SERVER_QUIT 12
|
||||
|
||||
/* Module flags */
|
||||
#define MODFLAG_NONE 0x0000
|
||||
#define MODFLAG_LOADED 0x0001 /* (mod_load has been called and suceeded) */
|
||||
|
||||
/* Module function return values */
|
||||
#define MOD_SUCCESS 0
|
||||
#define MOD_FAILED -1
|
||||
#define MOD_DELAY 2
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/************************************************************************
|
||||
* Unreal Internet Relay Chat Daemon, src/agent.c
|
||||
* (C) 1999 Carsten Munk (Techie/Stskeeps) <cmunk@toybox.flirt.org>
|
||||
/*
|
||||
* IRC - Internet Relay Chat, include/modules/blackhole.h
|
||||
* (C) 2001 Carsten Munk (Techie/Stskeeps) <stskeeps@tspre.org>
|
||||
*
|
||||
* See file AUTHORS in IRC package for additional names of
|
||||
* the programmers.
|
||||
@@ -20,23 +20,15 @@
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#include "struct.h"
|
||||
#include "common.h"
|
||||
#include "sys.h"
|
||||
#include "numeric.h"
|
||||
#include "msg.h"
|
||||
#include "channel.h"
|
||||
#include "userload.h"
|
||||
#include "version.h"
|
||||
#include <time.h>
|
||||
#include <sys/stat.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#ifdef _WIN32
|
||||
#include <io.h>
|
||||
#endif
|
||||
#include <fcntl.h>
|
||||
#include "h.h"
|
||||
/* We need it */
|
||||
#include "threads.h"
|
||||
|
||||
ID_Copyright("(C) Carsten Munk 1999");
|
||||
typedef struct _conf_blackhole ConfigItem_blackhole;
|
||||
struct _conf_blackhole
|
||||
{
|
||||
char *ip;
|
||||
char *outip;
|
||||
short port;
|
||||
};
|
||||
|
||||
extern ConfigItem_blackhole blackhole_conf;
|
||||
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* IRC - Internet Relay Chat, include/modules/scan.h
|
||||
* (C) 2001 Carsten Munk (Techie/Stskeeps) <stskeeps@tspre.org>
|
||||
*
|
||||
* See file AUTHORS in IRC package for additional names of
|
||||
* the programmers.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
/* We need it */
|
||||
#include "threads.h"
|
||||
|
||||
typedef struct _Scan_Result {
|
||||
struct IN_ADDR in;
|
||||
char reason[60];
|
||||
} Scan_Result;
|
||||
|
||||
typedef struct _Scan_AddrStruct
|
||||
{
|
||||
struct _Scan_AddrStruct *prev, *next;
|
||||
struct IN_ADDR in;
|
||||
unsigned char refcnt;
|
||||
MUTEX lock;
|
||||
} Scan_AddrStruct;
|
||||
|
||||
|
||||
extern EVENT(e_scannings_clean);
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
/*
|
||||
UnrealIRCd internal webserver - httpd.h
|
||||
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.
|
||||
*/
|
||||
|
||||
typedef struct _httpd_header HTTPd_Header;
|
||||
|
||||
struct _httpd_header
|
||||
{
|
||||
char *name;
|
||||
char *value;
|
||||
HTTPd_Header *next;
|
||||
};
|
||||
|
||||
typedef struct _httpd_request HTTPd_Request;
|
||||
|
||||
struct _httpd_request
|
||||
{
|
||||
SOCKET fd;
|
||||
char inbuf[1024];
|
||||
short pos;
|
||||
/* 0 = gimme head request 1 = getting head */
|
||||
unsigned state : 2;
|
||||
/* 1 = GET 0 = POST */
|
||||
unsigned method : 1;
|
||||
|
||||
char *url;
|
||||
HTTPd_Header *headers;
|
||||
long content_length;
|
||||
HTTPd_Header *dataheaders;
|
||||
};
|
||||
|
||||
char *GetField(HTTPd_Header *header, char *name);
|
||||
char *GetHeader(HTTPd_Request *request, char *name);
|
||||
void httpd_standard_header(HTTPd_Request *request, char *type);
|
||||
void httpd_badrequest(HTTPd_Request *request, char *reason);
|
||||
void sockprintf(HTTPd_Request *r, char *format, ...);
|
||||
void httpd_sendfile(HTTPd_Request *r, char *filename);
|
||||
@@ -24,38 +24,8 @@
|
||||
#ifndef __msg_include__
|
||||
#define __msg_include__
|
||||
|
||||
/*
|
||||
* The tokens are in the ascii character range of 33-127, and we start
|
||||
* from 33 and just move up. It would be nice to match then up so they
|
||||
* are slightly related to their string counterpart, but that makes it
|
||||
* too confusing when we want to add another one and need to make sure
|
||||
* we're not using one already used. -Cabal95
|
||||
*
|
||||
* As long as the #defines are kept statically placed, it will be fine.
|
||||
* We don't care/worry about the msgtab[] since it can be dynamic, but
|
||||
* the tokens it uses will still be static according to the messages
|
||||
* they represent. In other words leave the #defines in order, if you're
|
||||
* going to add something, PUT IT AT THE END. Do not even look for an
|
||||
* open spot somewhere, as that may lead to one type of message being
|
||||
* sent by server A to server B, but server B thinks its something else.
|
||||
* Remember, skip the : since its got a special use, and I skip the \ too
|
||||
* since it _may_ cause problems, but not sure. -Cabal95
|
||||
* I'm skipping A and a as well, because some clients and scripts use
|
||||
* these to test if the server has already processed whole queue.
|
||||
* Since the client could request this protocol withhout the script
|
||||
* knowing it, I'm considering that reserved, and TRACE/A is now 'b'.
|
||||
* The normal msgtab should probably process this as special. -Donwulff
|
||||
*/
|
||||
|
||||
/* 12/05/1999 - I was wrong - I didnt see the token[2] in struct Message
|
||||
okie 60*60 commands more :P - Sowwy!!! -sts
|
||||
|
||||
*/
|
||||
|
||||
#define MSG_PRIVATE "PRIVMSG" /* PRIV */
|
||||
#define TOK_PRIVATE "!" /* 33 */
|
||||
#define MSG_WHO "WHO" /* WHO -> WHOC */
|
||||
#define TOK_WHO "\"" /* 34 */
|
||||
#define MSG_WHOIS "WHOIS" /* WHOI */
|
||||
#define TOK_WHOIS "#" /* 35 */
|
||||
#define MSG_WHOWAS "WHOWAS" /* WHOW */
|
||||
@@ -226,22 +196,20 @@
|
||||
#define TOK_ADDLINE "z" /* 122 */
|
||||
#define MSG_GLINE "GLINE" /* The awesome g-line */
|
||||
#define TOK_GLINE "}" /* 125 */
|
||||
#define MSG_GZLINE "GZLINE" /* Teh awesome global z-line */
|
||||
#define TOK_GZLINE "{" /* ahem? */
|
||||
#define MSG_SJOIN "SJOIN"
|
||||
#define TOK_SJOIN "~"
|
||||
#define MSG_SETHOST "SETHOST" /* sethost */
|
||||
#define TOK_SETHOST "AA" /* 127 4ever !;) */
|
||||
#define MSG_TECHAT "TECHAT" /* techadmin chat */
|
||||
#define TOK_TECHAT "AB" /* questionmark? */
|
||||
#define MSG_NACHAT "NACHAT" /* netadmin chat */
|
||||
#define TOK_NACHAT "AC" /* *beep* */
|
||||
#define MSG_SETIDENT "SETIDENT" /* set ident */
|
||||
#define TOK_SETIDENT "AD" /* good old BASIC ;P */
|
||||
#define MSG_SETIDENT "SETIDENT"
|
||||
#define TOK_SETIDENT "AD"
|
||||
#define MSG_SETNAME "SETNAME" /* set GECOS */
|
||||
#define TOK_SETNAME "AE" /* its almost unreeaaall... */
|
||||
#define MSG_LAG "LAG" /* Lag detect */
|
||||
#define TOK_LAG "AF" /* a or ? */
|
||||
#define MSG_SDESC "SDESC" /* set description */
|
||||
#define TOK_SDESC "AG"
|
||||
#define MSG_STATSERV "STATSERV" /* alias */
|
||||
#define TOK_STATSERV "AH"
|
||||
#define MSG_KNOCK "KNOCK"
|
||||
@@ -296,8 +264,6 @@
|
||||
#define TOK_BOTMOTD "BF"
|
||||
#define MSG_REMGLINE "REMGLINE" /* remove g-line */
|
||||
#define TOK_REMGLINE "BG"
|
||||
#define MSG_REMGZLINE "REMGZLINE" /* remove global z-line */
|
||||
#define TOK_REMGZLINE "BP"
|
||||
#define MSG_HTM "HTM"
|
||||
#define TOK_HTM "BH"
|
||||
#define MSG_UMODE2 "UMODE2"
|
||||
@@ -321,6 +287,12 @@
|
||||
#define MSG_BOTSERV "BOTSERV"
|
||||
#define TOK_BOTSERV "BS"
|
||||
|
||||
#define MSG_CYCLE "CYCLE"
|
||||
#define TOK_CYCLE "BP"
|
||||
|
||||
#define MSG_MODULE "MODULE"
|
||||
#define TOK_MODULE "BQ"
|
||||
|
||||
#define MAXPARA 15
|
||||
|
||||
extern int m_private(), m_topic(), m_join(), m_part(), m_mode(), m_svsmode();
|
||||
@@ -332,12 +304,10 @@ extern int m_zline(), m_unzline();
|
||||
extern int m_gnotice(), m_goper(), m_globops(), m_locops(), m_unsqline(),
|
||||
m_chatops();
|
||||
extern int m_protoctl();
|
||||
extern int m_motd(), m_who(), m_whois(), m_user(), m_list();
|
||||
extern int m_motd(), m_whois(), m_user(), m_list();
|
||||
extern int m_server(), m_info(), m_links(), m_summon(), m_stats();
|
||||
extern int m_users(), m_version(), m_help();
|
||||
extern int m_nickserv(), m_operserv(), m_chanserv(), m_memoserv();
|
||||
extern int m_infoserv(), m_helpserv(), m_botserv(), m_services(), m_identify();
|
||||
extern int m_statserv();
|
||||
extern int m_services(), m_identify();
|
||||
extern int m_squit(), m_away(), m_connect();
|
||||
extern int m_oper(), m_pass(), m_trace();
|
||||
extern int m_time(), m_names(), m_admin();
|
||||
@@ -346,12 +316,11 @@ extern int m_motd(), m_whowas(), m_silence();
|
||||
extern int m_service(), m_userhost(), m_ison(), m_watch();
|
||||
extern int m_service(), m_servset(), m_servlist(), m_squery();
|
||||
extern int m_rehash(), m_restart(), m_die(), m_dns(), m_hash();
|
||||
/*extern int m_noshortn(),m_noshortc(),m_noshortm(),m_noshorto(),m_noshorth();*/
|
||||
extern int m_gzline(), m_remgzline();
|
||||
|
||||
extern int m_gline(), m_remgline(), m_map(), m_svs2mode(), m_admins(),
|
||||
m_dalinfo();
|
||||
extern int m_addline(), m_rules(), m_mkpasswd();
|
||||
extern int m_sethost(), m_nachat(), m_setident(), m_setname();
|
||||
extern int m_sethost(), m_nachat(), m_techat(), m_setident(), m_setname();
|
||||
extern int m_lag(), m_sdesc(), m_knock(), m_credits();
|
||||
extern int m_license(), m_chghost(), m_rping(), m_rpong();
|
||||
extern int m_netinfo(), m_sendumode(), m_addmotd(), m_addomotd();
|
||||
@@ -360,156 +329,7 @@ extern int m_svsjoin(), m_sajoin(), m_svspart(), m_sapart();
|
||||
extern int m_chgident(), m_swhois(), m_svso(), m_svsfline();
|
||||
extern int m_tkl(), m_vhost(), m_botmotd(), m_sjoin(), m_htm();
|
||||
extern int m_umode2(), m_dccdeny(), m_undccdeny();
|
||||
extern int m_chgname(), m_shun(), m_post();
|
||||
#ifdef GUEST
|
||||
extern int m_guest();
|
||||
extern int m_chgname(), m_shun(), m_post(), m_cycle();
|
||||
extern int m_module(), m_alias();
|
||||
#endif
|
||||
|
||||
#ifdef MSGTAB
|
||||
struct Message *msgmap[256];
|
||||
struct Message msgtab[] = {
|
||||
{MSG_PRIVATE, m_private, 0, MAXPARA, TOK_PRIVATE, 0L},
|
||||
{MSG_NOTICE, m_notice, 0, MAXPARA, TOK_NOTICE, 0L},
|
||||
{MSG_MODE, m_mode, 0, MAXPARA, TOK_MODE, 0L},
|
||||
{MSG_NICK, m_nick, 0, MAXPARA, TOK_NICK, 0L},
|
||||
{MSG_JOIN, m_join, 0, MAXPARA, TOK_JOIN, 0L},
|
||||
{MSG_PING, m_ping, 0, MAXPARA, TOK_PING, 0L},
|
||||
{MSG_WHOIS, m_whois, 0, MAXPARA, TOK_WHOIS, 0L},
|
||||
{MSG_ISON, m_ison, 0, 1, TOK_ISON, 0L},
|
||||
{MSG_USER, m_user, 0, MAXPARA, TOK_USER, 0L},
|
||||
{MSG_PONG, m_pong, 0, MAXPARA, TOK_PONG, 0L},
|
||||
{MSG_PART, m_part, 0, MAXPARA, TOK_PART, 0L},
|
||||
{MSG_QUIT, m_quit, 0, MAXPARA, TOK_QUIT, 0L},
|
||||
{MSG_WATCH, m_watch, 0, 1, TOK_WATCH, 0L},
|
||||
{MSG_USERHOST, m_userhost, 0, 1, TOK_USERHOST, 0L},
|
||||
{MSG_SVSNICK, m_svsnick, 0, MAXPARA, TOK_SVSNICK, 0L},
|
||||
{MSG_SVSMODE, m_svsmode, 0, MAXPARA, TOK_SVSMODE, 0L},
|
||||
{MSG_LUSERS, m_lusers, 0, MAXPARA, TOK_LUSERS, 0L},
|
||||
{MSG_IDENTIFY, m_identify, 0, 1, TOK_IDENTIFY, 0L},
|
||||
{MSG_CHANSERV, m_chanserv, 0, 1, TOK_CHANSERV, 0L},
|
||||
{MSG_TOPIC, m_topic, 0, MAXPARA, TOK_TOPIC, 0L},
|
||||
{MSG_INVITE, m_invite, 0, MAXPARA, TOK_INVITE, 0L},
|
||||
{MSG_KICK, m_kick, 0, MAXPARA, TOK_KICK, 0L},
|
||||
{MSG_WALLOPS, m_wallops, 0, 1, TOK_WALLOPS, 0L},
|
||||
{MSG_ERROR, m_error, 0, MAXPARA, TOK_ERROR, 0L},
|
||||
{MSG_KILL, m_kill, 0, MAXPARA, TOK_KILL, 0L},
|
||||
{MSG_PROTOCTL, m_protoctl, 0, MAXPARA, TOK_PROTOCTL, 0L},
|
||||
{MSG_AWAY, m_away, 0, MAXPARA, TOK_AWAY, 0L},
|
||||
{MSG_SERVER, m_server, 0, MAXPARA, TOK_SERVER, 0L},
|
||||
{MSG_SQUIT, m_squit, 0, MAXPARA, TOK_SQUIT, 0L},
|
||||
{MSG_WHO, m_who, 0, MAXPARA, TOK_WHO, 0L},
|
||||
{MSG_WHOWAS, m_whowas, 0, MAXPARA, TOK_WHOWAS, 0L},
|
||||
{MSG_LIST, m_list, 0, MAXPARA, TOK_LIST, 0L},
|
||||
{MSG_NAMES, m_names, 0, MAXPARA, TOK_NAMES, 0L},
|
||||
{MSG_TRACE, m_trace, 0, MAXPARA, TOK_TRACE, 0L},
|
||||
{MSG_PASS, m_pass, 0, MAXPARA, TOK_PASS, 0L},
|
||||
{MSG_TIME, m_time, 0, MAXPARA, TOK_TIME, 0L},
|
||||
{MSG_OPER, m_oper, 0, MAXPARA, TOK_OPER, 0L},
|
||||
{MSG_CONNECT, m_connect, 0, MAXPARA, TOK_CONNECT, 0L},
|
||||
{MSG_VERSION, m_version, 0, MAXPARA, TOK_VERSION, 0L},
|
||||
{MSG_STATS, m_stats, 0, MAXPARA, TOK_STATS, 0L},
|
||||
{MSG_LINKS, m_links, 0, MAXPARA, TOK_LINKS, 0L},
|
||||
{MSG_ADMIN, m_admin, 0, MAXPARA, TOK_ADMIN, 0L},
|
||||
{MSG_SUMMON, m_summon, 0, 1, TOK_SUMMON, 0L},
|
||||
{MSG_USERS, m_users, 0, MAXPARA, TOK_USERS, 0L},
|
||||
{MSG_SAMODE, m_samode, 0, MAXPARA, TOK_SAMODE, 0L},
|
||||
{MSG_SVSKILL, m_svskill, 0, MAXPARA, TOK_SVSKILL, 0L},
|
||||
{MSG_SVSNOOP, m_svsnoop, 0, MAXPARA, TOK_SVSNOOP, 0L},
|
||||
{MSG_CS, m_chanserv, 0, 1, TOK_CHANSERV, 0L},
|
||||
{MSG_NICKSERV, m_nickserv, 0, 1, TOK_NICKSERV, 0L},
|
||||
{MSG_NS, m_nickserv, 0, 1, TOK_NICKSERV, 0L},
|
||||
{MSG_INFOSERV, m_infoserv, 0, 1, TOK_INFOSERV, 0L},
|
||||
{MSG_IS, m_infoserv, 0, 1, TOK_INFOSERV, 0L},
|
||||
{MSG_OPERSERV, m_operserv, 0, 1, TOK_OPERSERV, 0L},
|
||||
{MSG_OS, m_operserv, 0, 1, TOK_OPERSERV, 0L},
|
||||
{MSG_MEMOSERV, m_memoserv, 0, 1, TOK_MEMOSERV, 0L},
|
||||
{MSG_MS, m_memoserv, 0, 1, TOK_MEMOSERV, 0L},
|
||||
{MSG_HELPSERV, m_helpserv, 0, 1, TOK_HELPSERV, 0L},
|
||||
{MSG_HS, m_helpserv, 0, 1, TOK_HELPSERV, 0L},
|
||||
{MSG_SERVICES, m_services, 0, 1, TOK_SERVICES, 0L},
|
||||
{MSG_HELP, m_help, 0, 1, TOK_HELP, 0L},
|
||||
{MSG_HELPOP, m_help, 0, 1, TOK_HELP, 0L},
|
||||
{MSG_INFO, m_info, 0, MAXPARA, TOK_INFO, 0L},
|
||||
{MSG_MOTD, m_motd, 0, MAXPARA, TOK_MOTD, 0L},
|
||||
{MSG_CLOSE, m_close, 0, MAXPARA, TOK_CLOSE, 0L},
|
||||
{MSG_SILENCE, m_silence, 0, MAXPARA, TOK_SILENCE, 0L},
|
||||
{MSG_AKILL, m_akill, 0, MAXPARA, TOK_AKILL, 0L},
|
||||
{MSG_SQLINE, m_sqline, 0, MAXPARA, TOK_SQLINE, 0L},
|
||||
{MSG_UNSQLINE, m_unsqline, 0, MAXPARA, TOK_UNSQLINE, 0L},
|
||||
{MSG_KLINE, m_kline, 0, MAXPARA, TOK_KLINE, 0L},
|
||||
{MSG_UNKLINE, m_unkline, 0, MAXPARA, TOK_UNKLINE, 0L},
|
||||
{MSG_ZLINE, m_zline, 0, MAXPARA, TOK_ZLINE, 0L},
|
||||
{MSG_UNZLINE, m_unzline, 0, MAXPARA, TOK_UNZLINE, 0L},
|
||||
{MSG_RAKILL, m_rakill, 0, MAXPARA, TOK_RAKILL, 0L},
|
||||
{MSG_GNOTICE, m_gnotice, 0, MAXPARA, TOK_GNOTICE, 0L},
|
||||
{MSG_GOPER, m_goper, 0, MAXPARA, TOK_GOPER, 0L},
|
||||
{MSG_GLOBOPS, m_globops, 0, MAXPARA, TOK_GLOBOPS, 0L},
|
||||
{MSG_CHATOPS, m_chatops, 0, 1, TOK_CHATOPS, 0L},
|
||||
{MSG_LOCOPS, m_locops, 0, 1, TOK_LOCOPS, 0L},
|
||||
{MSG_HASH, m_hash, 0, MAXPARA, TOK_HASH, 0L},
|
||||
{MSG_DNS, m_dns, 0, MAXPARA, TOK_DNS, 0L},
|
||||
{MSG_REHASH, m_rehash, 0, MAXPARA, TOK_REHASH, 0L},
|
||||
{MSG_RESTART, m_restart, 0, MAXPARA, TOK_RESTART, 0L},
|
||||
{MSG_DIE, m_die, 0, MAXPARA, TOK_DIE, 0L},
|
||||
{MSG_RULES, m_rules, 0, MAXPARA, TOK_RULES, 0L},
|
||||
{MSG_MAP, m_map, 0, MAXPARA, TOK_MAP, 0L},
|
||||
{MSG_GLINE, m_gline, 0, MAXPARA, TOK_GLINE, 0L},
|
||||
{MSG_REMGLINE, m_remgline, 0, MAXPARA, TOK_REMGLINE, 0L},
|
||||
{MSG_GZLINE, m_gzline, 0, MAXPARA, TOK_GZLINE, 0L},
|
||||
{MSG_REMGZLINE, m_remgzline, 0, MAXPARA, TOK_REMGZLINE, 0L},
|
||||
{MSG_DALINFO, m_dalinfo, 0, MAXPARA, TOK_DALINFO, 0L},
|
||||
{MSG_SVS2MODE, m_svs2mode, 0, MAXPARA, TOK_SVS2MODE, 0L},
|
||||
{MSG_MKPASSWD, m_mkpasswd, 0, MAXPARA, TOK_MKPASSWD, 0L},
|
||||
{MSG_ADDLINE, m_addline, 0, 1, TOK_ADDLINE, 0L},
|
||||
{MSG_ADMINCHAT, m_admins, 0, 1, TOK_ADMINCHAT, 0L},
|
||||
{MSG_SETHOST, m_sethost, 0, MAXPARA, TOK_SETHOST, 0L},
|
||||
{MSG_NACHAT, m_nachat, 0, 1, TOK_NACHAT, 0L},
|
||||
{MSG_SETIDENT, m_setident, 0, MAXPARA, TOK_SETIDENT, 0L},
|
||||
{MSG_SETNAME, m_setname, 0, 1, TOK_SETNAME, 0L},
|
||||
{MSG_LAG, m_lag, 0, MAXPARA, TOK_LAG, 0L},
|
||||
{MSG_SDESC, m_sdesc, 0, 1, TOK_SDESC, 0L},
|
||||
{MSG_STATSERV, m_statserv, 0, 1, TOK_STATSERV, 0L},
|
||||
{MSG_KNOCK, m_knock, 0, 2, TOK_KNOCK, 0L},
|
||||
{MSG_CREDITS, m_credits, 0, MAXPARA, TOK_CREDITS, 0L},
|
||||
{MSG_LICENSE, m_license, 0, MAXPARA, TOK_LICENSE, 0L},
|
||||
{MSG_CHGHOST, m_chghost, 0, MAXPARA, TOK_CHGHOST, 0L},
|
||||
{MSG_RPING, m_rping, 0, MAXPARA, TOK_RPING, 0L},
|
||||
{MSG_RPONG, m_rpong, 0, MAXPARA, TOK_RPONG, 0L},
|
||||
{MSG_NETINFO, m_netinfo, 0, MAXPARA, TOK_NETINFO, 0L},
|
||||
{MSG_SENDUMODE, m_sendumode, 0, MAXPARA, TOK_SENDUMODE, 0L},
|
||||
{MSG_SMO, m_sendumode, 0, MAXPARA, TOK_SMO, 0L},
|
||||
{MSG_ADDMOTD, m_addmotd, 0, 1, TOK_ADDMOTD, 0L},
|
||||
{MSG_ADDOMOTD, m_addomotd, 0, 1, TOK_ADDOMOTD, 0L},
|
||||
{MSG_SVSMOTD, m_svsmotd, 0, MAXPARA, TOK_SVSMOTD, 0L},
|
||||
{MSG_OPERMOTD, m_opermotd, 0, MAXPARA, TOK_OPERMOTD, 0L},
|
||||
{MSG_TSCTL, m_tsctl, 0, MAXPARA, TOK_TSCTL, 0L},
|
||||
{MSG_SVSJOIN, m_svsjoin, 0, MAXPARA, TOK_SVSJOIN, 0L},
|
||||
{MSG_SAJOIN, m_sajoin, 0, MAXPARA, TOK_SAJOIN, 0L},
|
||||
{MSG_SVSPART, m_svspart, 0, MAXPARA, TOK_SVSPART, 0L},
|
||||
{MSG_SAPART, m_sapart, 0, MAXPARA, TOK_SAPART, 0L},
|
||||
{MSG_CHGIDENT, m_chgident, 0, MAXPARA, TOK_CHGIDENT, 0L},
|
||||
{MSG_SWHOIS, m_swhois, 0, MAXPARA, TOK_SWHOIS, 0L},
|
||||
{MSG_SVSO, m_svso, 0, MAXPARA, TOK_SVSO, 0L},
|
||||
{MSG_SVSFLINE, m_svsfline, 0, MAXPARA, TOK_SVSFLINE, 0L},
|
||||
{MSG_TKL, m_tkl, 0, MAXPARA, TOK_TKL, 0L},
|
||||
{MSG_VHOST, m_vhost, 0, MAXPARA, TOK_VHOST, 0L},
|
||||
{MSG_BOTMOTD, m_botmotd, 0, MAXPARA, TOK_BOTMOTD, 0L},
|
||||
{MSG_SJOIN, m_sjoin, 0, MAXPARA, TOK_SJOIN, 0L},
|
||||
{MSG_HTM, m_htm, 0, MAXPARA, TOK_HTM, 0L},
|
||||
{MSG_UMODE2, m_umode2, 0, MAXPARA, TOK_UMODE2, 0L},
|
||||
{MSG_DCCDENY, m_dccdeny, 0, 2, TOK_DCCDENY, 0L},
|
||||
{MSG_UNDCCDENY, m_undccdeny, 0, MAXPARA, TOK_UNDCCDENY, 0L},
|
||||
{MSG_CHGNAME, m_chgname, 0, MAXPARA, TOK_CHGNAME, 0L},
|
||||
{MSG_SVSNAME, m_chgname, 0, MAXPARA, TOK_CHGNAME, 0L},
|
||||
{MSG_SHUN, m_shun, 0, MAXPARA, TOK_SHUN, 0L},
|
||||
{MSG_NEWJOIN, m_join, 0, MAXPARA, TOK_JOIN, 0L},
|
||||
{MSG_BOTSERV, m_botserv, 0, 1, TOK_BOTSERV,0L},
|
||||
{TOK_BOTSERV, m_botserv, 0, 1, TOK_BOTSERV,0L},
|
||||
{(char *)0, (int (*)())0, 0, 0, 0, 0L}
|
||||
};
|
||||
|
||||
#else
|
||||
extern struct Message msgtab[];
|
||||
extern struct Message *msgmap[256];
|
||||
#endif
|
||||
#endif /* __msg_include__ */
|
||||
|
||||
@@ -1,269 +1,388 @@
|
||||
/*
|
||||
* Copyright (c) 1983, 1989 Regents of the University of California.
|
||||
* All rights reserved.
|
||||
* ++Copyright++ 1983, 1989, 1993
|
||||
* -
|
||||
* Copyright (c) 1983, 1989, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. 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.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS 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.
|
||||
* -
|
||||
* Portions Copyright (c) 1993 by Digital Equipment Corporation.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies, and that
|
||||
* the name of Digital Equipment Corporation not be used in advertising or
|
||||
* publicity pertaining to distribution of the document or software without
|
||||
* specific, written prior permission.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
|
||||
* WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT
|
||||
* CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
|
||||
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
|
||||
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
|
||||
* ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
|
||||
* SOFTWARE.
|
||||
* -
|
||||
* Portions Copyright (c) 1995 by International Business Machines, Inc.
|
||||
*
|
||||
* Redistribution and use in source and binary forms are permitted
|
||||
* provided that: (1) source distributions retain this entire copyright
|
||||
* notice and comment, and (2) distributions including binaries display
|
||||
* the following acknowledgement: ``This product includes software
|
||||
* developed by the University of California, Berkeley and its contributors''
|
||||
* in the documentation or other materials provided with the distribution
|
||||
* and in all advertising materials mentioning features or use of this
|
||||
* software. Neither the name of the University nor the names of its
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* International Business Machines, Inc. (hereinafter called IBM) grants
|
||||
* permission under its copyrights to use, copy, modify, and distribute this
|
||||
* Software with or without fee, provided that the above copyright notice and
|
||||
* all paragraphs of this notice appear in all copies, and that the name of IBM
|
||||
* not be used in connection with the marketing of any product incorporating
|
||||
* the Software or modifications thereof, without specific, written prior
|
||||
* permission.
|
||||
*
|
||||
* $Id$
|
||||
* @(#)nameser.h 5.24 (Berkeley) 6/1/90
|
||||
* To the extent it has a right to do so, IBM grants an immunity from suit
|
||||
* under its patents, if any, for the use, sale or manufacture of products to
|
||||
* the extent that such products are used for performing Domain Name System
|
||||
* dynamic updates in TCP/IP networks by means of the Software. No immunity is
|
||||
* granted for any product per se or for any other function of any product.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", AND IBM DISCLAIMS ALL WARRANTIES,
|
||||
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. IN NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL,
|
||||
* DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER ARISING
|
||||
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE, EVEN
|
||||
* IF IBM IS APPRISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* --Copyright--
|
||||
*/
|
||||
|
||||
/*
|
||||
* @(#)nameser.h 8.1 (Berkeley) 6/2/93
|
||||
* $NetBSD: nameser.h,v 1.14 2000/08/09 14:41:00 itojun Exp $
|
||||
*/
|
||||
|
||||
#ifndef _ARPA_NAMESER_H_
|
||||
#define _ARPA_NAMESER_H_
|
||||
|
||||
#ifdef PARAMH
|
||||
#include <sys/param.h>
|
||||
#endif
|
||||
|
||||
#ifdef _AUX_SOURCE
|
||||
# include <sys/types.h>
|
||||
#endif
|
||||
|
||||
/*
|
||||
* revision information. this is the release date in YYYYMMDD format.
|
||||
* it can change every day so the right thing to do with it is use it
|
||||
* in preprocessor commands such as "#if (__BIND > 19931104)". do not
|
||||
* compare for equality; rather, use it to determine whether your resolver
|
||||
* is new enough to contain a certain feature.
|
||||
*/
|
||||
|
||||
#define __BIND 19960801 /* interface version stamp */
|
||||
|
||||
/*
|
||||
* Define constants based on rfc883
|
||||
*/
|
||||
#define PACKETSZ 512 /* maximum packet size */
|
||||
#define MAXDNAME 256 /* maximum domain name */
|
||||
#define MAXCDNAME 255 /* maximum compressed domain name */
|
||||
#define MAXLABEL 63 /* maximum length of domain label */
|
||||
/* Number of bytes of fixed size data in query structure */
|
||||
#define QFIXEDSZ 4
|
||||
/* number of bytes of fixed size data in resource record */
|
||||
#define RRFIXEDSZ 10
|
||||
#define PACKETSZ 512 /* maximum packet size */
|
||||
#define MAXDNAME 1025 /* maximum presentation domain name */
|
||||
#define MAXCDNAME 255 /* maximum compressed domain name */
|
||||
#define MAXLABEL 63 /* maximum length of domain label */
|
||||
#define HFIXEDSZ 12 /* #/bytes of fixed data in header */
|
||||
#define QFIXEDSZ 4 /* #/bytes of fixed data in query */
|
||||
#define RRFIXEDSZ 10 /* #/bytes of fixed data in r record */
|
||||
#define INT32SZ 4 /* for systems without 32-bit ints */
|
||||
#define INT16SZ 2 /* for systems without 16-bit ints */
|
||||
#define INADDRSZ 4 /* IPv4 T_A */
|
||||
#define IN6ADDRSZ 16 /* IPv6 T_AAAA */
|
||||
|
||||
/*
|
||||
* Internet nameserver port number
|
||||
*/
|
||||
#define NAMESERVER_PORT 53
|
||||
#define NAMESERVER_PORT 53
|
||||
|
||||
/*
|
||||
* Currently defined opcodes
|
||||
*/
|
||||
#define QUERY 0x0 /* standard query */
|
||||
#define IQUERY 0x1 /* inverse query */
|
||||
#define STATUS 0x2 /* nameserver status query */
|
||||
/*#define xxx 0x3 /* 0x3 reserved */
|
||||
/* non standard */
|
||||
#define UPDATEA 0x9 /* add resource record */
|
||||
#define UPDATED 0xa /* delete a specific resource record */
|
||||
#define UPDATEDA 0xb /* delete all nemed resource record */
|
||||
#define UPDATEM 0xc /* modify a specific resource record */
|
||||
#define UPDATEMA 0xd /* modify all named resource record */
|
||||
|
||||
#define ZONEINIT 0xe /* initial zone transfer */
|
||||
#define ZONEREF 0xf /* incremental zone referesh */
|
||||
|
||||
#define QUERY 0x0 /* standard query */
|
||||
#define IQUERY 0x1 /* inverse query */
|
||||
#define STATUS 0x2 /* nameserver status query */
|
||||
/*#define xxx 0x3*/ /* 0x3 reserved */
|
||||
#define NS_NOTIFY_OP 0x4 /* notify secondary of SOA change */
|
||||
/*
|
||||
* Currently defined response codes
|
||||
*/
|
||||
#ifdef NOERROR /* defined by solaris2 in */
|
||||
#undef NOERROR /* <sys/stream.h> to be -1 */
|
||||
#endif
|
||||
#define NOERROR 0 /* no error */
|
||||
#define FORMERR 1 /* format error */
|
||||
#define SERVFAIL 2 /* server failure */
|
||||
#define NXDOMAIN 3 /* non existent domain */
|
||||
#define NOTIMP 4 /* not implemented */
|
||||
#define REFUSED 5 /* query refused */
|
||||
/* non standard */
|
||||
#define NOCHANGE 0xf /* update failed to change db */
|
||||
#define NOERROR 0 /* no error */
|
||||
#define FORMERR 1 /* format error */
|
||||
#define SERVFAIL 2 /* server failure */
|
||||
#define NXDOMAIN 3 /* non existent domain */
|
||||
#define NOTIMP 4 /* not implemented */
|
||||
#define REFUSED 5 /* query refused */
|
||||
|
||||
/*
|
||||
* Type values for resources and queries
|
||||
*/
|
||||
#define T_A 1 /* host address */
|
||||
#define T_NS 2 /* authoritative server */
|
||||
#define T_MD 3 /* mail destination */
|
||||
#define T_MF 4 /* mail forwarder */
|
||||
#define T_CNAME 5 /* connonical name */
|
||||
#define T_SOA 6 /* start of authority zone */
|
||||
#define T_MB 7 /* mailbox domain name */
|
||||
#define T_MG 8 /* mail group member */
|
||||
#define T_MR 9 /* mail rename name */
|
||||
#define T_NULL 10 /* null resource record */
|
||||
#define T_WKS 11 /* well known service */
|
||||
#define T_PTR 12 /* domain name pointer */
|
||||
#define T_HINFO 13 /* host information */
|
||||
#define T_MINFO 14 /* mailbox information */
|
||||
#define T_MX 15 /* mail routing information */
|
||||
#define T_TXT 16 /* text strings */
|
||||
#define T_RP 17 /* responsible person */
|
||||
#define T_AFSDB 18 /* AFS cell database */
|
||||
#define T_X25 19 /* X_25 calling address */
|
||||
#define T_ISDN 20 /* ISDN calling address */
|
||||
#define T_RT 21 /* router */
|
||||
#define T_NSAP 22 /* NSAP address */
|
||||
#define T_NSAP_PTR 23 /* reverse NSAP lookup (deprecated) */
|
||||
#define T_SIG 24 /* security signature */
|
||||
#define T_KEY 25 /* security key */
|
||||
#define T_PX 26 /* X.400 mail mapping */
|
||||
#define T_GPOS 27 /* geographical position (withdrawn) */
|
||||
#define T_AAAA 28 /* IP6 Address */
|
||||
#define T_LOC 29 /* Location Information */
|
||||
#define T_NXT 30 /* Next Valid Name in Zone */
|
||||
#define T_EID 31 /* Endpoint identifier */
|
||||
#define T_NIMLOC 32 /* Nimrod locator */
|
||||
#define T_SRV 33 /* Server selection */
|
||||
#define T_ATMA 34 /* ATM Address */
|
||||
#define T_NAPTR 35 /* Naming Authority PoinTeR */
|
||||
|
||||
/* non standard */
|
||||
#define T_UINFO 100 /* user (finger) information */
|
||||
#define T_UID 101 /* user ID */
|
||||
#define T_GID 102 /* group ID */
|
||||
#define T_UNSPEC 103 /* Unspecified format (binary data) */
|
||||
/* Query type values which do not appear in resource records */
|
||||
#define T_AXFR 252 /* transfer zone of authority */
|
||||
#define T_MAILB 253 /* transfer mailbox records */
|
||||
#define T_MAILA 254 /* transfer mail agent records */
|
||||
#define T_ANY 255 /* wildcard match */
|
||||
#define T_A 1 /* host address */
|
||||
#define T_NS 2 /* authoritative server */
|
||||
#define T_MD 3 /* mail destination */
|
||||
#define T_MF 4 /* mail forwarder */
|
||||
#define T_CNAME 5 /* canonical name */
|
||||
#define T_SOA 6 /* start of authority zone */
|
||||
#define T_MB 7 /* mailbox domain name */
|
||||
#define T_MG 8 /* mail group member */
|
||||
#define T_MR 9 /* mail rename name */
|
||||
#define T_NULL 10 /* null resource record */
|
||||
#define T_WKS 11 /* well known service */
|
||||
#define T_PTR 12 /* domain name pointer */
|
||||
#define T_HINFO 13 /* host information */
|
||||
#define T_MINFO 14 /* mailbox information */
|
||||
#define T_MX 15 /* mail routing information */
|
||||
#define T_TXT 16 /* text strings */
|
||||
#define T_RP 17 /* responsible person */
|
||||
#define T_AFSDB 18 /* AFS cell database */
|
||||
#define T_X25 19 /* X_25 calling address */
|
||||
#define T_ISDN 20 /* ISDN calling address */
|
||||
#define T_RT 21 /* router */
|
||||
#define T_NSAP 22 /* NSAP address */
|
||||
#define T_NSAP_PTR 23 /* reverse NSAP lookup (deprecated) */
|
||||
#define T_SIG 24 /* security signature */
|
||||
#define T_KEY 25 /* security key */
|
||||
#define T_PX 26 /* X.400 mail mapping */
|
||||
#define T_GPOS 27 /* geographical position (withdrawn) */
|
||||
#define T_AAAA 28 /* IP6 Address */
|
||||
#define T_LOC 29 /* Location Information */
|
||||
#define T_NXT 30 /* Next Valid Name in Zone */
|
||||
#define T_EID 31 /* Endpoint identifier */
|
||||
#define T_NIMLOC 32 /* Nimrod locator */
|
||||
#define T_SRV 33 /* Server selection */
|
||||
#define T_ATMA 34 /* ATM Address */
|
||||
#define T_NAPTR 35 /* Naming Authority PoinTeR */
|
||||
#define T_OPT 41 /* OPT pseudo-RR, RFC2761 */
|
||||
/* non standard */
|
||||
#define T_UINFO 100 /* user (finger) information */
|
||||
#define T_UID 101 /* user ID */
|
||||
#define T_GID 102 /* group ID */
|
||||
#define T_UNSPEC 103 /* Unspecified format (binary data) */
|
||||
/* Query type values which do not appear in resource records */
|
||||
#define T_IXFR 251 /* incremental zone transfer */
|
||||
#define T_AXFR 252 /* transfer zone of authority */
|
||||
#define T_MAILB 253 /* transfer mailbox records */
|
||||
#define T_MAILA 254 /* transfer mail agent records */
|
||||
#define T_ANY 255 /* wildcard match */
|
||||
|
||||
/*
|
||||
* Values for class field
|
||||
*/
|
||||
|
||||
#define C_IN 1 /* the arpa internet */
|
||||
#define C_CHAOS 3 /* for chaos net at MIT */
|
||||
#define C_HS 4 /* for Hesiod name server at MIT */
|
||||
/* Query class values which do not appear in resource records */
|
||||
#define C_ANY 255 /* wildcard match */
|
||||
#define C_IN 1 /* the arpa internet */
|
||||
#define C_CHAOS 3 /* for chaos net (MIT) */
|
||||
#define C_HS 4 /* for Hesiod name server (MIT) (XXX) */
|
||||
/* Query class values which do not appear in resource records */
|
||||
#define C_ANY 255 /* wildcard match */
|
||||
|
||||
/*
|
||||
* Flags field of the KEY RR rdata
|
||||
*/
|
||||
#define KEYFLAG_TYPEMASK 0xC000 /* Mask for "type" bits */
|
||||
#define KEYFLAG_TYPE_AUTH_CONF 0x0000 /* Key usable for both */
|
||||
#define KEYFLAG_TYPE_CONF_ONLY 0x8000 /* Key usable for confidentiality */
|
||||
#define KEYFLAG_TYPE_AUTH_ONLY 0x4000 /* Key usable for authentication */
|
||||
#define KEYFLAG_TYPE_NO_KEY 0xC000 /* No key usable for either; no key */
|
||||
/* The type bits can also be interpreted independently, as single bits: */
|
||||
#define KEYFLAG_NO_AUTH 0x8000 /* Key not usable for authentication */
|
||||
#define KEYFLAG_NO_CONF 0x4000 /* Key not usable for confidentiality */
|
||||
|
||||
#define KEYFLAG_EXPERIMENTAL 0x2000 /* Security is *mandatory* if bit=0 */
|
||||
#define KEYFLAG_RESERVED3 0x1000 /* reserved - must be zero */
|
||||
#define KEYFLAG_RESERVED4 0x0800 /* reserved - must be zero */
|
||||
#define KEYFLAG_USERACCOUNT 0x0400 /* key is assoc. with a user acct */
|
||||
#define KEYFLAG_ENTITY 0x0200 /* key is assoc. with entity eg host */
|
||||
#define KEYFLAG_ZONEKEY 0x0100 /* key is zone key for the zone named */
|
||||
#define KEYFLAG_IPSEC 0x0080 /* key is for IPSEC use (host or user)*/
|
||||
#define KEYFLAG_EMAIL 0x0040 /* key is for email (MIME security) */
|
||||
#define KEYFLAG_RESERVED10 0x0020 /* reserved - must be zero */
|
||||
#define KEYFLAG_RESERVED11 0x0010 /* reserved - must be zero */
|
||||
#define KEYFLAG_SIGNATORYMASK 0x000F /* key can sign DNS RR's of same name */
|
||||
|
||||
#define KEYFLAG_RESERVED_BITMASK ( KEYFLAG_RESERVED3 | \
|
||||
KEYFLAG_RESERVED4 | \
|
||||
KEYFLAG_RESERVED10| KEYFLAG_RESERVED11)
|
||||
|
||||
/* The Algorithm field of the KEY and SIG RR's is an integer, {1..254} */
|
||||
#define ALGORITHM_MD5RSA 1 /* MD5 with RSA */
|
||||
#define ALGORITHM_EXPIRE_ONLY 253 /* No alg, no security */
|
||||
#define ALGORITHM_PRIVATE_OID 254 /* Key begins with OID indicating alg */
|
||||
|
||||
/* Signatures */
|
||||
/* Size of a mod or exp in bits */
|
||||
#define MIN_MD5RSA_KEY_PART_BITS 512
|
||||
#define MAX_MD5RSA_KEY_PART_BITS 2552
|
||||
/* Total of binary mod and exp, bytes */
|
||||
#define MAX_MD5RSA_KEY_BYTES ((MAX_MD5RSA_KEY_PART_BITS+7/8)*2+3)
|
||||
/* Max length of text sig block */
|
||||
#define MAX_KEY_BASE64 (((MAX_MD5RSA_KEY_BYTES+2)/3)*4)
|
||||
|
||||
/*
|
||||
* Status return codes for T_UNSPEC conversion routines
|
||||
*/
|
||||
#define CONV_SUCCESS 0
|
||||
#define CONV_OVERFLOW -1
|
||||
#define CONV_BADFMT -2
|
||||
#define CONV_BADCKSUM -3
|
||||
#define CONV_BADBUFLEN -4
|
||||
#define CONV_SUCCESS 0
|
||||
#define CONV_OVERFLOW (-1)
|
||||
#define CONV_BADFMT (-2)
|
||||
#define CONV_BADCKSUM (-3)
|
||||
#define CONV_BADBUFLEN (-4)
|
||||
|
||||
#ifndef BYTE_ORDER
|
||||
#define LITTLE_ENDIAN 1234 /* least-significant byte first (vax) */
|
||||
#define BIG_ENDIAN 4321 /* most-significant byte first (IBM, net) */
|
||||
#define PDP_ENDIAN 3412 /* LSB first in word, MSW first in long (pdp) */
|
||||
|
||||
#if defined(vax) || defined(ns32000) || defined(sun386) || defined(MIPSEL) || \
|
||||
defined(BIT_ZERO_ON_RIGHT) || defined(sequent) || defined(i386) ||\
|
||||
defined(___vax__) || defined(__ns32000__) || defined(__sun386__) ||\
|
||||
defined(__alpha) || defined(_WIN32)
|
||||
#define BYTE_ORDER LITTLE_ENDIAN
|
||||
#if (BSD >= 199103)
|
||||
# include <machine/endian.h>
|
||||
#else
|
||||
#ifdef linux
|
||||
# include <endian.h>
|
||||
#else
|
||||
#define LITTLE_ENDIAN 1234 /* least-significant byte first (vax, pc) */
|
||||
#define BIG_ENDIAN 4321 /* most-significant byte first (IBM, net) */
|
||||
#define PDP_ENDIAN 3412 /* LSB first in word, MSW first in long (pdp)*/
|
||||
|
||||
#if defined(vax) || defined(ns32000) || defined(sun386) || defined(i386) || \
|
||||
defined(MIPSEL) || defined(_MIPSEL) || defined(BIT_ZERO_ON_RIGHT) || \
|
||||
defined(__alpha__) || defined(__alpha) || defined(__vax__) || defined(_WIN32)
|
||||
#define BYTE_ORDER LITTLE_ENDIAN
|
||||
#endif
|
||||
#if defined(sel) || defined(mc68000) || defined(sparc) || \
|
||||
|
||||
#if defined(sel) || defined(pyr) || defined(mc68000) || defined(sparc) || \
|
||||
defined(is68k) || defined(tahoe) || defined(ibm032) || defined(ibm370) || \
|
||||
defined(MIPSEB) || defined(__hpux) || defined(__convex__) || \
|
||||
defined(__mc68000__) || defined(__sparc__) ||\
|
||||
defined(_IBMR2) || defined (BIT_ZERO_ON_LEFT)
|
||||
#define BYTE_ORDER BIG_ENDIAN
|
||||
defined(MIPSEB) || defined(_MIPSEB) || defined(_IBMR2) || defined(DGUX) ||\
|
||||
defined(apollo) || defined(__convex__) || defined(_CRAY) || \
|
||||
defined(__hppa) || defined(__hp9000) || \
|
||||
defined(__hp9000s300) || defined(__hp9000s700) || \
|
||||
defined (BIT_ZERO_ON_LEFT) || defined(m68k)
|
||||
#define BYTE_ORDER BIG_ENDIAN
|
||||
#endif
|
||||
#endif /* linux */
|
||||
#endif /* BSD */
|
||||
#endif /* BYTE_ORDER */
|
||||
|
||||
#ifndef BYTE_ORDER
|
||||
/* you must determine what the correct bit order is for your compiler */
|
||||
UNDEFINED_BIT_ORDER;
|
||||
#if !defined(BYTE_ORDER) || \
|
||||
(BYTE_ORDER != BIG_ENDIAN && BYTE_ORDER != LITTLE_ENDIAN && \
|
||||
BYTE_ORDER != PDP_ENDIAN)
|
||||
/* you must determine what the correct bit order is for
|
||||
* your compiler - the next line is an intentional error
|
||||
* which will force your compiles to bomb until you fix
|
||||
* the above macros.
|
||||
*/
|
||||
#error "Undefined or invalid BYTE_ORDER";
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Structure for query header, the order of the fields is machine and
|
||||
* compiler dependent, in our case, the bits within a byte are assignd
|
||||
* least significant first, while the order of transmition is most
|
||||
* significant first. This requires a somewhat confusing rearrangement.
|
||||
* Structure for query header. The order of the fields is machine- and
|
||||
* compiler-dependent, depending on the byte/bit order and the layout
|
||||
* of bit fields. We use bit fields only in int variables, as this
|
||||
* is all ANSI requires. This requires a somewhat confusing rearrangement.
|
||||
*/
|
||||
|
||||
typedef struct {
|
||||
u_short id; /* query identification number */
|
||||
unsigned id :16; /* query identification number */
|
||||
#if BYTE_ORDER == BIG_ENDIAN
|
||||
/* fields in third byte */
|
||||
u_char qr:1; /* response flag */
|
||||
u_char opcode:4; /* purpose of message */
|
||||
u_char aa:1; /* authoritive answer */
|
||||
u_char tc:1; /* truncated message */
|
||||
u_char rd:1; /* recursion desired */
|
||||
/* fields in fourth byte */
|
||||
u_char ra:1; /* recursion available */
|
||||
u_char pr:1; /* primary server required (non standard) */
|
||||
u_char unused:2; /* unused bits */
|
||||
u_char rcode:4; /* response code */
|
||||
/* fields in third byte */
|
||||
unsigned qr: 1; /* response flag */
|
||||
unsigned opcode: 4; /* purpose of message */
|
||||
unsigned aa: 1; /* authoritive answer */
|
||||
unsigned tc: 1; /* truncated message */
|
||||
unsigned rd: 1; /* recursion desired */
|
||||
/* fields in fourth byte */
|
||||
unsigned ra: 1; /* recursion available */
|
||||
unsigned unused :1; /* unused bits (MBZ as of 4.9.3a3) */
|
||||
unsigned ad: 1; /* authentic data from named */
|
||||
unsigned cd: 1; /* checking disabled by resolver */
|
||||
unsigned rcode :4; /* response code */
|
||||
#endif
|
||||
#if BYTE_ORDER == LITTLE_ENDIAN || BYTE_ORDER == PDP_ENDIAN
|
||||
/* fields in third byte */
|
||||
u_char rd:1; /* recursion desired */
|
||||
u_char tc:1; /* truncated message */
|
||||
u_char aa:1; /* authoritive answer */
|
||||
u_char opcode:4; /* purpose of message */
|
||||
u_char qr:1; /* response flag */
|
||||
/* fields in fourth byte */
|
||||
u_char rcode:4; /* response code */
|
||||
u_char unused:2; /* unused bits */
|
||||
u_char pr:1; /* primary server required (non standard) */
|
||||
u_char ra:1; /* recursion available */
|
||||
/* fields in third byte */
|
||||
unsigned rd :1; /* recursion desired */
|
||||
unsigned tc :1; /* truncated message */
|
||||
unsigned aa :1; /* authoritive answer */
|
||||
unsigned opcode :4; /* purpose of message */
|
||||
unsigned qr :1; /* response flag */
|
||||
/* fields in fourth byte */
|
||||
unsigned rcode :4; /* response code */
|
||||
unsigned cd: 1; /* checking disabled by resolver */
|
||||
unsigned ad: 1; /* authentic data from named */
|
||||
unsigned unused :1; /* unused bits (MBZ as of 4.9.3a3) */
|
||||
unsigned ra :1; /* recursion available */
|
||||
#endif
|
||||
/* remaining bytes */
|
||||
u_short qdcount; /* number of question entries */
|
||||
u_short ancount; /* number of answer entries */
|
||||
u_short nscount; /* number of authority entries */
|
||||
u_short arcount; /* number of resource entries */
|
||||
/* remaining bytes */
|
||||
unsigned qdcount :16; /* number of question entries */
|
||||
unsigned ancount :16; /* number of answer entries */
|
||||
unsigned nscount :16; /* number of authority entries */
|
||||
unsigned arcount :16; /* number of resource entries */
|
||||
} HEADER;
|
||||
|
||||
/*
|
||||
* Defines for handling compressed domain names
|
||||
*/
|
||||
#define INDIR_MASK 0xc0
|
||||
#define INDIR_MASK 0xc0
|
||||
|
||||
|
||||
/*
|
||||
* Structure for passing resource records around.
|
||||
*/
|
||||
struct rrec {
|
||||
short r_zone; /* zone number */
|
||||
short r_class; /* class number */
|
||||
short r_type; /* type number */
|
||||
#ifdef __alpha
|
||||
u_int r_ttl; /* time to live */
|
||||
#else
|
||||
u_long r_ttl; /* time to live */
|
||||
#endif
|
||||
int r_size; /* size of data area */
|
||||
char *r_data; /* pointer to data */
|
||||
};
|
||||
|
||||
extern u_short _getshort();
|
||||
#ifdef __alpha
|
||||
extern u_int _getlong();
|
||||
#else
|
||||
extern u_long _getlong();
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Inline versions of get/put short/long.
|
||||
* Pointer is advanced; we assume that both arguments
|
||||
* are lvalues and will already be in registers.
|
||||
* cp MUST be u_char *.
|
||||
* Inline versions of get/put short/long. Pointer is advanced.
|
||||
*
|
||||
* These macros demonstrate the property of C whereby it can be
|
||||
* portable or it can be elegant but rarely both.
|
||||
*/
|
||||
#define GETSHORT(s, cp) { \
|
||||
(s) = *(cp)++ << 8; \
|
||||
(s) |= *(cp)++; \
|
||||
register const u_char *t_cp = (const u_char *)(cp); \
|
||||
(s) = ((const u_int16_t)t_cp[0] << 8) \
|
||||
| ((const u_int16_t)t_cp[1]) \
|
||||
; \
|
||||
(cp) += INT16SZ; \
|
||||
}
|
||||
|
||||
#define GETLONG(l, cp) { \
|
||||
(l) = *(cp)++ << 8; \
|
||||
(l) |= *(cp)++; (l) <<= 8; \
|
||||
(l) |= *(cp)++; (l) <<= 8; \
|
||||
(l) |= *(cp)++; \
|
||||
register const u_char *t_cp = (const u_char *)(cp); \
|
||||
(l) = ((const u_int32_t)t_cp[0] << 24) \
|
||||
| ((const u_int32_t)t_cp[1] << 16) \
|
||||
| ((const u_int32_t)t_cp[2] << 8) \
|
||||
| ((const u_int32_t)t_cp[3]) \
|
||||
; \
|
||||
(cp) += INT32SZ; \
|
||||
}
|
||||
|
||||
|
||||
#define PUTSHORT(s, cp) { \
|
||||
*(cp)++ = (s) >> 8; \
|
||||
*(cp)++ = (s); \
|
||||
register u_int16_t t_s = (u_int16_t)(s); \
|
||||
register u_char *t_cp = (u_char *)(cp); \
|
||||
*t_cp++ = (u_int32_t)t_s >> 8; \
|
||||
*t_cp = t_s; \
|
||||
(cp) += INT16SZ; \
|
||||
}
|
||||
|
||||
/*
|
||||
* Warning: PUTLONG destroys its first argument.
|
||||
*/
|
||||
#define PUTLONG(l, cp) { \
|
||||
(cp)[3] = l; \
|
||||
(cp)[2] = (l >>= 8); \
|
||||
(cp)[1] = (l >>= 8); \
|
||||
(cp)[0] = l >> 8; \
|
||||
(cp) += sizeof(u_long); \
|
||||
register u_int32_t t_l = (u_int32_t)(l); \
|
||||
register u_char *t_cp = (u_char *)(cp); \
|
||||
*t_cp++ = t_l >> 24; \
|
||||
*t_cp++ = t_l >> 16; \
|
||||
*t_cp++ = t_l >> 8; \
|
||||
*t_cp = t_l; \
|
||||
(cp) += INT32SZ; \
|
||||
}
|
||||
|
||||
#endif /* _ARPA_NAMESER_H_ */
|
||||
|
||||
|
||||
@@ -35,6 +35,10 @@
|
||||
#define RPL_MYINFO 004
|
||||
#define RPL_PROTOCTL 005
|
||||
|
||||
#define RPL_REDIR 10
|
||||
|
||||
#define RPL_REMOTEPROTOCTL 105
|
||||
|
||||
/*
|
||||
* Errors are in the range from 400-599 currently and are grouped by what
|
||||
* commands they come from.
|
||||
@@ -82,6 +86,7 @@
|
||||
|
||||
#define ERR_HOSTILENAME 455
|
||||
|
||||
#define ERR_NOHIDING 459
|
||||
#define ERR_NOTFORHALFOPS 460
|
||||
#define ERR_NEEDMOREPARAMS 461
|
||||
#define ERR_ALREADYREGISTRED 462
|
||||
@@ -110,9 +115,9 @@
|
||||
#define ERR_ATTACKDENY 484
|
||||
#define ERR_KILLDENY 485
|
||||
|
||||
#define ERR_HTMDISABLED 486
|
||||
|
||||
#define ERR_SECUREONLYCHAN 489
|
||||
#define ERR_NONONREG 486
|
||||
#define ERR_NOTFORUSERS 487
|
||||
#define ERR_HTMDISABLED 488
|
||||
|
||||
#define ERR_NOOPERHOST 491
|
||||
#define ERR_NOSERVICEHOST 492
|
||||
@@ -128,7 +133,7 @@
|
||||
#define ERR_ADMONLY 519
|
||||
#define ERR_OPERONLY 520
|
||||
#define ERR_LISTSYNTAX 521
|
||||
#define ERR_OPERSPVERIFY 524
|
||||
|
||||
/*
|
||||
* Numberic replies from server commands.
|
||||
* These are currently in the range 200-399.
|
||||
@@ -231,6 +236,7 @@
|
||||
#define RPL_TRACENEWTYPE 208
|
||||
#define RPL_TRACECLASS 209
|
||||
|
||||
#define RPL_STATSHELP 210
|
||||
#define RPL_STATSLINKINFO 211
|
||||
#define RPL_STATSCOMMANDS 212
|
||||
#define RPL_STATSCLINE 213
|
||||
@@ -299,6 +305,12 @@
|
||||
#define RPL_MAPMORE 610
|
||||
#define RPL_MAPEND 007
|
||||
|
||||
|
||||
#define ERR_WHOSYNTAX 522
|
||||
#define ERR_WHOLIMEXCEED 523
|
||||
|
||||
#define RPL_SNOMASK 8
|
||||
|
||||
/*
|
||||
* Numberic replies from server commands.
|
||||
* These are also in the range 600-799.
|
||||
|
||||
@@ -22,77 +22,61 @@
|
||||
|
||||
#ifndef proto_h
|
||||
#define proto_h
|
||||
/* badwords.c */
|
||||
int loadbadwords_message PROTO((char *wordfile));
|
||||
int loadbadwords_channel PROTO((char *wordfile));
|
||||
|
||||
/* channel.c */
|
||||
int sendmodeto_one PROTO((aClient *cptr, char *from, char *name, char *mode, char *param, TS creationtime));
|
||||
void make_cmodestr PROTO((void));
|
||||
|
||||
/* dynconf.c */
|
||||
int load_conf PROTO((char *filename, int type));
|
||||
int load_conf2 PROTO((FILE * conf, char *filename, int type));
|
||||
int load_conf3 PROTO((FILE * conf, char *filename, int type));
|
||||
void init_dynconf PROTO((void));
|
||||
void doneconf PROTO((int type));
|
||||
int sendmodeto_one(aClient *cptr, char *from, char *name, char *mode, char *param, TS creationtime);
|
||||
void make_cmodestr(void);
|
||||
|
||||
/* lusers.c */
|
||||
void init_ircstats PROTO((void));
|
||||
void init_ircstats(void);
|
||||
|
||||
/* match.c */
|
||||
char *collapse PROTO((char *pattern));
|
||||
char *collapse(char *pattern);
|
||||
|
||||
/* scache.c */
|
||||
void clear_scache_hash_table PROTO((void));
|
||||
void clear_scache_hash_table(void);
|
||||
|
||||
/* send.c */
|
||||
void sendto_one PROTO((aClient *, char *, ...));
|
||||
void sendto_chanops_butone PROTO((aClient *one, aChannel *chptr, char *pattern, ...));
|
||||
void sendto_realops PROTO((char *pattern, ...));
|
||||
void sendto_serv_butone_token PROTO((aClient *one, char *prefix, char *command, char *token, char *pattern, ...));
|
||||
void sendto_serv_butone_token_opt PROTO((aClient *one, int opt, char *prefix, char *command, char *token, char *pattern, ...));
|
||||
void sendto_one(aClient *, char *, ...);
|
||||
void sendto_chanops_butone(aClient *one, aChannel *chptr, char *pattern, ...);
|
||||
void sendto_realops(char *pattern, ...);
|
||||
void sendto_serv_butone_token(aClient *one, char *prefix, char *command, char *token, char *pattern, ...);
|
||||
void sendto_serv_butone_token_opt(aClient *one, int opt, char *prefix, char *command, char *token, char *pattern, ...);
|
||||
void sendto_channel_ntadmins(aClient *from, aChannel *chptr, char *pattern, ...);
|
||||
|
||||
/* fdlist.c */
|
||||
EVENT(lcf_check);
|
||||
EVENT(htm_calc);
|
||||
/* ircd.c */
|
||||
EVENT(e_check_fdlists);
|
||||
EVENT(garbage_collect);
|
||||
EVENT(loop_event);
|
||||
/* support.c */
|
||||
char *my_itoa PROTO((int i));
|
||||
|
||||
/* s_conf.c */
|
||||
int find_nline PROTO((aClient *cptr));
|
||||
|
||||
/* s_extra.c */
|
||||
int channel_canjoin PROTO((aClient *sptr, char *name));
|
||||
int dcc_loadconf PROTO((void));
|
||||
int cr_loadconf PROTO((void));
|
||||
int vhost_loadconf PROTO((void));
|
||||
char *my_itoa(int i);
|
||||
|
||||
/* s_kline.c */
|
||||
int find_tkline_match PROTO((aClient *cptr, int xx));
|
||||
void tkl_check_expire PROTO((void));
|
||||
int tkl_sweep PROTO((void));
|
||||
int find_tkline_match(aClient *cptr, int xx);
|
||||
extern EVENT(tkl_check_expire);
|
||||
int tkl_sweep(void);
|
||||
|
||||
/* s_serv.c */
|
||||
void load_tunefile PROTO((void));
|
||||
void save_tunefile PROTO((void));
|
||||
aMotd *read_botmotd PROTO((char *filename));
|
||||
aMotd *read_rules PROTO((char *filename));
|
||||
aMotd *read_opermotd PROTO((char *filename));
|
||||
aMotd *read_motd PROTO((char *filename));
|
||||
aMotd *read_svsmotd PROTO((char *filename));
|
||||
void read_tlines PROTO((void));
|
||||
void load_tunefile(void);
|
||||
extern EVENT(save_tunefile);
|
||||
aMotd *read_rules(char *filename);
|
||||
aMotd *read_motd(char *filename);
|
||||
|
||||
/* s_unreal.c */
|
||||
void unrealmanual PROTO((void));
|
||||
void unrealmanual(void);
|
||||
|
||||
/* s_user.c */
|
||||
int check_for_target_limit PROTO((aClient *sptr, void *target, const char *name));
|
||||
void make_umodestr PROTO((void));
|
||||
int check_for_target_limit(aClient *sptr, void *target, const char *name);
|
||||
void make_umodestr(void);
|
||||
|
||||
/* webtv.c */
|
||||
int is_halfop PROTO((aClient *cptr, aChannel *chptr));
|
||||
int is_chanprot PROTO((aClient *cptr, aChannel *chptr));
|
||||
char *convert_time PROTO((time_t ltime));
|
||||
char *get_mode_str PROTO((aClient *acptr));
|
||||
int is_halfop(aClient *cptr, aChannel *chptr);
|
||||
int is_chanprot(aClient *cptr, aChannel *chptr);
|
||||
char *convert_time(time_t ltime);
|
||||
char *get_mode_str(aClient *acptr);
|
||||
|
||||
/* whowas.c */
|
||||
void initwhowas PROTO((void));
|
||||
void initwhowas(void);
|
||||
#endif /* proto_h */
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
/*
|
||||
* irc2.7.2/ircd/res.h (C)opyright 1992 Darren Reed.
|
||||
* $Id$
|
||||
* ircd/res_def.h (C)opyright 1992 Darren Reed.
|
||||
*/
|
||||
#ifndef __res_include__
|
||||
#define __res_include__
|
||||
|
||||
#define RES_INITLIST 1
|
||||
#define RES_CALLINIT 2
|
||||
@@ -17,57 +14,59 @@
|
||||
|
||||
#define AR_TTL 600 /* TTL in seconds for dns cache entries */
|
||||
|
||||
struct hent {
|
||||
char *h_name; /* official name of host */
|
||||
char *h_aliases[MAXALIASES]; /* alias list */
|
||||
int h_addrtype; /* host address type */
|
||||
int h_length; /* length of address */
|
||||
struct hent {
|
||||
char *h_name; /* official name of host */
|
||||
char *h_aliases[MAXALIASES]; /* alias list */
|
||||
int h_addrtype; /* host address type */
|
||||
int h_length; /* length of address */
|
||||
/* list of addresses from name server */
|
||||
struct IN_ADDR h_addr_list[MAXADDRS];
|
||||
struct IN_ADDR h_addr_list[MAXADDRS];
|
||||
#define h_addr h_addr_list[0] /* address, for backward compatiblity */
|
||||
};
|
||||
|
||||
typedef struct reslist {
|
||||
int id;
|
||||
int sent; /* number of requests sent */
|
||||
int srch;
|
||||
time_t ttl;
|
||||
char type;
|
||||
char retries; /* retry counter */
|
||||
char sends; /* number of sends (>1 means resent) */
|
||||
char resend; /* send flag. 0 == dont resend */
|
||||
time_t sentat;
|
||||
time_t timeout;
|
||||
struct IN_ADDR addr;
|
||||
char *name;
|
||||
struct reslist *next;
|
||||
Link cinfo;
|
||||
typedef struct reslist {
|
||||
int id;
|
||||
int sent; /* number of requests sent */
|
||||
int srch;
|
||||
time_t ttl;
|
||||
char type;
|
||||
char retries; /* retry counter */
|
||||
char sends; /* number of sends (>1 means resent) */
|
||||
char resend; /* send flag. 0 == dont resend */
|
||||
time_t sentat;
|
||||
time_t timeout;
|
||||
struct IN_ADDR addr;
|
||||
char *name;
|
||||
struct reslist *next;
|
||||
Link cinfo;
|
||||
#ifndef _WIN32
|
||||
struct hent he;
|
||||
struct hent he;
|
||||
#else
|
||||
struct hostent *he;
|
||||
char locked;
|
||||
#endif
|
||||
} ResRQ;
|
||||
} ResRQ;
|
||||
|
||||
typedef struct cache {
|
||||
time_t expireat;
|
||||
time_t ttl;
|
||||
typedef struct cache {
|
||||
time_t expireat;
|
||||
time_t ttl;
|
||||
#ifndef _WIN32
|
||||
struct hostent he;
|
||||
#else
|
||||
struct hostent *he;
|
||||
#endif
|
||||
struct cache *hname_next, *hnum_next, *list_next;
|
||||
} aCache;
|
||||
struct cache *hname_next, *hnum_next, *list_next;
|
||||
} aCache;
|
||||
|
||||
typedef struct cachetable {
|
||||
aCache *num_list;
|
||||
aCache *name_list;
|
||||
} CacheTable;
|
||||
typedef struct cachetable {
|
||||
aCache *num_list;
|
||||
aCache *name_list;
|
||||
} CacheTable;
|
||||
|
||||
#define ARES_CACSIZE 101
|
||||
|
||||
#define MAXCACHED 81
|
||||
|
||||
#endif /* __res_include__ */
|
||||
extern struct __res_state ircd_res;
|
||||
extern int ircd_res_init();
|
||||
extern u_int ircd_res_randomid();
|
||||
|
||||
@@ -1,82 +1,220 @@
|
||||
/*
|
||||
* Copyright (c) 1983, 1987, 1989 The Regents of the University of California.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms are permitted
|
||||
* provided that: (1) source distributions retain this entire copyright
|
||||
* notice and comment, and (2) distributions including binaries display
|
||||
* the following acknowledgement: ``This product includes software
|
||||
* developed by the University of California, Berkeley and its contributors''
|
||||
* in the documentation or other materials provided with the distribution
|
||||
* and in all advertising materials mentioning features or use of this
|
||||
* software. Neither the name of the University nor the names of its
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* $Id$
|
||||
* @(#)resolv.h 5.10.1 (Berkeley) 6/1/90
|
||||
* ++Copyright++ 1983, 1987, 1989, 1993
|
||||
* -
|
||||
* Copyright (c) 1983, 1987, 1989, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. 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.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS 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.
|
||||
* -
|
||||
* Portions Copyright (c) 1993 by Digital Equipment Corporation.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies, and that
|
||||
* the name of Digital Equipment Corporation not be used in advertising or
|
||||
* publicity pertaining to distribution of the document or software without
|
||||
* specific, written prior permission.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
|
||||
* WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT
|
||||
* CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
|
||||
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
|
||||
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
|
||||
* ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
|
||||
* SOFTWARE.
|
||||
* -
|
||||
* --Copyright--
|
||||
*/
|
||||
|
||||
/*
|
||||
* Resolver configuration file.
|
||||
* Normally not present, but may contain the address of the
|
||||
* inital name server(s) to query and the domain search list.
|
||||
* @(#)resolv.h 8.1 (Berkeley) 6/2/93
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef _PATH_RESCONF
|
||||
#define _PATH_RESCONF "/etc/resolv.conf"
|
||||
#endif
|
||||
/*
|
||||
* Revision information. This is the release date in YYYYMMDD format.
|
||||
* It can change every day so the right thing to do with it is use it
|
||||
* in preprocessor commands such as "#if (__RES > 19931104)". Do not
|
||||
* compare for equality; rather, use it to determine whether your resolver
|
||||
* is new enough to contain a certain feature.
|
||||
*/
|
||||
|
||||
#define __RES 19960801
|
||||
|
||||
/*
|
||||
* Global defines and variables for resolver stub.
|
||||
*/
|
||||
#define MAXNS 3 /* max # name servers we'll track */
|
||||
#define MAXDFLSRCH 3 /* # default domain levels to try */
|
||||
#define MAXDNSRCH 6 /* max # domains in search path */
|
||||
#define LOCALDOMAINPARTS 2 /* min levels in name that is "local" */
|
||||
#define MAXSERVICES 2 /* max # of services to search */
|
||||
#define MAXNS 3 /* max # name servers we'll track */
|
||||
#define MAXDFLSRCH 3 /* # default domain levels to try */
|
||||
#define MAXDNSRCH 6 /* max # domains in search path */
|
||||
#define LOCALDOMAINPARTS 2 /* min levels in name that is "local" */
|
||||
|
||||
#define RES_TIMEOUT 5 /* min. seconds between retries */
|
||||
#define RES_TIMEOUT 5 /* min. seconds between retries */
|
||||
#define MAXRESOLVSORT 10 /* number of net to sort on */
|
||||
#define RES_MAXNDOTS 15 /* should reflect bit field size */
|
||||
|
||||
struct state {
|
||||
int retrans; /* retransmition time interval */
|
||||
int retry; /* number of times to retransmit */
|
||||
long options; /* option flags - see below. */
|
||||
int nscount; /* number of name servers */
|
||||
struct SOCKADDR_IN nsaddr_list[MAXNS]; /* address of name server */
|
||||
#define nsaddr nsaddr_list[0] /* for backward compatibility */
|
||||
unsigned short id; /* current packet id */
|
||||
char defdname[MAXDNAME]; /* default domain */
|
||||
char *dnsrch[MAXDNSRCH + 1]; /* components of domain to search */
|
||||
unsigned short order[MAXSERVICES + 1]; /* search service order */
|
||||
struct __res_state {
|
||||
int retrans; /* retransmition time interval */
|
||||
int retry; /* number of times to retransmit */
|
||||
u_long options; /* option flags - see below. */
|
||||
int nscount; /* number of name servers */
|
||||
struct sockaddr_in
|
||||
nsaddr_list[MAXNS]; /* address of name server */
|
||||
#define nsaddr nsaddr_list[0] /* for backward compatibility */
|
||||
u_short id; /* current message id */
|
||||
char *dnsrch[MAXDNSRCH+1]; /* components of domain to search */
|
||||
char defdname[256]; /* default domain (deprecated) */
|
||||
u_long pfcode; /* RES_PRF_ flags - see below. */
|
||||
unsigned ndots:4; /* threshold for initial abs. query */
|
||||
unsigned nsort:4; /* number of elements in sort_list[] */
|
||||
char unused[3];
|
||||
struct {
|
||||
struct in_addr addr;
|
||||
u_int32_t mask;
|
||||
} sort_list[MAXRESOLVSORT];
|
||||
char pad[72]; /* on an i386 this means 512b total */
|
||||
};
|
||||
|
||||
#define RES_SERVICE_NONE 0
|
||||
#define RES_SERVICE_BIND 1
|
||||
#define RES_SERVICE_LOCAL 2
|
||||
|
||||
/*
|
||||
* Resolver options
|
||||
* Resolver options (keep these in synch with res_debug.c, please)
|
||||
*/
|
||||
#define RES_INIT 0x0001 /* address initialized */
|
||||
#define RES_DEBUG 0x0002 /* print debug messages */
|
||||
#define RES_AAONLY 0x0004 /* authoritative answers only */
|
||||
#define RES_USEVC 0x0008 /* use virtual circuit */
|
||||
#define RES_PRIMARY 0x0010 /* query primary server only */
|
||||
#define RES_IGNTC 0x0020 /* ignore trucation errors */
|
||||
#define RES_RECURSE 0x0040 /* recursion desired */
|
||||
#define RES_DEFNAMES 0x0080 /* use default domain name */
|
||||
#define RES_STAYOPEN 0x0100 /* Keep TCP socket open */
|
||||
#define RES_DNSRCH 0x0200 /* search up local domain tree */
|
||||
|
||||
#define RES_INIT 0x00000001 /* address initialized */
|
||||
#define RES_DEBUG 0x00000002 /* print debug messages */
|
||||
#define RES_AAONLY 0x00000004 /* authoritative answers only (!IMPL)*/
|
||||
#define RES_USEVC 0x00000008 /* use virtual circuit */
|
||||
#define RES_PRIMARY 0x00000010 /* query primary server only (!IMPL) */
|
||||
#define RES_IGNTC 0x00000020 /* ignore trucation errors */
|
||||
#define RES_RECURSE 0x00000040 /* recursion desired */
|
||||
#define RES_DEFNAMES 0x00000080 /* use default domain name */
|
||||
#define RES_STAYOPEN 0x00000100 /* Keep TCP socket open */
|
||||
#define RES_DNSRCH 0x00000200 /* search up local domain tree */
|
||||
#define RES_INSECURE1 0x00000400 /* type 1 security disabled */
|
||||
#define RES_INSECURE2 0x00000800 /* type 2 security disabled */
|
||||
#define RES_NOALIASES 0x00001000 /* shuts off HOSTALIASES feature */
|
||||
#define RES_USE_INET6 0x00002000 /* use/map IPv6 in gethostbyname() */
|
||||
|
||||
#define RES_DEFAULT (RES_RECURSE | RES_DEFNAMES | RES_DNSRCH)
|
||||
#if ((__GNU_LIBRARY__ == 6) && (__GLIBC__ >=2) && (__GLIBC_MINOR__ >= 2))
|
||||
#define res_init __res_init
|
||||
|
||||
/*
|
||||
* Resolver "pfcode" values. Used by dig.
|
||||
*/
|
||||
#define RES_PRF_STATS 0x00000001
|
||||
/* 0x00000002 */
|
||||
#define RES_PRF_CLASS 0x00000004
|
||||
#define RES_PRF_CMD 0x00000008
|
||||
#define RES_PRF_QUES 0x00000010
|
||||
#define RES_PRF_ANS 0x00000020
|
||||
#define RES_PRF_AUTH 0x00000040
|
||||
#define RES_PRF_ADD 0x00000080
|
||||
#define RES_PRF_HEAD1 0x00000100
|
||||
#define RES_PRF_HEAD2 0x00000200
|
||||
#define RES_PRF_TTLID 0x00000400
|
||||
#define RES_PRF_HEADX 0x00000800
|
||||
#define RES_PRF_QUERY 0x00001000
|
||||
#define RES_PRF_REPLY 0x00002000
|
||||
#define RES_PRF_INIT 0x00004000
|
||||
/* 0x00008000 */
|
||||
|
||||
/* hooks are still experimental as of 4.9.2 */
|
||||
#if defined(INET6) && defined(__GNUC__)
|
||||
|
||||
#else
|
||||
|
||||
typedef enum { res_goahead, res_nextns, res_modified, res_done, res_error }
|
||||
res_sendhookact;
|
||||
|
||||
typedef res_sendhookact (*res_send_qhook)(struct SOCKADDR_IN * const *ns,
|
||||
const u_char **query,
|
||||
int *querylen,
|
||||
u_char *ans,
|
||||
int anssiz,
|
||||
int *resplen);
|
||||
|
||||
typedef res_sendhookact (*res_send_rhook)(const struct SOCKADDR_IN *ns,
|
||||
const u_char *query,
|
||||
int querylen,
|
||||
u_char *ans,
|
||||
int anssiz,
|
||||
int *resplen);
|
||||
#endif
|
||||
|
||||
extern struct state _res;
|
||||
extern char *p_cdname(), *p_rr(), *p_type(), *p_class(), *p_time();
|
||||
struct res_sym {
|
||||
int number; /* Identifying number, like T_MX */
|
||||
char * name; /* Its symbolic name, like "MX" */
|
||||
char * humanname; /* Its fun name, like "mail exchanger" */
|
||||
};
|
||||
|
||||
/* Private routines shared between libc/net, named, nslookup and others. */
|
||||
#define res_hnok __res_hnok
|
||||
#define res_ownok __res_ownok
|
||||
#define res_mailok __res_mailok
|
||||
#define res_dnok __res_dnok
|
||||
#define sym_ston __sym_ston
|
||||
#define sym_ntos __sym_ntos
|
||||
#define sym_ntop __sym_ntop
|
||||
#define b64_ntop __b64_ntop
|
||||
#define b64_pton __b64_pton
|
||||
#define loc_ntoa __loc_ntoa
|
||||
#define loc_aton __loc_aton
|
||||
#define dn_skipname __dn_skipname
|
||||
#define fp_resstat __fp_resstat
|
||||
#define fp_query __fp_query
|
||||
#define fp_nquery __fp_nquery
|
||||
#define hostalias __hostalias
|
||||
#define putlong __putlong
|
||||
#define putshort __putshort
|
||||
#define p_class __p_class
|
||||
#define p_time __p_time
|
||||
#define p_type __p_type
|
||||
#define p_query __p_query
|
||||
#define p_cdnname __p_cdnname
|
||||
#define p_cdname __p_cdname
|
||||
#define p_fqnname __p_fqnname
|
||||
#define p_fqname __p_fqname
|
||||
#define p_rr __p_rr
|
||||
#define p_option __p_option
|
||||
#define p_secstodate __p_secstodate
|
||||
#define dn_count_labels __dn_count_labels
|
||||
#define dn_comp __dn_comp
|
||||
#define res_randomid __res_randomid
|
||||
#define res_isourserver __res_isourserver
|
||||
#define res_nameinquery __res_nameinquery
|
||||
#define res_queriesmatch __res_queriesmatch
|
||||
#define res_close __res_close
|
||||
|
||||
#ifdef BIND_RES_POSIX3
|
||||
#define dn_expand __dn_expand
|
||||
#define res_init __res_init
|
||||
#define res_query __res_query
|
||||
#define res_search __res_search
|
||||
#define res_querydomain __res_querydomain
|
||||
#define res_mkquery __res_mkquery
|
||||
#define res_send __res_send
|
||||
#endif
|
||||
|
||||