Compare commits
1127 Commits
u31_chatfirst
...
newio
| Author | SHA1 | Date | |
|---|---|---|---|
| 2413bc72d6 | |||
| 5d9a49587c | |||
| 6466d1ed3f | |||
| 145d3dfb7e | |||
| 8dd7b3efee | |||
| d27f817403 | |||
| 2d2dcbd93a | |||
| b5ae2f7fc8 | |||
| ed34721f16 | |||
| a92c041b88 | |||
| 4761f302f6 | |||
| b59cead0b2 | |||
| 560155275b | |||
| 8694c3ffbe | |||
| 562397aa87 | |||
| 6f5590934f | |||
| 6fd5101305 | |||
| 9d1c5c2ceb | |||
| c27a3229c7 | |||
| 18892b6446 | |||
| 542ecdc7fb | |||
| a510d024d6 | |||
| ac1c9232bf | |||
| b2ec3ec1a7 | |||
| 3699932d77 | |||
| 2b68123854 | |||
| 636aa8352b | |||
| e0048f7525 | |||
| f8865a5aa1 | |||
| 1f75896d56 | |||
| 870289c2fd | |||
| 037b2e6434 | |||
| a6ddaba35b | |||
| 2484153b70 | |||
| 49bb821199 | |||
| 99db84be8c | |||
| 8d1ff52f0d | |||
| e53e4a93db | |||
| e77382c196 | |||
| d90d0f52f6 | |||
| f19f945836 | |||
| 8833852342 | |||
| c343bf91f7 | |||
| 1ccd58d2a2 | |||
| e1f991f196 | |||
| 60a2ebc493 | |||
| a88f70518c | |||
| 29454d1c56 | |||
| f31620b194 | |||
| 3bd9fbcccf | |||
| 9834eb7566 | |||
| ac6f01c0df | |||
| d2db682c97 | |||
| 49c8a45728 | |||
| 0322db7ebd | |||
| 8d35c56efb | |||
| 9cf9781698 | |||
| de9b9854b9 | |||
| 640404a4d5 | |||
| 13597dc40d | |||
| 5d401a394e | |||
| b95b9d9e27 | |||
| 491d6f70c2 | |||
| f18eb925c4 | |||
| 296b085008 | |||
| b0178e83bd | |||
| 4a49f9b21f | |||
| c20d8fb8f8 | |||
| e478bced2e | |||
| 0ce08bb11a | |||
| a7851a2b95 | |||
| e65a717cf4 | |||
| 430121770f | |||
| e55a6611c8 | |||
| 1937f8c742 | |||
| b516697885 | |||
| 94306ba8a5 | |||
| c695ee4bcf | |||
| ba08714e66 | |||
| 0f9d6e71e8 | |||
| 9237ce85cf | |||
| f10832a977 | |||
| 7523a30430 | |||
| 7587d594da | |||
| 65a2668ede | |||
| ffea432f5a | |||
| e679134624 | |||
| 12869627e6 | |||
| 7819ffae6c | |||
| 73b7a8be1e | |||
| 0b632d5e71 | |||
| 0576528af0 | |||
| ef43f0f2ca | |||
| 0c540e883f | |||
| 0131d9f325 | |||
| 2399936a6a | |||
| b4a6f24f80 | |||
| 2f449e0918 | |||
| fd925b3c28 | |||
| 5753585026 | |||
| 1c73d5ae45 | |||
| 1a9b9ccf1a | |||
| ce580bbe09 | |||
| 1c22a8257c | |||
| 335e30513c | |||
| 38c48fef75 | |||
| 662f6398f3 | |||
| 420991af6a | |||
| 0f2ae3c278 | |||
| 4823908acb | |||
| 03aa90bc43 | |||
| bef880aa6a | |||
| b8fecd310f | |||
| 104e7200f5 | |||
| eaecb8c42a | |||
| c4d3ae9df1 | |||
| b60eb8f989 | |||
| 8de39f6dc5 | |||
| a46ebe1f38 | |||
| 78fa804531 | |||
| 2b6390daa3 | |||
| 4aa8f59611 | |||
| 3debe8680a | |||
| 1c9ee5c817 | |||
| e5d74b9ae0 | |||
| 6f8aca82f3 | |||
| dbaab6e026 | |||
| d3e7ab8006 | |||
| 3a4c06ffd3 | |||
| 73af1fd6e0 | |||
| 4fd3ec7525 | |||
| 19cd68a204 | |||
| 2d7eb2c1b1 | |||
| c5d855eb10 | |||
| d29b6498fb | |||
| 1f8489a471 | |||
| 02acda1628 | |||
| fccb560c67 | |||
| 376e3d3d6f | |||
| f92fcae257 | |||
| 7c54ce70c9 | |||
| 0206d844e9 | |||
| afcb0b2a03 | |||
| 9194aece63 | |||
| a9f1838c3e | |||
| 78ef8effe9 | |||
| 90d56ef4e5 | |||
| ae0f7643dd | |||
| 30b0175a39 | |||
| bd6729ad93 | |||
| 51d0d59ced | |||
| 9daf3d0b73 | |||
| 7805566ceb | |||
| c7fbfa3e92 | |||
| 8e7b926c31 | |||
| 887a003b98 | |||
| 5a0d13d9fa | |||
| 164869dca5 | |||
| 538c318eb6 | |||
| fa2e9760f9 | |||
| 5a366beda7 | |||
| 0f6d91091e | |||
| 8be7cbab05 | |||
| 112d928f11 | |||
| 6d239e28ec | |||
| d10bc57b74 | |||
| 6b8c83ba85 | |||
| 93f759f200 | |||
| dc3f1ba227 | |||
| b549340657 | |||
| 8f68a64363 | |||
| 15c765449b | |||
| ec5231f565 | |||
| db060a11b8 | |||
| f52f030346 | |||
| 58c667c7c3 | |||
| a3a04d9797 | |||
| 3e89146e19 | |||
| ce009a31ba | |||
| e39a1f9884 | |||
| 7a7e2de05c | |||
| 59084e02a1 | |||
| 6fda3150a6 | |||
| 6db9156993 | |||
| e306a6e55c | |||
| e72587c252 | |||
| eca91bee1f | |||
| 0b873a2b6b | |||
| c78c669fdd | |||
| 863e32a3d9 | |||
| de2c5e6cc7 | |||
| 84c70bdd2f | |||
| aedfae229a | |||
| f65e857d4e | |||
| 587f4c4281 | |||
| f5f4e4500f | |||
| dbda73fa56 | |||
| 0dd1483fc3 | |||
| 96d2cf936b | |||
| f7ab73f82e | |||
| 12cdefe981 | |||
| 8b6f528b54 | |||
| f512f9b901 | |||
| 819e0c98ea | |||
| 2f67e63456 | |||
| c2649c5438 | |||
| b34268dad0 | |||
| e20e9dfd85 | |||
| 455d732636 | |||
| ba01670af2 | |||
| 9e42107355 | |||
| d25d7900df | |||
| d48edbdf5c | |||
| b1fce6bb63 | |||
| ff4517fa8a | |||
| 2ed3bf18df | |||
| 3a49482363 | |||
| 1055c2b73c | |||
| 29f53a13c4 | |||
| 40a014a66e | |||
| 393217392f | |||
| 711b771b39 | |||
| 0f93326707 | |||
| bdd52d3eb8 | |||
| 8b753d84eb | |||
| 70a129aac4 | |||
| f0ddd37c49 | |||
| d20059ea7d | |||
| bebebf6cdf | |||
| 3bdee011e9 | |||
| 259b1a5eeb | |||
| 49780c8113 | |||
| 9aeeca3ee8 | |||
| be3f21edd7 | |||
| 407aa55e58 | |||
| 08ad7f0816 | |||
| 0f9b578baa | |||
| 976aa0cb77 | |||
| 929dd62144 | |||
| 4df1253ab3 | |||
| 662ad36275 | |||
| 75b989d67a | |||
| 5b5ed53edb | |||
| 009a3d498c | |||
| 9b8b45099f | |||
| 5d0f93255b | |||
| b4091f77ff | |||
| 4934786273 | |||
| 0d0a632f51 | |||
| 3594f2ee45 | |||
| c07e8962e5 | |||
| 9c947f140e | |||
| 86206ed51c | |||
| 836be977eb | |||
| 3859340b2a | |||
| b2ef3ec1b6 | |||
| 5c0894e57c | |||
| 12cee06bf1 | |||
| c753c7adc1 | |||
| 897a8cec60 | |||
| 548c108ecb | |||
| 7ec691c0ed | |||
| 129bc36adf | |||
| 23bc0b40e6 | |||
| 6ccda4cc95 | |||
| 8480b860cf | |||
| 8505657eab | |||
| 9dd3367f72 | |||
| e888024e63 | |||
| 41f65241a4 | |||
| 77e03b3c91 | |||
| 1a0131e9a9 | |||
| cd2b8186e7 | |||
| 64ee79c5f5 | |||
| f387fbbd4f | |||
| 3981a679c5 | |||
| e65e01ddff | |||
| 68615a398f | |||
| c6266dc19c | |||
| dae5b893d1 | |||
| a4de9ac1e2 | |||
| ea1e7b3f70 | |||
| edd0b08139 | |||
| d9d5cdc910 | |||
| 343f193e7b | |||
| a1b3eb1331 | |||
| 3a482d26ca | |||
| 68bfeffa70 | |||
| 6e42d09c50 | |||
| 567f3b8fcb | |||
| f8d1e81206 | |||
| 6c6130fab6 | |||
| 7695fb209d | |||
| 2cc3eb2266 | |||
| 4fca682f8c | |||
| 6e67d9dea0 | |||
| 5d2092858d | |||
| 4291191149 | |||
| d2a90a5101 | |||
| 5d5ffa3f06 | |||
| 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,18 +1,19 @@
|
||||
Welcome to the UnrealIRCd configuration program. This program
|
||||
will help you to compile your IRC server, and ask you questions
|
||||
|
||||
_ _ _ ___________ _____ _
|
||||
| | | | | |_ _| ___ \/ __ \ | |
|
||||
| | | |_ __ _ __ ___ __ _| | | | | |_/ /| / \/ __| |
|
||||
| | | | '_ \| '__/ _ \/ _ | | | | | / | | / _ |
|
||||
| |_| | | | | | | __/ (_| | |_| |_| |\ \ | \__/\ (_| |
|
||||
\___/|_| |_|_| \___|\__,_|_|\___/\_| \_| \____/\__,_|
|
||||
|
||||
Configuration Program
|
||||
for Unreal3.2-Selene(beta2)
|
||||
|
||||
This program will help you to compile your IRC server, and ask you
|
||||
questions regarding the compile-time settings of it during the process.
|
||||
regarding the setup of it, during the process.
|
||||
|
||||
If you need help to set the IRCd up, mail
|
||||
unreal-support@lists.sourceforge.net or ask at IRC:
|
||||
/server irc.ircsystems.net, /join #unrealircd
|
||||
If you have problems regarding the setup & compile, read Unreal.nfo to get
|
||||
more information on where to get help. Please, before running this setup,
|
||||
read the documentation in the "doc" folder.
|
||||
|
||||
For any sake, read Unreal.nfo and read doc/faq before asking questions
|
||||
|
||||
NOTE: If the code is changed in any way, or the version string is changed,
|
||||
we do _NOT_ support the product, except if you got explicit permission
|
||||
from one of the UnrealIRCd coders. If it fails and you messed with it,
|
||||
you can't blame noone but yourself. Also, non-official UnrealIRCd/32
|
||||
builds (if it doesn't say "geniune" in the display) are _NOT_
|
||||
supported.
|
||||
|
||||
-Stskeeps (Head coder of UnrealIRCd)
|
||||
|
||||
@@ -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,23 +1,127 @@
|
||||
|
||||
Unreal3.1.1-Darkshades Release Notes
|
||||
===================================
|
||||
Unreal3.2-Selene (BETA10) RELEASE NOTES
|
||||
======================================
|
||||
|
||||
I M P O R T A N T R E A D I N G
|
||||
(YES, YOU WILL NEED TO READ ALL OF THIS)
|
||||
|
||||
* It is REALLY RECOMMENDED that you run only Unreal3.1.1<->Unreal3.1.1,
|
||||
as Unreal3.1+sf got some funny SJOIN bugs that causes the network to
|
||||
desynch
|
||||
* 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
|
||||
|
||||
* It is ADVISABLE that you allocate numerics to each server on your network.
|
||||
You simply in the M: line, just after the port, add :numeric, like:
|
||||
|
||||
M:irc.fyremoon.net:*:Description:6667:20
|
||||
* 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). The +x algorithm was changed slightly
|
||||
to fix a method of cracking that was found. #define COMPAT_BETA4_KEYS to use the beta4
|
||||
system for compatibility with older betas.
|
||||
|
||||
Where 20 is the numeric. Numerics are 1-255, 0 means no numeric (bad),
|
||||
and no server must have same numeric
|
||||
* We use autoconf to help with compiliation, and this should make us able
|
||||
to a lot more platform (we have even ported to BeOS).
|
||||
|
||||
* We have introduced encrypted irc connections, using SSL
|
||||
You need to set up a SSL port, P:IP:s:*:port
|
||||
To connect securely to another server, add :S at the end of the C:line
|
||||
and make sure it autoconnect/connects to a SSL port
|
||||
* We require a pthreads library for the SOCKS scan now - and this is now
|
||||
done in the background (no more waiting!).
|
||||
|
||||
* Read Unreal.nfo for any sake AND THE DOCS IN doc/. To update/upgrade your IRCd,
|
||||
please run the ./update script. This requires "wget" and "cvs" on the box to function
|
||||
* 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
|
||||
n - nick change notices
|
||||
q - deny nick (Q:line) rejection 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/auspice.conf (Auspice)
|
||||
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)
|
||||
|
||||
* Added oper::snomask to specify default oper snomask modes
|
||||
|
||||
* /helpop text has been moved to a config directive, help {}. To keep the standard help
|
||||
text you need to include help.conf so add
|
||||
|
||||
include "help.conf";
|
||||
|
||||
to your config file.
|
||||
|
||||
* To be able to use G:lines you must now have the can_gkline flag (or t if old style flags)
|
||||
|
||||
* Usermode +T (Tech Admin) has been removed, since it is 100% useless
|
||||
|
||||
* Added a make install to copy files to the installation location
|
||||
|
||||
* Removed ./ircd, ./killircd, crypt/mkpasswd, ./rehash and merged them into a new
|
||||
./unreal [start|stop|rehash|mkpasswd]
|
||||
for mkpasswd the format is
|
||||
./unreal mkpasswd [method] [password]
|
||||
|
||||
* Added a new system for crypting passwords. You now do for example
|
||||
password "my password" { crypt; };
|
||||
This allows you to have some crypted passwords and others not. If you have SSL enabled
|
||||
you may also use the md5 and sha1 methods.
|
||||
|
||||
* The old blackhole is now set::scan::endpoint and specifies an IP and port to tell
|
||||
proxies to connect to.
|
||||
|
||||
* You can now specify a cipher list for SSL links (read doc/conf.doc for more info)
|
||||
|
||||
* +I is now in invisibility.so so it is easily disabled
|
||||
|
||||
* set::socks has been replaced by set::scan (read doc/conf.doc for more info)
|
||||
|
||||
* log {} syslog support added (read doc/conf.doc for more info)
|
||||
|
||||
* 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,17 +4,14 @@
|
||||
| some kind of Certification Authority (CA), so your users can check that |
|
||||
| they are really connected to the real server, so they feel secure? |
|
||||
| |
|
||||
| A initiative have been started, to help this problem, as more and more |
|
||||
| An initiative has been started, to help this problem, as more and more |
|
||||
| SSL-enabled IRC servers will be started in the future, and people will |
|
||||
| have trouble authenticating that they are really at the right server. |
|
||||
| This initiative is called SICI (Secure IRC Certification Initiative. We |
|
||||
| sign your certificates for free, using the simple way of authenticating |
|
||||
| you by going to your IRC server and testing if it's really you. |
|
||||
| |
|
||||
| You can send in your "server.req.pem" file to us at our email |
|
||||
| certs@sici.ircsystems.net, with contact info on you (IRC network, nick, |
|
||||
| status). We will then contact you, and check if you have provided true |
|
||||
| information. If you need more information about SICI, visit our website |
|
||||
| http://sici.ircsystems.net, where you can download our root certificate,|
|
||||
| and read even more about this project. | Press enter to continue |
|
||||
| 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 |
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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,96 @@
|
||||
$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.
|
||||
|
||||
|
||||
=======================================================================
|
||||
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
|
||||
###############################################################################
|
||||
#### Unreal IRC Unix Daemon Installation Guide ####
|
||||
#### UnrealIRCD ver 3.2 ####
|
||||
#### unreal-dev@lists.sourceforge.com ####
|
||||
#### http://www.unrealircd.com/ ####
|
||||
###############################################################################
|
||||
#### Unpackaging the IRCD ####
|
||||
#### ####
|
||||
#### 1) gzip -d Unreal3.<version>.tar.gz ####
|
||||
#### ####
|
||||
#### 2) tar xvf Unreal3.<version>.tar ####
|
||||
#### ####
|
||||
#### 3) cd Unreal3.<version>/ ####
|
||||
###############################################################################
|
||||
#### Compiling the IRCD ####
|
||||
#### ####
|
||||
#### 1) Supported Operating Systems ####
|
||||
#### ####
|
||||
#### OS and Version Compiler and Version Comments ####
|
||||
#### --------------- ------------------------ ------------------------ ####
|
||||
#### NetBSD 1.2B gcc 2.7.2 ####
|
||||
#### FreeBSD 4.5-R gcc 2.95.3 ####
|
||||
#### 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 #Unreal-support ####
|
||||
#### ####
|
||||
#### 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 #Unreal-support ####
|
||||
#### ####
|
||||
#### 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. ####
|
||||
#### ####
|
||||
###############################################################################
|
||||
|
||||
@@ -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,65 +92,54 @@ 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}'
|
||||
|
||||
custommodule:
|
||||
cd src; ${MAKE} ${MAKEARGS} MODULEFILE=${MODULEFILE} EXLIBS=${EXLIBS} custommodule
|
||||
|
||||
server:
|
||||
build:
|
||||
-@if [ ! -f include/setup.h ] ; then \
|
||||
@@ -159,13 +152,9 @@ build:
|
||||
( cd $$i; ${MAKE} ${MAKEARGS} build; ) \
|
||||
done
|
||||
@echo ' __________________________________________________ '
|
||||
@echo '| Compile is now complete. Now you have to go do |'
|
||||
@echo '| The load-time configuration - try go read the |'
|
||||
@echo '| file "dynconf" using your favourite viewer or |'
|
||||
@echo '| editor. The file will contain instructions on how|'
|
||||
@echo '| to do the dynamic configuration :) |'
|
||||
@echo '| You might want to see include/config.h to adjust |'
|
||||
@echo '| some settings |'
|
||||
@echo '| Compile is now complete. |'
|
||||
@echo '| You should now read the documentation and learn |'
|
||||
@echo '| how to configure your IRCd. |'
|
||||
@echo '| |'
|
||||
@echo '| If you really like UnrealIRCd, and would like to |'
|
||||
@echo '| make a donation, please read the Donation file in|'
|
||||
@@ -185,12 +174,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 +205,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/coding-guidelines doc/example.conf doc/features.txt doc/unrealircd.conf.txt 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 help.conf LICENSE Donation $(IRCDDIR)
|
||||
$(INSTALL) -m 0700 bugreport makeconf unreal $(IRCDDIR)
|
||||
$(INSTALL) -m 0700 -d $(IRCDDIR)/modules
|
||||
$(INSTALL) -m 0700 src/modules/*.so $(IRCDDIR)/modules
|
||||
|
||||
pem: src/ssl.cnf
|
||||
@echo "Generating certificate request .. "
|
||||
$(OPENSSLPATH) req -new -config src/ssl.cnf -out server.req.pem \
|
||||
$(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,4 +233,18 @@ 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!. If you want to encrypt the private key, run"
|
||||
@echo "make encpem"
|
||||
|
||||
encpem: server.key.pem
|
||||
@echo "Encrypting server key .."
|
||||
$(OPENSSLPATH) rsa -in server.key.pem -out server.key.c.pem -des3
|
||||
-@if [ -f server.key.c.pem ] ; then \
|
||||
echo "Replacing unencrypted with encrypted .." ; \
|
||||
cp server.key.c.pem server.key.pem ; \
|
||||
rm -f server.key.c.pem ; \
|
||||
fi
|
||||
|
||||
@@ -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,68 +0,0 @@
|
||||
TODO for Unreal Next:
|
||||
|
||||
Write in entries in this form:
|
||||
==============================
|
||||
|
||||
* nick - date - priority - [ title ]:
|
||||
description
|
||||
|
||||
If you think that a priority should be higher, make it++
|
||||
|
||||
Priority is 1..10, where 10 is highest, and 1 is lowest.
|
||||
----
|
||||
TODO :
|
||||
----
|
||||
|
||||
* stskeeps - Tue Dec 12 2000 - 1 - [ IPv6 ]:
|
||||
Add IPv6 compatiblity (requested by many people). Must allow :'s in
|
||||
hostnames, will kill backwards compatiblity when IPv6 is enabled
|
||||
|
||||
* stskeeps - Tue Dec 12 2000 - 1 - [ Code ] :
|
||||
Split up code, and make the placement of functions more logic
|
||||
|
||||
* codemastr - Tue Dec 12 2000 - 4 - [ Zip_Links ]:
|
||||
Actually add this since it was planned for 3.0
|
||||
|
||||
* codemastr - Tue Dec 12 2000 - 5 - [ Dynconf Recode ]:
|
||||
Dynconf has a bunch of bugs that can be resolved with a recode
|
||||
|
||||
* codemastr - Tue Dec 12 2000 - 8 - [ +I Fixes ]:
|
||||
+I still has some bugs that may cause desync and show users
|
||||
that the +I user is actually on the channel.
|
||||
|
||||
* stskeeps - Tue Dec 12 2000 - 1 - [ Bugfixes/Hash ]:
|
||||
Check for possible hash bug with del_from_client_table or something
|
||||
People still complain about crashes
|
||||
|
||||
* stskeeps - Wed Dec 13 2000 - 10 - [ Bugfixes ]:
|
||||
[[r00t3d](~lok70@168.213.226.rox-62220)] The other one, is lets say you are on
|
||||
server (a), and you set +p to your channel. All the users on Server
|
||||
(b,c, etc..) when they do a /list can see the +p channel in the
|
||||
list. Now if I set it wih chanserv ie.. mlock +ntp, it doesn't do
|
||||
that.. ON all servers (a,b,c) no one sees the +p channel in /list
|
||||
unless they are in the channel allready.
|
||||
Solution: Fix send_list to use PubChannel instead of SecretChannel
|
||||
|
||||
* stskeeps - Wed Dec 13 2000 - 10 - [ Bugfixes ]:
|
||||
[[r00t3d](~lok70@168.213.226.rox-62220)] If you are set +I (Tech
|
||||
Admin/Network Admin) and you are set +q/+a in a channel. When someone /whoises
|
||||
you hey see the channel names: *#channel ^#channel.
|
||||
Fix /whois ShowChannel code
|
||||
|
||||
* stskeeps - Wed Dec 13 2000 - 5 - [ Bugfixes ]:
|
||||
[RexHsu(~webmin@202.109.72.rox-42822)] #TVB ÄÖÄÖ H root@61.151.53.User-42432
|
||||
:0 none
|
||||
[RexHsu(~webmin@202.109.72.rox-42822)] #TVB ÄÖÄÖ H@
|
||||
~webmin@202.109.72.User-42822 :0 none
|
||||
[RexHsu(~webmin@202.109.72.rox-42822)] * End of /WHO list.
|
||||
Chinese nicks "clash", this is not the right nicks i typed in
|
||||
|
||||
* stskeeps - Wed Dec 13 2000 - 5 - [ Bugfixes ]:
|
||||
[eYe-Man(none@of.your.fucking.business)] <eYe-Man> Can you show me how you
|
||||
got
|
||||
OP?
|
||||
[eYe-Man(none@of.your.fucking.business)] <Sexy_20> me i dont know how!!!!!
|
||||
even i dont see where i got OP
|
||||
[eYe-Man(none@of.your.fucking.business)] <Sexy_20> or when some server gave
|
||||
me
|
||||
SJOIN gives people ops? :P
|
||||
@@ -1,56 +0,0 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
NOTE: tspre.org does not exist at the moment,
|
||||
as I dont have a shell for it anymore.
|
||||
If anyone want to donate a shell with a background process,
|
||||
and 1 IP with port 6667 open, they are welcome.
|
||||
however, when i get my adsl connection, it will run off that - on a
|
||||
50mhz machine *g*
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
TSpre.org
|
||||
|
||||
Many here maybe not heard of the Story
|
||||
how IRC started (and how EFnet started)
|
||||
EFnet's name means "Eris-Free Network".
|
||||
Eris was a central hub at the fomer world-
|
||||
wide IRC network, that anyone could just add
|
||||
C:N pairs for and connect to.
|
||||
|
||||
I was inspired of the tought of a network
|
||||
where anyone could link without application and all
|
||||
that shit..
|
||||
|
||||
Combined with the IRCd i made (Unreal) and the tspre.org
|
||||
domain i got donated by Nutcais (my IRC bro). Ive decided to
|
||||
start the TSpre IRC network, where anyone with TSpre servers
|
||||
(dreamforge, IRCu p9, and their alike)
|
||||
|
||||
(mostly preffered is Unreal thou).. Its an experimental
|
||||
network where people can test out thier IRCds and
|
||||
wIRds without having to fill out apps and so on.
|
||||
|
||||
There are no real rules. So just have fun :)
|
||||
|
||||
See http://www.tspre.org for more info on this=)
|
||||
|
||||
--Stskeeps (stskeeps@tspre.org)
|
||||
@@ -1,10 +1,24 @@
|
||||
===============================================
|
||||
= UnrealIRCd v3.1.1 =
|
||||
= UnrealIRCd v3.2-Selene (beta1) =
|
||||
===============================================
|
||||
Was brought to you by:
|
||||
|
||||
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
|
||||
@@ -23,14 +37,18 @@ latest beta:
|
||||
|
||||
* To get support
|
||||
================
|
||||
* IRC: /server irc.ircsystems.net 6667 - /join #unrealircd
|
||||
* IRC: /server irc.ircsystems.net 6667 - /join #unreal-support
|
||||
[Note: Please be patient after asking questions, we may do other stuff
|
||||
or we're away. Don't repeat questions, we heard you first time,
|
||||
READ THE TOPIC before you ask anything. We do this on a free
|
||||
base so we are volunteeringly helping you, but we are humans
|
||||
like you, and we got to have peace at times as well.]
|
||||
* Mailing list: unreal-support@lists.sourceforge.net (for support)
|
||||
* Mailing list: supporters@lists.unrealircd.org (for support)
|
||||
* READ doc/faq BEFORE ASKING QUESTIONS!
|
||||
|
||||
* Want to discuss, chat, etc?
|
||||
=============================
|
||||
* IRC: /server irc.ircsystems.net 6667 - /join #UnrealIRCd
|
||||
|
||||
* Got a bug to report?
|
||||
======================
|
||||
@@ -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,384 @@
|
||||
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
|
||||
|
||||
dnl Written by Caolan McNamara <caolan@skynet.ie>, modified slightly by codemastr
|
||||
AC_DEFUN(AC_caolan_FUNC_WHICH_GETHOSTBYNAME_R,[
|
||||
AC_CHECK_FUNC(gethostbyname_r)
|
||||
if test "$ac_cv_func_gethostbyname_r" = "yes"; then
|
||||
AC_CACHE_CHECK(how many parameters gethostbyname_r takes, ac_cv_func_which_gethostname_r, [
|
||||
AC_TRY_COMPILE([#include <netdb.h>], [
|
||||
char *name;
|
||||
struct hostent *he;
|
||||
struct hostent_data data;
|
||||
(void) gethostbyname_r(name, he, &data);
|
||||
],ac_cv_func_which_gethostname_r=three, [
|
||||
AC_TRY_COMPILE([#include <netdb.h>], [
|
||||
char *name;
|
||||
struct hostent *he, *res;
|
||||
char buffer[2048];
|
||||
int buflen = 2048;
|
||||
int h_errnop;
|
||||
(void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
|
||||
],ac_cv_func_which_gethostname_r=six, [
|
||||
AC_TRY_COMPILE([#include <netdb.h>], [
|
||||
char *name;
|
||||
struct hostent *he;
|
||||
char buffer[2048];
|
||||
int buflen = 2048;
|
||||
int h_errnop;
|
||||
(void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
|
||||
],ac_cv_func_which_gethostname_r=five,ac_cv_func_which_gethostname_r=no)
|
||||
|
||||
])
|
||||
|
||||
])],ac_cv_func_which_gethostname_r=no)]
|
||||
|
||||
if test "$ac_cv_func_which_gethostname_r" = "six"; then
|
||||
AC_DEFINE(HAVE_GETHOSTBYNAME_R_6)
|
||||
elif test "$ac_cv_func_which_gethostname_r" = "five"; then
|
||||
AC_DEFINE(HAVE_GETHOSTBYNAME_R_5)
|
||||
elif test "$ac_cv_func_which_gethostname_r" = "three"; then
|
||||
AC_DEFINE(HAVE_GETHOSTBYNAME_R_3)
|
||||
fi
|
||||
fi
|
||||
)])
|
||||
|
||||
|
||||
@@ -0,0 +1,387 @@
|
||||
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
|
||||
AC_CACHE_CHECK(if gcc has a working -pipe, ac_cv_pipe, [
|
||||
save_cflags="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -pipe"
|
||||
AC_TRY_COMPILE(,, ac_cv_pipe="yes", ac_cv_pipe="no")
|
||||
CFLAGS="$save_cflags"
|
||||
])
|
||||
if test "$ac_cv_pipe" = "yes"; then
|
||||
CFLAGS="-pipe $CFLAGS"
|
||||
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
|
||||
])
|
||||
AC_CACHE_CHECK(if your system prepends an underscore on symbols,ac_cv_underscore,[
|
||||
cat >uscore.c << __EOF__
|
||||
int main() {
|
||||
return 0;
|
||||
}
|
||||
__EOF__
|
||||
$CC -o uscore $CFLAGS uscore.c 1>&5
|
||||
if test -z "`strings -a uscore |grep '^_main$'`"; then
|
||||
ac_cv_underscore=no
|
||||
else
|
||||
ac_cv_underscore=yes
|
||||
fi
|
||||
])
|
||||
if test "$ac_cv_underscore" = "yes"; then
|
||||
AC_DEFINE(UNDERSCORE)
|
||||
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_CHECK_FUNCS(snprintf,AC_DEFINE(HAVE_SNPRINTF))
|
||||
AC_CHECK_FUNCS(vsnprintf,AC_DEFINE(HAVE_VSNPRINTF))
|
||||
AC_CHECK_FUNCS(strlcpy, AC_DEFINE(HAVE_STRLCPY))
|
||||
AC_CHECK_FUNCS(strlcat, AC_DEFINE(HAVE_STRLCAT))
|
||||
AC_CHECK_FUNCS(strlncat, AC_DEFINE(HAVE_STRLNCAT))
|
||||
|
||||
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_CHECK_FUNCS(syslog,AC_DEFINE(HAVE_SYSLOG))
|
||||
AC_CHECK_FUNCS(vsyslog,AC_DEFINE(HAVE_VSYSLOG))
|
||||
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_caolan_FUNC_WHICH_GETHOSTBYNAME_R
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
|
||||
ALN, Alphanumeric System
|
||||
(C) Stskeeps 2000
|
||||
|
||||
ALN is a quick hack to short down usage of bandwidth-using servernames
|
||||
in prefixes, NICK commands, etc etc. It replaces the name with a
|
||||
1 or 2 byte prefix in a system, look at src/aln.c for the prefix
|
||||
types/values. It will be an PROTOCTL, and used in NICK messages and so on,
|
||||
and introduce a new prefix server<->server called |server. The value of the
|
||||
server is calculated by a hash value, the scache system, so that the server
|
||||
can lookup with a new scache function, scache_find_by_hash(int i). The
|
||||
question of it will conflict in similar-hash server names, is a wonder to me
|
||||
:P, we will find out, but scache will fail at same time then.
|
||||
|
||||
|
||||
Examples:
|
||||
& Medb 4 957458466 ~Medb bservice.org D2 0 +iwrx *
|
||||
:BotService Bot - bservice.org - Owner: terri{J}
|
||||
|
||||
where D2 is the hash value of oxygen.phrozen.org (/stats s on a
|
||||
#define DEVELOP server). irc.flirt.org has hash 96 (ALN code AX) for
|
||||
instance.
|
||||
|
||||
@D2 GLOBOPS :message
|
||||
will be a message from server with hash D2, found find-by-hash(256)
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
From cmunk@draconic.fyremoon.net Wed Apr 5 18:09:55 2000
|
||||
Date: Wed, 5 Apr 2000 18:07:55 +0100 (BST)
|
||||
From: "The Nightwalker (Stskeeps)" <cmunk@draconic.fyremoon.net>
|
||||
To: unreal-dev@lists.sourceforge.net
|
||||
Subject: [Unreal-dev] P:Lines
|
||||
|
||||
|
||||
Some stuff i got ideas about.. stripping the IP and port from the M:Line
|
||||
and enforcing the main port to be in a M:line
|
||||
|
||||
M:irc.fyremoon.net:*:Forever is gonna start tonight:*
|
||||
|
||||
P:ip:flags:password1,password2,password3:port
|
||||
| | | \- port to bind to
|
||||
| | |
|
||||
| | \- Commaseperated lists of accepted passwords
|
||||
| | * if none
|
||||
| |
|
||||
| \--- C = Allow clients
|
||||
| S = Allow servers
|
||||
| R = ONLY allow our remote admin connections
|
||||
| (may only be on a P:line of its own)
|
||||
| J = Clients that connect here are counted as Java(Confroomhack)
|
||||
| s = Makes this a SSL port
|
||||
| * = CS
|
||||
|
|
||||
|
|
||||
\--- IP to bind to, * = INADDR_ANY (all interfaces)
|
||||
|
||||
Will make P:Lines more efficent
|
||||
|
||||
---------------------------------------------------------------------
|
||||
Carsten V. Munk - The Nightwalker, known on IRC as Stskeeps or techie
|
||||
* ICQ: 16465977 - E-Mail: stskeeps@tspre.org
|
||||
* Author of UnrealIRCd (http://unreal.tspre.org)
|
||||
* Technical Admin @ irc.roxnet.org, server admin of irc.fyremoon.net
|
||||
"To understand a program you must become both the machine and the program."
|
||||
----------------------------------------------------------------------
|
||||
|
||||
-----BEGIN GEEK CODE BLOCK-----
|
||||
Version: 3.1
|
||||
GCS/CC d- s: a--- C+++ UL P L++ E-- W++ N+ o-- K- w--- O- M V-- PS+ PE- Y+
|
||||
PGP t+ 5 X R- tv- b+ DI++ D++ G e-- h! r z**
|
||||
------END GEEK CODE BLOCK------
|
||||
|
||||
|
||||
_______________________________________________
|
||||
Unreal-dev mailing list
|
||||
Unreal-dev@lists.sourceforge.net
|
||||
http://lists.sourceforge.net/mailman/listinfo/unreal-dev
|
||||
@@ -1,72 +0,0 @@
|
||||
# $Id$
|
||||
|
||||
on ^367 * if ([$4] != []) {echo *** $1 \($3 - $stime($4)) $2} {echo *** $1-}
|
||||
on ^333 * echo *** Topic for $1 set by $2 on $stime($3)
|
||||
on ^317 * if (index(012345679 $3) != -1) {echo *** $1 has been idle for $2 seconds. Signon at $stime($3)} {echo *** $1 has been idle for $2 seconds.}
|
||||
On ^329 "*" echo *** $1 : created $stime($2)
|
||||
on ^
|
||||
alias silence quote silence
|
||||
alias sile quote silence
|
||||
on ^raw_irc "% SILENCE %" echo *** $*
|
||||
|
||||
@ hideit = 0
|
||||
on ^server_notice "% % NOTICE -- CLIENT*" if (hideit != 1) {echo *** $2-}
|
||||
alias show @ hideit = 0;echo *** You can now see clients connecting/exiting
|
||||
alias hide @ hideit = 1;echo *** You will no longer see clients connecting/exiting
|
||||
|
||||
|
||||
# ctime and sendq written by bry
|
||||
# modified by Mmmm
|
||||
|
||||
alias ctime {
|
||||
^on 211 -
|
||||
if ( [$0] )
|
||||
{ ^assign SS $0- }
|
||||
{ ^assign SS $S }
|
||||
|
||||
^on ^211 * {
|
||||
eval ^assign hrs2 ${ ([$7]/60)/60}
|
||||
eval ^assign min2 ${[$7]/60}
|
||||
|
||||
eval ^assign dys ${[$HRS2]/24}
|
||||
eval ^assign hrs ${[$HRS2]-([$DYS]*24)}
|
||||
eval ^assign min ${[$MIN2] - ( ([$HRS]+([$DYS]*24) )*60)}
|
||||
eval ^assign sec ${[$7]-([$MIN2]*60)}
|
||||
@ a = index(\[ $1) - 1
|
||||
@ b = left($a $1)
|
||||
if (index(. $b) == -1)
|
||||
{eval echo *** $1 $[2]DYS days, $[2]HRS hrs, $[2]MIN min, $[2]SEC s}
|
||||
{eval echo *** $1 $[2]DYS days, $[2]HRS hrs, $[2]MIN min, $[2]SEC s}
|
||||
}
|
||||
^stats l $SS
|
||||
}
|
||||
|
||||
alias sendq {
|
||||
eval ^on ^211 "$SRV *" {
|
||||
@ a = index(\[ $1) - 1
|
||||
@ b = left($a $1)
|
||||
if (index(. $b) == -1)
|
||||
{eval echo *** $[11]2 sendq $1}
|
||||
{eval echo *** $[11]2 sendq $1}
|
||||
}
|
||||
if ( [$0] )
|
||||
{ ^assign SRV $0- }
|
||||
{ ^assign SRV $S }
|
||||
stats l $SRV
|
||||
wait -cmd eval ^on ^211 -"$SRV *"
|
||||
}
|
||||
|
||||
# If you use Daveman's toolbox or any auto rejoin line, remove the old
|
||||
# on raw_irc for KICK, and use the foll. one instead: (Run)
|
||||
#
|
||||
#ON ^RAW_IRC "% KICK % % *" {
|
||||
# IF ([$3]==[$N])
|
||||
# {
|
||||
# //QUOTE JOIN $2
|
||||
# ECHO $MID(11 5 $STIME($TIME())) * You have been kicked off channel $2 by $LEFT($INDEX(! $0) $0) \($MID(1 256 $4-)\)
|
||||
# }
|
||||
# {
|
||||
# ECHO $MID(11 5 $STIME($TIME())) * $3 has been kicked off channel $2 by $LEFT($INDEX(! $0) $0) \($MID(1 256 $4-)\)
|
||||
# }
|
||||
# }
|
||||
|
||||
@@ -118,8 +118,12 @@ Tom Hopkins <hoppie@buengf.bu.edu> / September, October 1990:
|
||||
always works on code, so he has to have done alot more than three
|
||||
lines worth. :)
|
||||
|
||||
Carsten Munk <stskeeps@mp3fans.co.uk> / May and futher 1999:
|
||||
* Made many features based on Elite.. :/
|
||||
UnrealIRCd Coders
|
||||
Carsten Munk <stskeeps@unrealircd.com> / May 1999, date
|
||||
Dominick Meglio <codemastr@unrealircd.com> / June 1999, date
|
||||
David Flynn / March 2000, June 2000
|
||||
McSkaf / June 2001, September 2001
|
||||
Finny Merrill <griever@unrealircd.com> / November 2001, date
|
||||
|
||||
Thanks go to those persons not mentioned here who have added their advice,
|
||||
opinions, and code to IRC.
|
||||
|
||||
@@ -1,128 +0,0 @@
|
||||
SmartRoute
|
||||
Rule based connects
|
||||
Draft 4 - Aug 19, 1994
|
||||
by Tony Vencill
|
||||
|
||||
Rule based connects allow an admin to specify under what conditions
|
||||
a connect should not be allowed. If no rules are specified for a
|
||||
given C and/or N line it will be allowed under any condition.
|
||||
|
||||
A rule may consist of any legal combination of the following functions
|
||||
and operators.
|
||||
|
||||
Functions
|
||||
---------
|
||||
connected(targetmask) - true if a server other than that processing
|
||||
the rule is connected that matches the
|
||||
target mask
|
||||
directcon(targetmask) - true if a server other than that processing
|
||||
the rule is directly connected that matches
|
||||
the target mask
|
||||
via(viamask, targetmask) - true if a server other than that processing
|
||||
the rule matches the target mask and is
|
||||
connected via a directly connected server
|
||||
that matches the via mask
|
||||
directop() - true if an oper is directly connected
|
||||
|
||||
Unary operators
|
||||
---------------
|
||||
! eg: !argument - true if the argument is false
|
||||
|
||||
Binary operartors
|
||||
-----------------
|
||||
&& eg: arg1&&arg2 - true if arg1 and arg2 are both true
|
||||
|| eg: arg1||arg2 - true if arg1, arg2, or both are true
|
||||
|
||||
Parenthesis () are allowed for grouping arguments, but if no parenthesis
|
||||
are included, && will take precedence over ||, ! will take precedence
|
||||
over both && and ||, and the function will be evaluated from left to
|
||||
right. White space in a rule is ignored. Invalid characters in a rule
|
||||
will lead to the rule being ignored.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
A simple example of a connect rule might be:
|
||||
|
||||
connected(*eu.under*)
|
||||
|
||||
This might be used in a US undernet server for a Europe CN pair to
|
||||
insure that a second Europe link is not allowed if one US-EU link
|
||||
already exists. Note that on the undernet, US server names are
|
||||
city.state.us.undernet.org and Europe server names are
|
||||
city.country.eu.undernet.org.
|
||||
|
||||
A more interesting example might be:
|
||||
|
||||
connected(*eu.under*) &&
|
||||
( !direct(*eu.under*) || via(manhat*, *eu.under*) )
|
||||
|
||||
Imagine the Boston undernet server uses this rule on its Europe CN
|
||||
pairs. This says that if a Europe server is already connected, a
|
||||
Boston-Europe connect will not be allowed. It also says that if a
|
||||
Europe server does already exist and Boston is not directly connected
|
||||
to one or more Europe servers or Manhattan is, the Boston-Europe
|
||||
connect will not be allowed. This has the effect of allowing multiple
|
||||
US-EU links but attempting to limit these links to one server (ie:
|
||||
Boston will not initiate its first Europe link if another server is
|
||||
already linking Europe). This rule will also prefer to let Manhattan
|
||||
handle the US-EU link by disallowing Boston-Europe links if a Europe
|
||||
server is already linked to Manhattan.
|
||||
|
||||
A example of the remaining function, directop(), is:
|
||||
|
||||
connected(*eu.under*) || directop()
|
||||
|
||||
If this line is used on Boston for the Paderborn CN pair, it will allow
|
||||
connects to Paderborn only if another Europe server is not already
|
||||
connected and there is not an oper on Boston. If this rule is
|
||||
overrideable (ie: is applied only to autoconnects as described below),
|
||||
then it will disallow Boston autoconnects to Paderborn while a Boston
|
||||
oper is online, but allow oper-initiated connects to Paderborn under any
|
||||
circumstance. This directop() function could be used to invoke less
|
||||
prefered routes only when an oper is not present to handle routing, or
|
||||
conversly to allow use of less preferable routes only when an oper is
|
||||
present to monitor their performance.
|
||||
|
||||
ircd.conf entries
|
||||
-----------------
|
||||
|
||||
A rule is listed in the ircd.conf file using a D or d line (which can
|
||||
be thought of as a "disallow" line). D lines will apply to all oper
|
||||
and server originated connects, while d lines will apply only to
|
||||
autoconnects (ie: they are overrideable by opers). The formats are:
|
||||
|
||||
D:targetmask::rule
|
||||
d:targetmask::rule
|
||||
|
||||
Remember that newlines are not allowed in conf lines. Two examples
|
||||
(from above) are:
|
||||
|
||||
D:*eu.under*::connected(*eu.under*)
|
||||
d:*eu.under*::connected(*eu.under*) || directop()
|
||||
|
||||
Connects originating from other servers will be checked against and
|
||||
matching D lines, while matching d lines will be ignored as it will not
|
||||
be clear whether or not the connection attempt is oper initiated.
|
||||
|
||||
Checking and viewing rules
|
||||
--------------------------
|
||||
|
||||
The chkconf program that comes with the servers has been modified to
|
||||
also check your connect rules. If running in debug mode, parsing errors
|
||||
will show up at debug level 8. To view rules online, "/stats d" can be
|
||||
used to see all rules and "/stats D" can be used to view those rules
|
||||
which affect oper initiated connects and accepts.
|
||||
|
||||
Processing and storage
|
||||
----------------------
|
||||
|
||||
The rules are parsed when the conf file is read and transformed into a
|
||||
more efficiently computed form, then all applicable rules are
|
||||
evaluated each time a connect command is given or an autoconnect is
|
||||
due. If more than one applicable rule is given, only one need
|
||||
evaluate to true for the connect to be allowed (ie: the rules are ored
|
||||
together). Note that conditions that exist when the connect is
|
||||
initiated might differ from conditions when the link is established.
|
||||
|
||||
[ $Id$ ]
|
||||
@@ -1,4 +1,7 @@
|
||||
[ $Id$ ]
|
||||
Take this with a grain of salt.. it's heaps old and this isn't Elite anymore
|
||||
|
||||
|
||||
---------------------------
|
||||
Version Elite2.0 ==========
|
||||
===========================
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
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$ ]
|
||||
@@ -1,34 +0,0 @@
|
||||
|
||||
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$ ]
|
||||
@@ -1,41 +0,0 @@
|
||||
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$ ]
|
||||
@@ -1,129 +0,0 @@
|
||||
[ $Id$ ]
|
||||
Take this with a grain of salt.. it's heaps old and this isn't Elite anymore
|
||||
|
||||
|
||||
---------------------------
|
||||
Version Elite2.0 ==========
|
||||
===========================
|
||||
- Since +x was rewritten, the ban bug is 100% fixed. :)
|
||||
- Rewrote +x hidden host function completely.
|
||||
- Fixed FUNNY bug with hiddenhost and /who (Reported by Prod|gy)
|
||||
- Added/Removed irc networks
|
||||
- Fixed bug in /watch (Reported/Fixed by Despise)
|
||||
- Added nick-change flood protection.
|
||||
- Added an awesome manual... ./manual to run
|
||||
- Removed /who notice for opers.
|
||||
- Added protection of /akill *@* :)
|
||||
- Removed java stuff completely. (Java clients are like normal IRC clients...right?)
|
||||
- Added new +a mode. This mode can only be set by +q channel owners. When you are +a in a
|
||||
channel, you cannot be deopped or kicked. (Syntax: /mode #chan +a <nick>)
|
||||
- Added new +q channel mode. ChanServ must set the channel founder +q so they are also
|
||||
known as channel owners via the ircd. Channel owners are protected and may set
|
||||
other users +a which they will also be protected (but not chan owners).
|
||||
(Syntax: /mode #chan +q <nick>)
|
||||
- Re-coded /MAP
|
||||
- Changed GLINE notices from sendto_ops to send to all opers with +e flag on.
|
||||
- Added (addnet) script, you can run this to add your net settings to the next release.
|
||||
- Changed <server> to <ircnetwork> in whois "Blah is an oper on <server>"
|
||||
- Added new +L channel mode. If a #chat has a limit (+l) of 10 users, and +L set to channel
|
||||
#chat2, when a user trys to join #chat, they won't get "#chat is full", they will be
|
||||
auto-joined to #chat2 - (Linked channels in other words).
|
||||
(Syntax: /mode #chan +L <linked chan>)
|
||||
- Changes user@shadow-33.com to user@user-33.one.com (noone will know one.com is the realhost)
|
||||
- Changed +x for IP's from (x.x.x.***) to (x.x.x.network-#)
|
||||
- In oline flags * will introduce +e on oper up. (before: required +e in oline flag)
|
||||
- Removed +t usermode (UMODE_ALL) - wasn't used.
|
||||
- Made 'create your own network setting' feature more stable.
|
||||
- Added new channel mode (+x) to disable colored text in channel.
|
||||
- Added +C (Co Administrator)
|
||||
- Added +T (Technical Administrator)
|
||||
- Changed /map to numerics...
|
||||
- Made startup message when booting more stable.
|
||||
|
||||
Version Elite1.3 (02/23/99)
|
||||
============================
|
||||
- Cleaned up version.c.SH
|
||||
- Added new net settings (netdomain & helpchan)
|
||||
- Added new net config creator in ./Config
|
||||
- Made ./Config more easier...
|
||||
- Created new usermode +j (Java user)
|
||||
- New hostname (java.shadownet.org) for java users.
|
||||
- Removed RUN_SERVICES code from entire ircd.
|
||||
|
||||
Version Elite1.2.4 (02/14/99)
|
||||
============================
|
||||
- Fixed the nick crash bug! (damn m_kill small error)
|
||||
- New network(s) added.
|
||||
- Changed one thing in m_gline (nothing big)
|
||||
|
||||
Version Elite1.2.3 (02/10/99)
|
||||
============================
|
||||
- Removed SOCKS checking. (possibly cause of crashing)
|
||||
- Added new networks
|
||||
|
||||
Version Elite1.2.2 (02/02/99)
|
||||
============================
|
||||
- Fixed the crashing bug. (Changing nicks with linked servers)
|
||||
- Modified AceStar net settings.
|
||||
- Q-line notices are back (except for ULined clients).
|
||||
- Fixed /kill bug with services.
|
||||
|
||||
Version Elite1.2.1 (01/29/99)
|
||||
============================
|
||||
- Fixed multiple notices from +N / -N
|
||||
- Added some text to s_err.c
|
||||
- Possibly fixed the odd crashing... ?
|
||||
|
||||
Version Elite1.2 (01/24/99)
|
||||
============================
|
||||
- Netadmin can be used via +N in the oline slot now.
|
||||
- When +N is executed, net-wide oper msg's are sent about it.
|
||||
- Completely removed the freeze function (it's a toy unlike a command)
|
||||
- Changed abit of the GLINE adding notice.
|
||||
- Added logging to a file for glines (gline.log)
|
||||
- Implemented SOCKS checking (thx Rhom).
|
||||
- Changed channel lists only when 2 ppl in chan to 1.
|
||||
- Changed sendto_ops function in many places in s_user.c/s_serv.c to
|
||||
sendto_locfailops.
|
||||
- Changed GNOTICE in s_user.c/s_serv.c to GLOBOPS
|
||||
- Fixed hiddenhost bug with /kill (+w could see real host of oper)
|
||||
- Fixed hiddenhost bug with /oper (+s could see real host of oper)
|
||||
|
||||
[Special thanks goes out to Rhom for reporting/help patch bugs]
|
||||
|
||||
Version Elite1.1.1 (12/12/98)
|
||||
=============================
|
||||
- Fixed /whois bug (had problems with mIRC clients *sigh*)
|
||||
- Fixed /topic bug (didn't allow topic changes at all.)
|
||||
|
||||
Version Elite1.1 (12/6/98)
|
||||
============================
|
||||
- Fixed ./Config script (Net select)
|
||||
- Fixed /remgline bug.
|
||||
- If ULined clients, channels are not shown which they are in.
|
||||
- Fixed +e / +t / +b (non-opers could get +et before)
|
||||
- Fixed OperMode notice.
|
||||
- Fixed Gline sending extra Global on expire.
|
||||
- Fixed /whowas wrong hostname bug (by Thiago)
|
||||
- Fixed chkconf ZLINE error (by matt)
|
||||
- Added PhazeNet configuration
|
||||
- Added option for auto +x in ./Config
|
||||
- Freeze was disabled in this version (It will be back in 1.2)
|
||||
|
||||
Version Elite1.0 (09/20/98)
|
||||
============================
|
||||
- Changed Shadow3.9 to Elite1.0 (Starting a new IRCD)
|
||||
- Changed some numeric's around in src/s_err.c
|
||||
- Auto +x on Oper up.
|
||||
- Fixed small error in ./ircd script.
|
||||
- Made ./Config more Linux-redhat friendly.
|
||||
- Added RelicNet to the ircd.
|
||||
- include/config.h is much more compatible with all IRC nets.
|
||||
- Added /gline (works 100%) [/gline <user@host> <seconds> <reason>].
|
||||
- Fixed up /map.
|
||||
- Added UMODE's +e & +t
|
||||
* e: EYES [Can see ppl who /whois, and other notices.]
|
||||
* t: ALL [See's all net notices ie: See's all Client connectings...]
|
||||
- Fixed the hiddenhost bug with IP's...
|
||||
- Fixed major bug with hiddenhost which caused coredump.
|
||||
- Made a new script (makeconf) -- generates the ircd.conf file.
|
||||
@@ -1,963 +0,0 @@
|
||||
/************************************************************************
|
||||
* IRC - Internet Relay Chat, doc/INSTALL
|
||||
* Copyright (C) 1990,1991,1992, Jeff Trim, Mike Bolotski,
|
||||
* Jarkko Oikarinen and Darren Reed.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 1, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
Installing IRC - The Internet Relay Chat Program
|
||||
|
||||
|
||||
Overview of this document:
|
||||
|
||||
1) The config.h file
|
||||
2) Editing the Makefile
|
||||
3) Compiling IRC
|
||||
4) The ircd.conf file
|
||||
|
||||
|
||||
1) Edit the "config.h" file and make changes to the various #DEFINE's:
|
||||
|
||||
a) Copy the config.h.dist file to config.h before editing.
|
||||
|
||||
b) Define what type of UNIX your machine uses.
|
||||
|
||||
Pick the machine type which best describes your machine and change
|
||||
the #undef to #define (if needed). Some flavours of Unix require no
|
||||
#define and in such cases all others should be #undef'd.
|
||||
|
||||
c) DEBUGMODE
|
||||
|
||||
Define DEBUGMODE if you want to see the ircd debugging information
|
||||
as the daemon is running. Normally this function will be undefined
|
||||
as ircd produces a considerable amount of output. DEBUGMODE must be
|
||||
defined for either of -t or -x command line options to work.
|
||||
|
||||
d) DPATH, SPATH, CPATH, MPATH, LPATH, PPATH
|
||||
|
||||
DPATH is provided so that the other pathnames (SPATH, CPATH, etc)
|
||||
may be provided in just filename form. When the server starts, it
|
||||
chdir's to DPATH before chroot or any other file operation, making
|
||||
it the "current directory" for the server. This is where core files
|
||||
will go if it core dumps.
|
||||
|
||||
Define SPATH to be the directory path to ircd. This is usually
|
||||
/usr/local/bin/ircd, unless you don't have installation permission
|
||||
there.
|
||||
|
||||
Define CPATH to be the directory path to the "irc.conf" file.
|
||||
This path is usually /usr/local/lib/irc.conf. The format of this file
|
||||
will be discussed later.
|
||||
|
||||
The LPATH #define should be set to "/dev/null" unless you plan to
|
||||
debug the program. Note that the logfile grows very quickly.
|
||||
|
||||
Define MPATH to be the path to the 'motd' (message of the day) file
|
||||
for the server. Keep in mind this is displayed whenever anyone
|
||||
signs on to your server.
|
||||
|
||||
The PPATH is optional, but if defined, should point to a file which
|
||||
either doesn't exist (but is creatable) or a previously used PPATH
|
||||
file. It is used for storing the server's PID so a ps(1) isn't
|
||||
necessary.
|
||||
|
||||
e) CHROOTDIR
|
||||
|
||||
To use the CHROOTDIR feature, make sure it is #define'd and that
|
||||
the server is being run as root. The server will chroot to the
|
||||
directory name provded by DPATH.
|
||||
|
||||
f) ENABLE_SUMMON, ENABLE_USERS
|
||||
|
||||
For security conscious server admins, they may wish to leave
|
||||
ENABLE_USERS undefined, disabling the USERS command which can be used
|
||||
to glean information the same as finger can. ENABLE_SUMMON toggles
|
||||
whether the server will attempt to summon local users to irc by
|
||||
writing a message similar to that from talk(1) to a user's tty.
|
||||
|
||||
g) SHOW_INVISIBLE_LUSERS, NO_DEFAULT_INVISIBLE
|
||||
|
||||
On large IRC networks, the number of invisible users is likely to
|
||||
be large and reporting that number cause no pain. To aid and effect
|
||||
this, SHOW_INVISIBLE_LUSERS is provided to cause the LUSERS command
|
||||
to report the number of invisible users to all people and not just
|
||||
operators. The NO_DEFAULT_INVISIBLE define is used to toggle whether
|
||||
clients are automatically made invisible when they register.
|
||||
|
||||
h) OPER_KILL, OPER_REHASH, OPER_RESTART, LOCAL_KILL_ONLY
|
||||
|
||||
The three operator only commands, KILL, REHASH and RESTART, may all
|
||||
be disabled to ensure that an operator who does not have the correct
|
||||
privilidges does not have the power to cause untoward things to occur.
|
||||
To further curb the actions of guest operators, LOCAL_KILL_ONLY can
|
||||
be defined to only allow locally connected clients to be KILLed.
|
||||
|
||||
i) The rest of the user changable #define's should be pretty much self
|
||||
explanatory in the config.h file. It is *NOT* recommended that any
|
||||
of the file undef the line with "STOP STOP" in it be changed.
|
||||
|
||||
3) Configure and compile the code.
|
||||
|
||||
Edit the root Makefile for the server, uncomment/comment the correct
|
||||
CFLAGS/IRCDLIBS lines as appropriate for your system.
|
||||
Change DESTDIR to be the same as the path for DPATH in config.h.
|
||||
Type "make". This will compile the server, the client, and the services.
|
||||
At the end of this step, the server directory will contain 'ircd',
|
||||
and the client directory will contain 'irc'. To get the server installed,
|
||||
type "make install" which will build a default m4 file for preprocessing,
|
||||
copy example.conf and put the server all in DESTDIR. The irc client and
|
||||
a copy of the server will also be placed in BINDIR and the modes set
|
||||
accordingly.
|
||||
|
||||
4) The ircd.conf file.
|
||||
|
||||
After installing the ircd and irc programs, edit the irc.conf file
|
||||
as per the instructions in this section and install it in the
|
||||
location you specified in the config.h file. There is a sample
|
||||
conf file called example.conf in the /doc directory.
|
||||
|
||||
Appendix A describes the differences between IP addresses and host
|
||||
names. If you are unfamiliar with this, you should probably scan
|
||||
through it before proceeding.
|
||||
|
||||
The irc.conf file contains various records that specify configuration
|
||||
options. The record types are as follows:
|
||||
|
||||
1. Server connections (C,N)
|
||||
2. Machine information (M)
|
||||
3. Client connections (I)
|
||||
4. Default local server (U)
|
||||
5. Operator priviliges (O)
|
||||
6. Administrative info (A)
|
||||
7. Excluded accounts (K)
|
||||
8. Excluded machines (Q)
|
||||
9. Connection Classes (Y)
|
||||
10. Leaf connections (L)
|
||||
11. Service connections (S)
|
||||
12. Port connections (P)
|
||||
13. Hub connections (H)
|
||||
|
||||
|
||||
1. SERVER CONNECTIONS: How to connect to other servers
|
||||
How other servers can connect to you
|
||||
|
||||
WARNING:
|
||||
The hostnames used as examples are really only examples and
|
||||
not meant to be used (simply because they don't work) in real life.
|
||||
|
||||
Now you must decide WHICH hosts you want to connect to and WHAT ORDER you
|
||||
want to connect to them in. For my example let us assume I am on the
|
||||
machine "rieska.oulu.fi" and I want to connect to irc daemons on 3 other
|
||||
machines:
|
||||
|
||||
"garfield.mit.edu" - Tertiary Connection
|
||||
"irc.nada.kth.se" - Secondary Connection
|
||||
"nic.funet.fi" - Primary Connection
|
||||
|
||||
And I prefer to connect to them in that order, meaning I first want to
|
||||
try connecting to "nic.funet.fi", then to "irc.nada.kth.edu", and
|
||||
finally to "garfield.mit.edu". So if "nic.funet.fi" is down or
|
||||
unreachable, the program will try to connect to "irc.nada.kth.se".
|
||||
If irc.nada.kth.se is down it will try to connect to garfield and so forth.
|
||||
PLEASE limit the number of hosts you will attempt to connect to down to 3.
|
||||
This is because of two main reasons:
|
||||
a) to save your server from causing extra load and delays
|
||||
to users
|
||||
b) to save internet from extra network traffic
|
||||
(remember the old rwho program with traffic problems when
|
||||
the number of machines increased).
|
||||
|
||||
The format for the CONNECT entry in the "irc.conf" is:
|
||||
|
||||
C:<TARGET Host Addr>:<Password>:<TARGET Host NAME>:<TARGET Host PORT>
|
||||
Field: 1 2 3 4 5
|
||||
|
||||
for example:
|
||||
|
||||
C:nic.funet.fi:passwd:nic.funet.fi:6667
|
||||
|
||||
- or -
|
||||
|
||||
C:128.214.6.100:passwd:nic.funet.fi:6667
|
||||
|
||||
- or -
|
||||
|
||||
C:root@nic.funet.fi:passwd:nic.funet.fi:6667
|
||||
|
||||
|
||||
Explanation:
|
||||
|
||||
Each field is separated with a ":" charcter:
|
||||
|
||||
Field 1: Field 1 tells the IRC program which option is being configured.
|
||||
"C" corresponds to a server Connect option.
|
||||
|
||||
Field 2: Specifies the host name or IP address of the machine to connect
|
||||
to. If "user@" prefixes the actual hostname or IP address
|
||||
the server will require that the remote username returned by
|
||||
the ident server be the same as the one given before the "@".
|
||||
|
||||
Field 3: The password of the other host. A password must always be
|
||||
present for the line to be recognized.
|
||||
|
||||
Field 4: The full hostname of the target machine. This is the name that
|
||||
the TARGET server will identify itself with when you connect
|
||||
to it. If you were connecting to nic.funet.fi you would receive
|
||||
"nic.funet.fi" and that is what you should place in
|
||||
this field.
|
||||
|
||||
Field 5: The INTERNET Port that you want to connect to on the TARGET
|
||||
machine. Most of the time this will be set to "6667".
|
||||
If this field is left blank, then no connections will
|
||||
be attempted to the TARGET host, and your host will accept
|
||||
connections FROM the TARGET host instead.
|
||||
|
||||
Some examples:
|
||||
|
||||
C:nic.funet.fi::nic.funet.fi:6667
|
||||
|
||||
This reads: Connect to host "nic.funet.fi", with no password
|
||||
and expect this server to identify itself to you as
|
||||
"nic.funet.fi". Your machine will connect to this host to
|
||||
PORT 6667.
|
||||
|
||||
C:18.72.0.252:Jeff:garfield.mit.edu:6667
|
||||
|
||||
This reads: Connect to a host at address "18.72.0.252", using a
|
||||
password of "Jeff". The TARGET server should identify
|
||||
itself as "garfield.mit.edu". You will connect to Internet
|
||||
Port 6667 on this host.
|
||||
|
||||
C:irc.nada.kth.se::irc.nada.kth.se
|
||||
|
||||
This reads: do not attempt to connect to "irc.nada.kth.se",
|
||||
but if "irc.nada.kth.se" requests a connection,
|
||||
allow it to connect.
|
||||
|
||||
Now back to our original problem, we wanted OUR server CONNECT to 3
|
||||
hosts, "nic.funet.fi", "irc.nada.kth.se" and "garfield.mit.edu" in
|
||||
that order. So as we enter these entries into the file they must be
|
||||
done in REVERSE order of how we could want to connect to them.
|
||||
|
||||
Here's how it would look if we connected "nic.funet.fi" first:
|
||||
|
||||
C:garfield.mit.edu::garfield.mit.edu:6667
|
||||
C:irc.nada.kth.se::irc.nada.kth.se:6667
|
||||
C:nic.funet.fi::nic.funet.fi:6667
|
||||
|
||||
Ircd will attempt to connect to nic.funet.fi first, then to irc.nada
|
||||
and finally to garfield.
|
||||
|
||||
Reciprocal entries:
|
||||
|
||||
Each "C" entry requires a corresponding 'N' entry that specifies
|
||||
connection priviliges to other hosts. The 'N' entry contains
|
||||
the password, if any, that you require other hosts to have before
|
||||
they can connect to you. These entries are of the same format as
|
||||
the "C" entries.
|
||||
|
||||
Let us assume that "garfield.mit.edu" connects to your server
|
||||
and you want to place password authorization authorization on garfield.
|
||||
The "N" entry would be:
|
||||
|
||||
N:garfield.mit.edu:golden:garfield.mit.edu
|
||||
|
||||
This line says: expect a connection from host "garfield.mit.edu",
|
||||
and expect a login password of "golden"
|
||||
and expect the host to identify itself as "garfield.mit.edu".
|
||||
|
||||
N:18.72.0.252::garfield.mit.edu
|
||||
|
||||
This line says: expect a Connection from host "18.72.0.252", and
|
||||
don't expect login password. The connecting host should identify itself
|
||||
as "garfield.mit.edu".
|
||||
|
||||
|
||||
Wildcards domains:
|
||||
To reduce the great amount of servers in IRCnet wildcard
|
||||
DOMAINS were introduced in 2.6. To explain the usage of
|
||||
wildcard domains we take an example of such:
|
||||
*.de - a domain name matching all machines
|
||||
in Germany.
|
||||
Wildcard domains are useful in that ALL SERVERS in Germany
|
||||
(or any other domain area) can be shown as one to the
|
||||
rest of the world. Imagine 100 servers in Germany, it
|
||||
would be incredible waste of netwotk bandwidth to broadcast
|
||||
all of them to all servers around the world.
|
||||
|
||||
So wildcard domains are a great help, but how to use them ?
|
||||
They can be defined in the N-line for a given connection,
|
||||
in place of port number you write a magic number called
|
||||
wildcard count.
|
||||
|
||||
Wildcard count tells you HOW MANY PARTS of your server's name
|
||||
should be replaced by a wildcard. For example, your server's
|
||||
name is "tolsun.oulu.fi" and you want to represent it as
|
||||
"*.oulu.fi" to "nic.funet.fi". In this case the wildcard count
|
||||
is 1, because only one word (tolsun) is replaced by a wildcard.
|
||||
If the wildcard count would be 2, then the wildcard domain would
|
||||
be "*.fi". Note that with wildcard name "*.fi" you could NOT
|
||||
connect to "nic.funet.fi", because that would result in a server
|
||||
name COLLISION (*.fi matches nic.funet.fi).
|
||||
|
||||
I advice you to not to use wildcard servers before you know
|
||||
for sure how they are used, they are mostly beneficial for
|
||||
backbones of countries and other large areas with common domain.
|
||||
|
||||
|
||||
2. MACHINE INFORMATION
|
||||
|
||||
IRC needs to know a few things about your UNIX site, and the "M" command
|
||||
specifies this information for IRC. The fomat of this command is:
|
||||
|
||||
M:<YOUR Host NAME>:xxx:<Geographic Location>:<Internet Port>
|
||||
Field: 1 2 3 4 5
|
||||
|
||||
Explanation:
|
||||
|
||||
Field 1: "M" specifies a Machine description line
|
||||
|
||||
Field 2: The name of YOUR host adding any Internet DOMAINNAME that
|
||||
might also be present.
|
||||
|
||||
Field 3: -- NOT USED --: Set to Value NULL (No spaces at ALL!).
|
||||
|
||||
Field 4: Geographic Location is used to say WHERE YOUR SEVRER is,
|
||||
and gives people in other parts of the world a good
|
||||
idea of where you are! If your server is in the USA, it is
|
||||
usually best to say: <CITY> <STATE>, USA. Like for Denver
|
||||
I say: "Denver Colorado, USA". Finnish sites (like
|
||||
tolsun.oulu.fi generally say something like "Oulu, Finland".
|
||||
|
||||
Field 5: The Internet port your server will use. Should be set to
|
||||
the same value as in the config.h file.
|
||||
|
||||
|
||||
Example:
|
||||
M:tolsun.oulu.fi::Oulu, Finland:6667
|
||||
|
||||
This line reads: My Host's name is "tolsun.oulu.fi" and
|
||||
my site is located in "Oulu, Finland". My ircd will use
|
||||
Internet Port 6667.
|
||||
|
||||
|
||||
M:orion.cair.du.edu::Denver Colorado, USA:6667
|
||||
|
||||
This line reads: My Hosts name is "orion.cair.du.edu"
|
||||
and my site is located in "Denver Colorado, USA".
|
||||
I have defined Internet Port number "6667" to be used
|
||||
as my IRCD Socket Port.
|
||||
|
||||
|
||||
3. CLIENT CONNECTIONS - How to let clients connect to your IRCD.
|
||||
|
||||
A client is a program that connects to the ircd daemon (ircd). Currently
|
||||
there are clients written in C and in GNU Emacs Lisp. The "irc"
|
||||
program is the C client. Each person that talks via IRC is running
|
||||
their own client.
|
||||
|
||||
The irc.conf files contains entries that specify which clients are allowed
|
||||
to connect to your irc daemon. Obviously you want to allow your cwn
|
||||
machine's clients to connect. You may want to allow clients from
|
||||
other sites to connect. These remote clients will use your server
|
||||
as a connection point. All messages sent by these clients will pass
|
||||
through your machine.
|
||||
|
||||
The format of this entry in the conf file is:
|
||||
|
||||
I:<TARGET Host Addr>:<Password>:<TARGET Hosts NAME>:<Internet Port>
|
||||
Field:1 2 3 4 5
|
||||
|
||||
|
||||
For example, if you were installing IRC on tolsun.oulu.fi and you wanted
|
||||
to allow examples sake let us assume you were making this file for
|
||||
tolsun and you wanted to let your own clients to connect to your
|
||||
server, you would add this entry to the file:
|
||||
|
||||
I:128.214.5.6::tolsun.oulu.fi
|
||||
or
|
||||
I:tolsun.oulu.fi::tolsun.oulu.fi
|
||||
|
||||
If you wanted to let remote clients connect, you could add the
|
||||
following lines:
|
||||
|
||||
I:*.du.edu::*.du.edu
|
||||
|
||||
Allow any clients from machines whose names end in "du.edu" to connect
|
||||
with no password.
|
||||
|
||||
I:128.214.6.100::nic.funet.fi
|
||||
|
||||
Allow clients from a machine with that IP number and the name
|
||||
nic.funet.fi to connect.
|
||||
|
||||
I:*.tut.fi:secret:*.tut.fi
|
||||
|
||||
Allow clients from machines matching *.tut.fi to connect
|
||||
with the password 'secret'.
|
||||
|
||||
I:*::*
|
||||
|
||||
Allow anyone from anywhere to connect your server.
|
||||
This is the easiest way, but it also allows people to for example
|
||||
dump files to your server, or connect 1000 (or how many open
|
||||
sockets per process your OS allows) clients to your machine
|
||||
and take your network ports. Of course the same things can be
|
||||
done by simply telnetting to your machine's SMTP port (for example).
|
||||
|
||||
NEW!!!
|
||||
As of the 2.7.2d version of the server, the server is able to accept
|
||||
connections on multiple ports. I-lines are required for each P-line
|
||||
to allow connections to be accepted. For unix sockets, this means
|
||||
either adding I:/path/port::/path/port or some variation (wildcards
|
||||
are recognised here). For internet ports, there must be an I-line
|
||||
which allows the host access as normal, but the port field of the
|
||||
I-line must match that of the port of the socket accepting the
|
||||
connectiion. A port number of 0 is a wildcard (matches all ports).
|
||||
|
||||
4. DEFAULT HOSTS (for local clients)
|
||||
|
||||
This defines the default connection for the irc client. If you are
|
||||
running an ircd server on the same machine, you will want to define
|
||||
this command to connect to your own host. If your site is not running
|
||||
a server then this command should contain the TARGET host's connection
|
||||
information and password (if any). The format for this command is:
|
||||
|
||||
U:<TARGET Host addr>:<Password>:<TARGET Host NAME>:<Internet Port>
|
||||
Field: 1 2 3 4 5
|
||||
|
||||
|
||||
For example:
|
||||
|
||||
U:tolsun.oulu.fi::tolsun.oulu.fi:6667
|
||||
U:128.214.5.6::tolsun.oulu.fi:6667
|
||||
U:tolsun.oulu.fi::tolsun.oulu.fi
|
||||
|
||||
If the port number is omitted, irc will default to using 6667.
|
||||
|
||||
5. OPERATOR Privileges: How to become the IRC administrator on your site
|
||||
|
||||
To become an IRC Administrator, IRC must know who is authorized to become
|
||||
an operator and what their "Nickname" and "Password" is. To add this
|
||||
information, EDIT your "irc.conf" file and add the following command
|
||||
line to it:
|
||||
|
||||
O:<TARGET Host NAME>:<password>:<nickname>:<port>:<class>
|
||||
Field: 1 2 3 4 5 6
|
||||
|
||||
Explanation:
|
||||
|
||||
Field 1: Speficies Operator record. If you use capital letter ('O')
|
||||
in it, it specifies a global operator. Small letter ('o')
|
||||
specifies a local operator. Local operator has basically the
|
||||
same rights except global operator with some restrictions.
|
||||
|
||||
Field 2: Tells IRC which host you have the privileges FROM. This
|
||||
means that you should be logged into this host when you
|
||||
ask for the priviliges. If you specify "tolsun.oulu.fi"
|
||||
then IRC will expect your CLIENT to be connected at
|
||||
"tolsun.oulu.fi" - when you ask for OPERATOR privileges
|
||||
from "tolsun.oulu.fi". You cannot be logged in at any
|
||||
other host and be able to use your OPERATOR privileges
|
||||
at tolsun, only when you are connected at TOLSUN will this
|
||||
work - this is a safeguard against unauthorized sites.
|
||||
|
||||
|
||||
Field 3: If your AUTHORIZATION Password - this is the password that
|
||||
let's IRC know you are who you say you are! Never tell anyone
|
||||
your password and always keep the "irc.conf" file protected
|
||||
from all of the other users.
|
||||
|
||||
Field 4: The Nickname you usually go by - but you can make this what
|
||||
you want. It is better to make this a NICKNAME that no one
|
||||
else knows, but anything will do. I usually use my own
|
||||
loginname.
|
||||
|
||||
Field 5: Unused.
|
||||
|
||||
Field 6: The class field should refer to an existing class (preferably
|
||||
having a lower number than that for the relevant I-line) and
|
||||
determines the maximum number of simultaneous uses of the
|
||||
O-line allowable through the max. links field in the Y-line.
|
||||
|
||||
Example:
|
||||
O:orion.cair.du.edu:pyunxc:Jeff
|
||||
|
||||
There is an OPERATOR at "orion.cair.du.edu" that can get
|
||||
Operator priviliges if he specifies a password of "pyunxc"
|
||||
and uses a NICKNAME of "Jeff".
|
||||
|
||||
|
||||
|
||||
6. ADMINISTRATIVE INFORMATION
|
||||
|
||||
The "A" command is used for administrative information about a site.
|
||||
The e-mail address of the person running the server should be included
|
||||
here in case problems arise.
|
||||
|
||||
|
||||
A:<Your Name/Location>:<Your Electronic Mailing Addr>:<other>
|
||||
Field: 1 2 3 4
|
||||
|
||||
Explanation:
|
||||
|
||||
Field 1: "A" specifies an Admin record.
|
||||
|
||||
|
||||
Field 2: Use this field to say tell your FULL NAME and where in the
|
||||
world your machine is. Be sure to add your City,
|
||||
State/Province and Country.
|
||||
|
||||
|
||||
Field 3: Use this field to specify your Electronic Mailing Address
|
||||
preferably your Internet Mailing Address. If you have
|
||||
a UUCP or ARAPnet address - please add that as well. Be
|
||||
sure to add any extra DOMAIN information that is needed,
|
||||
for example "mail jtrim@orion" probably won't work as a
|
||||
mail address to me if you happen to be in Alaska. But
|
||||
"mail jtrim@orion.cair.du.edu" would work because you
|
||||
know that "orion" is part of the DOMAIN "cair.du.edu".
|
||||
So be sure to add your DOMAINNAMES to your mailing addresses.
|
||||
|
||||
Field 4: Is really an OTHER field - you can add what you want here,
|
||||
|
||||
|
||||
Examples (the line is just one line in the confuration file, here it
|
||||
is cut into two lines to make it clearer to read):
|
||||
|
||||
A:Jeff Trim - Denver Colorado, USA:INET jtrim@orion.cair.du.edu UUCP {hao,
|
||||
isis}!udenva!jtrim:Terve! Heippa! Have you said hello in Finnish today?;)
|
||||
|
||||
Would look like this when printed out with the /admin command:
|
||||
|
||||
Jeff Trim - Denver Colorado, USA
|
||||
INET jtrim@orion.cair.du.edu UUCP {hao,isis}!udenva!jtrim
|
||||
Terve! Hei! Heippa! Have you said hello in Finnish today? ;)
|
||||
|
||||
|
||||
Note that the A record cannot be split across multiple lines; it will
|
||||
typically be longer than 80 characters and will therefore wrap around
|
||||
the screen.
|
||||
|
||||
|
||||
7. REMOVING A USER FROM IRC Remove an errant user from IRC on your site.
|
||||
|
||||
Obviously it is hoped that you wouldn't have to use this command.
|
||||
Unfortunately sometimes a user can become unmanageable and this is your
|
||||
only recourse - the KILL USER command. THIS COMMAND ONLY AFFECTS YOUR
|
||||
SERVER - If this user can connect to another SERVER somewhere else in
|
||||
the IRC-Network then you would have to talk to the administrator on that
|
||||
site to disable his access from that IRCD Server as well.
|
||||
|
||||
The format of this command is:
|
||||
|
||||
K:<Host Name>:<time interval(s)>:<User>
|
||||
Field: 1 2 3 4
|
||||
|
||||
Explanation:
|
||||
|
||||
Field 1: "K" tells the IRCD that you are making a KILL USER command
|
||||
entry.
|
||||
|
||||
Field 2: In this field you specify the Hostname that the user is
|
||||
connecting from. If you wanted to REMOVE connects
|
||||
to IRC from "orion.cair.du.edu" then you would want to enter
|
||||
"orion.cair.du.edu". If you want to REMOVE ALL HOSTS
|
||||
access you can use '*' (Wild Card notation) and no matter
|
||||
what host the USERNAME (specified in Field 4) connects from
|
||||
s/he will be denied access. Removing all hosts isn't
|
||||
very smart thing to do though, why would you run an ircd
|
||||
if you allow nobody to connect to it anyways ?
|
||||
|
||||
Field 3: Either leave this field empty (no spaces), then then lines
|
||||
is active continuously for the specified user/host machine.
|
||||
You may also specify intervals during the line should be
|
||||
active, see examples above.
|
||||
|
||||
Field 4: The USERNAME of the user you want removed from IRC. For
|
||||
example 'root'.
|
||||
|
||||
|
||||
Some Examples:
|
||||
K:orion.cair.du.edu::jtrim
|
||||
|
||||
If user 'jtrim' connects to IRC from host "orion.cair.du.edu"
|
||||
then IMMEDIATELY REMOVE HIM from my IRCD.
|
||||
|
||||
K:*.cair.du.edu::root
|
||||
|
||||
If user 'root' connects to IRC from any host that has the
|
||||
suffix "cair.du.edu" - then IMMEDIATELY REMOVE THEM from
|
||||
my IRCD.
|
||||
|
||||
K:*::vijay
|
||||
|
||||
This line reads "I don't care WHAT HOST user 'vijay' is on,
|
||||
I will NEVER allow username 'vijay' to login to my IRCD.
|
||||
|
||||
K:*.oulu.fi:0800-1200,1400-1900:*
|
||||
|
||||
This disallows all users from hosts with enddomain 'oulu.fi'
|
||||
access to your server between 8 and 12am, 2 and 7pm.
|
||||
Users get kicked off if they're already signed on when the
|
||||
line becomes active (they'll get a warning 5 minutes ago).
|
||||
|
||||
8. Disallowing SERVERS in your irc net.
|
||||
|
||||
In some cases people run into difficulties in net administration.
|
||||
For one reason or another you do not want a certain server to be
|
||||
in your net (for example because of the security holes it opens
|
||||
for every server if it's not secured carefully). In that case
|
||||
you should use Q-lines in your server. When you specify a server
|
||||
name in Q-line, everytime some server link tries to introduce you
|
||||
a server (remember, all server names are broadcast around the net),
|
||||
that name is checked if it matches the Q-lines in your server.
|
||||
If it matches, then your server disconnects the link. Note that
|
||||
just placing Q-lines to your server probably results in your server
|
||||
being left alone, unless other servers have agreed to have the
|
||||
same Q-line in their ircd configuration files as well.
|
||||
|
||||
Example:
|
||||
Q::of the security holes:foo.bar.baz
|
||||
|
||||
This command excludes a server named "foo.bar.baz", the reason
|
||||
is given to be security holes (you should give a reason, it is
|
||||
polite). The first field is unused, so leave it empty.
|
||||
|
||||
9. Connection Classes.
|
||||
|
||||
To enable more efficient use of MAXIMUM_LINKS, connection classes
|
||||
were implemented. To give a connection a class, add another field
|
||||
(a sixth) to the C/N lines for a particular server.
|
||||
Each line for a server should have the same number as the sixth
|
||||
field. If it is absent, the server deaults it to 0, using the
|
||||
defaults from the config.h file. To define a connection class,
|
||||
you need to include a Y: line in the irc.conf file. This enables
|
||||
you to define the ping frequency, connection frequency and maximum
|
||||
number of links that class should have. Currently, the Y: line MUST
|
||||
appear in the irc.conf file BEFORE it is used in any other way.
|
||||
|
||||
The format for the line is:
|
||||
|
||||
Y:<CLASS>:<PING FREQUENCY>:<CONNECT FREQUENCY>:<MAX LINKS>:<SENDQ>
|
||||
Field: 1 2 3 4 5 6
|
||||
|
||||
Field 2: This is the class number which gains the following attributes
|
||||
and should match that which is on the end of the C/N line.
|
||||
|
||||
Field 3: This field defines how long the server will let the connection
|
||||
remain "silent" before sending a PING message to make sure it is still
|
||||
alive. Unless you are sure of what you are doing, use the default value
|
||||
which is in your config.h file.
|
||||
|
||||
Field 4: By changing this number, you change how often your server
|
||||
checks to see if it can connect to this server. If you want to check
|
||||
very occasionally, use a large value, but if it is an important
|
||||
connection, you might want a smaller value so that you connect to it
|
||||
as soon as possible.
|
||||
|
||||
Field 5: This field defines the maximum number of links this class
|
||||
will allow from automatic connections. Using /CONNECT overrides this
|
||||
feature.
|
||||
|
||||
Field 6: This field defines the 'sendq' value for this class. If this
|
||||
field is not present, the default (from config.h) is assigned.
|
||||
|
||||
NOTE: leaving any of the fields out means their value is 0 (ZERO)!!
|
||||
|
||||
example:
|
||||
|
||||
Y:23:120:300:5
|
||||
|
||||
define class 23 to allow 5 auto-connections, which are checked every
|
||||
300 seconds. The connection is allowed to remain silent for 120
|
||||
seconds before a PING is sent. NOTE: fields 3 & 4 are in seconds.
|
||||
|
||||
You may also give I lines a class (again the sixth field to define
|
||||
which class). This is only usefull (currently) for redefining the
|
||||
ping frequency. It can also be useful as a diagnostic to see how
|
||||
much each I line is used when combined with the TRACE output.
|
||||
|
||||
Another feature of connection class is the ability to do automatic
|
||||
routing by using the class as a 'priority'. If you are connected
|
||||
to a server which has a class lower than one of the servers that is
|
||||
'behind' it, the server will disconnect the lower class one and
|
||||
schedule a 'new' connection for the higher class server.
|
||||
|
||||
10. Leaf Connections.
|
||||
|
||||
To stop servers which should only act as leaves from hubs becoming
|
||||
hubs accidently, the L line was introduced so that hubs can be aware
|
||||
of which servers should and shouldnt be treated as leaves. A leaf
|
||||
server is supposed to remain a node for the entirity of its life
|
||||
whilst connected to the IRC server network. It is quite easy, however
|
||||
for a leaf server to be incorrectly setup and create problems by
|
||||
becoming a node of 2 or more servers, ending its life as a leaf. The
|
||||
L line enables the administrator of an IRC 'Hub server' to 'stop' a
|
||||
server which is meant to act as a leaf trying to make itself a hub.
|
||||
If, for example, the leaf server connects to another server which doesnt
|
||||
have an L-line for it, the one which does will drop the connection, once
|
||||
again making the server a leaf.
|
||||
|
||||
L:<SERVER MASK>:*:<SERVER NAME>:<MAX DEPTH>
|
||||
Field: 1 2 3 4 5
|
||||
|
||||
Field 2 is a mask of which servers the leaf-like attributes are used on
|
||||
when the server receives SERVER messages. The wildcards * and ? may be
|
||||
used within this field for matching purposes. If this field is empty,
|
||||
it acts the same as if it were a single * (ie matches everything).
|
||||
|
||||
Field 4 is the the server connectted to you that for which you want to
|
||||
enforce leaf-like attributes upon.
|
||||
|
||||
Field 5 is the maximum depth allowed on that leaf and if not specified,
|
||||
a value of 1 is assumed. The depth is checked each time a SERVER message
|
||||
is received by the server, the hops to the server being the field checked
|
||||
against this max depth and if greater, the connection to the server that
|
||||
made its leaf too deep has its connection dropped.
|
||||
For the L-line to come into effect, both fields, 2 and 4, must match up
|
||||
with the new server being introduced and the server which is responsible
|
||||
for introducing this new server.
|
||||
|
||||
11. Service Connections (Not yet implemented)
|
||||
|
||||
Introduction.
|
||||
The Service is a special kind of IRC client. It does not have the full
|
||||
abilities of a normal user but can behave in a more active manner than
|
||||
a normal client. Services as they stand now are not fully implemented.
|
||||
The following line can be added to your ircd.conf file to enable a
|
||||
service:
|
||||
|
||||
S:<TARGET Host Mask>:<password>:<service_name>
|
||||
Field: 1 2 3 4
|
||||
|
||||
Explanation:
|
||||
|
||||
Field 2:
|
||||
The host mask should be set to match the hosts(s) from which the
|
||||
service will be connecting from. This may be either an IP# or full
|
||||
name (prefered).
|
||||
|
||||
Field 3:
|
||||
This is the password which must be passed in the SERVICE command.
|
||||
|
||||
Field 4:
|
||||
The 'service name' is only used for the purpose of finding the
|
||||
right S-line from the ircd.conf file for password matching. The
|
||||
actual service name used is that set by NICK commands prior to
|
||||
SERVICE being sent.
|
||||
|
||||
To connect a service to your server, you must first create an S-line
|
||||
entry in your ircd.conf file and get your server to read this in (ie
|
||||
rehash or reboot). Once your server has updated itself, you can then
|
||||
attempt to register your connection as a service.
|
||||
Registering as a service is similar to registering as a normal user
|
||||
except that you must send NICK first and then SERVICE. The service
|
||||
command should look something like this:
|
||||
|
||||
SERVICE secretpassword referencename :Service information
|
||||
|
||||
A successfull registering of a service at the server will result in
|
||||
a RPL_YOURESERVICE (383) being sent back to you. Any other reply as
|
||||
a result of sending service indicates an error has occured.
|
||||
|
||||
A service is not a very useful sort of client, it cannot join channels
|
||||
or issue certain commands although most are available to it. Services,
|
||||
however, are not affected by flood control. It is therefore wise to
|
||||
oversee the use of S-lines with some care.
|
||||
|
||||
12. Port Connections
|
||||
|
||||
Introduction.
|
||||
The port line adds flexibility to the server's ability to accept
|
||||
connections. By use of this line in the ircd.conf file, it is easy
|
||||
to setup both Unix Domain ports for the server to accept connections
|
||||
on as well as extra internet ports.
|
||||
|
||||
P:<Internet IP# Mask>:<*>:<*>:<PORT>
|
||||
Field: 1 2 3 4 5
|
||||
|
||||
or
|
||||
|
||||
P:<Directory>:<*>:<*>:<PORT>
|
||||
Field: 1 2 3 4 5
|
||||
|
||||
Explanation
|
||||
Internet Ports
|
||||
Field 1
|
||||
The internet IP mask defines where connections may come from and
|
||||
be accepted. The IP mask uses either *'s or 0's as wildcards. The
|
||||
following two lines are the same:
|
||||
|
||||
P:128.2.*:::6664
|
||||
P:128.2.0.0:::6664
|
||||
|
||||
The incoming isnt matched against the mask, rather the ip# string
|
||||
is decoded and compared segment by segment. Thus
|
||||
P:128.2*.1.2:::6664
|
||||
will not match 128.20.1.2.
|
||||
|
||||
Field 5
|
||||
The port number field tells the server which port number it should
|
||||
listen on for incoming connections.
|
||||
|
||||
Unix Socket Ports.
|
||||
Field 1
|
||||
The path set in field 1 should be the directory name in which to
|
||||
create the unix socket for later listening to. The server will
|
||||
attempt to create the directory before creating the unix socket.
|
||||
|
||||
Field 5
|
||||
The port field when used in combination with a pathname in a P-line
|
||||
is the filename created in the directory set in Field 1.
|
||||
|
||||
Example:
|
||||
P:/tmp/.ircd:::6667
|
||||
|
||||
Creates a unix socket in the /tmp/.ircd directory called "6667".
|
||||
The unix socket (file) must be a numerical.
|
||||
|
||||
13. Hub Connections
|
||||
|
||||
In direct contrast to L-lines, the server also implements H-lines to
|
||||
determine which servers may act as a hub and what they may 'hub for'.
|
||||
If a server is only going to supply its own name (ie act as a solitary
|
||||
leaf) then no H-line is required for, else a H-line must be added as
|
||||
follows:
|
||||
|
||||
H:<SERVER MASK>:*:<SERVER NAME>
|
||||
Field: 1 2 3 4
|
||||
|
||||
Explanation:
|
||||
Field 2
|
||||
All servers that are allowed via this H-line must match the mask
|
||||
given in this field.
|
||||
|
||||
Field 4
|
||||
This field is used to match exactly against a server name, wildcards
|
||||
being treated as literal characters.
|
||||
|
||||
Examples:
|
||||
|
||||
H:*.edu:*:*.bu.edu
|
||||
|
||||
Allows a server named "*.bu.edu" to introduce only servers that
|
||||
match the "*.edu" name mask.
|
||||
|
||||
H:*:*:eff.org
|
||||
|
||||
Allow "eff.org" to introduce (and act as a hub for) any server.
|
||||
|
||||
Note: It is possible to have and use multiple H-lines (or L-lines) for
|
||||
the one server. eg:
|
||||
|
||||
H:*.edu:*:*.bu.edu
|
||||
H:*.au:*:*.bu.edu
|
||||
|
||||
is allowed as is
|
||||
|
||||
L:*.edu:*:*.au
|
||||
L:*.com:*:*.au
|
||||
|
||||
|
||||
Appendix A: Difference between IP addresses and hostnames
|
||||
|
||||
|
||||
There are 2 different types of INTERNET addresses, NAME addresses and
|
||||
NUMERIC addresses. NAME addresses look like ENGLISH words (and indeed
|
||||
they are ENGLISH words that refer to a given host). A NAME address looks
|
||||
like "tolsun.oulu.fi" - and that particular address refers to the machine
|
||||
named TOLSUN in Finland. It is a UNIQUE address because no other machine
|
||||
in the world has its NAME address the same as "tolsun.oulu.fi". Anytime
|
||||
you say "telnet tolsun.oulu.fi" - you would always connect to TOLSUN in
|
||||
Finland. NUMERIC addresses refer to those addresses that are made up of
|
||||
NUMBERS for example "128.214.5.6" is the NUMERIC address for TOLSUN. This
|
||||
address is also UNIQUE in that no other machine in the world will be use
|
||||
those NUMERIC numbers. The NUMERIC address is usually more reliable than
|
||||
the NAME address because not all sites can recognize and translate the
|
||||
NAME address into it's numeric counterpart. NUMERIC always seems to work
|
||||
best, but use a NAME address when you can because it is easier to tell
|
||||
what host you are connected to.
|
||||
|
||||
|
||||
Every Unix machine has a file called "/etc/hosts" on it. This file
|
||||
contains NAME and NUMERIC addresses. When you supply IRC with a NAME
|
||||
address it will at first try to find it in /etc/hosts, and then (if it's
|
||||
really smart), use the local Domain Name Server (DNS) to find the NUMERIC
|
||||
address for the host you want to connect to. Thus if you plan to use NAME
|
||||
addresses keep in mind that on SOME sites the entry for the TARGET machine
|
||||
must be found in /etc/hosts or the NAME address will fail. A typical
|
||||
entry in /etc/hosts looks like this:
|
||||
|
||||
130.253.1.15 orion.cair.du.edu orion.du.edu orion # BSD 4.3
|
||||
|
||||
This particular example is the Host ORION at the University of Denver.
|
||||
Notice that on the far left is the NUMERIC Address for orion. The
|
||||
next few ENGLISH words are the NAME addresses that can be used for orion,
|
||||
"orion.cair.du.edu", "orion.du.edu", "orion". ALL of these NAME addresses
|
||||
will return the NUMERIC address "130.253.1.15" which IRC will use to
|
||||
connect to the TARGET UNIX. (when I say TARGET UNIX I am refering to the
|
||||
UNIX you want to connect to for IRC). Any futher questions about
|
||||
/etc/hosts should be directed to "man hosts".
|
||||
|
||||
|
||||
Appendix B: Enabling Summon Messages
|
||||
|
||||
+-----------------------------------------------------------------------+
|
||||
| E N A B L I N G / S U M M O N M E S S A G E S |
|
||||
+-----------------------------------------------------------------------+
|
||||
|
||||
*NOTE* You must have ROOT or special access to the GROUP tty ('/dev')
|
||||
to do this. If you want to allow users around the world to summon
|
||||
users at your site to irc, then you should make sure that summon works.
|
||||
|
||||
The "IRCD" program needs access to the GROUP of '/dev'. This
|
||||
directory is where user TTY's are stored (as UNIX treats each Terminal
|
||||
as a FILE!) IRCD needs GROUP ACCESS to /dev so that users can be
|
||||
SUMMONED to the program by others users that are *in* the program.
|
||||
This allows people from other Universities around the world to SUMMON
|
||||
your users to IRC so that they can chat with them. Berkeley, SUN, HP-UX
|
||||
and most of the newer versions of UNIX check to see if a USER is
|
||||
accepting MESSAGES via the GROUP access rights on their TTY listing
|
||||
in the /dev directory. For example an entry in '/dev' looks like this:
|
||||
|
||||
(Unix Path on BSD 4.3 UNIX is: /dev/ttyp0)
|
||||
|
||||
crw------- 1 jtrim 20, 0 Apr 29 10:35 ttyp0
|
||||
|
||||
You will note that 'jtrim' OWNS this terminal and can READ/WRITE to this
|
||||
terminal as well (which makes sense because I am ENTERING DATA and
|
||||
RECEIVEING DATA back from the UNIX). I logged into this particular
|
||||
UNIX on "April 29th" at "10:35am" and my TTY is "ttyp0". But further
|
||||
of *note* is that I do not have my MESSAGES ON! (mesg n) -- This is
|
||||
how my terminal would look with MESSAGES ON (mesg y):
|
||||
|
||||
crw--w---- 1 jtrim 20, 0 Apr 29 10:35 ttyp0
|
||||
|
||||
With my MESSAGES ON (mesg y) I can receive TALK(1) requests, use the
|
||||
UNIX WRITE(1) command and other commands that allow users to talk
|
||||
to one another. In IRC this would also allow me to get IRC /SUMMON
|
||||
messages. To set up the "IRCD" program to work with /SUMMON type
|
||||
the following: (using ROOT or an account that has access to '/dev').
|
||||
|
||||
% chgrp tty ircd
|
||||
% chmod 6111 ircd
|
||||
|
||||
The above commands read: "Give IRCD access to GROUP tty (which is /dev)
|
||||
and then when ANYONE runs the IRCD allow SETUID and SETGID priviliges
|
||||
so that they can use the /SUMMON command.
|
||||
@@ -1,382 +0,0 @@
|
||||
/************************************************************************
|
||||
* IRC - Internet Relay Chat, doc/MANUAL
|
||||
* Copyright (C) 1990, Karl Kleinpaste
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 1, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
Date: 04 Apr 1989
|
||||
Author: Karl Kleinpaste
|
||||
karl@cis.ohio-state.edu
|
||||
|
||||
Last modification: 15 May 1992
|
||||
by Mauri Haikola
|
||||
mjh@stekt.oulu.fi
|
||||
|
||||
|
||||
INTERNET RELAY CHAT
|
||||
a real-time conversational system
|
||||
|
||||
|
||||
* 1: Irc - replacement for talk(1)
|
||||
|
||||
Irc is a functional replacement for and improvement to talk(1). Talk
|
||||
is an old, primitive, atrocious, minimalist sort of keyboard/screen
|
||||
conversation tool, using a grotesque, machine-dependent protocol.
|
||||
Irc does everything talk does, but with a better protocol, allowing
|
||||
more than 2 users to talk at once, with access across the aggregate
|
||||
Internet, and providing a whole raft of other useful features.
|
||||
|
||||
* 2: Entering Internet Relay Chat
|
||||
|
||||
There are two ways to enter Internet Relay Chat. If you are using the
|
||||
emacs lisp client, you need to load the client into your Emacs session
|
||||
and then M-x irc. If you are using the C client (easier for beginners)
|
||||
then type (usually) irc. If you wish to be known by a nickname which
|
||||
is not one's login name, type `irc chosen-nickname' instead.
|
||||
|
||||
* 3: How much can be seen from here
|
||||
|
||||
The universe - seriously.
|
||||
|
||||
This is most formally called Internet Relay Chat. Server hosts are
|
||||
connected via a tree structure. The various servers relay control and
|
||||
message data among themselves to advertise the existence of other
|
||||
servers, users, and the channels and other resources being occupied by
|
||||
those users.
|
||||
|
||||
* 4: Structure
|
||||
|
||||
There is quite a lot of structure to the operation of irc, as
|
||||
compared to crufty old talk(1). Since so little could be done with
|
||||
talk(1), it needed little structure. But to keep track of people
|
||||
spread literally around the world (the system was written by Jarkko
|
||||
Oikarinen of Finland, usually seen on the system as `Wiz'), the
|
||||
structure is useful so that one can speak to exactly those people with
|
||||
whom one wishes to speak.
|
||||
|
||||
** 4.1: Nicknames
|
||||
|
||||
All users of irc are known to the system by a `nickname.' By
|
||||
default, one's nickname is one's login name. Nickname clashes are not
|
||||
allowed; this is enforced by the servers. If one's intended nickname
|
||||
clashes with someone else as one enters chat, one will not be able to
|
||||
complete entry to irc until one changes one's nickname to something
|
||||
else.
|
||||
|
||||
** 4.2: Presence on a channel
|
||||
|
||||
Fundamental to the operation of irc is the concept of a channel. All
|
||||
users are `on a channel' while inside irc. One enters the `null
|
||||
channel' first. One cannot send any messages while not in any
|
||||
chatting channel unless one has set up a private conversation in some
|
||||
way. The number of channels is essentially unlimited - whatever will
|
||||
fit in a string of some ungodly length, that must start with a # sign.
|
||||
|
||||
** 4.3: Main modes of channels
|
||||
|
||||
Public
|
||||
|
||||
This is the default mode for a channel. When one is on a public
|
||||
channel, one can be seen by all other users (if one's own user mode
|
||||
permits this). Anyone can notice users on a public channel and join
|
||||
such a channel's conversation.
|
||||
|
||||
Private
|
||||
|
||||
This means that, although anyone can see that one is using chat, no
|
||||
one can tell what channel one is using unless one is already on that
|
||||
channel with oneself. Since the number of potential channels is in
|
||||
the billions, this is quite some security - all one gives away is the
|
||||
acknowledgement that one is using chat.
|
||||
|
||||
Secret
|
||||
|
||||
While one is on a secret channel, no one who is not on one's channel
|
||||
with oneself can even see that one is there. One's name does not show
|
||||
up in a list of active users. The only indication of one's presence
|
||||
is that, when entering chat, all new users are told that there are "N
|
||||
users on P servers." If one checks on all users and finds less than N
|
||||
of them, one knows that others are hiding on secret channels. But a
|
||||
secret channel user still cannot be found except by brute-force
|
||||
checking through all channels, a hopeless proposition in the face of
|
||||
the huge number of possible channel names. Security through obscurity
|
||||
finally means something.
|
||||
|
||||
Changing the mode
|
||||
|
||||
The mode of a channel (private, secret, invite-only, moderated,
|
||||
topic-limited, person-number-limited, no-messages-to-channel, ban
|
||||
someone from channel) is set by the channel operator, who is the
|
||||
first person to join a channel, or someone who has had channel
|
||||
operatorship bestowed on them by another channel operator.
|
||||
|
||||
|
||||
*** 4.4: Conversations not using channels
|
||||
|
||||
It is possible to conduct conversations with others without using the
|
||||
formalized channel structure. Doing so requires that two people set
|
||||
themselves up for private conversation using special commands; see
|
||||
User Commands below.
|
||||
|
||||
* 5: Screen/keyboard structure
|
||||
|
||||
Chat is a full-screen utility. It takes over the screen, with the
|
||||
bulk of activity happening in the top N-2 lines, a modeline (vaguely
|
||||
emacs-like) on the next to last line, and one's input being entered on
|
||||
the last line. A very good version of client is the IRC-II client,
|
||||
avaliable on anonymous ftp from various sites around the world.
|
||||
|
||||
** 5.1: Keyboard input
|
||||
|
||||
When typing commands at irc, one has a minimalist line-editing
|
||||
facility in an emacs style. That is, ^A moves the cursor to the
|
||||
beginning of the line, ^E goes to the end, ^D deletes the character
|
||||
under the cursor, ^K kills from the cursor to the end, and so on.
|
||||
|
||||
** 5.2: Screen activity
|
||||
|
||||
Almost everything happens in the upper bulk of the screen. This
|
||||
includes both messages from other users, as well as the output of the
|
||||
control commands.
|
||||
|
||||
Normal messages from other users appear with the originating nickname
|
||||
in <angle brackets>. Private messages arrive with the originating
|
||||
nickname in *asterisks*. Messages which one sends to everyone appear
|
||||
with a preceding "> " whereas messages which one sends privately to
|
||||
one other user appear with "-> *nickname*."
|
||||
|
||||
Other output (e.g., /who commands, invitations from other users to
|
||||
join channels, and so forth) appears interspersed with other activity
|
||||
on the screen.
|
||||
|
||||
* 6: Command structure
|
||||
|
||||
Ordinary text typed at irc is sent as one's messages to everyone else
|
||||
on the same channel, modulo personal choices for private messages and
|
||||
the like. Commands to irc itself all begin with a command character,
|
||||
which is initially `/' but may be changed to any other character
|
||||
desired.
|
||||
|
||||
Commands may in general be abbreviated to a unique prefix.
|
||||
|
||||
** 6.1: Leaving irc
|
||||
|
||||
The way to get out of irc is to enter the /signoff command. "/si" is
|
||||
sufficient. Also equivalent are "/exit," "/bye," and "/quit." A
|
||||
signoff command may include a comment which will be seen by everyone
|
||||
on the current channel of the person who left.
|
||||
|
||||
** 6.2: Getting help
|
||||
|
||||
Type "/help." Follow the instructions.
|
||||
|
||||
** 6.3: User commands
|
||||
|
||||
The most important commands supported by irc are:
|
||||
|
||||
help signoff who whois
|
||||
list topic join channel
|
||||
links msg invite ignore
|
||||
users stats nick away
|
||||
info clear query cmdch
|
||||
date mode
|
||||
|
||||
*** 6.3.1: help
|
||||
|
||||
Information on how to use the rest of the system is available via
|
||||
/help. The modeline says so as well.
|
||||
|
||||
*** 6.3.2: signoff {comment}
|
||||
|
||||
/signoff exits chat. Optional comment may be included; see above.
|
||||
|
||||
*** 6.3.3: who
|
||||
|
||||
/who returns information on who is using chat. /who without arguments
|
||||
prints info on all users that can be seen. Users of public channels
|
||||
show up with their channel identified. Users of private channels
|
||||
appear, but they are specified as being on a private, unspecified
|
||||
channel. Users of secret channels and users whose user mode is +i
|
||||
(invisible) do not appear at all.
|
||||
|
||||
Giving a channel name as an argument to /who returns only those users of the
|
||||
specified channel. This still doesn't show users of secret channel or
|
||||
invisible users one is actually on the same channel with them. Users
|
||||
of private channels are shown, if an exact channel name is given.
|
||||
|
||||
*** 6.3.4: whois
|
||||
|
||||
This returns information about individual users. Say "/whois
|
||||
nickname" to get information on the login name and host from which the
|
||||
nicknamed user comes.
|
||||
|
||||
*** 6.3.5: topic
|
||||
|
||||
Channels can be given off-the-cuff "topics." Saying "/topic some
|
||||
string of text" will associate that topic with the current channel.
|
||||
|
||||
*** 6.3.6: list
|
||||
|
||||
/list will give lists of active channels, the number of users of each,
|
||||
and the topics therewith associated. Again, secret channels do not
|
||||
appear and private channels only appear as Prv.
|
||||
|
||||
*** 6.3.7: join & channel
|
||||
|
||||
/join or /channel are the means to enter a channel. Give the channel
|
||||
name as an argument. If this is a secret or hidden channel, /who
|
||||
commands will show oneself and any other users of one's channel.
|
||||
|
||||
One's arrival on a channel is announced to the rest of the users
|
||||
already on that channel. Silent, anonymous "lurking" is not
|
||||
supported.
|
||||
|
||||
*** 6.3.8: links
|
||||
|
||||
/links lists the currently-active set of chat servers. Beware: this
|
||||
list can be quite long, and will undoubtedly get longer as chat gains
|
||||
wider use. As of 15 May, 1992, about 130 servers is typical.
|
||||
|
||||
*** 6.3.9: msg
|
||||
|
||||
A single message can be sent privately to a certain user with /msg.
|
||||
Type /msg nickname and the text to be sent. It will be sent privately
|
||||
to the indicated nickname.
|
||||
|
||||
*** 6.3.10: invite
|
||||
|
||||
If there is a user online to whom one wishes to speak, one may invite
|
||||
that user to join oneself on a certain channel. One types "/invite
|
||||
nickname" with an optional channel number. The receiving user gets a
|
||||
one-line message indicating the sender and the invitation. The
|
||||
receiving user is free to ignore the invitation, of course.
|
||||
|
||||
*** 6.3.11: ignore
|
||||
|
||||
If one wants to ignore messages sent by some other user or users, it
|
||||
may be done with /ignore command. One can ignore someone by their
|
||||
nickname, or by their user@host data. Wildcards may be used.
|
||||
|
||||
*** 6.3.12: users
|
||||
|
||||
/users will return a list of the users logged into one's system. With
|
||||
an optional hostname identifying a chat server host, the users logged
|
||||
into that system will be listed.
|
||||
|
||||
*** 6.3.13: stats
|
||||
|
||||
This command returns counts of various protocol operations of one's
|
||||
chat server. It is neither particularly useful nor interesting to
|
||||
users other than operators.
|
||||
|
||||
*** 6.3.14: nick
|
||||
|
||||
One can change nicknames by issuing "/nick new-nickname." All users
|
||||
on one's channel will be advised of the change. NOTE: If one enters
|
||||
chat with a nickname clash (e.g., one's login name is the same as
|
||||
someone else's, and the other user got there first), the system will
|
||||
not let one enter until one issues a /nick command with a unique
|
||||
nickname.
|
||||
|
||||
*** 6.3.15: away
|
||||
|
||||
Sometimes, one wishes to remain connected to the chat system, but one
|
||||
must be elsewhere for a while. One can issue an /away command with
|
||||
arbitrary text as argument, which will mark oneself as being away. If
|
||||
someone sends an away'd user a private message (via /msg or in a
|
||||
private session set up via /query; see below), the sender will get a
|
||||
message back from the server indicating the away-ness and the message
|
||||
which was set.
|
||||
|
||||
*** 6.3.16: info
|
||||
|
||||
/info returns information regarding the author and copyright of the
|
||||
chat system.
|
||||
|
||||
*** 6.3.17: clear
|
||||
|
||||
At times, one wishes that one's screen weren't so cluttered. /clear
|
||||
makes it so.
|
||||
|
||||
*** 6.3.18: query
|
||||
|
||||
This command is used to set up private communications `outside' the
|
||||
normal channel system.
|
||||
|
||||
When one enters "/query nickname," the indicated nickname is set up as
|
||||
the sole recipient of anything which one types thereafter. Thus, if
|
||||
user A executes "/query B" and user B executes "/query A," they have
|
||||
set up a private communication between themselves. Significantly, it
|
||||
remains possible for them to stay on their respective channels, which
|
||||
need not be the same, and listen to whatever conversation is going on
|
||||
around them as well, though they cannot respond to that ambient
|
||||
conversation without leaving the private conversation they have set up.
|
||||
|
||||
One leaves this private mode by issuing /query without arguments.
|
||||
|
||||
*** 6.3.19: cmdch
|
||||
|
||||
The `/' character may not be best for some people to use as their
|
||||
command character. It can be changed with "/cmdch <character>."
|
||||
|
||||
*** 6.3.20: mode
|
||||
|
||||
This command can be used for altering the various modes of a channel
|
||||
(see the explanation of channel modes above). /mode command can only
|
||||
be issued by channel operators.
|
||||
|
||||
** 6.4: Operator commands
|
||||
|
||||
The chat system administrators on each host have additional
|
||||
responsibilities and power over the configuration and operation of the
|
||||
servers. The commands to do so are delineated below.
|
||||
|
||||
*** 6.4.1: oper
|
||||
|
||||
Users who have the potential for operator privileges initially invoke
|
||||
those privileges by "/oper nickname password," where nickname is the
|
||||
nickname under which operation is intended, and password is the
|
||||
password known to the chat system for that nickname.
|
||||
|
||||
*** 6.4.2: kill
|
||||
|
||||
Obnoxious users had best beware the operator who's fast on the /kill
|
||||
command. "/kill nickname" blows any given nickname completely out of
|
||||
the chat system.
|
||||
|
||||
Obnoxiousness is not to be tolerated. But operators should not use
|
||||
/kill lightly.
|
||||
|
||||
*** 6.4.3: quote
|
||||
|
||||
Raw access to the underlying server protocol is possible through the
|
||||
user of the /quote command. "/quote any text at all" is used to send
|
||||
direct, unmodified commands to the servers. This has a wide variety
|
||||
of uses, such as deliberately killing a local or remote chat daemon,
|
||||
invoking operator privileges for otherwise-operator-priv-forbidden
|
||||
users, and related tasks. It is, again, a very powerful operation,
|
||||
and not to be used lightly.
|
||||
|
||||
* 7: Questions, problems, troubles?
|
||||
|
||||
If you have problems, please contact Christopher Davis (ckd@eff.org) or
|
||||
Helen Rose (hrose@eff.org). Known as "ckd" and "Trillian" on irc,
|
||||
respectively. You can also ask for help on some of the operator
|
||||
channels on irc, for example #twilight_zone and #eu-opers. They will
|
||||
be able to assist you in whatever problems you are having with IRC.
|
||||
|
||||
@@ -1,241 +0,0 @@
|
||||
Internet Relay Chat Operator Etiquette Guide (May, 1992)
|
||||
[ $Id$ ]
|
||||
|
||||
Welcome! You've either been selected to be an IRC Operator or you have set
|
||||
up your server and thus have taken on the dual task of IRC Server
|
||||
Administrator and IRC Operator. Your future days will be filled with hours
|
||||
of fun chatting on IRC, and then wondering why everyone you talked to went
|
||||
away, because the links had apparently broken.
|
||||
|
||||
Linking:
|
||||
========
|
||||
|
||||
You will be assigned links from the IRC Routing Coordinators. Please
|
||||
use these links and these links ONLY. The links have been designed to
|
||||
maximize efficiency and make delays in chatting minimal. You will
|
||||
usually be given two links, one to each regional backbone site.
|
||||
Connect to the primary site first and then to the secondary site. You
|
||||
should not need to connect to any other sites. You will be informed if
|
||||
this policy changes.
|
||||
|
||||
Kills
|
||||
=====
|
||||
|
||||
/kill is a special operator command. You should use it with
|
||||
care, and only if absolutely needed. The format is as follows:
|
||||
/kill NICKNAME comment. Comment can be a phrase of almost any length
|
||||
(within reason) and should be used for specifying the reason of the kill.
|
||||
Example: /kill Trillian She's a Ghost
|
||||
IRC Ghosts are created after a net split has occured and the net has yet to
|
||||
relink.
|
||||
|
||||
/wallops PHRASE This is used to talk to those users who have their
|
||||
user mode set to +w. /wallops used to be a way for operators to talk
|
||||
about important matters in linking etc., but it has little use
|
||||
nowadays.
|
||||
|
||||
/TRACE command /TRACE is useful to know what servers are connected to
|
||||
what. Sometimes /trace can be confusing, especially if you are using
|
||||
it for the first time. Here is an example of a trace from
|
||||
stekt1.oulu.fi to cdc835.cdc.polimi.it.
|
||||
|
||||
/TRACE cdc835.cdc.polimi.it
|
||||
|
||||
*** Link stekt1.oulu.fi<2.7.2> ==> cdc835.cdc.polimi.it
|
||||
*** Link rieska.oulu.fi<2.7.1>e ==> cdc835.cdc.polimi.it
|
||||
*** Link nic.funet.fi<2.7.1>e ==> cdc835.cdc.polimi.it
|
||||
*** Link ircserver.et.tudelft.nl<2.7.1>e ==> cdc835.cdc.polimi.it
|
||||
*** Link vesuv.unisg.ch<2.7.1>e ==> cdc835.cdc.polimi.it
|
||||
*** Link apollo.di.unipi.it<2.7.1>e ==> cdc835.cdc.polimi.it
|
||||
*** Oper Class[10] ==> Allanon[cdc835.cdc.polimi.it]
|
||||
*** User Class[11] ==> Lupandy[plus2.usr.dsi.unimi.it]
|
||||
*** Serv Class[3] ==> apollo.di.unipi.it[131.114.4.36] 132S 445C
|
||||
*** User Class[11] ==> Punk[pluto.sm.dsi.unimi.it]
|
||||
*** User Class[11] ==> TheEdge[pluto.sm.dsi.unimi.it]
|
||||
*** User Class[10] ==> Mork[cdc835.cdc.polimi.it]
|
||||
*** User Class[11] ==> Lollo[c700-2.sm.dsi.unimi.it]
|
||||
*** User Class[11] ==> Attila[hp2.sm.dsi.unimi.it]
|
||||
*** Class 0 Entries linked 1
|
||||
*** Class 11 Entries linked 5
|
||||
*** Class 10 Entries linked 2
|
||||
*** Class 3 Entries linked 1
|
||||
|
||||
From this output you can see that the route goes first to
|
||||
rieska.oulu.fi (running version 2.7.1e), then nic.funet.fi,
|
||||
ircserver.et.tudelft.nl, vesuv.unisg.ch, and apollo.di.unipi.it, after
|
||||
which cdc835 is the next server. Then we see the connections on
|
||||
cdc835: One operator (Allanon) and 6 users are on line. The class of
|
||||
each connection is given. There is only one server connected to cdc835
|
||||
at the moment, and that server is apollo.di.unipi.it (cdc835 is said
|
||||
to be a "leaf" server at the moment). The numbers 132S 445C in the end
|
||||
of line tell us, that there are 132 servers and 445 clients connected
|
||||
to the servers from apollo onwards. Finally we see a grand total of
|
||||
connections in each connection class.
|
||||
|
||||
|
||||
/SQUIT server {comment}
|
||||
/squit isolates a specified server from the next closest server, when
|
||||
you look at it along the trace path starting from your server.
|
||||
This is usually used in conjunction with CONNECT (explained later) to
|
||||
reroute traffic. This will be described in detail in the section
|
||||
"routing", preceding CONNECT.
|
||||
|
||||
Usage (and examples):
|
||||
|
||||
/squit E
|
||||
|
||||
If the network looks like this initially (and you are on server A)
|
||||
|
||||
|
||||
A <---> B <---> C <---> D
|
||||
^
|
||||
|
|
||||
v
|
||||
G <---> E <---> F <---> ... (rest of the net)
|
||||
|
||||
|
||||
Then after issuing the previous /squit the network would look like this:
|
||||
|
||||
A <---> B <---> C <---> D
|
||||
|
||||
|
||||
G <---> E <---> F <---> ...
|
||||
|
||||
|
||||
/squit E {comment}
|
||||
|
||||
It usually helps to give a reason why you are sending a
|
||||
SQUIT for a server. This can be accomplished by sending
|
||||
the command "/squit server This link is making the US route
|
||||
through Finland". The SQUIT will then be sent out, and the
|
||||
server sending the squit will WALLOP sending the comment
|
||||
so all operators can see it.
|
||||
|
||||
/CONNECT server {portnum server2}
|
||||
/connect is used to establish a link between two servers. These
|
||||
connections must be authorized by each server's ircd.conf file, but
|
||||
any operator can issue a CONNECT between authorized servers. This
|
||||
command is most often used in conjunction with SQUIT to reroute
|
||||
traffic.
|
||||
If only one argument is given, this command causes the server you
|
||||
are on to attempt to connect to the server specified. For example,
|
||||
"/connect B" (in the previous example) would cause your server (A) to
|
||||
connect to B.
|
||||
Suppose you wanted to reconnect server F to server E? You cannot
|
||||
contact server F since it is no longer part of your network. However,
|
||||
you can tell server E to connect to it. A remote CONNECT can be issued
|
||||
to server E.
|
||||
|
||||
Examples (assume you are on server A):
|
||||
|
||||
/connect B
|
||||
|
||||
If the network initially looks like this:
|
||||
|
||||
A B <---> ... (rest of network)
|
||||
|
||||
Then afterwards (if the connection succeeds) the network will look
|
||||
like this:
|
||||
|
||||
A <---> B <---> ...
|
||||
|
||||
|
||||
In the example where you wanted to reconnect server E to F, the
|
||||
following syntax would be appropriate (note: we are assuming that
|
||||
F's irc socket port is 6667, which is the default)
|
||||
|
||||
/connect F 6667 E
|
||||
|
||||
If the network initially looks like this:
|
||||
|
||||
A <---> B <---> C <---> D
|
||||
^
|
||||
|
|
||||
v
|
||||
G <---> E F <---> ...
|
||||
|
||||
Then after your CONNECT request the network topology will look like this:
|
||||
|
||||
A <---> B <---> C <---> D
|
||||
^
|
||||
|
|
||||
v
|
||||
G <---> E <---> F <---> ...
|
||||
|
||||
Be careful when connecting servers that you know which command to
|
||||
use! If you simply issued "/connect F" from your server, the
|
||||
network would look like this:
|
||||
|
||||
|
||||
... <---> F <---> A <---> B <---> C <---> D
|
||||
^
|
||||
|
|
||||
v
|
||||
G <---> E
|
||||
|
||||
which for various reasons (discussed below) might be very
|
||||
undesirable.
|
||||
|
||||
Routing
|
||||
=======
|
||||
|
||||
When and how should you do rerouting? This depends on where your
|
||||
server is topologically located and whether you route traffic. If you
|
||||
are a leaf node (i.e. only connect to one server at a time) then
|
||||
chances are you won't need to do any routing at all. Your ircd.conf
|
||||
file should be written to connect to the best possible servers first
|
||||
before trying alternates. At the most, you may decide to squit an
|
||||
alternate server and connect to your primary if/when it goes back up.
|
||||
This only involves local squits, however.
|
||||
|
||||
If you are operating a backbone site, you may find yourself
|
||||
rerouting things quite often. If the servers badger.ugcs.caltech.edu
|
||||
(Pasadena, CA), irc.mit.edu (Boston, MA), minnie.cc.utexas.edu
|
||||
(Austin, TX) and ucsu.colorado.edu (Boulder, CO) were routing traffic
|
||||
in the following way:
|
||||
|
||||
... <---> minnie <---> badger <---> bucsd <---> ucsu <---> ...
|
||||
|
||||
It would make sense to either squit ucsu and reconnect it to minnie,
|
||||
or disconnect minnie from badger and connect to ucsu, because
|
||||
topologically (and geographically) ucsu and minnie are rather close.
|
||||
There are occasions when US traffic for some reasons winds up being
|
||||
routed through Australia. This is another case where traffic should
|
||||
definitely be rerouted. However, there are sometimes occasions when
|
||||
routing is going through "backdoor" methods. If you see something
|
||||
totally outrageous (like the east coast and the west coast being
|
||||
connected by eff.org) please ask for example on channel #twilight_zone
|
||||
before you send any squits, because chances are, it's like that for a
|
||||
reason.
|
||||
|
||||
Of course, any operator can remotely squit or connect servers, so
|
||||
if you see a problem and you're sure you know how to fix it, it's a
|
||||
good idea to do so. If the operator of a server which is is being
|
||||
routed poorly is online, it's probably best to contact him/her first,
|
||||
though.
|
||||
|
||||
Chances are that hub operators will be more familiar with the
|
||||
general topology of the network and which servers connect to which
|
||||
(which is why most of the manual routing is left to them), so if you
|
||||
have any problems, talk to the other operators on operator channels
|
||||
(#twilight_zone, #eu-opers etc.) That's what they are there for!
|
||||
Also, be aware that servers will notify all the operators online of
|
||||
remote SQUITs and CONNECTs via WALLOPS.
|
||||
|
||||
Please let us know if there should be any additions to this guide. Again,
|
||||
this is not MANDATORY, this is just a GUIDE. Please conduct yourself as
|
||||
an IRC Operator would...you are looked upon for assistance, both emotional
|
||||
and mental.
|
||||
|
||||
Helen Rose Christopher Davis Noah Friedman
|
||||
<hrose@cs.bu.edu> <ckd@cs.bu.edu> <friedman@ai.mit.edu>
|
||||
|
||||
January, 1991
|
||||
|
||||
|
||||
Updated by
|
||||
|
||||
Mauri Haikola
|
||||
<mjh@stekt.oulu.fi>
|
||||
|
||||
May, 1992
|
||||
@@ -0,0 +1,41 @@
|
||||
|
||||
Some minor rules about patches & modifications to UnrealIRCd
|
||||
|
||||
1. When making a change, always add a small description in Changes, in the
|
||||
BOTTOM
|
||||
|
||||
2. If new files are made, it must contain proper copyright headers,
|
||||
and a $Id$ somewhere.
|
||||
|
||||
3. /*
|
||||
* These kind of comments
|
||||
*/
|
||||
|
||||
NOT
|
||||
|
||||
// These kind of comments
|
||||
|
||||
4. if (something == 1)
|
||||
{
|
||||
moo; /* comment */
|
||||
/* This does what what what */
|
||||
cow(go(moo));
|
||||
}
|
||||
|
||||
NOT
|
||||
|
||||
if (something == 1) {
|
||||
}
|
||||
|
||||
5. Do not touch version.c.SH or version.h, unless you are a head coder
|
||||
if you need a credit in, contact us
|
||||
|
||||
6. Patches are submitted to coders@lists.unrealircd.org,
|
||||
using "cvs diff -u > patchname". A submision must contain description of
|
||||
what it does, etc.
|
||||
|
||||
7. Protocol changes must be discussed before making patches for it.
|
||||
|
||||
8. We do NOT rip people off. If we use other people's code, it MUST be
|
||||
properly credited.
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
* 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";
|
||||
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;
|
||||
};
|
||||
|
||||
/*
|
||||
* 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
|
||||
|
||||
@@ -1,82 +0,0 @@
|
||||
.\" $Id$
|
||||
.TH IRC 1 "7 October 1990"
|
||||
.SH NAME
|
||||
irc \- User Interface to Internet Relay Chat Protocol
|
||||
.SH SYNOPSIS
|
||||
\fBirc\fP [\fB-p\fP \fIportnum\fP] [\fB-c\fP \fIchannel\fP] [ \fInickname\fP [ \fIserver\fP ]]
|
||||
.SH DESCRIPTION
|
||||
.LP
|
||||
\fBIrc\fP is a user interface to the Internet Relay Chat, a CB-like
|
||||
interactive discussion environment. It is structured into \fIchannels\fP,
|
||||
which are public discussion forums, and also allows for private intercommunication.
|
||||
Each participant has a \fInickname\fP, which is the one specified in the command
|
||||
line or else his login name.
|
||||
.LP
|
||||
Once invoked, \fBirc\fP connects as a client to the specified server,
|
||||
\fIserver\fP or to the default one (see below). The screen splits into a dialogue
|
||||
window (the major part
|
||||
of the screen) and a command line, from which messages can be sent and
|
||||
commands given to control irc.
|
||||
.SH COMMAND SYNTAX
|
||||
The syntax of irc commands is of the form \fB/COMMAND\fP. The most notable
|
||||
ones are listed below. For an uptodate list, use the \fBHELP\fP command
|
||||
of \fBirc\fP. Case is ignored.
|
||||
.IP "\fB/ADMIN\fR [\fIserver\fP]"
|
||||
Prints administrative information about an IRC \fIserver\fP.
|
||||
.IP "\fB/AWAY\fP [\fImessage\fP]"
|
||||
Mark yourself as being away (with an automatic reply \fImessage\fP
|
||||
if specified)
|
||||
.IP "\fB/BYE\fR, \fB/EXIT\fR, \fB/QUIT\fR"
|
||||
Terminate the session
|
||||
.IP "\fB/CHANNEL\fR [\fIchannel\fP]"
|
||||
Join another \fIchannel\fP
|
||||
.IP "\fB/CLEAR\fR"
|
||||
Clear the screen
|
||||
.IP "\fB/HELP\fR [\fIcommand\fP]"
|
||||
Display a brief description of the \fIcommand\fP (or list all commands, if none
|
||||
specified).
|
||||
.IP "\fB/SUMMON\fR \fIuser\fP"
|
||||
Allows to summon a \fIuser\fP specified as a full Internet address, i.e.,
|
||||
\fIlogin@host.domain\fP, to an IRC dialogue session (in much the same
|
||||
way as the talk(1) command). It is usable ONLY if the irc daemon runs on
|
||||
the target machine (host.domain).
|
||||
.IP "\fB/TOPIC\fR \fItopic\fP"
|
||||
Sets the \fItopic\fP for the current channel
|
||||
.IP "\fB/WHO\fR [\fIchannel\fP|*]"
|
||||
Lists all users of IRC if no argument, of the specified \fIchannel\fP or of the
|
||||
current channel (*).
|
||||
.SH ARGUMENTS
|
||||
.IP "\fB-p\fP \fIportnum\fP"
|
||||
TCP/IP "port number. Default is 6667 and this option should seldom if ever"
|
||||
be used.
|
||||
.IP "\fB-c\fP \fIchannel\fP"
|
||||
\fIChannel\fP number to join upon beginning of the session. Default is no channel.
|
||||
.IP "\fInickname\fP"
|
||||
\fINickname\fP used in the session (can be changed with the \fB/NICK\fP command).
|
||||
Default is user login name.
|
||||
.IP "\fIserver\fP"
|
||||
\fIServer\fP to connect to. Default is specified in the irc system configuration
|
||||
file, and can be superseded with the environment variable IRCSERVER.
|
||||
.SH EXAMPLE
|
||||
.RS
|
||||
.nf
|
||||
tolmoon% \fBirc -p6667 Wizard tolsun\fP
|
||||
.fi
|
||||
.RE
|
||||
.LP
|
||||
connects you to irc server in host tolsun (port 6667) with nickname Wizard
|
||||
.SH COPYRIGHT
|
||||
Copyright (c) 1988 University of Oulu, Computing Center, Finland.
|
||||
.nf
|
||||
Copyright (c) 1988,1989,1990 Jarkko Oikarinen
|
||||
.nf
|
||||
All rights reserved.
|
||||
For full COPYRIGHT see LICENSE file with IRC package.
|
||||
.SH "SEE ALSO"
|
||||
ircd(8)
|
||||
.SH BUGS
|
||||
What bugs ?
|
||||
.SH AUTHOR
|
||||
Jarkko Oikarinen <jto@tolsun.oulu.fi>
|
||||
.nf
|
||||
Manual page updated by Michel Fingerhut <Michel.Fingerhut@ircam.fr>
|
||||
@@ -1,140 +0,0 @@
|
||||
.\" $Id$
|
||||
.TH IRCD 8 "29 March 1989"
|
||||
.SH NAME
|
||||
ircd \- The Internet Relay Chat Program Server
|
||||
.SH SYNOPSIS
|
||||
.hy 0
|
||||
.IP \fBircd\fP
|
||||
[-a] [-c] [-i] [-o] [-q] [-t] [-d directory]
|
||||
[-f configfile] [-x debuglevel] [-h hostname] [-p portnum]
|
||||
.SH DESCRIPTION
|
||||
.LP
|
||||
\fIircd\fP is the server (daemon) program for the Internet Relay Chat
|
||||
Program. The \fIircd\fP is a server in that its function is to "serve"
|
||||
the client program \fIirc(1)\fP with messages and commands. All commands
|
||||
and user messages are passed directly to the \fIircd\fP for processing
|
||||
and relaying to other ircd sites. The \fIirc(1)\fP program depends upon
|
||||
there being an \fIircd\fP server running somewhere (either on your local
|
||||
UNIX site or a remote ircd site) so that it will have somewhere to connect
|
||||
to and thus allow the user to begin talking to other users.
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.B \-d directory
|
||||
This option tells the server to change to that directory and use
|
||||
that as a reference point when opening \fIircd.conf\fP and other startup
|
||||
files.
|
||||
.TP
|
||||
.B \-o
|
||||
Starts up a local ircdaemon. Standard input can be used to send IRC
|
||||
commands to the daemon. The user logging in from standard input will
|
||||
be given operator privileges on this local ircd. If ircd is a setuid program,
|
||||
it will call setuid(getuid()) before going to local mode. This option
|
||||
can be used in inetd.conf to allow users to open their own irc clients
|
||||
by simply connecting their clients to the correct ports. For example:
|
||||
.TP
|
||||
.B
|
||||
irc stream tcp nowait irc /etc/ircd ircd \\-f/etc/ircd.conf \\-o
|
||||
|
||||
allows users connecting to irc port (specified in /etc/services) to start
|
||||
up their own ircdaemon. The configuration file should be used to check from
|
||||
which hosts these connections are allowed from. This option also turns
|
||||
on the autodie option -a.
|
||||
.TP
|
||||
.B \-a
|
||||
Instructs the server to automatically die off if it loses all it's clients.
|
||||
.TP
|
||||
.B \-t
|
||||
Instructs the server to direct debugging output to standard output.
|
||||
.TP
|
||||
.B \-x#
|
||||
Defines the debuglevel for ircd. The higher the debuglevel, the more stuff
|
||||
gets directed to debugging file (or standard output if -t option was used
|
||||
as well).
|
||||
.TP
|
||||
.B \-i
|
||||
The server was started by inetd and it should start accepting connections
|
||||
from standard input. The following inetd.conf-line could be used to start
|
||||
up ircd automatically when needed:
|
||||
.TP
|
||||
.B
|
||||
ircd stream tcp wait irc /etc/ircd ircd \-i
|
||||
|
||||
allows inetd to start up ircd on request.
|
||||
.TP
|
||||
.B \-f filename
|
||||
Specifies the ircd.conf file to be used for this ircdaemon. The option
|
||||
is used to override the default ircd.conf given at compile time.
|
||||
.TP
|
||||
.B \-c
|
||||
This flag must be given if you are running ircd from \fI/dev/console\fP or
|
||||
any other situation where fd 0 isnt a tty and you want the server to fork
|
||||
off and run in the background. This needs to be given if you are starting
|
||||
\fIircd\fP from an \fIrc\fP (such as \fI/etc/rc.local\fP) file.
|
||||
.TP
|
||||
.B \-q
|
||||
Using the -q option stops the server from doing DNS lookups on all the
|
||||
servers in your \fIircd.conf\fP file when it boots. This can take a lengthy
|
||||
amount of time if you have a large number of servers and they are not all
|
||||
close by.
|
||||
.TP
|
||||
.B \-h hostname
|
||||
Allows the user to manually set the server name at startup. The default
|
||||
name is hostname.domainname.
|
||||
.B \-p portname
|
||||
Specifies the port where the daemon should start waiting for connections.
|
||||
This overrides the default which is given at compile time.
|
||||
.TP
|
||||
.SH
|
||||
If you plan to connect your \fIircd\fP server to an existing Irc-Network,
|
||||
you will need to alter your local IRC CONFIGURATION FILE (typically named
|
||||
"ircd.conf") so that it will accept and make connections to other \fIircd\fP
|
||||
servers. This file contains the hostnames, Network Addresses, and sometimes
|
||||
passwords for connections to other ircds around the world. Because
|
||||
description of the actual file format of the "ircs.conf" file is beyond the
|
||||
scope of this document, please refer to the file INSTALL in the IRC source
|
||||
files documentation directory.
|
||||
.LP
|
||||
BOOTING THE SERVER: The \fIircd\fP server can be started as part of the
|
||||
UNIX boot procedure or just by placing the server into Unix Background.
|
||||
Keep in mind that if it is *not* part of your UNIXES Boot-up procedure
|
||||
then you will have to manually start the \fIircd\fP server each time your
|
||||
UNIX is rebooted. This means if your UNIX is prone to crashing
|
||||
or going for for repairs a lot it would make sense to start the \fIircd\fP
|
||||
server as part of your UNIX bootup procedure. In some cases the \fIirc(1)\fP
|
||||
will automatically attempt to boot the \fIircd\fP server if the user is
|
||||
on the SAME UNIX that the \fIircd\fP is supposed to be running on. If the
|
||||
\fIirc(1)\fP cannot connect to the \fIircd\fP server it will try to start
|
||||
the server on it's own and will then try to reconnect to the newly booted
|
||||
\fIircd\fP server.
|
||||
.SH EXAMPLE
|
||||
.RS
|
||||
.nf
|
||||
tolsun% \fBircd\fP
|
||||
.fi
|
||||
.RE
|
||||
.LP
|
||||
Places \fIircd\fP into UNIX Background and starts up the server for use.
|
||||
Note: You do not have to add the "&" to this command, the program will
|
||||
automatically detach itself from tty.
|
||||
.SH COPYRIGHT
|
||||
(c) 1988,1989 University of Oulu, Computing Center, Finland,
|
||||
.LP
|
||||
(c) 1988,1989 Department of Information Processing Science,
|
||||
University of Oulu, Finland
|
||||
.LP
|
||||
(c) 1988,1989,1990,1991 Jarkko Oikarinen
|
||||
.LP
|
||||
For full COPYRIGHT see LICENSE file with IRC package.
|
||||
.LP
|
||||
.RE
|
||||
.SH FILES
|
||||
/etc/utmp
|
||||
"irc.conf"
|
||||
.SH "SEE ALSO"
|
||||
irc(1)
|
||||
.SH BUGS
|
||||
None... ;-) if somebody finds one, please inform author
|
||||
.SH AUTHOR
|
||||
Jarkko Oikarinen, currently jto@tolsun.oulu.fi,
|
||||
manual page written by Jeff Trim, jtrim@orion.cair.du.edu,
|
||||
later modified by jto@tolsun.oulu.fi.
|
||||
@@ -1,47 +0,0 @@
|
||||
[ $Id$ ]
|
||||
The following macros are included in "ircd.m4" for use with the m4 text
|
||||
preprocessor. "ircd.m4" is parsed before the IRC server conf file so they
|
||||
are all available for use with that.
|
||||
|
||||
NOTE: The "ircd.m4" file is *ONLY* created by a "make install".
|
||||
|
||||
VERSION - current version string as in patchlevel.h
|
||||
DEBUGMODE - if DEBUGMODE is define in config.h, is also defined for m4.
|
||||
HOSTNAME - taken from hostname(1)
|
||||
USER - username of person doing the "make install"
|
||||
PORT - default port number as in config.h
|
||||
PFREQ - default ping frequency as in config.h
|
||||
CFREQ - default connect frequency as in config.h
|
||||
MAXSENDQ - default max sendq as in config.h
|
||||
CL - use this to wrap a class number
|
||||
HOST - use this to wrap a hostname
|
||||
HOSTM - use this to wrap the hostmask number in N-lines
|
||||
ID - when wrapping the host field in an I-line, causes ident string return
|
||||
to be used instead of user supplised username.
|
||||
PASS - use this to wrap passwords in C/N/I/O lines
|
||||
PING - use this to wrap the ping value in Y-lines
|
||||
APORT - use this to wrap the port number in I-lines
|
||||
CPORT - use this to wrap the port number in C-lines
|
||||
SERV - use this to wrap server names
|
||||
|
||||
You might use some of these as
|
||||
C:foo.bar.edu:PASS(boo):foo.bar.edu:APORT(6667)
|
||||
I:ID(128.250.*)::ID(*.mu.oz.au):CPORT(6667)
|
||||
|
||||
In addition to these (rather weak macros), some more complete ones are
|
||||
defined which already perform the above.
|
||||
|
||||
ADMIN - provide fields to it as you would an A-line
|
||||
ALLOW - provide fields to it as you would an N-line
|
||||
BAN - provide fields to it as you would an K-line
|
||||
CLASS - provide fields to it as you would an Y-line
|
||||
CLIENT - provide fields to it as you would an I-line
|
||||
CONNECT - provide fields to it as you would an C-line
|
||||
ME - provide fields to it as you would an M-line
|
||||
HUB - first parameter is server you want to hub, second is optional and is
|
||||
a mask against which other servers introduced must match against.
|
||||
LEAF - works like HUB, except that the mask is matched against server names
|
||||
to check if the link should be dropped.
|
||||
SERVER - uses 6 fields, the first 4 as are found in an N-line, the last two
|
||||
should be as you would use in a C-line. It expands out to provide
|
||||
both a C and N line.
|
||||
@@ -1,294 +0,0 @@
|
||||
[ $Id$ ]
|
||||
From: Carlo Kid - Runaway <carlo@sg.tn.tudelft.nl>
|
||||
Subject: GUIDE for compiling your server
|
||||
To: wastelanders@rush.cc.edu (New Wastelanders MailingList)
|
||||
Date: Thu, 26 May 94 13:44:10 METDST
|
||||
Cc: carlo@sg.tn.tudelft.nl
|
||||
Mailer: Elm [revision: 66.33]
|
||||
Status: RO
|
||||
|
||||
GUIDE for compiling your server, by Runaway
|
||||
===============================================
|
||||
|
||||
First of all you must get all the files you need, as an example
|
||||
I will explain how to compile irc2.8.19.U3.2.
|
||||
The files you'll need in general are:
|
||||
|
||||
- irc2.8.19.U3.2.tar.gz
|
||||
|
||||
Or, when you already have an older version -say irc2.8.19.U3.1- a patch:
|
||||
|
||||
- irc2.8.19.U3.1-2.patch
|
||||
|
||||
It is possible you need more then one patch, especially when you already
|
||||
upgraded more often. But in that case you already have those old patches.
|
||||
Of course, in that case, you also already have the old directory tree:
|
||||
|
||||
/home..../yourname/....ircd/irc2.8.19.U3.1/
|
||||
|
||||
Scripts, patches and directory trees
|
||||
====================================
|
||||
|
||||
It is good practise to:
|
||||
1) Call the directory tree after the version
|
||||
2) Let this directory ONLY contain what comes with the .tar.gz file!
|
||||
Thus: Do NOT put ircd.conf, or any patches etc in it!!!
|
||||
In general, you must be able to delete this whole directory tree
|
||||
when you still have the original .tar.gz file and patches applied to it.
|
||||
3) Put it in a directory ending on /ircd, THIS directory will contain
|
||||
your ircd.motd, ircd.pid, ircd.conf and patches...
|
||||
|
||||
So, you end up with:
|
||||
|
||||
...ircd/irc2.8.19.U3.1-2.patch
|
||||
...ircd/irc2.8.19.U3.1.tar.gz
|
||||
|
||||
or just:
|
||||
|
||||
...ircd/irc2.8.19.U3.2.tar.gz
|
||||
|
||||
at once.
|
||||
|
||||
Before you can delete the old directory tree, you must be SURE to save
|
||||
everything thats in it. This is thus the .tar.gz file, all patches but
|
||||
ALSO the following files:
|
||||
|
||||
Makefile
|
||||
include/config.h
|
||||
include/setup.h
|
||||
|
||||
You should always keep a copy of those files OUTSIDE the irc2.8.19.U3.2/
|
||||
directory tree. For instance:
|
||||
|
||||
...ircd/irc.personal/Makefile
|
||||
...ircd/irc.personal/include/config.h
|
||||
...ircd/irc.personal/include/setup.h
|
||||
|
||||
To make these backups easy, you should make a script, called backup.personal
|
||||
containing:
|
||||
|
||||
cp Makefile ../irc.personal/Makefile
|
||||
cp include/config.h ../irc.personal/include/config.h
|
||||
cp include/setup.h ../irc.personal/include/setup.h
|
||||
|
||||
If you also change anything in the other Makefiles (ircd/Makefile and
|
||||
common/Makefile) you can add those too. Be sure to make the directories
|
||||
by hand first.
|
||||
|
||||
Make the script 'backup.personal' executable with:
|
||||
chmod 700 backup.personal
|
||||
You must be able to run it from any directory, so put it in your ..bin/
|
||||
|
||||
Ok... so now you have a backup of everything. If you wanted to start
|
||||
ALL over you could delete the directory tree, unzip and untar the archive
|
||||
again, apply all patches to it, change the Makefile and config.h again,
|
||||
put setup.h back, recompile and reinstall.
|
||||
In some cases it is easy to do this with an other script, I call it 'repatch',
|
||||
it provides you with an easy-to-change overview of the patched you have used.
|
||||
Here is how my 'repatch' looks now (it is located in .../ircd/repatch).
|
||||
|
||||
cd ~/irc/ircd
|
||||
rm -rf irc2.8.19 irc2.8.19.U3.2
|
||||
zcat irc2.8.19.tar.gz | tar xf -
|
||||
mv irc2.8.19 irc2.8.19.U3.2
|
||||
cd irc2.8.19.U3.2
|
||||
#patch -p1 < ../Makefile.config.h.patch 2> ../patch.out
|
||||
#cp ../setup.h include/setup.h
|
||||
patch -p1 < ../irc2.8.19-TSpre8.2.patch 2>> ../patch.out
|
||||
patch -p1 < ../irc2.8.19.TSpre8-note.patch 2>> ../patch.out
|
||||
patch -p1 < ../irc2.8.19.TSpre8-wallops.patch 2>> ../patch.out
|
||||
patch -p1 < ../irc2.8.19.TSpre8-bquiet.patch 2>> ../patch.out
|
||||
patch -p1 < ../irc2.8.19.TSpre8-silence.2.patch 2>> ../patch.out
|
||||
#patch -p1 < ../irc2.8.19.U3-ban.patch 2>> ../patch.out
|
||||
make clean
|
||||
vi include/patchlevel.h
|
||||
grep -e '\.rej' -e '[Ff]ail' -e fuzz ../patch.out
|
||||
|
||||
As you can see I commented out the patches Makefile.config.h.patch and
|
||||
irc2.8.19.U3-ban.patch, and don't copy setup.h here. This is because
|
||||
I wanted to make a virgin .U3.2.tar.gz for distribution via ftp-sites.
|
||||
If I change the name of the directory, I have to change it in three
|
||||
places :/
|
||||
This script forces me to edit the patchlevel.h :) :)
|
||||
The last grep warns me if anything went wrong with the patches.
|
||||
|
||||
Moreover, as you can see, I have a 'Makefile.config.h.patch'.
|
||||
You should make your own as soon as you completely installed
|
||||
and tested your server. It is very handy for re-installing a new
|
||||
version.
|
||||
|
||||
To make this patch, edit the Makefile's and and config.h and type:
|
||||
|
||||
backup.personal
|
||||
cd ..
|
||||
rm -rf irc2.8.19
|
||||
zcat irc2.8.19.tar.gz | tar xf -
|
||||
diff -rc irc2.8.19 irc.personal > Makefile.config.h.patch
|
||||
|
||||
Check it with an editor if it looks ok. In the above, 'irc2.8.19.tar.gz'
|
||||
is the virgin 'Avalon' version, I change the Makefiles in the .U3
|
||||
however also, so you might wanna use the virgin .U3.2.tar.gz.
|
||||
|
||||
Starting ALL over (or begining for the first time)
|
||||
==================================================
|
||||
|
||||
This is about EDITTING the Makefile(s) and config.h, and creating the
|
||||
setup.h for the first time.
|
||||
|
||||
2.8.19 is different from 2.8.16 and before. You will have to EDIT the
|
||||
Makefile and config.h that comes with the distribution. You can NOT
|
||||
use the old Makefile and config.h you had !
|
||||
|
||||
First write down the path you want to use where you are going to put
|
||||
the ircd.conf etc...
|
||||
|
||||
Edit the Makefile. Comments are in it. You should simply define that
|
||||
what is needed for your Operating System.
|
||||
|
||||
Then edit the config.h
|
||||
|
||||
Then run ./Config to create setup.h ... at first simply hit return all the
|
||||
time. If you insist on using gcc instead of cc, you must edit that in your
|
||||
Makefile BEFORE running setup.h. You can't change that running Config,
|
||||
although it asks for it. If you have more then one cc, you can add the
|
||||
right path to in the Makefile (if it uses the wrong one).
|
||||
|
||||
Since U3.2, I changed the Makefile and config.h a little. The changes are:
|
||||
- I added note.o to the dependency
|
||||
- I added *.orig files to the 'make clean' (otherwise the *.orig generated
|
||||
by some 'patch' programs will be left).
|
||||
If you want this too, and you have .U3.1, you can get the patch from
|
||||
sg.tn.tudelft.nl (file: Makefile.conf.U3.patch).
|
||||
|
||||
As soon as you are done, run backup.personal. To stay up to date with your
|
||||
backup.
|
||||
|
||||
Then make the Makefile.conf.patch as described above. (or wait with that
|
||||
till you are sure it works... otherwise it might be done more then once
|
||||
which is a waste of time).
|
||||
|
||||
Special remarks
|
||||
---------------
|
||||
|
||||
Makefile:
|
||||
First occurance of
|
||||
CC=cc
|
||||
Change this NOT if you want another compiler, add another CC= later, close
|
||||
to your OS specific #defines...
|
||||
|
||||
# IRCDDIR must be the same as DPATH in include/config.h
|
||||
#
|
||||
IRCDDIR=/sb/users/carlo/irc/ircd
|
||||
Make sure you use the same path in the config.h :)
|
||||
|
||||
SUBDIRS=common ircd
|
||||
By removing the 'irc' from this line, you stop 'make' from making the client
|
||||
as well.
|
||||
|
||||
config.h:
|
||||
/*
|
||||
* NOTE: On some systems, valloc() causes many problems.
|
||||
*/
|
||||
#undef VALLOC /* Define this if you have valloc(3) */
|
||||
I never try it, even if I have it.
|
||||
|
||||
#define USE_VARARGS
|
||||
For defines like this, you best check the online manual if you have them
|
||||
(man vprintf in this case)... I didn't have man page for vscanf() but it
|
||||
still worked... (I DO have them for vprintf and vsprinf).
|
||||
|
||||
#undef DEBUGMODE /* define DEBUGMODE to enable debugging mode.*/
|
||||
Debug mode uses a lot more memory and is a lot slower. ONLY define
|
||||
when your server gives problems like crashing/coredumping, or other
|
||||
things like not wanting to startup etc. In other words: when you are really
|
||||
*USING* this feature to do DEBUGing !
|
||||
|
||||
#define NPATH "/sb/users/carlo/irc/server/Undernet/.ircdnote"
|
||||
The '#ifdef notdef' '#endif' around NPATH mean: notdef = NOT DEFINED.
|
||||
You should *never* #define notdef... It is used to "comment out" *examples*.
|
||||
By defining it, you enable all examples (like making your server SUI :/)
|
||||
Simply *remove* the lines '#ifdef notdef' and '#endif' around the NPATH.
|
||||
|
||||
#define DPATH "/sb/users/carlo/irc/ircd"
|
||||
Must be the same as in the Makefile!
|
||||
#define SPATH "/sb/users/carlo/bin/ircd" /* path to server executeable */
|
||||
This is used when you do a /RESTART. For fast restarting a NEW version (upgrade)you can let this point to a symbolic link, and then change this link to the
|
||||
new executable. Do a 'restart' and voila...
|
||||
For instance:
|
||||
.../bin/ircd.U3.2*
|
||||
.../bin/ircd -> ircd.U3.2
|
||||
The last made with:
|
||||
ln -s ircd.U3.2 ircd
|
||||
Then when you upgrade:
|
||||
rm ircd
|
||||
ln -s ircd.U3.3 ircd
|
||||
and a /RESTART
|
||||
|
||||
#undef CRYPT_LINK_PASSWORD
|
||||
Make sure your ircd.conf isn't world readable like on pasadena :/
|
||||
(and on ircserver.et.tudelft.nl once - we DID have to change all passwords
|
||||
then)
|
||||
|
||||
Compiling the server
|
||||
====================
|
||||
|
||||
*** FIRST edit your include/patchlevel.h ***
|
||||
|
||||
If you don't want to compile the client, you can change the Makefile
|
||||
as mentioned above, or type:
|
||||
make server
|
||||
|
||||
After a succesfull compilation (ignore warning ;), you can type
|
||||
make install
|
||||
or just
|
||||
cp ircd/ircd ~/bin/ircd.U3.2
|
||||
cd ~/bin
|
||||
chmod 700 ircd.U3.2
|
||||
rm ircd
|
||||
ln -s ircd.U3.2 ircd
|
||||
|
||||
I changed my Makefile to do the latter thing when I type 'make install'
|
||||
|
||||
Then run the server by typing 'ircd'. Don't do this on the
|
||||
...ircd/irc2.8.19.U3.2/ircd/ directory, because when in your PATH the
|
||||
'.' comes before your '~/bin' you start up THAT exucutable, disallowing
|
||||
you to recompile later (text file busy).
|
||||
|
||||
Compile errors
|
||||
==============
|
||||
|
||||
If anything goes wrong with note, it most likely is because you
|
||||
1) Didn't define NPATH correctly
|
||||
2) Didn't add the note.o to the dependencies.. remove note.o and recompile.
|
||||
|
||||
[ For a non-undernet version: irc2.8.19.tar.gz is bugged, get the -note.patch
|
||||
from ftp.undernet.org. ]
|
||||
|
||||
If you get problems while linking saying it has undefined _something
|
||||
and something is something with 'res', you must add -lresolv to your
|
||||
IRCDLIBS in the Makefile.
|
||||
|
||||
If you get problems with any function beging defines twice are giving
|
||||
errors like not compatible with previous definition (likely atol() in
|
||||
note.c), just remove that whole function from the .c file (put #ifdef notdef
|
||||
around it). You have it already in your system libraries.
|
||||
|
||||
Last remarks
|
||||
============
|
||||
|
||||
Add those U: lines!!!
|
||||
And change your ircd.motd to reflect the new commands/features :)
|
||||
( /MOTD uxb* -- Nice motd RedRum! :)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
Run
|
||||
|
||||
--
|
||||
-------------------------------------------------------------------------------
|
||||
| carlo@sg.tn.tudelft.nl | Run @ IRC |
|
||||
| | Admin of Delft.NL.EU.undernet.org |
|
||||
| * Don't expect anything of live, | and Ircserver.et.tudelft.nl |
|
||||
| or you'll miss all the rest of it.| |
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
Services Install Guide For Unreal 3.2 by zyrorl (zyrorl@unrealircd.org)
|
||||
=======================================================================
|
||||
|
||||
last updated: 4/5/2001 (4th May 2001)
|
||||
|
||||
|
||||
First of all you will be required to download a services package for your
|
||||
network.
|
||||
|
||||
A few of the most popular services are:
|
||||
|
||||
IRCServices - http://www.ircservices.za.net/
|
||||
Epona - http://www.pegsoft.net/epona/
|
||||
Wrecked - http://www.wrecked.net/services/index.html
|
||||
Magick - http://www.magick.tm/
|
||||
Sirius - http://ircsystems.net/sirius
|
||||
|
||||
After you have downloaded the appropriate services package, you will have to
|
||||
upload it to your shell, and untar and un-gzip the file by typing: tar -zxvf
|
||||
services.x.x.tar.gz
|
||||
|
||||
Then you will need to enter the directory created by your services package (for
|
||||
a listing type ls -a) and type ./configure . This will run the configure script
|
||||
to setup your services. The script will ask you questions regarding the path
|
||||
want to install your services to, where you want the services data files to be
|
||||
installed to, encryption options, and the type of ircd that you are using (Most
|
||||
probably Unreal). If you have previously used any other services package, it
|
||||
may also ask you if you would like to convert their databases. It may also ask
|
||||
you if you would like the services to dump a core file when a segmentation fault
|
||||
occurs so that you can find out the cause of the problem and bug report to the
|
||||
developers of the ircd services.
|
||||
|
||||
Then you will be required to compile your services package by typing "make" or
|
||||
possibly "gmake". To install services after compiled, type "make install".
|
||||
Then you will need to enter the directory that you specified for the location
|
||||
for the data of the services. You will most likely see a example.conf file in
|
||||
the folder. You will need to rename this file to services.conf by typing "mv
|
||||
example.conf services.conf" and then you will need to edit the services.conf
|
||||
file in your favourite text editor. We recommend new users use pico, to edit
|
||||
the file using pico type "pico services.conf". Edit the file to your liking,
|
||||
make sure you follow their recommendations in settings, and make sure you edit
|
||||
the root services passwords, server to link to, password and port.
|
||||
|
||||
After you have configured your services you will then be required to edit your
|
||||
unrealircd.conf. You will require to add server connection lines to your server
|
||||
in order for services to work. All services on your network will need to have
|
||||
the same U line as the server that services are linking to. A sample of the
|
||||
configuration for services for unrealircd.conf is listed below:
|
||||
|
||||
link services.yournetwork.net {
|
||||
username *;
|
||||
hostname 0.0.0.0; /*Server Ip Address Or Hostmask */
|
||||
bind-ip *; /* IP To Bind To When Connecting */
|
||||
port 6667; /* Port Number */
|
||||
password-connect "passwordsend"; /*Password To Send On Connection*/
|
||||
password-receive "passwordreceive"; /* Password To Receive From
|
||||
Server Connecting */
|
||||
class servers;
|
||||
};
|
||||
|
||||
Make sure you then add a u:line entry for services. All the servers on your
|
||||
network will be required to have a U:line. For UnrealIRCD 3.2 the U:lines
|
||||
should look something like this:
|
||||
|
||||
ulines {
|
||||
services.yournetwork.net;
|
||||
};
|
||||
|
||||
Servers Running UnrealIRCD 3.1.1 Darkshades or below the U:Line for the servers
|
||||
should look something like this:
|
||||
|
||||
U:services.yournetwork.net:*:*
|
||||
|
||||
You will then be required to edit your unrealircd.conf's network configuration
|
||||
services name line, which has to be the same name as chosen on the connection
|
||||
line for your services. ie. in this case your network configuration line would
|
||||
look something like:
|
||||
|
||||
services-name "services.yournetwork.net";
|
||||
|
||||
Then you will require to /rehash your ircd and then go back to your services
|
||||
directory and type ./services to run services.
|
||||
@@ -0,0 +1,441 @@
|
||||
* * * * * * * * * * * * * * * * * * *
|
||||
* 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>;
|
||||
redirect-server <server>;
|
||||
redirect-port <port>;
|
||||
};
|
||||
|
||||
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)
|
||||
<server> server to redirect to (hostname/ip)
|
||||
<port> port on server to redirect (port)
|
||||
|
||||
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>;
|
||||
}
|
||||
swhois <whois stuff>;
|
||||
snomask <snomask>;
|
||||
};
|
||||
|
||||
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)
|
||||
<snomask> Snomask on oper (SNOMASK)
|
||||
<whois stuff> Extra info in /whois (string)
|
||||
|
||||
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
|
||||
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 send /locops
|
||||
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
|
||||
t | can_gkline | can use /gline and /shun
|
||||
Z | can_gzline | can use /gzline
|
||||
^ | can_stealth | Can set +I
|
||||
|
||||
|
||||
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 :
|
||||
|
||||
|
||||
@@ -656,6 +648,48 @@
|
||||
Example : SHUN +foobar@aol.com 600 :Spamming (Shuns foobar@aol.com for 10 mins for Spamming)
|
||||
SHUN +foobar@aol.com 1d6h :Spamming (Adds a 30 hour SHUN)
|
||||
|
||||
*** GZLINE Command ***
|
||||
|
||||
This command provides timed global Z:line. If you match a Global Z:Line you cannot
|
||||
connect to ANY server on the IRC network
|
||||
A time of 0 in the GZLINE makes it permanent (Never Expires).
|
||||
You may also specify the time in the format 1d10h15m30s.
|
||||
IRC Operator only command.
|
||||
|
||||
Syntax: GZLINE <user@host mask> <seconds to be banned> :<reason>
|
||||
(Adds a Global Z:line for user@host)
|
||||
GZLINE -<user@host mask> (Removes a Global Z:line for user@host)
|
||||
Example: GZLINE *@*.dal.net 900 :Spammers (Adds a 15 min Global Z:line)
|
||||
GZLINE *@*.dal.net 1d5h :Spammers (Adds a 29 hour Global Z:line)
|
||||
|
||||
*** TKLINE Command ***
|
||||
|
||||
This command provides timed K:Lines. If you match a time K:Line you cannot
|
||||
connect to the server until the time has expired
|
||||
A time of 0 in the TKLINE makes it permanent (Never Expires).
|
||||
You may also specify the time in the format 1d10h15m30s.
|
||||
IRC Operator only command.
|
||||
|
||||
Syntax: TKLINE <user@host mask> <seconds to be banned> :<reason>
|
||||
(Adds a Timed K:line for user@host)
|
||||
TKLINE -<user@host mask> (Removes a Timed K:line for user@host)
|
||||
Example: TKLINE *@*.dal.net 900 :Spammers (Adds a 15 min Timed K:line)
|
||||
TKLINE *@*.dal.net 1d5h :Spammers (Adds a 29 hour Timed K:line)
|
||||
|
||||
*** TZLINE Command ***
|
||||
|
||||
This command provides timed G:Lines. If you match a Timed Z:Line you cannot
|
||||
connect to the server until the time has expired
|
||||
A time of 0 in the TZLINE makes it permanent (Never Expires).
|
||||
You may also specify the time in the format 1d10h15m30s.
|
||||
IRC Operator only command.
|
||||
|
||||
Syntax: TZLINE <user@host mask> <seconds to be banned> :<reason>
|
||||
(Adds a Timed Z:line for user@host)
|
||||
TZLINE -<user@host mask> (Removes a Timed Z:line for user@host)
|
||||
Example: TZLINE *@*.dal.net 900 :Spammers (Adds a 15 min Timed Z:line)
|
||||
TZLINE *@*.dal.net 1d5h :Spammers (Adds a 29 hour Timed Z:line)
|
||||
|
||||
*** AKILL Command *** (Use Services AKILL Instead)
|
||||
|
||||
Adds an Autokill for the specific host mask. This prevents any user from that
|
||||
@@ -878,10 +912,11 @@
|
||||
*** MKPASSWD Command ***
|
||||
|
||||
This command will encrypt the string it has been given
|
||||
So u can add it directly to the ircd.conf if you use
|
||||
Encrypted passwords.
|
||||
So u can add it directly to the unrealircd.conf if you use
|
||||
Encrypted passwords. Type can be crypt, sha1, or md5. Sha1
|
||||
and md5 are only available when compiled with SSL support.
|
||||
|
||||
Syntax : MKPASSWD <string to be encrypted>
|
||||
Syntax : MKPASSWD <method> <password>
|
||||
|
||||
*** TSCTL Command ***
|
||||
|
||||
@@ -1067,4 +1102,4 @@
|
||||
H = Gets +x on oper up.
|
||||
W = Gets +W on oper up.
|
||||
^ = Allows to use umode +I
|
||||
* = Flags AaNCTzSHW^
|
||||
* = Flags AaNCTzSHW^
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
[ $Id$ ]
|
||||
Dynamic Configuration Guide
|
||||
|
||||
Okay first you have to go edit the file "unrealircd.conf" in
|
||||
the directory "networks/". In that file you see a field with
|
||||
name "Include" .. if you want to create your own network file
|
||||
(IRC network specification) you have to write like
|
||||
"networks/<irc network>.network" like "networks/myircnetwork.network"
|
||||
|
||||
If there is already a network file you can just put in the path
|
||||
like : "networks/dragonwings.org"
|
||||
|
||||
If you want to create your own network file
|
||||
copy the file "template.network" to the name you want to use for
|
||||
your network file and edit it.
|
||||
|
||||
If you experince any problems email me at stskeeps@tspre.org
|
||||
or try msg me at /server irc.global-irc.net : #UnrealIRCd
|
||||
My nick is mostly Stskeeps or Techie (or Nightwalker if i had a bad night:P)
|
||||
|
||||
--Stskeeps
|
||||
@@ -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)) == -1) // winlocal
|
||||
fatal("socket");
|
||||
|
||||
name_to_number(AF_INET, hostname, hostport, &hostaddr, &adlen);
|
||||
|
||||
@@ -1 +1,33 @@
|
||||
...
|
||||
|
||||
These are 3rd party programs modules, or unsupported modules.
|
||||
|
||||
Custom modules are compiled by copying them to src/modules
|
||||
and running from the root directory
|
||||
|
||||
$ make custommodule MODULEFILE=modulename
|
||||
|
||||
This will produce a .so you can load. Upon load, this will show a "3" in the
|
||||
/version flags, as it contains third party modules (we do not support if it
|
||||
crashes because of the tainted module)
|
||||
|
||||
======================
|
||||
Name: burst.c
|
||||
Description:
|
||||
Little program to test out the different aspects of the unreal protocol and
|
||||
produce net.burst dumps
|
||||
|
||||
======================
|
||||
Name: pthreads.tar.gz
|
||||
Description:
|
||||
FSU Pthreads, used on some systems
|
||||
|
||||
=======================
|
||||
Name: m_rawto.c
|
||||
Is a 3rd party module
|
||||
Description:
|
||||
|
||||
Implements the RAWTO command, will allow U:lines to send raw data to
|
||||
anywhere it pleases.
|
||||
|
||||
:uline.server RAWTO towho :what to send
|
||||
|
||||
|
||||
@@ -0,0 +1,157 @@
|
||||
/*
|
||||
* Unreal Internet Relay Chat Daemon, m_rawto.c
|
||||
* (C) 2002 Carsten V. Munk
|
||||
* RAWTO Module - 3rd party
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* Use of this module will make it a 3rd party module, and will
|
||||
* add to your /version thing. We DO NOT SUPPORT THIS.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
#include "struct.h"
|
||||
#include "common.h"
|
||||
#include "sys.h"
|
||||
#include "numeric.h"
|
||||
#include "msg.h"
|
||||
#include "channel.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"
|
||||
#include "proto.h"
|
||||
#ifdef STRIPBADWORDS
|
||||
#include "badwords.h"
|
||||
#endif
|
||||
#ifdef _WIN32
|
||||
#include "version.h"
|
||||
#endif
|
||||
|
||||
DLLFUNC int m_rawto(aClient *cptr, aClient *sptr, int parc, char *parv[]);
|
||||
|
||||
/* Place includes here */
|
||||
#define MSG_RAWTO "RAWTO" /* */
|
||||
#define TOK_RAWTO "3A" /* 112 */
|
||||
|
||||
|
||||
#ifndef DYNAMIC_LINKING
|
||||
ModuleHeader m_rawto_Header
|
||||
#else
|
||||
#define m_rawto_Header Mod_Header
|
||||
ModuleHeader Mod_Header
|
||||
#endif
|
||||
= {
|
||||
"rawto", /* Name of module */
|
||||
"$Id$", /* Version */
|
||||
"command /rawto", /* Short description of module */
|
||||
"3.2-b5",
|
||||
NULL
|
||||
};
|
||||
|
||||
|
||||
/* The purpose of these ifdefs, are that we can "static" link the ircd if we
|
||||
* want to
|
||||
*/
|
||||
|
||||
/* This is called on module init, before Server Ready */
|
||||
#ifdef DYNAMIC_LINKING
|
||||
DLLFUNC int Mod_Init(int module_load)
|
||||
#else
|
||||
int m_rawto_Init(int module_load)
|
||||
#endif
|
||||
{
|
||||
/*
|
||||
* We call our add_Command crap here
|
||||
*/
|
||||
add_Command(MSG_RAWTO, TOK_RAWTO, m_rawto, 2);
|
||||
tainted++;
|
||||
return MOD_SUCCESS;
|
||||
}
|
||||
|
||||
/* Is first run when server is 100% ready */
|
||||
#ifdef DYNAMIC_LINKING
|
||||
DLLFUNC int Mod_Load(int module_load)
|
||||
#else
|
||||
int m_rawto_Load(int module_load)
|
||||
#endif
|
||||
{
|
||||
|
||||
return MOD_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
/* Called when module is unloaded */
|
||||
#ifdef DYNAMIC_LINKING
|
||||
DLLFUNC int Mod_Unload(int module_unload)
|
||||
#else
|
||||
int m_rawto_Unload(int module_unload)
|
||||
#endif
|
||||
{
|
||||
if (del_Command(MSG_RAWTO, TOK_RAWTO, m_rawto) < 0)
|
||||
{
|
||||
sendto_realops("Failed to delete commands when unloading %s",
|
||||
m_rawto_Header.name);
|
||||
}
|
||||
tainted--;
|
||||
return MOD_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* m_rawto Send a raw string to anywhere
|
||||
* if you are U:line
|
||||
* parv[0] = sender prefix
|
||||
* parv[1] = whoto
|
||||
* parv[2] = string
|
||||
*/
|
||||
|
||||
DLLFUNC int m_rawto(aClient *cptr, aClient *sptr, int parc, char *parv[])
|
||||
{
|
||||
aClient *acptr = NULL;
|
||||
if (!IsULine(sptr))
|
||||
{
|
||||
sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]);
|
||||
return -1;
|
||||
}
|
||||
if (parc < 3)
|
||||
{
|
||||
sendto_one(sptr, err_str(ERR_NEEDMOREPARAMS),
|
||||
me.name, parv[0], "RAWTO");
|
||||
return -1;
|
||||
}
|
||||
if ((acptr = find_client(parv[1], NULL)))
|
||||
{
|
||||
if (MyConnect(acptr))
|
||||
{
|
||||
sendto_one(acptr, "%s", parv[2]);
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
sendto_one(acptr, ":%s %s %s :%s",
|
||||
parv[0], IsToken(acptr->from) ? TOK_RAWTO : MSG_RAWTO,
|
||||
parv[1], parv[2]);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
After Width: | Height: | Size: 52 B |
|
After Width: | Height: | Size: 443 B |
|
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: 453 B |
|
After Width: | Height: | Size: 451 B |
|
After Width: | Height: | Size: 441 B |
|
After Width: | Height: | Size: 447 B |
|
After Width: | Height: | Size: 449 B |
|
After Width: | Height: | Size: 445 B |
@@ -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
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
// $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
|
||||
@@ -1,21 +0,0 @@
|
||||
// $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, ...);
|
||||
@@ -22,14 +22,6 @@
|
||||
#ifndef __class_include__
|
||||
#define __class_include__
|
||||
|
||||
#ifndef PROTO
|
||||
#if __STDC__
|
||||
# define PROTO(x) x
|
||||
#else
|
||||
# define PROTO(x) ()
|
||||
#endif
|
||||
#endif
|
||||
|
||||
typedef struct Class {
|
||||
int class;
|
||||
int conFreq;
|
||||
@@ -59,13 +51,13 @@ typedef struct Class {
|
||||
|
||||
extern aClass *classes;
|
||||
|
||||
extern aClass *find_class PROTO((int));
|
||||
extern int get_conf_class PROTO((aConfItem *));
|
||||
extern int get_client_class PROTO((aClient *));
|
||||
extern int get_client_ping PROTO((aClient *));
|
||||
extern int get_con_freq PROTO((aClass *));
|
||||
extern void add_class PROTO((int, int, int, int, long));
|
||||
extern void check_class PROTO((void));
|
||||
extern void initclass PROTO((void));
|
||||
extern aClass *find_class(int);
|
||||
extern int get_conf_class(aConfItem *);
|
||||
extern int get_client_class(aClient *);
|
||||
extern int get_client_ping(aClient *);
|
||||
extern int get_con_freq(aClass *);
|
||||
extern void add_class(int, int, int, int, long);
|
||||
extern void check_class(void);
|
||||
extern void initclass(void);
|
||||
|
||||
#endif /* __class_include__ */
|
||||
|
||||
@@ -29,7 +29,6 @@
|
||||
#include <winsock.h>
|
||||
#include <process.h>
|
||||
#include <io.h>
|
||||
//#include "struct.h"
|
||||
#endif
|
||||
#include "dynconf.h"
|
||||
#include "ircsprintf.h"
|
||||
@@ -38,12 +37,8 @@
|
||||
#include <sys/param.h>
|
||||
#endif
|
||||
|
||||
#ifndef PROTO
|
||||
#if __STDC__
|
||||
# define PROTO(x) x
|
||||
#else
|
||||
# define PROTO(x) ()
|
||||
#endif
|
||||
#if !defined(IN_ADDR)
|
||||
#include "sys.h"
|
||||
#endif
|
||||
|
||||
#ifdef DEVELOP_CVS
|
||||
@@ -90,41 +85,41 @@ void free();
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
#define TS time_t
|
||||
|
||||
extern int match PROTO((char *, char *));
|
||||
|
||||
extern int match(char *, char *);
|
||||
#define mycmp(a,b) \
|
||||
( (toupper((a)[0])!=toupper((b)[0])) || smycmp((a)+1,(b)+1) )
|
||||
extern int smycmp PROTO((char *, char *));
|
||||
( (toupper(a[0])!=toupper(b[0])) || smycmp((a)+1,(b)+1) )
|
||||
extern int smycmp(char *, char *);
|
||||
#ifndef GLIBC2_x
|
||||
extern int myncmp PROTO((char *, char *, int));
|
||||
extern int myncmp(char *, char *, int);
|
||||
#endif
|
||||
|
||||
#ifdef NEED_STRTOK
|
||||
extern char *strtok2 PROTO((char *, char *));
|
||||
extern char *strtok2(char *, char *);
|
||||
#endif
|
||||
#ifdef NEED_STRTOKEN
|
||||
extern char *strtoken PROTO((char **, char *, char *));
|
||||
extern char *strtoken(char **, char *, char *);
|
||||
#endif
|
||||
#ifdef NEED_INET_ADDR
|
||||
extern unsigned long inet_addr PROTO((char *));
|
||||
extern unsigned long inet_addr(char *);
|
||||
#endif
|
||||
|
||||
#if defined(NEED_INET_NTOA) || defined(NEED_INET_NETOF) && !defined(_WIN32)
|
||||
#include <netinet/in.h>
|
||||
#endif
|
||||
#ifdef NEED_INET_NTOA
|
||||
extern char *inet_ntoa PROTO((struct IN_ADDR));
|
||||
extern char *inet_ntoa(struct IN_ADDR);
|
||||
#endif
|
||||
|
||||
#ifdef NEED_INET_NETOF
|
||||
extern int inet_netof PROTO((struct IN_ADDR));
|
||||
extern int inet_netof(struct IN_ADDR);
|
||||
#endif
|
||||
|
||||
int global_count, max_global_count;
|
||||
extern char *myctime PROTO((TS));
|
||||
extern char *strtoken PROTO((char **, char *, char *));
|
||||
extern char *myctime(time_t);
|
||||
extern char *strtoken(char **, char *, char *);
|
||||
|
||||
#define PRECISE_CHECK
|
||||
|
||||
@@ -135,16 +130,20 @@ extern char *strtoken PROTO((char **, char *, char *));
|
||||
#define MIN(a, b) ((a) < (b) ? (a) : (b))
|
||||
#endif
|
||||
|
||||
#define DupString(x,y) do{x=MyMalloc(strlen(y)+1);(void)strcpy(x,y);}while(0)
|
||||
#define DupString(x,y) do{int l=strlen(y);x=MyMalloc(l+1);(void)memcpy(x,y, l+1);}while(0)
|
||||
|
||||
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)])
|
||||
#define tolower(c) (tolowertab[(u_char)(c)])
|
||||
|
||||
#undef toupper
|
||||
#define toupper(c) (touppertab[(c)])
|
||||
#define toupper(c) (touppertab[(u_char)(c)])
|
||||
|
||||
#undef isalpha
|
||||
#undef isdigit
|
||||
@@ -184,8 +183,8 @@ extern unsigned char char_atribs[];
|
||||
#define islower(c) ((char_atribs[(u_char)(c)]&ALPHA) && ((u_char)(c) > 0x5f))
|
||||
#define isupper(c) ((char_atribs[(u_char)(c)]&ALPHA) && ((u_char)(c) < 0x60))
|
||||
#define isdigit(c) (char_atribs[(u_char)(c)]&DIGIT)
|
||||
#define isxdigit(c) (isdigit(c) || 'a' <= (c) && (c) <= 'f' || \
|
||||
'A' <= (c) && (c) <= 'F')
|
||||
#define isxdigit(c) (isdigit(c) || ('a' <= (c) && (c) <= 'f') || \
|
||||
('A' <= (c) && (c) <= 'F'))
|
||||
#define isalnum(c) (char_atribs[(u_char)(c)]&(DIGIT|ALPHA))
|
||||
#define isprint(c) (char_atribs[(u_char)(c)]&PRINT)
|
||||
#define isascii(c) ((u_char)(c) >= 0 && (u_char)(c) <= 0x7f)
|
||||
@@ -193,16 +192,30 @@ 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) do {debug(DEBUG_MALLOC, "%s:%i: free %02x", __FILE__, __LINE__, x); free(x); } while(0)
|
||||
#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);
|
||||
debug(DEBUG_MALLOC, "%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.
|
||||
@@ -217,11 +230,11 @@ extern struct SLink *find_user_link( /* struct SLink *, struct Client * */ );
|
||||
/* IRCu/Hybrid/Unreal way now :) -Stskeeps */
|
||||
|
||||
#define PROTOCTL_CLIENT \
|
||||
":%s 005 %s" \
|
||||
" MAP" \
|
||||
" KNOCK" \
|
||||
" SAFELIST" \
|
||||
" HCN" \
|
||||
" WALLCHOPS" \
|
||||
" WATCH=%i" \
|
||||
" SILENCE=%i" \
|
||||
" MODES=%i" \
|
||||
@@ -232,19 +245,54 @@ extern struct SLink *find_user_link( /* struct SLink *, struct Client * */ );
|
||||
" KICKLEN=%i" \
|
||||
" CHANTYPES=%s" \
|
||||
" PREFIX=%s" \
|
||||
" CHANMODES=%s,%s,%s,%s" \
|
||||
" NETWORK=%s" \
|
||||
" :are supported by this server"
|
||||
|
||||
#define PROTOCTL_PARAMETERS MAXWATCH, \
|
||||
MAXSILES, \
|
||||
MAXMODEPARAMS, \
|
||||
MAXCHANNELSPERUSER, \
|
||||
MAXBANS, \
|
||||
NICKLEN, \
|
||||
TOPICLEN, \
|
||||
TOPICLEN, \
|
||||
"#", \
|
||||
"(ohv)@%+"
|
||||
|
||||
#define PROTOCTL_CLIENT_1 \
|
||||
"MAP" \
|
||||
" KNOCK" \
|
||||
" SAFELIST" \
|
||||
" HCN" \
|
||||
" MAXCHANNELS=%i" \
|
||||
" MAXBANS=%i" \
|
||||
" NICKLEN=%i" \
|
||||
" TOPICLEN=%i" \
|
||||
" KICKLEN=%i" \
|
||||
" MAXTARGETS=%i" \
|
||||
" :are supported by this server"
|
||||
#define PROTOCTL_PARAMETERS_1 \
|
||||
MAXCHANNELSPERUSER, \
|
||||
MAXBANS, \
|
||||
NICKLEN, \
|
||||
TOPICLEN, \
|
||||
TOPICLEN, \
|
||||
MAXTARGETS
|
||||
|
||||
#define PROTOCTL_CLIENT_2 \
|
||||
"WALLCHOPS" \
|
||||
" WATCH=%i" \
|
||||
" SILENCE=%i" \
|
||||
" MODES=%i" \
|
||||
" CHANTYPES=%s" \
|
||||
" PREFIX=%s" \
|
||||
" CHANMODES=%s,%s,%s,%s" \
|
||||
" NETWORK=%s" \
|
||||
" :are supported by this server"
|
||||
|
||||
#define PROTOCTL_PARAMETERS_2 \
|
||||
MAXWATCH, \
|
||||
MAXSILES, \
|
||||
MAXMODEPARAMS, \
|
||||
"#", \
|
||||
"(ohv)@%+", \
|
||||
"ohvbeqa", \
|
||||
"k", \
|
||||
"lfL", \
|
||||
"psmntirRcOAQKVHGCuzN", \
|
||||
ircnet005
|
||||
|
||||
/* Server-Server PROTOCTL -Stskeeps */
|
||||
#define PROTOCTL_SERVER "NOQUIT" \
|
||||
" TOKEN" \
|
||||
@@ -265,6 +313,9 @@ extern struct SLink *find_user_link( /* struct SLink *, struct Client * */ );
|
||||
*/
|
||||
extern int DisplayString(HWND hWnd, char *InBuf, ...);
|
||||
#undef strerror
|
||||
#else
|
||||
typedef int SOCKET;
|
||||
#define INVALID_SOCKET -1
|
||||
#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 */
|
||||
@@ -85,7 +86,7 @@
|
||||
* Defining this will allow all ircops to see people in +s channels
|
||||
* By default, only net/tech admins can see this
|
||||
*/
|
||||
#undef SEE_SECRET
|
||||
#define SHOW_SECRET
|
||||
|
||||
/*
|
||||
* This allows you to see modes in /list
|
||||
@@ -98,7 +99,32 @@
|
||||
#define ADMINCHAT 1
|
||||
|
||||
/*
|
||||
If you want SHUN_NOTICES, define this
|
||||
* If we should catch SIGSEGVs..
|
||||
*/
|
||||
#define PROPER_COREDUMP
|
||||
|
||||
|
||||
/*
|
||||
* If channel mode is +z, only send to secure links & people
|
||||
*
|
||||
*/
|
||||
#undef SECURECHANMSGSONLYGOTOSECURE
|
||||
|
||||
/*
|
||||
* 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
|
||||
|
||||
@@ -125,11 +151,19 @@
|
||||
#undef NO_OPEROVERRIDE
|
||||
|
||||
/*
|
||||
* Disable /sethost, /setident, /chgname, /chghost, /chgident
|
||||
* NAZIISH_CHBAN_HANDLING (formerly ANNOYING_BAN_THING)
|
||||
* Reject bans that are matched by existing bans, causes chanserv
|
||||
* To flood-kick an akicked user if their akick is matched by another
|
||||
* Ban, but if you don't mind, this can free up ban list space I guess
|
||||
*/
|
||||
#undef NAZIISH_CHBAN_HANDLING
|
||||
|
||||
/*
|
||||
* Disable /sethost, /setident, /chgname, /chghost, /chgident
|
||||
*/
|
||||
#undef DISABLE_USERMOD
|
||||
|
||||
/*
|
||||
/*
|
||||
Ident checking
|
||||
#define this to disable ident checking
|
||||
*/
|
||||
@@ -176,6 +210,11 @@
|
||||
*/
|
||||
#undef COMMENT_IS_FILE
|
||||
|
||||
/*
|
||||
* MAXUNKNOWNCONNECTIONSPERIP
|
||||
*/
|
||||
#define MAXUNKNOWNCONNECTIONSPERIP 3
|
||||
|
||||
|
||||
/* Do these work? I dunno... */
|
||||
|
||||
@@ -201,9 +240,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.
|
||||
@@ -223,7 +263,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 */
|
||||
@@ -236,24 +276,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.
|
||||
@@ -315,36 +337,6 @@
|
||||
#define CMDLINE_CONFIG /* allow conf-file to be specified on command line */
|
||||
|
||||
/*
|
||||
* If you wish to have the server send 'vital' messages about server
|
||||
* through syslog, define USE_SYSLOG. Only system errors and events critical
|
||||
* to the server are logged although if this is defined with FNAME_USERLOG,
|
||||
* syslog() is used instead of the above file. It is not recommended that
|
||||
* this option is used unless you tell the system administrator beforehand
|
||||
* and obtain their permission to send messages to the system log files.
|
||||
*/
|
||||
#ifndef _WIN32
|
||||
#undef USE_SYSLOG
|
||||
#endif
|
||||
|
||||
#ifdef USE_SYSLOG
|
||||
/*
|
||||
* If you use syslog above, you may want to turn some (none) of the
|
||||
* spurious log messages for KILL/SQUIT off.
|
||||
*/
|
||||
#undef SYSLOG_KILL /* log all operator kills to syslog */
|
||||
#undef SYSLOG_SQUIT /* log all remote squits for all servers to syslog */
|
||||
#undef SYSLOG_CONNECT /* log remote connect messages for other all servs */
|
||||
#undef SYSLOG_USERS /* send userlog stuff to syslog */
|
||||
#undef SYSLOG_OPER /* log all users who successfully become an Op */
|
||||
|
||||
/*
|
||||
* If you want to log to a different facility than DAEMON, change
|
||||
* this define.
|
||||
*/
|
||||
#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.
|
||||
@@ -377,7 +369,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
|
||||
@@ -405,7 +397,7 @@
|
||||
*/
|
||||
#define CLIENT_FLOOD 8000
|
||||
|
||||
/*
|
||||
/*
|
||||
* Define your network service names here.
|
||||
*/
|
||||
#define ChanServ "ChanServ"
|
||||
@@ -427,31 +419,7 @@
|
||||
*/
|
||||
|
||||
#define MAXTARGETS 20
|
||||
#define TARGET_DELAY 120
|
||||
|
||||
/*
|
||||
* Would you like all clients to see the progress of their connections?
|
||||
*/
|
||||
|
||||
#define SHOWCONNECTINFO
|
||||
|
||||
/*
|
||||
* SOCKS proxy checker
|
||||
*
|
||||
* At the moment this isn't an ideal solution, however it's better
|
||||
* than nothing. Smaller servers shouldn't notice much of a performance
|
||||
* hit, larger servers might have to reduce their Y-lines. In either
|
||||
* case it's advisable to increase the number of FD's you define by
|
||||
* about 10%.
|
||||
*
|
||||
* This determines the port on the local ircd machine that the open
|
||||
* SOCKS server test attempts to connect back to. The default should
|
||||
* be fine except for those unusual situations where the default
|
||||
* port is in use for some reason.
|
||||
*
|
||||
* Undefining this will eliminate the checker from ircd.
|
||||
*/
|
||||
#define SOCKSPORT 6013
|
||||
#define TARGET_DELAY 15
|
||||
|
||||
/* STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP */
|
||||
|
||||
@@ -474,7 +442,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
|
||||
@@ -507,7 +475,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 */
|
||||
|
||||
@@ -520,7 +488,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 */
|
||||
@@ -595,19 +563,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
|
||||
#undef LEAST_IDLE
|
||||
|
||||
#if defined(mips) || defined(PCS)
|
||||
#undef SYSV
|
||||
@@ -621,14 +594,14 @@ extern void debug();
|
||||
#ifdef BSD_RELIABLE_SIGNALS
|
||||
# if defined(SYSV_UNRELIABLE_SIGNALS) || defined(POSIX_SIGNALS)
|
||||
error You stuffed up config.h signals
|
||||
#defines use only one.
|
||||
#define use only one.
|
||||
# endif
|
||||
#define HAVE_RELIABLE_SIGNALS
|
||||
#endif
|
||||
#ifdef SYSV_UNRELIABLE_SIGNALS
|
||||
# ifdef POSIX_SIGNALS
|
||||
error You stuffed up config.h signals
|
||||
#defines use only one.
|
||||
#define use only one.
|
||||
# endif
|
||||
#undef HAVE_RELIABLE_SIGNALS
|
||||
#endif
|
||||
@@ -683,7 +656,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
|
||||
@@ -696,14 +669,23 @@ error You stuffed up config.h signals
|
||||
#endif
|
||||
/* use cflag longmodes */
|
||||
#define USE_LONGMODE
|
||||
#define Reg1 register
|
||||
#define Reg2 register
|
||||
#define Reg3 register
|
||||
#define Reg4 register
|
||||
#define Reg5 register
|
||||
#define Reg6 register
|
||||
#define Reg7 register
|
||||
#define Reg8 register
|
||||
#define Reg9 register
|
||||
#define Reg10 register
|
||||
#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__ */
|
||||
|
||||
|
||||
@@ -22,14 +22,6 @@
|
||||
#ifndef __dbuf_include__
|
||||
#define __dbuf_include__
|
||||
|
||||
#ifndef PROTO
|
||||
#ifdef __STDC__
|
||||
# define PROTO(x) x
|
||||
#else
|
||||
# define PROTO(x) ()
|
||||
#endif /* __STDC__ */
|
||||
#endif /* ! PROTO */
|
||||
|
||||
/*
|
||||
** dbuf is a collection of functions which can be used to
|
||||
** maintain a dynamic buffering of a byte stream.
|
||||
@@ -76,7 +68,7 @@ typedef struct dbufbuf {
|
||||
** returns > 0, if operation successfull
|
||||
** < 0, if failed (due memory allocation problem)
|
||||
*/
|
||||
int dbuf_put PROTO((dbuf *, char *, int));
|
||||
int dbuf_put(dbuf *, char *, int);
|
||||
/* Dynamic buffer header */
|
||||
/* Pointer to data to be stored */
|
||||
/* Number of bytes to store */
|
||||
@@ -96,7 +88,7 @@ int dbuf_put PROTO((dbuf *, char *, int));
|
||||
** Negative return values indicate some unspecified
|
||||
** error condition, rather fatal...
|
||||
*/
|
||||
int dbuf_get PROTO((dbuf *, char *, int));
|
||||
int dbuf_get(dbuf *, char *, int);
|
||||
/* Dynamic buffer header */
|
||||
/* Pointer to buffer to receive the data */
|
||||
/* Max amount of bytes that can be received */
|
||||
@@ -125,11 +117,11 @@ int dbuf_get PROTO((dbuf *, char *, int));
|
||||
** Note: delete can be used alone, there is no real binding
|
||||
** between map and delete functions...
|
||||
*/
|
||||
char *dbuf_map PROTO((dbuf *, int *));
|
||||
char *dbuf_map(dbuf *, int *);
|
||||
/* Dynamic buffer header */
|
||||
/* Return number of bytes accessible */
|
||||
|
||||
int dbuf_delete PROTO((dbuf *, int));
|
||||
int dbuf_delete(dbuf *, int);
|
||||
/* Dynamic buffer header */
|
||||
/* Number of bytes to delete */
|
||||
|
||||
@@ -148,6 +140,6 @@ int dbuf_delete PROTO((dbuf *, int));
|
||||
*/
|
||||
#define DBufClear(dyn) dbuf_delete((dyn),DBufLength(dyn))
|
||||
|
||||
extern int dbuf_getmsg PROTO((dbuf *, char *, int));
|
||||
extern int dbuf_getmsg(dbuf *, char *, int);
|
||||
|
||||
#endif /* __dbuf_include__ */
|
||||
|
||||
@@ -28,8 +28,13 @@
|
||||
|
||||
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;
|
||||
@@ -38,9 +43,8 @@ struct zNetwork {
|
||||
char *x_sadmin_host;
|
||||
char *x_netadmin_host;
|
||||
char *x_coadmin_host;
|
||||
char *x_techadmin_host;
|
||||
char *x_hidden_host;
|
||||
char *x_netdomain;
|
||||
char *x_prefix_quit;
|
||||
char *x_helpchan;
|
||||
char *x_stats_server;
|
||||
};
|
||||
@@ -48,31 +52,24 @@ 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;
|
||||
char *name_server;
|
||||
char *kline_address;
|
||||
char *include;
|
||||
char *domainname;
|
||||
char *domainmask; /* '*' + domainname */
|
||||
long conn_modes;
|
||||
long oper_modes;
|
||||
char *auto_join_chans;
|
||||
char *oper_auto_join_chans;
|
||||
int socksbantime;
|
||||
char *oper_only_stats;
|
||||
int maxchannelsperuser;
|
||||
char *socksbanmessage;
|
||||
char *socksquitmessage;
|
||||
int anti_spam_quit_message_time;
|
||||
aNetwork network;
|
||||
};
|
||||
|
||||
@@ -81,14 +78,8 @@ 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 OPER_MODES iConf.oper_modes
|
||||
#define SHOWOPERMOTD iConf.som
|
||||
#define HIDE_ULINES iConf.hide_ulines
|
||||
#define ALLOW_CHATOPS iConf.allow_chatops
|
||||
@@ -99,8 +90,15 @@ extern aConfiguration iConf;
|
||||
#define OPER_AUTO_JOIN_CHANS iConf.oper_auto_join_chans
|
||||
#define HOST_TIMEOUT iConf.host_timeout
|
||||
#define HOST_RETRIES iConf.host_retries
|
||||
#define 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
|
||||
@@ -111,9 +109,12 @@ extern aConfiguration iConf;
|
||||
#define coadmin_host iConf.network.x_coadmin_host
|
||||
#define techadmin_host iConf.network.x_techadmin_host
|
||||
#define hidden_host iConf.network.x_hidden_host
|
||||
#define netdomain iConf.network.x_netdomain
|
||||
#define helpchan iConf.network.x_helpchan
|
||||
#define STATS_SERVER iConf.network.x_stats_server
|
||||
#define iNAH iConf.network.x_inah
|
||||
#define net_quit iConf.network.x_net_quit
|
||||
#define STOPSE iConf.network.x_se
|
||||
#define prefix_quit iConf.network.x_prefix_quit
|
||||
|
||||
#define CLOAK_KEY1 iConf.network.key
|
||||
#define CLOAK_KEY2 iConf.network.key2
|
||||
#define CLOAK_KEY3 iConf.network.key3
|
||||
#define CLOAK_KEYCRC iConf.network.keycrc
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
/************************************************************************
|
||||
* 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$
|
||||
*/
|
||||
#include "modules.h"
|
||||
@@ -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
|
||||
|
||||
@@ -28,33 +28,120 @@
|
||||
#ifndef NO_FDLIST
|
||||
#include "fdlist.h"
|
||||
#endif
|
||||
|
||||
extern char *extraflags;
|
||||
extern int tainted;
|
||||
/* for the new s_err.c */
|
||||
extern char *getreply(int);
|
||||
#define rpl_str(x) getreply(x)
|
||||
#define err_str(x) getreply(x)
|
||||
|
||||
extern Member *freemember;
|
||||
extern Membership *freemembership;
|
||||
extern MembershipL *freemembershipL;
|
||||
extern TS nextconnect, nextdnscheck, nextping;
|
||||
extern aClient *client, me, *local[];
|
||||
extern aChannel *channel;
|
||||
extern struct stats *ircstp;
|
||||
extern int bootopt;
|
||||
extern TS TSoffset;
|
||||
extern time_t TSoffset;
|
||||
/* Prototype added to force errors -- Barubary */
|
||||
extern TS check_pings(TS now, int check_kills);
|
||||
extern TS check_pings(TS now);
|
||||
extern TS TS2ts(char *s);
|
||||
extern time_t timeofday;
|
||||
/* newconf */
|
||||
#define get_sendq(x) ((x)->class ? (x)->class->sendq : MAXSENDQLENGTH)
|
||||
|
||||
#define CMD_FUNC(x) int (x) (aClient *cptr, aClient *sptr, int parc, char *parv[])
|
||||
|
||||
#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_ssl *conf_ssl;
|
||||
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 ConfigItem_help *conf_help;
|
||||
extern void clear_unknown();
|
||||
extern EVENT(tkl_check_expire);
|
||||
extern EVENT(e_unload_module_delayed);
|
||||
extern void module_loadall(int module_load);
|
||||
extern long set_usermode(char *umode);
|
||||
extern char *get_modestr(long umodes);
|
||||
extern void tkl_stats(aClient *cptr);
|
||||
extern void config_error(char *format, ...);
|
||||
extern void config_progress(char *format, ...);
|
||||
extern void ipport_seperate(char *string, char **ip, char **port);
|
||||
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);
|
||||
ConfigItem_help *Find_Help(char *command);
|
||||
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 aClient *find_match_server(char *mask);
|
||||
extern LoopStruct loop;
|
||||
|
||||
extern int del_banid(aChannel *chptr, char *banid);
|
||||
extern int del_exbanid(aChannel *chptr, char *banid);
|
||||
#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 +154,289 @@ 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 Membership *find_membership_link(Membership *lp, aChannel *ptr);
|
||||
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_table(aClient *);
|
||||
extern void iNAH_host(aClient *sptr, char *host);
|
||||
extern void set_snomask(aClient *sptr, char *snomask);
|
||||
extern char *get_sno_str(aClient *sptr);
|
||||
/* 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 *);
|
||||
|
||||
#if !defined(HAVE_SNPRINT) || !defined(HAVE_VSNPRINTF)
|
||||
#ifndef _WIN32
|
||||
extern int snprintf (char *str, size_t count, const char *fmt, ...);
|
||||
extern int vsnprintf (char *str, size_t count, const char *fmt, va_list arg);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#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 int send_queued PROTO((aClient *));
|
||||
/*VARARGS2*/
|
||||
// extern void sendto_one(char *, ...);
|
||||
/*VARARGS4*/
|
||||
extern void restart(char *);
|
||||
extern void send_channel_modes(aClient *, aChannel *);
|
||||
extern void server_reboot(char *);
|
||||
extern void terminate(), write_pidfile();
|
||||
extern void *MyMallocEx(size_t size);
|
||||
extern int advanced_check(char *userhost, int ipstat);
|
||||
extern int send_queued(aClient *);
|
||||
/* i know this is naughty but :P --stskeeps */
|
||||
extern void send_channel_modes_sjoin(aClient *cptr, aChannel *chptr);
|
||||
extern void send_channel_modes_sjoin3(aClient *cptr, aChannel *chptr);
|
||||
extern void sendto_locfailops(char *pattern, ...);
|
||||
extern void sendto_connectnotice(char *nick, anUser *user, aClient *sptr);
|
||||
extern void sendto_serv_butone_nickcmd(aClient *one, aClient *sptr, char *nick, int hopcount,
|
||||
int lastnick, char *username, char *realhost, char *server, long servicestamp, char *info, char *umodes,
|
||||
char *virthost);
|
||||
extern void sendto_channels_inviso_part(aClient *user);
|
||||
extern void sendto_channels_inviso_join(aClient *user);
|
||||
extern void sendto_message_one(aClient *to, aClient *from, char *sender,
|
||||
char *cmd, char *nick, char *msg);
|
||||
extern void sendto_channelprefix_butone_tok(aClient *one, aClient *from, aChannel *chptr,
|
||||
int prefix, char *cmd, char *tok, char *nick, char *text);
|
||||
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 void sendto_snomask(int snomask, char *pattern, ...);
|
||||
extern int writecalls, writeb[];
|
||||
extern int deliver_it PROTO((aClient *, char *, int));
|
||||
extern int deliver_it(aClient *, char *, int);
|
||||
extern int check_for_chan_flood(aClient *cptr, aClient *sptr, aChannel *chptr);
|
||||
extern int check_for_target_limit(aClient *sptr, void *target, const char *name);
|
||||
extern char *stripbadwords_message(char *str);
|
||||
extern char *stripbadwords_channel(char *str);
|
||||
extern unsigned char *StripColors(unsigned char *);
|
||||
extern char *canonize(char *buffer);
|
||||
extern int webtv_parse(aClient *sptr, char *string);
|
||||
extern ConfigItem_deny_dcc *dcc_isforbidden(aClient *cptr, aClient *sptr, aClient *target, char *filename);
|
||||
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 *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 int hunt_server_token(aClient *, aClient *, char *, char *, 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 int umode_delete(char ch, long val);
|
||||
extern void send_umode(aClient *, aClient *, long, long, char *);
|
||||
extern void send_umode_out(aClient *, aClient *, long);
|
||||
|
||||
extern int check_registered PROTO((aClient *));
|
||||
extern int check_registered_user PROTO((aClient *));
|
||||
extern char *get_client_name PROTO((aClient *, int));
|
||||
extern char *get_client_host PROTO((aClient *));
|
||||
extern char *my_name_for_link PROTO((char *, aConfItem *));
|
||||
extern char *myctime PROTO((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 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();
|
||||
#ifndef _WIN32
|
||||
extern struct hostent *get_res(char *);
|
||||
#else
|
||||
extern struct hostent *get_res(char *, long);
|
||||
#endif
|
||||
extern struct hostent *gethost_byaddr(char *, Link *);
|
||||
extern struct hostent *gethost_byname(char *, Link *);
|
||||
extern void flush_cache();
|
||||
extern int init_resolver(int);
|
||||
extern time_t timeout_query_list(time_t);
|
||||
extern time_t expire_cache(time_t);
|
||||
extern void del_queries(char *);
|
||||
|
||||
extern int parse PROTO((aClient *, char *, char *, struct Message *));
|
||||
extern int do_numeric PROTO((int, aClient *, aClient *, int, char **));
|
||||
extern int hunt_server PROTO((aClient *, aClient *, char *, int, int, char **));
|
||||
extern aClient *next_client PROTO((aClient *, char *));
|
||||
extern int m_umode PROTO((aClient *, aClient *, int, char **));
|
||||
extern int m_names PROTO((aClient *, aClient *, int, char **));
|
||||
extern int m_server_estab PROTO((aClient *));
|
||||
extern void send_umode PROTO((aClient *, aClient *, long, long, char *));
|
||||
extern void send_umode_out PROTO((aClient *, aClient *, long));
|
||||
|
||||
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 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 time_t 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();
|
||||
#ifndef HAVE_STRLCPY
|
||||
size_t strlcpy(char *dst, const char *src, size_t size);
|
||||
#endif
|
||||
#ifndef HAVE_STRLCAT
|
||||
size_t strlcat(char *dst, const char *src, size_t size);
|
||||
#endif
|
||||
#ifndef HAVE_STRLNCAT
|
||||
size_t strlncat(char *dst, const char *src, size_t size, size_t n);
|
||||
#endif
|
||||
|
||||
|
||||
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 +444,93 @@ 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);
|
||||
char *Inet_ia2pNB(struct IN_ADDR *ia, int compressed);
|
||||
|
||||
/*
|
||||
* CommandHash -Stskeeps
|
||||
*/
|
||||
extern aCommand *CommandHash[256];
|
||||
extern void init_CommandHash(void);
|
||||
extern aCommand *add_Command_backend(char *cmd, int (*func)(), unsigned char parameters, unsigned char token, int flags);
|
||||
extern void add_Command(char *cmd, char *token, int (*func)(), unsigned char parameters);
|
||||
extern void add_Command_to_list(aCommand *item, aCommand **list);
|
||||
extern aCommand *del_Command_from_list(aCommand *item, aCommand **list);
|
||||
extern int del_Command(char *cmd, char *token, int (*func)());
|
||||
extern void add_CommandX(char *cmd, char *token, int (*func)(), unsigned char parameters, int flags);
|
||||
|
||||
/* 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);
|
||||
extern long xbase64dec(char *b64);
|
||||
extern aClient *find_server_b64_or_real(char *name);
|
||||
extern aClient *find_server_by_base64(char *b64);
|
||||
extern int is_chanownprotop(aClient *cptr, aChannel *chptr);
|
||||
extern char *make_virthost(char *curr, char *new, int mode);
|
||||
extern int channel_canjoin(aClient *sptr, char *name);
|
||||
extern char *collapse(char *pattern);
|
||||
extern void send_list(aClient *cptr, int numsend);
|
||||
extern int find_tkline_match_zap(aClient *cptr);
|
||||
extern void tkl_synch(aClient *sptr);
|
||||
extern void dcc_sync(aClient *sptr);
|
||||
extern void report_flines(aClient *sptr);
|
||||
extern void report_network(aClient *sptr);
|
||||
extern void report_dynconf(aClient *sptr);
|
||||
extern void count_memory(aClient *cptr, char *nick);
|
||||
extern void list_scache(aClient *sptr);
|
||||
extern void ns_stats(aClient *cptr);
|
||||
extern char *oflagstr(long oflag);
|
||||
extern int rehash(aClient *cptr, aClient *sptr, int sig);
|
||||
extern int _match(char *mask, char *name);
|
||||
extern void outofmemory(void);
|
||||
extern unsigned long crc32(const unsigned char *s, unsigned int len);
|
||||
extern int add_listener2(ConfigItem_listen *conf);
|
||||
extern void link_cleanup(ConfigItem_link *link_ptr);
|
||||
extern void listen_cleanup();
|
||||
extern int numeric_collides(long numeric);
|
||||
extern u_long cres_mem(aClient *sptr, char *nick);
|
||||
extern void flag_add(char *ch);
|
||||
extern void flag_del(char ch);
|
||||
extern void init_dynconf(void);
|
||||
extern int init_conf2(char *filename);
|
||||
extern void validate_configuration(void);
|
||||
extern void run_configuration(void);
|
||||
extern aMotd *read_file(char *filename, aMotd **list);
|
||||
CMD_FUNC(m_server_remote);
|
||||
extern char *xbase64enc(long i);
|
||||
extern void unload_all_modules(void);
|
||||
extern void flush_fdlist_connections(fdlist * listp);
|
||||
extern int set_blocking(int fd);
|
||||
extern void set_sock_opts(int fd, aClient *cptr);
|
||||
extern void iCstrip(char *line);
|
||||
extern time_t rfc2time(char *s);
|
||||
extern char *rfctime(time_t t, char *buf);
|
||||
#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,9 @@
|
||||
#ifdef __STDC__
|
||||
# ifndef _WIN32
|
||||
extern __u_l inet_addr(char *);
|
||||
extern char *inet_ntoa(char *);
|
||||
extern char *inet_ntoa(struct in_addr);
|
||||
extern int inet_aton(const char *, struct in_addr *);
|
||||
extern int inet_netof(struct in_addr);
|
||||
# endif
|
||||
extern __u_l inet_makeaddr(int, int);
|
||||
extern __u_l inet_network(char *);
|
||||
|
||||
@@ -16,9 +16,6 @@
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* This file may not be removed from the IRCd package.
|
||||
* It will be a violation of copyright.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
@@ -27,14 +24,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
static char *Statement[] = {
|
||||
" * This file may not be removed from the IRCd package.",
|
||||
" * It will be a violation of copyright. This program must always",
|
||||
" * stay free and not be charged for, being sold commercially or privately",
|
||||
" * Only charge may be for the transport medium like one CD-ROM, floppy",
|
||||
" * or other kinds.",
|
||||
0
|
||||
};
|
||||
|
||||
char *gnulicense[] = {
|
||||
" \2UnrealIRCd License\2",
|
||||
|
||||