mirror of
https://github.com/unrealircd/unrealircd.git
synced 2026-06-24 23:26:36 +02:00
Compare commits
1749 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2d209cb976 | |||
| e1574bf1e3 | |||
| 4008e3745f | |||
| ee447742c8 | |||
| 618da4ab5e | |||
| df6e300ecd | |||
| aa6ed2085f | |||
| 24e14eb26f | |||
| 087b306429 | |||
| 1157b77e5e | |||
| 59fbe14175 | |||
| 4d9482c92b | |||
| 371ae17e1c | |||
| f8fbe5e4f0 | |||
| 2cbb7a4a00 | |||
| 8e72ba376b | |||
| cb8e31af86 | |||
| 7ddb51c09f | |||
| 5eb7e9eead | |||
| 80806af8bd | |||
| ceba1d07c6 | |||
| 143858cc5b | |||
| 08871c1e6a | |||
| 1470edd1f7 | |||
| c92df824a5 | |||
| 8ef4e93bc1 | |||
| 57fcb26be2 | |||
| 5dda9cb79d | |||
| 3fe7955615 | |||
| f72574ae22 | |||
| 29b319cb99 | |||
| 10d8bd7ba8 | |||
| cfec5bb08a | |||
| 7ed4b2cac9 | |||
| 9a7ec92d48 | |||
| a70e82c418 | |||
| 1b60d7c763 | |||
| b3398d709c | |||
| 1a1cb25c98 | |||
| 5a847b490c | |||
| aac9b61d9c | |||
| 49ad2b388d | |||
| b0914f9a44 | |||
| 2f0cab1ac1 | |||
| 64776556a9 | |||
| 71102b1d41 | |||
| 0db5417b83 | |||
| 34cab7caff | |||
| 938b591358 | |||
| 8a39b26e56 | |||
| 26847b8692 | |||
| 3acf7b2faa | |||
| 16bd395632 | |||
| 39dd1eaca8 | |||
| 17b5922cea | |||
| a5e7197daf | |||
| f1d9606b4f | |||
| c68c7918dd | |||
| 5a71b706c3 | |||
| abae8bad84 | |||
| 627bfd9cf7 | |||
| e67274fc69 | |||
| 7e24744601 | |||
| cf1a52a927 | |||
| 5268649357 | |||
| 6c69183d5a | |||
| 6baddddc8e | |||
| 0414d09660 | |||
| 2883eea6c7 | |||
| bcb97efdb3 | |||
| 751584bbcb | |||
| 4927abe5b4 | |||
| 48bc3b2f74 | |||
| 91c3283cfa | |||
| f6c843d38f | |||
| df37d83f8b | |||
| 9f710925f8 | |||
| 7041116ec0 | |||
| 311efc56b4 | |||
| 9c30f7b685 | |||
| b994ad33bd | |||
| 6e837537a8 | |||
| 4cb6ed06c8 | |||
| 84007d4c16 | |||
| 0c8f523e1d | |||
| 13a946d0e0 | |||
| 805f1988ec | |||
| aa0f869213 | |||
| cb60ae3442 | |||
| dcb34f43f6 | |||
| d603a53e4e | |||
| baa7d5f4f3 | |||
| ef64b411c8 | |||
| 1309531df8 | |||
| 58260b3917 | |||
| b8026bbc50 | |||
| 6dab6c11b1 | |||
| f6e12c316b | |||
| 59e35dc066 | |||
| 7f8009c4c1 | |||
| 08d8c52885 | |||
| e821be52d3 | |||
| 202318cb12 | |||
| b36a576461 | |||
| 5a3e54c385 | |||
| 292b6ae15c | |||
| 0ae8d7c075 | |||
| 7c86c421c9 | |||
| e5502a3ca0 | |||
| 196a4e323e | |||
| f56639bff0 | |||
| c13ab74144 | |||
| c46205e79d | |||
| a4f69bee1a | |||
| 07b2fbb35e | |||
| 28c19679b2 | |||
| 643355b387 | |||
| 779444448c | |||
| d107a4a6a8 | |||
| d5167c69ad | |||
| da0d21fe57 | |||
| 372fbe7af9 | |||
| d53d7156ae | |||
| 64dcfe6073 | |||
| a2137bda71 | |||
| 6e8b77aa86 | |||
| a741b152c3 | |||
| 4237409031 | |||
| 820fae9054 | |||
| 78952aed40 | |||
| 81dd721ed1 | |||
| ba262c4a56 | |||
| 028f6ff83b | |||
| 73c2f8174d | |||
| e089980d2a | |||
| b09466c8ee | |||
| 639fc51d59 | |||
| 77bc5ab29d | |||
| 6933245997 | |||
| 4a66f658f7 | |||
| 685517eadb | |||
| 4cb8605d95 | |||
| e95ef070d1 | |||
| 64ef568a48 | |||
| 492e30676c | |||
| ed8b8da20b | |||
| 08f86d9b2e | |||
| 574ebf6eed | |||
| b19cb1dcae | |||
| bf40486341 | |||
| 63dd326113 | |||
| 17c97c8442 | |||
| ef7a94164c | |||
| 2d11cf09b9 | |||
| 6ee99cde84 | |||
| d717e0fc62 | |||
| a87f26d911 | |||
| 1a01e725c7 | |||
| 1605db3ced | |||
| ae6415afa0 | |||
| 3dc7f640b8 | |||
| 0bbd7a58cf | |||
| 7bb6728af4 | |||
| c305b860b5 | |||
| bcd89f7db8 | |||
| fface35935 | |||
| b83f096e48 | |||
| a744b9b212 | |||
| ffda323d9d | |||
| 27e4c6f3f7 | |||
| 2c0e131dc7 | |||
| 8895f1e60d | |||
| 9643607334 | |||
| c144008217 | |||
| 35ec730f8b | |||
| 9a5c536cce | |||
| da48cfc039 | |||
| 36c0bdde2e | |||
| 9f823be20b | |||
| 964bb656c7 | |||
| 96da66cf7a | |||
| d46bdd4841 | |||
| e473fbc44c | |||
| 6dcb276f8d | |||
| d012c49f1b | |||
| 7272715cec | |||
| 30c5236f25 | |||
| 2d10ab189d | |||
| fae4629c46 | |||
| a71a1a394f | |||
| 75d4fecb4b | |||
| a0b4fe90ec | |||
| 0b54bd259e | |||
| d8b2069bce | |||
| aaa52b3443 | |||
| f584875279 | |||
| 14472ae09b | |||
| bea978de96 | |||
| 58151df3b7 | |||
| a6c7bb1043 | |||
| 901b9c272a | |||
| e540730751 | |||
| 0a34af8720 | |||
| 94c2b58366 | |||
| a1d076367e | |||
| eb1f41bd9c | |||
| 27c437c953 | |||
| 889dd73f15 | |||
| 46668768cf | |||
| 85904c2277 | |||
| d0cb4dc5f5 | |||
| c4abef39cd | |||
| 7a3bf15558 | |||
| 48b76358f4 | |||
| 48b270347a | |||
| 7c23a98292 | |||
| 8b6967d8b9 | |||
| c40fc340b8 | |||
| 35c30baace | |||
| b2e4cf82f8 | |||
| 45aeb1e61d | |||
| 2510f2c94b | |||
| 4eff1e8493 | |||
| c9acb9d1c7 | |||
| 6b3132e0c6 | |||
| c514288a0a | |||
| f4630c24e0 | |||
| f72ad19637 | |||
| d09b68a942 | |||
| c2279a9298 | |||
| 4cc0244c58 | |||
| 4238fff401 | |||
| d421282cf5 | |||
| 649818d4ad | |||
| ac81a9cd9a | |||
| bd636c4e6d | |||
| 7dbf154d04 | |||
| 5cf8ee21a0 | |||
| 2a6a4b31ff | |||
| c3ea2568b2 | |||
| 7fdd8cce96 | |||
| 11d84d8534 | |||
| 1e5e60d635 | |||
| a523cec997 | |||
| 2980fe011f | |||
| 8ee34484b4 | |||
| c1ca937861 | |||
| aa0c706bff | |||
| 2828e7f8b2 | |||
| 9faa5a6d2b | |||
| d7835d959e | |||
| 6e34938c59 | |||
| 06e807130c | |||
| fc1e848a2a | |||
| 5cf1dc144a | |||
| 304e3ad0d4 | |||
| 6ab3862520 | |||
| 9e64a0121c | |||
| f1ec26a07c | |||
| 625102cacd | |||
| a9e547614b | |||
| a4fc53fc3a | |||
| ab7957a6a8 | |||
| f4e4df6d6a | |||
| df9d102d98 | |||
| 9f6492169b | |||
| fe33820f02 | |||
| 1f89c2f6df | |||
| 38b7350f7c | |||
| 80c21aac2e | |||
| 046eb67100 | |||
| 23f72648c4 | |||
| c0790e90de | |||
| 5f05b3c80b | |||
| 0c939fa194 | |||
| 24d0463d4c | |||
| 8e26c4b540 | |||
| cd3dd80c54 | |||
| e3be08d5d1 | |||
| 84a19ab091 | |||
| e422f24d52 | |||
| a7ea2f49b3 | |||
| b245850fb0 | |||
| 86d8796b77 | |||
| e47baea5da | |||
| 982e5a82c0 | |||
| 1af446e5a3 | |||
| fb68c66f31 | |||
| a41384b37f | |||
| ef745b3423 | |||
| d4d58c1247 | |||
| bd999808d7 | |||
| ee078bb165 | |||
| ab2776eb6b | |||
| b2332556ac | |||
| 3bcb2fe524 | |||
| d794786ec0 | |||
| 8171ea4fd8 | |||
| 89e70ff23f | |||
| a19e31dbd0 | |||
| 75ce9d27e7 | |||
| 9c22c743c6 | |||
| 1defbfc962 | |||
| 1d79699c0d | |||
| 341bb11423 | |||
| 9259ddee06 | |||
| 9d3c5ce8e1 | |||
| 32ab3cba8b | |||
| 7ad6dcd977 | |||
| 6b28bfd1b7 | |||
| cb7c1a821b | |||
| e3da8c7ebe | |||
| 55fbab833b | |||
| ee2f4f5f22 | |||
| dddc8f07e4 | |||
| 080a2d6810 | |||
| cb385bc103 | |||
| feb5d81406 | |||
| 0039f7db25 | |||
| 75685b1684 | |||
| 1eb2a21b49 | |||
| 8f1f47aece | |||
| 20c00d3697 | |||
| 086d464c8a | |||
| 49fa3ed3d8 | |||
| 8b637e344b | |||
| f5d9a87f08 | |||
| 5a0a71de03 | |||
| a5bd782cdf | |||
| 829247a272 | |||
| 6aab6d748d | |||
| 7dee0cdcf1 | |||
| 0ebf84d100 | |||
| aceb72f52e | |||
| a28d62c5f0 | |||
| 236808d8b4 | |||
| 9c234ffdf8 | |||
| 22bf17ddc7 | |||
| 355cc16d32 | |||
| 2ed84ed506 | |||
| e92e2c22c3 | |||
| 51d30af3fd | |||
| 945bceb218 | |||
| 169f754f01 | |||
| c7ea6217e5 | |||
| f60c2574d3 | |||
| c6c2cf9371 | |||
| 4d79d9f5d2 | |||
| 8bf078190e | |||
| 1922d94bf9 | |||
| 4ea0a642ff | |||
| 110b0aa9ac | |||
| d9a77b8112 | |||
| c6ca269538 | |||
| 2921b50e00 | |||
| 125102aad7 | |||
| a5deb6bb23 | |||
| 6319b36e2a | |||
| 660f7d97c4 | |||
| 7ca4d97ae9 | |||
| 4558c380c5 | |||
| fa0060ed27 | |||
| 147b5013aa | |||
| 9b7033b9fe | |||
| cd19366da1 | |||
| 57618c1c6d | |||
| 698660b485 | |||
| dc6eebbe09 | |||
| b070d8805c | |||
| 69b7a3c35d | |||
| dfcdaaa152 | |||
| 3fbec6bf4e | |||
| 8ebb8dfbd6 | |||
| 2efc764311 | |||
| ec7429fb4b | |||
| 6ff6367008 | |||
| f3733c32ca | |||
| 66e4674f3f | |||
| d45a18d7b2 | |||
| 5d8532eb86 | |||
| 5f727eec74 | |||
| 70ec1b1ef8 | |||
| fb60748df2 | |||
| 68ec992861 | |||
| 433760a916 | |||
| 891daa18b4 | |||
| 76c107edba | |||
| cd30253ea2 | |||
| c7b782693c | |||
| f692661583 | |||
| e794eaa393 | |||
| 16d9810740 | |||
| 762bbd407b | |||
| 6df508b06a | |||
| 6687c3188d | |||
| c51039b750 | |||
| c811a925a4 | |||
| 8c13a60907 | |||
| 6dfb1a7847 | |||
| f6e1a74fca | |||
| ac00905029 | |||
| be55051f44 | |||
| 6196abbf7b | |||
| a0e4982335 | |||
| bd4292e301 | |||
| 0ae378c5ce | |||
| a094103c67 | |||
| de4eb8ec75 | |||
| cc8a592557 | |||
| 529bd19465 | |||
| 7dced92085 | |||
| fc5f1c0042 | |||
| 4a4f518380 | |||
| d051624476 | |||
| 2fd46b9cd7 | |||
| 0fba832934 | |||
| 144d2dcd82 | |||
| 662af43a45 | |||
| fd043453b9 | |||
| a62456b243 | |||
| 49f05da55c | |||
| bccb8dba2a | |||
| 46deee2cdc | |||
| 09cf365162 | |||
| 6426b73838 | |||
| 8918b99248 | |||
| 98db288079 | |||
| 72c0cb09e9 | |||
| 651add103b | |||
| 3aa9afefeb | |||
| 8f00cf9dd1 | |||
| 20b66249ca | |||
| c6661334a9 | |||
| 4a431863c6 | |||
| df508ff00c | |||
| ada0607eb7 | |||
| aedce0405f | |||
| c6b0eb6987 | |||
| 90a548c310 | |||
| ffef7193bb | |||
| f982828981 | |||
| d6aafe4a7b | |||
| eac36b6344 | |||
| 5674d8b607 | |||
| 2fe59ca280 | |||
| f0367674e7 | |||
| 28872c4570 | |||
| 6539f0bb92 | |||
| 08e6b37957 | |||
| 734d37feda | |||
| 559376cbf1 | |||
| e689ab0888 | |||
| bd9c1afce3 | |||
| fa328676c6 | |||
| 73114abc47 | |||
| 4c81ce30e8 | |||
| c7172fefd3 | |||
| 56eddc1547 | |||
| cc0641ee00 | |||
| a77b8c4da2 | |||
| aaae2532ea | |||
| 5daa5216ac | |||
| cdd38d79f4 | |||
| f17c5cc9e1 | |||
| 5899dd9596 | |||
| 024a63587a | |||
| ac157694c5 | |||
| 62df06ea1a | |||
| 5cd7ab9f06 | |||
| 5ce5d49c89 | |||
| 6e221c61c4 | |||
| fcbeeea502 | |||
| 58a2f012eb | |||
| 3a3962e7ba | |||
| 7b6905b5a9 | |||
| c79642e840 | |||
| 111891aac3 | |||
| 6080f1da73 | |||
| 6f823465ef | |||
| 35baca56a6 | |||
| 38f1772942 | |||
| 8ed0a98738 | |||
| 69d733c02a | |||
| b8417a1e60 | |||
| 54c4c0960a | |||
| f7c87ee208 | |||
| c0d56f5aa2 | |||
| ced7d9ab6c | |||
| 638e557bee | |||
| 693b5634d5 | |||
| c20f785012 | |||
| 291bc5c8c3 | |||
| b52906461c | |||
| b488517226 | |||
| 70d5d8ba51 | |||
| ebf40ab6e6 | |||
| c48ea59940 | |||
| 450021dec8 | |||
| 637122b021 | |||
| cadd4230e9 | |||
| d10223fc2e | |||
| 0af8ede2f1 | |||
| 6a641aa5f5 | |||
| b809428392 | |||
| 06c209ffce | |||
| 7b92553909 | |||
| f3a4e11355 | |||
| 3364e1fb47 | |||
| 36ca3f55bc | |||
| 330fcd4f82 | |||
| 686ad9e52b | |||
| 3c3fb28955 | |||
| c5b7417e39 | |||
| 99ba7c9acd | |||
| 747d84334a | |||
| 15b25a5afc | |||
| a698c401c7 | |||
| 7c400e7dc1 | |||
| 635ab4858e | |||
| 9a81a2a67f | |||
| 7cd21aa28a | |||
| 9635c45fd0 | |||
| e80c63cf22 | |||
| 38fd630d9f | |||
| f966682883 | |||
| 301452efb7 | |||
| 1cc2a6b355 | |||
| c81820b958 | |||
| 56eff93642 | |||
| 7eef11db14 | |||
| 1c2fd041ae | |||
| a7c8428cc4 | |||
| 41ee204108 | |||
| b9c4ba0d2f | |||
| 10fd56d4e8 | |||
| dd09869ef2 | |||
| f4ff22b7d0 | |||
| 45d335a225 | |||
| 90fbe18a95 | |||
| 7f22468f5f | |||
| 9881318847 | |||
| a26f959aad | |||
| 6220be843b | |||
| 8211dcfdb5 | |||
| d381a74959 | |||
| 41696810a2 | |||
| 61f7edbf70 | |||
| e3abcabdfb | |||
| c97e538442 | |||
| 49fe2c12aa | |||
| 259e03dbcb | |||
| 949f96492f | |||
| 2a498427bf | |||
| 481c374af8 | |||
| bcf6941b4b | |||
| 0609cc8ea1 | |||
| ba517c3f2c | |||
| 1f4279d417 | |||
| 383cce9bb6 | |||
| 75706516ab | |||
| 8cd5d09b16 | |||
| c1a2f7e185 | |||
| 5f60a0d949 | |||
| 48dc0d824a | |||
| ce5c2b3800 | |||
| 409bb73a1d | |||
| 0eb5980d15 | |||
| 3dd887ec05 | |||
| 62af4dd7a0 | |||
| ab3bc3d45a | |||
| 3e24e69fa3 | |||
| 29680132b9 | |||
| 75bf27a52b | |||
| 9e3ae2b758 | |||
| 835b3779bf | |||
| 56d1bdfe67 | |||
| 3160f385a8 | |||
| 5d23e3ed71 | |||
| 68c5bf4f66 | |||
| 15008285aa | |||
| 08e6d2562b | |||
| a9069600c5 | |||
| 9d7ab14167 | |||
| 4331a913cd | |||
| 30ad92ade3 | |||
| a167693904 | |||
| f7f5b203e3 | |||
| 43594c811c | |||
| fd84dc2c12 | |||
| ba83f978fa | |||
| 2062bd4137 | |||
| 3005cafeca | |||
| 302bb75217 | |||
| d26692e6f8 | |||
| 3e5aba5117 | |||
| 3f0d91dc34 | |||
| 71fd0f0af6 | |||
| 3320b9a150 | |||
| 37a896df79 | |||
| 7436ba747e | |||
| 4cca75b0cb | |||
| acda817d3d | |||
| 61b7a1277b | |||
| 06ea24e88b | |||
| 8cb6d662e1 | |||
| 1ae33ddbfb | |||
| d67697b7a2 | |||
| 7bc78fae1e | |||
| e1b48b7d3b | |||
| 686732b674 | |||
| 20d84edaa5 | |||
| ddbb84682d | |||
| 74349aa334 | |||
| 9987ec884e | |||
| 23d91c269f | |||
| d9fbd32352 | |||
| e1e037c1b1 | |||
| 8805dae525 | |||
| dad8477cb3 | |||
| a705ceaa86 | |||
| 21a54860d3 | |||
| a9682b7ae2 | |||
| 0f0ffc9580 | |||
| 0e50f34167 | |||
| 121c4b73ab | |||
| 6ee7e51b40 | |||
| 465c9ed9ae | |||
| 1fd1f3a7b2 | |||
| b3dbc78b8c | |||
| b930545ae7 | |||
| 182df5db2d | |||
| f3fce00218 | |||
| a3d2b68abd | |||
| f3a2d7f6a4 | |||
| 02da9dd0a3 | |||
| 451a05d951 | |||
| 0748ba0aa5 | |||
| db04a13bbe | |||
| 797b6f428c | |||
| 92bd444ac2 | |||
| 8cf43a9596 | |||
| d673c88159 | |||
| ee24127381 | |||
| df0e2ac4de | |||
| 48c9c21708 | |||
| 2857f3efe9 | |||
| b4a879621e | |||
| 4935dfa45e | |||
| f97577ae76 | |||
| 2ff21308f9 | |||
| e33a0d9a09 | |||
| 4762baa11a | |||
| fc714fc288 | |||
| b6ea1ab479 | |||
| 9e5a922ca3 | |||
| 25f5036c35 | |||
| 7506b322a5 | |||
| 87134d99e7 | |||
| 9505a1f520 | |||
| 9be37f7979 | |||
| de9e60bc03 | |||
| 152283b769 | |||
| 1b587dcbff | |||
| 2b9dd64bb3 | |||
| 0e5206ea7d | |||
| de1fea75f4 | |||
| e9bb00fec3 | |||
| cfdd3c2889 | |||
| 1eeae26719 | |||
| 043948990c | |||
| 91391a46b5 | |||
| 33bbe5ea8f | |||
| f6a0ef0cc2 | |||
| fe3eb0db7d | |||
| 2f49eb5aaf | |||
| 2a7f21124f | |||
| e5a40f1045 | |||
| 48d766e308 | |||
| 1a694d14f5 | |||
| 996775f16d | |||
| fc58297eb0 | |||
| dba2097cdd | |||
| 3b0f6ea0ac | |||
| 68595e2d22 | |||
| 5285c52084 | |||
| f00fd6eaef | |||
| 6b370c9c67 | |||
| 231d06c48d | |||
| 8c6bb314c5 | |||
| fe34c10de2 | |||
| 1846da7c5a | |||
| 83dda85a6a | |||
| 9feef46dae | |||
| c88832d960 | |||
| d1827e1835 | |||
| 30bab73c03 | |||
| 35d668ad31 | |||
| 1053948bed | |||
| 686c7e2f21 | |||
| 3f47c89846 | |||
| c834a47f32 | |||
| d99b03660b | |||
| 4807a7330c | |||
| 1e73667155 | |||
| 42c3227864 | |||
| 6532706da0 | |||
| f738943493 | |||
| 9a5dbf345e | |||
| e5f921e186 | |||
| c6c0345b36 | |||
| 1114003d93 | |||
| a34ecabee0 | |||
| ef8ffdda04 | |||
| 0f53a33401 | |||
| 6373b83c39 | |||
| f7ca612817 | |||
| c06f591878 | |||
| 72c6875a80 | |||
| 6c193b7cbe | |||
| 20603ada50 | |||
| 4e3745922e | |||
| 298d28940b | |||
| 4f54a7e982 | |||
| c9e5cc23ff | |||
| a314130ca6 | |||
| 9fcd92d297 | |||
| 4212f96ebc | |||
| e51ac78a93 | |||
| 0537a49be6 | |||
| a1016d0a8e | |||
| bb265f6c41 | |||
| c62d326a7a | |||
| f71fd34887 | |||
| 41efaa9fd8 | |||
| 590c7388cb | |||
| db03b6173e | |||
| 3e134cbb0a | |||
| a6b8d8ff35 | |||
| ba8cf14b9b | |||
| af0b379650 | |||
| 6a44b8c3e5 | |||
| 0390c6c64f | |||
| 7c9ea959f4 | |||
| 974454764f | |||
| 4faaf63e82 | |||
| 63635918f7 | |||
| ace157556b | |||
| ef7344d586 | |||
| 8d68e6fa19 | |||
| a3b32fdedb | |||
| c29ad02587 | |||
| 545c641fe8 | |||
| a962ad2877 | |||
| 628abf114c | |||
| ea2b4a1698 | |||
| d9098e44e3 | |||
| 08e5ee49d1 | |||
| 9b47129ad7 | |||
| b6bed50471 | |||
| c48ab26b0e | |||
| 97c561715a | |||
| 803a67d4c7 | |||
| 697eb2c3e4 | |||
| d3ca3fb0c4 | |||
| 31c15ebb93 | |||
| 2126961b4b | |||
| e50f9f92a4 | |||
| cd1889ce93 | |||
| b58fb7e859 | |||
| 38607d32ce | |||
| 003de86893 | |||
| f4b75de32e | |||
| 3c60bf826d | |||
| 0910bdfd81 | |||
| f3d578f2ec | |||
| 34e54c958b | |||
| ed9e2ccd64 | |||
| f33a2c0d06 | |||
| c4adb49bbb | |||
| 5c8e1da371 | |||
| 1d03d16fcb | |||
| 0848c29f5e | |||
| 013c376c91 | |||
| 313113cfbf | |||
| 0bc77f25f9 | |||
| 3fa0b692ce | |||
| a7fbab3cb9 | |||
| 078e26b128 | |||
| ab7c44f251 | |||
| 45ec1c7c51 | |||
| fe77be7070 | |||
| af598b644f | |||
| 691a5ef783 | |||
| 54c7b1f322 | |||
| f53a8e204d | |||
| 4ba5134d52 | |||
| 25684239fa | |||
| fc3f121cf7 | |||
| 4b3d9c126e | |||
| 61ebb53352 | |||
| b31f629d43 | |||
| 7c3fb9ee6b | |||
| 8c8938a88d | |||
| d4c9f5432a | |||
| 78ce3ffe4f | |||
| 57ec52f274 | |||
| 271a62162d | |||
| 765fc3bde1 | |||
| 9aed223b17 | |||
| 6ee4cf1ab5 | |||
| 38d5833c5b | |||
| 1c1b90a801 | |||
| 9dc8f5fce1 | |||
| 1db0cc7dcd | |||
| 262e2b2ca6 | |||
| 4154d3ff5e | |||
| ac79932314 | |||
| 45dd5b37f4 | |||
| b30ff15c65 | |||
| 6012a6e473 | |||
| a138c0efb2 | |||
| bffba7fc75 | |||
| a3807a8d0a | |||
| 1adfad22f5 | |||
| 30dbdaa750 | |||
| 40d234d182 | |||
| c81b7595ab | |||
| 31aaee7652 | |||
| 745dbfcfe0 | |||
| 198abda16c | |||
| 4ae3b7071b | |||
| 078915c8bd | |||
| 601eb71ba7 | |||
| 78d7291dcb | |||
| 1c993b2b24 | |||
| 38f4a154f3 | |||
| 05f5cfe02b | |||
| c97cfd7a32 | |||
| 30af83b7e3 | |||
| 06630b734d | |||
| c17fc7053d | |||
| d57fda84df | |||
| 9ea2326637 | |||
| 4e26a3d494 | |||
| 21eb4e5b5d | |||
| f5b302c007 | |||
| 9a804de95b | |||
| b2007fb08f | |||
| 85e36fda8d | |||
| 7ef365b991 | |||
| 78463e7d1d | |||
| 198e1c0dd1 | |||
| 909fda772b | |||
| 18bbcb6dbe | |||
| a4152ff15f | |||
| 8eccfa7a33 | |||
| f5a7d5e78b | |||
| 8e59f0c60e | |||
| ed22d43bd2 | |||
| dbddfa8376 | |||
| 4e575921a1 | |||
| e1dd8acd72 | |||
| 32495af164 | |||
| b171bb498f | |||
| 1827f1d59b | |||
| 401a8f7f97 | |||
| 11e6da7c3d | |||
| 8953f00c1f | |||
| 622dd2e02e | |||
| ff8d65b110 | |||
| c57310b809 | |||
| 5f22c1acde | |||
| 2c06dbc9d7 | |||
| a8079fc9d0 | |||
| e7595588d0 | |||
| bf66d7d2df | |||
| c42713b0de | |||
| 2b3e89ab01 | |||
| f7a0338e6c | |||
| 6c1273b311 | |||
| fd5d2342e0 | |||
| 21b8a31aec | |||
| 73ccaa0cf5 | |||
| c0d8bf3330 | |||
| 9d8854164f | |||
| 4badd8fbd1 | |||
| c592701f91 | |||
| 74c38ca2b5 | |||
| e70055008b | |||
| 7369f15b40 | |||
| 0a9cf5420e | |||
| bc90935c77 | |||
| 5c53931125 | |||
| d430eeb58e | |||
| c65b46f966 | |||
| d1b7ac4e40 | |||
| 48c6df3558 | |||
| da44d389ab | |||
| 738cbdabc6 | |||
| 1d5742dbcf | |||
| f584c1f321 | |||
| 5a78c38632 | |||
| f49f6ed4dd | |||
| d6de099c2a | |||
| 72ce893ad4 | |||
| 329ce537ee | |||
| 429d6137e6 | |||
| abf11b8e66 | |||
| 41ac3a1907 | |||
| b6baf5db33 | |||
| 91c49f0615 | |||
| 9d5b6e5a27 | |||
| 5d1487756f | |||
| 71dd4a775c | |||
| d1626291ef | |||
| ad693eebcb | |||
| b78db0393e | |||
| 6e256359c2 | |||
| 5d0d903809 | |||
| 94408ad5f3 | |||
| e310ad6fc2 | |||
| 944f0880a7 | |||
| f46486ebc4 | |||
| 25f0f2a069 | |||
| e03b664abf | |||
| 6fc5cb169b | |||
| a5dd4e6b77 | |||
| 206a2c62d6 | |||
| fdb256ddcb | |||
| 5757c1a50e | |||
| fe4c8b4a83 | |||
| a0fc4bb5e3 | |||
| c69121e001 | |||
| 0625c384a2 | |||
| 8004d10a65 | |||
| d4c9e0af27 | |||
| 0b0c06fa14 | |||
| e7e32993af | |||
| 9c71708529 | |||
| 1ed25f94a6 | |||
| 479e06e01e | |||
| a43388c2b6 | |||
| 93ed724447 | |||
| 154bbc0ca3 | |||
| 1654ced15d | |||
| 346b947794 | |||
| a8d421d3cc | |||
| 1efd22d161 | |||
| 98cd2c254e | |||
| 6b6933c1b9 | |||
| 6a2e196acf | |||
| 6a5677c335 | |||
| e679a6760b | |||
| abfdc9050d | |||
| bdf968e11a | |||
| acbcd3cdd3 | |||
| 1c4b21e129 | |||
| e265c08729 | |||
| 40f1ad1cfe | |||
| 46a65d553d | |||
| 72b530c149 | |||
| f0e14f7847 | |||
| de2e10619d | |||
| cf6da5b6d0 | |||
| dabbe786be | |||
| 76350e1319 | |||
| 49ee17db5d | |||
| fc4d4b8ec5 | |||
| bfb9b91467 | |||
| 8607d950b7 | |||
| e636820eba | |||
| f69fd6bf11 | |||
| 8ff913a2db | |||
| 4826668565 | |||
| 97eff14af2 | |||
| 37e52ffa2d | |||
| 4530ee5219 | |||
| e0b116a663 | |||
| 3c529c7ee1 | |||
| 5f6f296cac | |||
| eee6d3c8d1 | |||
| ae03d2e4e8 | |||
| e88ee5180b | |||
| a95f26b1c9 | |||
| d3fc59b08e | |||
| 6b982f7aae | |||
| 17b201793c | |||
| 82a65df46c | |||
| 2cdfbe6530 | |||
| 5f6e18d6a7 | |||
| f87bee6382 | |||
| 0fc6e26be4 | |||
| a62cb8de7a | |||
| 8c59e918b7 | |||
| 2134f91309 | |||
| 6c1df13565 | |||
| 66a4fb57d4 | |||
| 424520d2cf | |||
| 54c2296dae | |||
| edaec98025 | |||
| 898ff7855d | |||
| 9db31d4032 | |||
| 996381ec47 | |||
| 161624723c | |||
| 3109c877aa | |||
| bc0465ebfe | |||
| 69dc0cfe91 | |||
| fd5c1f778f | |||
| 404a5df740 | |||
| 7a7c5bebaa | |||
| a52dd18f85 | |||
| ae29de76d4 | |||
| bd7520b12d | |||
| 65383f4355 | |||
| 7ecabaeae3 | |||
| 5d2dc222f2 | |||
| bdc18debdc | |||
| 67ea00419a | |||
| d3fc895063 | |||
| aca2a5061d | |||
| 6267898f3e | |||
| 6623b10a16 | |||
| 3e0b0f2e18 | |||
| 13f99d6bc1 | |||
| ca069a7c88 | |||
| 07ccc74036 | |||
| 3d3c59be40 | |||
| 22921c1b1f | |||
| b6c75bf985 | |||
| a47df87139 | |||
| 99b6f2ea38 | |||
| 612c52c7a3 | |||
| c8bc986778 | |||
| 5f8bf556e1 | |||
| 41bdfc3b29 | |||
| e65c17e2e1 | |||
| 8bdd8cb5a5 | |||
| 2487621092 | |||
| 545d087a99 | |||
| 9422a9ffd1 | |||
| decce0d11f | |||
| 050846cd02 | |||
| fa9cf506e7 | |||
| 5dcddc4404 | |||
| d223da8a26 | |||
| 356c492c49 | |||
| 8364783817 | |||
| 43749211fe | |||
| dc19350c70 | |||
| f21bbdadf5 | |||
| 731b77f206 | |||
| bd6979e842 | |||
| a50455c225 | |||
| 4b2da6f3d0 | |||
| ca7f59a473 | |||
| 5298931dd8 | |||
| 08fbbff0f6 | |||
| 8a0ebfdab7 | |||
| 0d05df5237 | |||
| 762e6c7050 | |||
| f8194daa68 | |||
| b30301ecfe | |||
| dbd9932635 | |||
| 6c8c7f36a3 | |||
| f6ae3f8844 | |||
| 8dac61a435 | |||
| 6e70facb1e | |||
| 35ce9949d9 | |||
| 8b42fad320 | |||
| 242f66ed6c | |||
| 88da136dda | |||
| c916651eb4 | |||
| 326a981c0a | |||
| 6990888040 | |||
| 4efd5e60f6 | |||
| 3c0309a98d | |||
| 93cb84f67c | |||
| 1113088f1a | |||
| 1d70016ef8 | |||
| ea02baae7b | |||
| ddd6b8876f | |||
| a73a12c898 | |||
| 02227c7696 | |||
| 5f272b56e7 | |||
| 950ba7c702 | |||
| b38f4fce10 | |||
| 4bf143993b | |||
| 00933ef23b | |||
| 58872ce250 | |||
| e382a3ac95 | |||
| 7e2eb48cea | |||
| b0e527ec87 | |||
| 6feeafa7bc | |||
| 66686bd310 | |||
| a38b5ad538 | |||
| ea1ecd25ab | |||
| 6499bc6a29 | |||
| 379fc66e8b | |||
| 9109d9a8a3 | |||
| 6f7cc9ba88 | |||
| 53741c5c48 | |||
| 383c2ef7c0 | |||
| 8c8d89a763 | |||
| 055ab13080 | |||
| ee918eb576 | |||
| 443e9cdcd6 | |||
| deafe60ff4 | |||
| 0ab55be3d0 | |||
| 1b690bb64a | |||
| ceb75b7a7a | |||
| c9648673fd | |||
| 979eacdaf5 | |||
| 44375e1dd5 | |||
| be917865c3 | |||
| f24d4495a2 | |||
| d7969a5272 | |||
| 34f6b6b058 | |||
| 1c7c7573be | |||
| bb7f0d9261 | |||
| bc6445b8ad | |||
| 7eb7de369e | |||
| 4d47acdbfd | |||
| ec754b69c1 | |||
| f56080324a | |||
| 1393a4c509 | |||
| db1f1aa3f8 | |||
| acad82bd3d | |||
| d3b4892bb8 | |||
| 97f46cef5c | |||
| 356f52c0f7 | |||
| 364bf0f605 | |||
| 4f4fdccf3b | |||
| 38692b1b4b | |||
| 054160a74a | |||
| d7865be511 | |||
| ad2b35ac0f | |||
| 30f6fc4cb3 | |||
| 5d4c820ce3 | |||
| 3f01c4d60c | |||
| 03d541bc7f | |||
| 3e6ca38667 | |||
| 30eb0d1460 | |||
| 4cd3df56c0 | |||
| 1ee84a198a | |||
| fb5c4c7214 | |||
| b930f9a2fc | |||
| 704918754c | |||
| a456bccf38 | |||
| 38abf2ef7f | |||
| 893ecd68e9 | |||
| b70036ed0f | |||
| 8b06a451dd | |||
| a7c177bbe3 | |||
| 91ada621e6 | |||
| 9d6801b271 | |||
| 7bda74183a | |||
| 27a993751a | |||
| 5f34265ded | |||
| b7a7d63223 | |||
| 675ef5b54d | |||
| b5a8e0245f | |||
| fa49ef8cfa | |||
| db0c18dd1e | |||
| a7e3aa01b7 | |||
| 184dedf72a | |||
| 82e437d366 | |||
| ee4860fd6c | |||
| 32cad72182 | |||
| d313bec95b | |||
| e4d352f1f2 | |||
| 541e253598 | |||
| 4307ca8ade | |||
| c60ea26271 | |||
| 8b741865c3 | |||
| 35a8c00214 | |||
| 607625bf91 | |||
| dc59ba4f5f | |||
| eddb406807 | |||
| 6b1e7807ce | |||
| 75ce361222 | |||
| c0f00df2c5 | |||
| 38c1ad2eb7 | |||
| 62d8a8343f | |||
| 357b1879e9 | |||
| b5fd4a816f | |||
| beb891a24b | |||
| dc7554e227 | |||
| f535167cf9 | |||
| e31b23ee8a | |||
| 7ebd0debd7 | |||
| 3cb4be0ad6 | |||
| 1be36fc0dd | |||
| 61b3242013 | |||
| 1023df3cd3 | |||
| 4c3681afb9 | |||
| 72910fafc9 | |||
| b1c4afdd41 | |||
| 0bc12e552c | |||
| 82d4c429da | |||
| 5b444f173a | |||
| aab5c3eb71 | |||
| b2115e868e | |||
| a84350b9d0 | |||
| 247e2ea6d5 | |||
| b340844aed | |||
| df37fc9d5e | |||
| 0edd95dd2f | |||
| 1e509d5dbf | |||
| ef43bedd03 | |||
| 97cc076531 | |||
| 3b84610599 | |||
| 10458c06b9 | |||
| 0a8e5e6a69 | |||
| 13b81da728 | |||
| bc0e3e9722 | |||
| 8a9bae11fa | |||
| 83cc82bbf2 | |||
| 50ceda48d2 | |||
| 570ba8e327 | |||
| 5fae4f3bf7 | |||
| 08954beb0d | |||
| b45a9c4e45 | |||
| 5b450e87fa | |||
| 3efb800947 | |||
| d4f27c1183 | |||
| 4f40d73aa4 | |||
| 05f2bdfeab | |||
| 9d30ce5c75 | |||
| 24beac59c3 | |||
| 5fcd80e11f | |||
| a58308d0d8 | |||
| 481324ffef | |||
| 8b7a096bee | |||
| 1b0d97c5bd | |||
| 089ee0fca9 | |||
| 3a88cdbdc8 | |||
| d4144dd86c | |||
| 6868541b84 | |||
| 1f6ac63d4c | |||
| eae23edc62 | |||
| 56a694b1bb | |||
| 0a4c8ae419 | |||
| c6f34c7de3 | |||
| 9407616a0e | |||
| cf7d113034 | |||
| fcc7ba12aa | |||
| e54a74eb52 | |||
| 4a69b08291 | |||
| ca4bbb66eb | |||
| 352bb63b85 | |||
| 4fb2a55374 | |||
| a642574a97 | |||
| a7355b6ddb | |||
| 1d0457a1b5 | |||
| c4aea6f0c8 | |||
| 8640d7da54 | |||
| 9c2254ad27 | |||
| 597d1c2abc | |||
| 6d754671a6 | |||
| 66804a1cbc | |||
| f92bf9e6d2 | |||
| 34ec08348c | |||
| 0fb95bd6ad | |||
| 5e44f6b264 | |||
| d4e480cebd | |||
| 0d7e69803e | |||
| d0c6ee47c7 | |||
| e9b536694b | |||
| 6090928333 | |||
| 4e7f9c67ba | |||
| e84bb4b27b | |||
| 7e83d6c150 | |||
| 71a2d3c316 | |||
| 4c01089b10 | |||
| dc1fdb3f34 | |||
| c0b6a97c04 | |||
| 6ceb227f58 | |||
| 20a7feba1f | |||
| f88cea7b45 | |||
| 24b9c466a2 | |||
| 3e8f918aa9 | |||
| eba25738e8 | |||
| 338e8497f3 | |||
| 613544de5c | |||
| 0e927787e5 | |||
| a58a263c67 | |||
| f253237b1a | |||
| 80ca78a285 | |||
| ede8b13b44 | |||
| 126c07c69f | |||
| 1cec07250e | |||
| 2163d0dddf | |||
| 25ac499c99 | |||
| 92f413f387 | |||
| 137d136233 | |||
| 28efcdc65a | |||
| 38a64f1c17 | |||
| dabc42e0c3 | |||
| ee7961f31e | |||
| e68b82724a | |||
| cbbc35fae3 | |||
| 3ae96d5eea | |||
| f436f1ea51 | |||
| 6a4878f7cd | |||
| 49ecd9c86f | |||
| 4eba81fa21 | |||
| 46fd5f27af | |||
| 09dada415e | |||
| f5110bca31 | |||
| afcfabe8f6 | |||
| dc704bd1c0 | |||
| 6fdc15524b | |||
| 0d3b7415ab | |||
| 3597c4a135 | |||
| 19cc435119 | |||
| 914f6cceb3 | |||
| 6afa0da62b | |||
| 42b975a118 | |||
| cc3a40c383 | |||
| de11702f2e | |||
| 03eb1935fd | |||
| d226a87522 | |||
| f0718cc515 | |||
| c01b0e1d0b | |||
| 07d397b4ff | |||
| 988a0eb0c2 | |||
| 3b229d5d34 | |||
| 4887bb365b | |||
| 7bad90fec1 | |||
| 4788bc3f76 | |||
| 4af12d14ea | |||
| c8a4857452 | |||
| 78673b7228 | |||
| b8424dc50f | |||
| 0b43d15d53 | |||
| d8fc8c0935 | |||
| ab4a0a31b5 | |||
| b8c9e4fde5 | |||
| eca350056c | |||
| 2a1bd9e244 | |||
| 453d6b3fb6 | |||
| 0e811c403a | |||
| ad254b94c0 | |||
| 27396e9b26 | |||
| 2c500fcf72 | |||
| 8ba098a77a | |||
| 97d4be791b | |||
| bff1caa482 | |||
| cedddacbf1 | |||
| 01262aefd9 | |||
| 67bd44cb77 | |||
| 5b5b6ce919 | |||
| c35947553f | |||
| 99d1d11676 | |||
| 8650c97cd3 | |||
| 6128e121b3 | |||
| af5d1d7196 | |||
| e2ad6c059d | |||
| 44dad06890 | |||
| 87557e0390 | |||
| db69e18e06 | |||
| dcf50597e3 | |||
| 11cb7a1136 | |||
| ab103a74cd | |||
| 9c38686f52 | |||
| 2665b9f04f | |||
| 50520aee84 | |||
| 878777e642 | |||
| 9d541d8ed4 | |||
| bfb3e15bce | |||
| b87e3f82fe | |||
| d3a0bb92f6 | |||
| 0441305a3a | |||
| e750d52f9e | |||
| 2d814ac488 | |||
| 9654db70da | |||
| 432e3a3a6c | |||
| 1790648081 | |||
| 0945798211 | |||
| 82d33e262c | |||
| 3f46918f24 | |||
| 1a655c11ca | |||
| be93950f40 | |||
| 8eb88be500 | |||
| 3469211b62 | |||
| e601339deb | |||
| 4a3be9e58f | |||
| bcfc9b85fb | |||
| 9c979e4e04 | |||
| 3e1b7c0f47 | |||
| 03df91bbf3 | |||
| 4bf1758b89 | |||
| b3257db161 | |||
| 3b28ac0385 | |||
| 14879ae6f0 | |||
| b967f600df | |||
| 6508c962f8 | |||
| 74fdf83dcf | |||
| cee255cbe0 | |||
| 261c0f75c0 | |||
| f43420a15c | |||
| 7a37675909 | |||
| 52fc709074 | |||
| a86c75bfb4 | |||
| 839efd901a | |||
| a557bc50d7 | |||
| 232b172256 | |||
| dd9e9417af | |||
| 0258d13195 | |||
| c2224bc5fd | |||
| 64d8a67f4a | |||
| 3a052e213b | |||
| 282a5f3eab | |||
| cb1ca56cae | |||
| 908387c024 | |||
| d0f4e86833 | |||
| 68feb2ba64 | |||
| 8e0d1cd516 | |||
| b9a516d664 | |||
| 107456853e | |||
| 83fd8dfa11 | |||
| 30c9781e72 | |||
| 6c88aecf6c | |||
| 49a988c64f | |||
| d3641acd7b | |||
| 7e18fcd00e | |||
| 7577ae774c | |||
| 3aeea5c63b | |||
| 65024ce49e | |||
| 4f93681c71 | |||
| bb192d3016 | |||
| 4a6f784e37 | |||
| 1db7944c09 | |||
| 0676d94ab1 | |||
| 849205bb31 | |||
| 013b2de18f | |||
| 274230c55f | |||
| 629825c6d9 | |||
| d40fc31645 | |||
| 7c6a6332fc | |||
| 854e64e253 | |||
| 53b182a021 | |||
| a07c13bdc2 | |||
| 67470b474d | |||
| 7f8bcdb5b2 | |||
| 77f8b18bad | |||
| c251d4e198 | |||
| 5cf36dddca | |||
| 3cbbaf125b | |||
| 02a00490ad | |||
| 693f6e5183 | |||
| 1d7b8bad06 | |||
| fbf2d2d394 | |||
| a76e4d4712 | |||
| 54902b0285 | |||
| 4284c39307 | |||
| 6653e4ef3e | |||
| fd47548f55 | |||
| ecdb057111 | |||
| 55ece5e5e4 | |||
| 5b7e45545c | |||
| 9395e74143 | |||
| afbf2070fa | |||
| a6713f14cb | |||
| bd142fc323 | |||
| ad878b68c8 | |||
| 78ff3fdd53 | |||
| 191127296a | |||
| 637a36a2af | |||
| 81de8345d2 | |||
| 45cee8f2bd | |||
| a11e6df64b | |||
| 4c66f198c5 | |||
| 61f3c2cddf | |||
| aed701705a | |||
| 84c5813bc4 | |||
| 174735967a | |||
| d310864b43 | |||
| 30d0defdc0 | |||
| 1a035edc8c | |||
| ade0c0109d | |||
| cb6bfc4d34 | |||
| bc809fd7aa | |||
| ce7bba8b5a | |||
| dd2f5bedd8 | |||
| 5439dddde5 | |||
| 77f898e985 | |||
| e964113964 | |||
| fc78e50666 | |||
| 4e901fdd66 | |||
| c3c29d38da | |||
| c2d22329b9 | |||
| b213011ab9 | |||
| 4283702d2c | |||
| 98cb02a410 | |||
| 102d21855a | |||
| 010d3275f2 | |||
| 5af77f8779 | |||
| f3cdcc72ab | |||
| 1bb24f0515 | |||
| a69e979d3d | |||
| dc9d9dc62e | |||
| 883ec36e8b | |||
| 2b3fda5a10 | |||
| c52dff2da7 | |||
| fb0802a22b | |||
| e72b29f81c | |||
| b4d7a60a72 | |||
| aaabed6af2 | |||
| 43db020b75 | |||
| aaa29c02f8 | |||
| f87a4fda13 | |||
| 48bdcf92fc | |||
| ed38124a1d | |||
| 50952ed629 | |||
| cdecfbfedc | |||
| 2d3ca29a45 | |||
| 3a9f8eee47 | |||
| 949de4f098 | |||
| 05b098396d | |||
| f541d5f58f | |||
| 2ce551158a | |||
| 64860fa6c3 | |||
| b434149c41 | |||
| c333495b1b | |||
| ea4db0c2fe | |||
| 5133dcf755 | |||
| 9e855621e5 | |||
| fbd7fa502a | |||
| f368a2ba04 | |||
| 96582cb86e | |||
| 2f42d44b74 | |||
| bf829244b8 | |||
| 5018dec02f | |||
| 988f5ff9d6 | |||
| c3b8d07de4 | |||
| e6156b4604 | |||
| 6af767a885 | |||
| 681a0ce0c2 | |||
| 31a7905c94 | |||
| 3716f12eee | |||
| a0e3779f74 | |||
| 2e9852c393 | |||
| 2eadd2efa1 | |||
| 97ea680aec | |||
| 6f72b78d1b | |||
| 4d7f9b5a5b | |||
| f6e36300bb | |||
| fae77f21ec | |||
| d78acf841e | |||
| cf68fd7d41 | |||
| 33d9d1dbcd | |||
| d04b80dcc3 | |||
| 3edac539d1 | |||
| 75b639af81 | |||
| 188e7990ba | |||
| 47c5c36bda | |||
| 9b882e5c6d | |||
| 9b86b48b81 | |||
| cf760ad336 | |||
| 19748e6f03 | |||
| 3b6270056d | |||
| bbf0df59f1 | |||
| 326f506cd9 | |||
| f71bc9335e | |||
| dc77debaec | |||
| 1ee0f10401 | |||
| 18311db5bf | |||
| edff4089c7 | |||
| fea3b691b3 | |||
| c88f698c88 | |||
| 23ee49f602 | |||
| 36a75d5b55 | |||
| 4896f37ed4 | |||
| d8678f686c | |||
| 483570dc4a | |||
| cbc3eea61e | |||
| 165386a44b | |||
| a5a502c1d5 | |||
| d18a82acfe | |||
| 53b8b86598 | |||
| b9558cebe4 | |||
| e1d088de41 | |||
| d4059fec92 | |||
| 2a1844812f | |||
| ed476aaf75 | |||
| 641b12bf00 | |||
| 76cd27a028 | |||
| 0a97b75bfb | |||
| acf99712e9 | |||
| fa1c1d4db7 | |||
| 1e743f80d4 | |||
| 1a8706a645 | |||
| 85f88aa002 | |||
| 9c2048f8cf | |||
| d97c8de0b1 | |||
| 743312fceb | |||
| 6ce838a933 | |||
| 1bd085164b | |||
| 0597307562 | |||
| c665636045 | |||
| 7aad095b33 | |||
| e578ae4ad1 | |||
| 9b9aa1d80f | |||
| c38621994b | |||
| 827b5fa7e8 | |||
| bdda1a6943 | |||
| 8440b94865 | |||
| c0ea216165 | |||
| ef85e44157 | |||
| 70b32d0164 | |||
| f73784de19 | |||
| a6fac49452 | |||
| 7d1c6344bb | |||
| 9bc2c3ffcc | |||
| cad4c1d4b3 | |||
| 72c94cb5c1 | |||
| ec6dcdb573 | |||
| 567649106e | |||
| 8f196cd879 | |||
| 582c487cff | |||
| 3f9d00a84d | |||
| 791152587c | |||
| 08bd0aa006 | |||
| 562766ae07 | |||
| b4c03ed74a | |||
| ce913cd127 | |||
| 8f5ee7983f | |||
| 5cc04d4020 | |||
| fd11ec968b | |||
| bd9a57f90f | |||
| 52f76673c7 | |||
| add996a92a | |||
| 63e7fd12cc | |||
| 3b92a1dd2a | |||
| 7b12465473 | |||
| 67598ba37e | |||
| d3cd57b767 | |||
| b306553b0a | |||
| b6508ac6e0 | |||
| c065f16db6 | |||
| 1f1cdab0a6 | |||
| 0b5524cf7b | |||
| 1fe71cab31 | |||
| c607eb43ef | |||
| 6c0b8db670 | |||
| e3e5f5005c | |||
| 6b2ee1cb4e | |||
| ae9d78e845 | |||
| aa9ee31e4e | |||
| 602c3b94ad | |||
| 5877a32b3b | |||
| af3c66dea5 | |||
| 638d17fbaa | |||
| 283014822d | |||
| ad82656408 | |||
| 9c51507d36 | |||
| ec338581d9 | |||
| c4ee6e5114 | |||
| 1671c330bf | |||
| 22425b09d3 | |||
| d75ca39f78 | |||
| 8e5fb728a4 | |||
| 7c7592eaa7 | |||
| 5385bd3f89 | |||
| 05a96a3b56 | |||
| 54ff17f164 | |||
| 0ca3733542 | |||
| 3b398af944 | |||
| 6316006acb | |||
| 58943b710c | |||
| 2f1da20208 | |||
| 42a8ab5a84 | |||
| c5d57689a0 | |||
| e3df6672c4 | |||
| 1ebae10921 | |||
| f0d9b5f66c | |||
| 023cef1fb7 | |||
| 47f3c43295 | |||
| fe89b2e36b | |||
| 6ec3822ce1 | |||
| f90a4667bf | |||
| 6ab3161969 | |||
| 892cad788d | |||
| 2fc75d1352 | |||
| 3c436c02e7 | |||
| 30f7b2c519 | |||
| 55001ad74a | |||
| de1ad88442 | |||
| a450365faa | |||
| 756a7de955 | |||
| ecd9ca0c5b | |||
| 57a3465ef4 | |||
| bfde79e41d | |||
| facf1d62ef | |||
| 9ebd9e9bcf | |||
| 24c2b72e1a | |||
| a2a4576ca2 | |||
| 8337447439 | |||
| 45e373d683 | |||
| 324aa0f593 | |||
| e5f16b777a | |||
| 44b2ae15fa | |||
| e050009b51 | |||
| a9fbc71459 | |||
| 558c9ede6b | |||
| 843d4696ff | |||
| fc37449a9e | |||
| 8702450af2 | |||
| 8c89274d3d | |||
| 9e9390e57e | |||
| c1af4a4516 | |||
| 2313035766 | |||
| 34cfe19e44 | |||
| 4a0c827879 | |||
| 976c4a8281 | |||
| 8f2763fff1 | |||
| 09d1dd87e4 | |||
| 9bb3623c4d | |||
| 1fc97c815e | |||
| 443c529f9f | |||
| 1a6e72c1b3 | |||
| 8c20440e04 | |||
| 683fae7a38 | |||
| 76f0f87fdd | |||
| 6d09e29d0c | |||
| 79c4cee4b7 | |||
| e1cc540182 | |||
| ee9ca0e01f | |||
| aab9bffe23 | |||
| af94fd243a | |||
| 98bd61c179 | |||
| a49e227bd4 | |||
| 45a5bd231f | |||
| 2bee263234 | |||
| 130669c03b | |||
| 16a82b6aeb | |||
| dd85bf150d | |||
| 257d386a1b | |||
| 99bd34fbb9 | |||
| d9a6dd34b9 | |||
| 0924b208e7 | |||
| bb003e2583 | |||
| 4b2dec05e8 | |||
| 133eac2700 | |||
| 087e36a112 | |||
| 116aaa17ea | |||
| 425dae8005 | |||
| ff898a5a9e |
+1
-1
@@ -7,7 +7,7 @@
|
||||
\___/|_| |_|_| \___|\__,_|_|\___/\_| \_| \____/\__,_|
|
||||
|
||||
Configuration Program
|
||||
for Unreal3.2.5
|
||||
for Unreal3.2.9-RC2
|
||||
|
||||
This program will help you to compile your IRC server, and ask you
|
||||
questions regarding the compile-time settings of it during the process.
|
||||
|
||||
+117
-3
@@ -1,3 +1,117 @@
|
||||
This is the Unreal3.3* development tree.
|
||||
We are currently in pre-alpha stage, which means this code should not be
|
||||
used by anyone but the developers or other people liking a broken ircd ;)
|
||||
Unreal3.2.9-RC2 Release Notes
|
||||
============================
|
||||
|
||||
==[ GENERAL INFORMATION ]==
|
||||
- If you are upgrading on *NIX, make sure you run 'make clean' and './Config'
|
||||
first, before doing 'make'
|
||||
- The official UnrealIRCd documentation is doc/unreal32docs.html
|
||||
online version at: http://www.vulnscan.org/UnrealIRCd/unreal32docs.html
|
||||
FAQ: http://www.vulnscan.org/UnrealIRCd/faq/
|
||||
Read them before asking for help.
|
||||
- Report bugs at http://bugs.unrealircd.org/
|
||||
- When upgrading a network, we assume you are upgrading from the previous
|
||||
version (3.2.8/3.2.8.1). Upgrading from 3.2.6 or 3.2.7 should also be no problem.
|
||||
- The purpose of the sections below (NEW, CHANGED, MINOR, etc) is to be a SUMMARY
|
||||
of the changes in this release. There have been 160+ changes, twice as much
|
||||
as usual for a release, hence this summary is a bit long too.
|
||||
For the FULL list of changes, see the Changelog.
|
||||
- If you previously used CVS to access the development version of UnrealIRCd,
|
||||
you now need to use Mercurial, see see http://www.unrealircd.com/hgmove
|
||||
|
||||
==[ NEW ]==
|
||||
- Extban ~j: this only prevents a user from joining, once in he can speak freely.
|
||||
- Extban ~R:<nick>: this ban only matches if <nick> is a registered user (has
|
||||
identified to services). Especially useful in cases like: +e ~R:TrustedUser.
|
||||
- Stacked Extended Bans:
|
||||
- Extbans are now split in two groups:
|
||||
- Ones that specify which user actions are affected (group 1):
|
||||
~q (quiet), ~n (nick change), ~j (join)
|
||||
- Ones that introduce new criteria that can be used (group 2):
|
||||
~c (channel), ~r (realname), ~R (registered)
|
||||
- With stacked extbans you can combine an extban of the first group with the second
|
||||
For example: ~q:~c:#lamers would quiet all users who are also in #lamers
|
||||
- Extended Invex: very much like extended bans, but for +I (Invite Exception).
|
||||
Currently supported are: ~c (channel, ~r (realname) and ~R (registered) [=group 2]
|
||||
Possible useful uses are setting a channel +i (invite only) and then setting
|
||||
+I ~c:#trustedchan (or even: +I ~c:+#trustedchan) while still retaining the ability
|
||||
to easily ban users through +b.
|
||||
- Channel Mode +Z: indicates whether a channel is 'secure' or not.
|
||||
This channel mode works in conjunction with +z (lower case z).
|
||||
While +z (normally) prevents new non-SSL users from joining, sometimes they
|
||||
can still join, like when after a netsplit the channels merge again.
|
||||
When all users on the channel are connected through SSL, the channel is set +Z
|
||||
by the server. Whenever an insecure user joins, the channel is put -Z.
|
||||
- Remote MOTD support: you can now specify an URL instead of a file
|
||||
- Automatic installation of curl (w/c-ares) if you answer 'Yes' to remote includes
|
||||
- One can now rehash ALL servers with the command '/REHASH -global'. This can be
|
||||
particularly useful if you use remote includes or MOTD's. NetAdmin only command.
|
||||
- files { } block by which you can configure the location of the tune file, pid, etc
|
||||
- STARTTLS: On an IRCd compiled with SSL support this allows a client to start a SSL
|
||||
session on a regular non-SSL port (like 6667). Only supported by a few IRC clients.
|
||||
Can be disabled by setting set::ssl::options::no-starttls
|
||||
- set::uhnames: this allows one to turn UHNAMES off ('no'), which can be a good idea
|
||||
if you have channels with more than 1000 users, as otherwise the nicklist can take
|
||||
several seconds to load. Defaults to on ('yes').
|
||||
- IPv6 clones detection support: allow::ipv6-clone-mask determines the number of bits
|
||||
used when comparing two IPv6 addresses to determine if allow::maxperip is exceeded.
|
||||
This allows an admin to recognize that most IPv6 blocks are allocated to individuals,
|
||||
who might each get a /64 IPv6 block. set::default-ipv6-clone-mask defaults to 64 and
|
||||
provides default value for the allow blocks.
|
||||
- The m_nopost module is now part of Unreal: this defends against the Firefox/
|
||||
Javascript 'XPS attack' which uses HTTP POST to create dummy IRC bots.
|
||||
- There have also been some behavior changes, which can be considered NEW, see
|
||||
next section (CHANGED).
|
||||
|
||||
==[ CHANGED ]==
|
||||
- Channel Mode +z: due to the +z/+Z changes, some things have changed:
|
||||
- +z can now be set even when insecure users are present
|
||||
(the channel will then be set +Z when the last insecure user leaves)
|
||||
- An oper previously had to invite himself and then join the channel
|
||||
with the key 'override' to set -z. This is no longer needed.
|
||||
The channel stays +z, but will be set -Z when the oper joins.
|
||||
- Remote includes: if a remote include fails to load (eg: webserver down) then
|
||||
the most recent (cached) version of that remote include will be used, and the
|
||||
IRCd will still boot and be able to REHASH. This means it is now 'safe' to
|
||||
use remote includes on a network, without risking problems like unable to
|
||||
rehash in case of webserver problems.
|
||||
- set::level-on-join now supports voice/halfop/protect/owner
|
||||
- Backslashes (\) in MOTD/RULES files are no longer considered special, this
|
||||
might mean that you have to change some escaped backslashes (\\) to \.
|
||||
- '/REHASH -motd' really rehashes ALL MOTD/OPERMOTD/BOTMOTD/RULES files, both
|
||||
the 'normal' files and the ones in tld { } blocks.
|
||||
- The 'Compile as hub/leaf' choice is now gone, as it didn't do anything.
|
||||
- Better document 'sslclientcert' in the Oper Block documentation.
|
||||
This allows one to authenticate against a SSL certificate for /OPER, instead
|
||||
of using a password.
|
||||
|
||||
==[ MAJOR BUGS FIXED ]==
|
||||
- If you have autoconnect with a low connfreq, previously you often risked getting
|
||||
'Server exists' errors and 'breaking' the network. Now, the server handshake has
|
||||
been redesigned which means this will no longer happen. You can now safely have
|
||||
a low connfreq of - for example - 10 seconds.
|
||||
- Windows: 'Permission denied' errors when starting Unreal
|
||||
- A crash on some new Linux systems when replacing .so files
|
||||
- Solaris & QNX: Compile problems
|
||||
- IPv6: admins no longer have to tweak sysctl, like on FreeBSD & newer Linux systems
|
||||
- IPv6: IPv4 ip's in link::bind-ip did not work properly which made the IRCd either
|
||||
not bind to the correct IP, or - like on FreeBSD - made it unable to link at all.
|
||||
- A very rare crash on outgoing connect
|
||||
|
||||
==[ MINOR BUGS FIXED ]==
|
||||
- autoconnect not working if TS offset was negative (for the duration of the offset)
|
||||
- CGI:IRC & IPv6: sometimes a users' IP was incorrectly formatted, causing 'ghosts'
|
||||
- Mac OS X: permission problems
|
||||
- Several installation issues with curl
|
||||
- SSL: No more 'Underlying syscall error', the actual error is now shown
|
||||
- And many more... see Changelog
|
||||
|
||||
==[ KNOWN ISSUES ]==
|
||||
- Regexes: Be careful with backreferences (\1, etc), certain regexes can slow the
|
||||
IRCd down considerably and even bring it to a near-halt. In the spamfilter user
|
||||
target it's usually safe though. Slow spamfilter detection can help prevent the
|
||||
slowdown/freeze, but might not work in worst-case scenario's.
|
||||
- Regexes: Possessive quantifiers such as, for example, "++" (not to be confused
|
||||
with "+") are not safe to use, they can easily freeze the IRCd.
|
||||
|
||||
==[ ADDITIONAL INFO ]==
|
||||
* See Changelog for more details
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
ircdcron/ircd.cron
|
||||
ircdcron/ircdchk
|
||||
src/modules/Makefile
|
||||
src/ssl.rnd
|
||||
src/win32/devel/StackTrace.lib
|
||||
src/win32/gnu_regex.lib
|
||||
@@ -0,0 +1,16 @@
|
||||
[repository]
|
||||
native = LF
|
||||
|
||||
[patterns]
|
||||
.RELEASE.NOTES = native
|
||||
README = native
|
||||
Unreal.nfo = native
|
||||
makefile.win32 = native
|
||||
Changes = native
|
||||
**.c = native
|
||||
**.h = native
|
||||
**.conf = native
|
||||
**.html = native
|
||||
**.txt = native
|
||||
**.bat = native
|
||||
**.iss = native
|
||||
@@ -0,0 +1,22 @@
|
||||
syntax: regexp
|
||||
|
||||
# particular targets
|
||||
^ircdcron/ircdchk$
|
||||
^ircdcron/ircd\.cron$
|
||||
^src/ircd$
|
||||
^src/include$
|
||||
^src/version\.c$
|
||||
^unreal$
|
||||
|
||||
# General
|
||||
\.(o|so|orig|rej)$
|
||||
~$
|
||||
|
||||
# autotools
|
||||
^config\.(status|log)$
|
||||
|
||||
# not quite autotools
|
||||
^config\.settings$
|
||||
^include/setup\.h$
|
||||
^Makefile$
|
||||
^src/modules/Makefile$
|
||||
Vendored
+1
-1
@@ -13,7 +13,7 @@
|
||||
--braces-on-struct-decl-line
|
||||
--paren-indentation0
|
||||
--case-brace-indentation0
|
||||
--line-length110
|
||||
--line-length80
|
||||
--declaration-indentation5
|
||||
-T size_t
|
||||
-T aClass
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
|
||||
RUN_CONFIGURE () {
|
||||
ARG=""
|
||||
ARG=" "
|
||||
# Do this even if we're not in advanced mode
|
||||
if [ "$SHOWLISTMODES" = "1" ] ; then
|
||||
ARG="$ARG--with-showlistmodes "
|
||||
@@ -44,13 +44,9 @@ fi
|
||||
if [ "$DISABLEEXTBANSTACKING" = "1" ]; then
|
||||
ARG="$ARG--with-disable-extendedban-stacking ";
|
||||
fi
|
||||
ARG="$ARG--with-moduleswhich=$MODULESWHICH "
|
||||
fi
|
||||
if [ "$NOSPOOF" = "1" ] ; then
|
||||
ARG="$ARG--enable-nospoof "
|
||||
fi
|
||||
if [ -n "$HUB" ] ; then
|
||||
ARG="$ARG--enable-hub "
|
||||
if [ "$NOSPOOF" != "1" ] ; then
|
||||
ARG="$ARG--disable-nospoof "
|
||||
fi
|
||||
if [ "$CRYPTOIRCD" = "1" ] ; then
|
||||
if test x"$SSLDIR" = "x" ; then
|
||||
@@ -72,8 +68,8 @@ fi
|
||||
if [ "$INET6" = "1" ] ; then
|
||||
ARG="$ARG--enable-inet6 "
|
||||
fi
|
||||
if [ "$PREFIXAQ" = "1" ]; then
|
||||
ARG="$ARG--enable-prefixaq "
|
||||
if [ "$PREFIXAQ" != "1" ]; then
|
||||
ARG="$ARG--disable-prefixaq "
|
||||
fi
|
||||
ARG="$ARG--with-listen=$LISTEN_SIZE "
|
||||
ARG="$ARG--with-dpath=$DPATH "
|
||||
@@ -86,6 +82,9 @@ ARG="$ARG--with-fd-setsize=$MAXCONNECTIONS "
|
||||
ARG="$ARG--enable-dynamic-linking "
|
||||
ARG="$ARG $EXTRAPARA "
|
||||
CONF="./configure $ARG"
|
||||
if [ "x$INSTALLCURL" = "x1" ]; then
|
||||
./curlinstall || exit 1
|
||||
fi
|
||||
echo $CONF
|
||||
$CONF || exit 1
|
||||
cd "$UNREALCWD"
|
||||
@@ -307,46 +306,13 @@ while [ -z "$TEST" ] ; do
|
||||
esac
|
||||
done
|
||||
|
||||
TEST=""
|
||||
while [ -z "$TEST" ]; do
|
||||
if [ "$MODULESWHICH" = "onlycommands" ]; then
|
||||
TEST="commands"
|
||||
elif [ "$MODULESWHICH" = "onlymodules" ]; then
|
||||
TEST="modules"
|
||||
else
|
||||
TEST="both"
|
||||
fi
|
||||
echo ""
|
||||
echo "Do you wish to compile commands.so, the m_*.so modules, or both?"
|
||||
echo $n "[$TEST] -> $c"
|
||||
read cc
|
||||
if [ -z "$cc" ]; then
|
||||
cc=$TEST
|
||||
fi
|
||||
case "$cc" in
|
||||
commands|commands.so|onlycommands|commandsonly)
|
||||
MODULESWHICH="onlycommands"
|
||||
;;
|
||||
modules|m_\*.so|onlymodules|modulesonly)
|
||||
MODULESWHICH="onlymodules"
|
||||
;;
|
||||
both|commandsandmodules|modulesandcommands)
|
||||
MODULESWHICH="commandsandmodules"
|
||||
;;
|
||||
*)
|
||||
echo ""
|
||||
echo "Unrecognized response"
|
||||
TEST=""
|
||||
esac
|
||||
done
|
||||
}
|
||||
c=""
|
||||
n=""
|
||||
UNREALCWD="`pwd`"
|
||||
NOSPOOF=""
|
||||
NOSPOOF="1"
|
||||
DPATH="`pwd`"
|
||||
SPATH="`pwd`/src"
|
||||
HUB="1"
|
||||
SPATH="`pwd`/src/ircd"
|
||||
DEFPERM="0600"
|
||||
CRYPTOIRCD=""
|
||||
SSLDIR=""
|
||||
@@ -368,7 +334,6 @@ NOOPEROVERRIDE=""
|
||||
DISABLEUSERMOD=""
|
||||
OPEROVERRIDEVERIFY=""
|
||||
DISABLEEXTBANSTACKING=""
|
||||
MODULESWHICH=""
|
||||
EXTRAPARA=""
|
||||
if [ "`eval echo -n 'a'`" = "-n a" ] ; then
|
||||
c="\c"
|
||||
@@ -453,8 +418,10 @@ while [ -z "$TEST" ] ; do
|
||||
echo "Many older operating systems have an insecure TCP/IP stack"
|
||||
echo "which may be vulnerable to IP spoofing attacks, if you run"
|
||||
echo "an operating system that is vulnerable to such attacks"
|
||||
echo "enable this option. This option can also be useful to prevent"
|
||||
echo "blind proxies from connecting (eg: HTTP POST proxies)."
|
||||
echo "enable this option."
|
||||
echo "This option also prevents blind proxies (eg: HTTP POST proxies)"
|
||||
echo "and other blind clients from connecting (eg: protects against"
|
||||
echo "the Firefox XPS IRC Attack)."
|
||||
echo ""
|
||||
echo "Do you want to enable the server anti-spoof protection?"
|
||||
echo $n "[$TEST] -> $c"
|
||||
@@ -479,7 +446,7 @@ done
|
||||
|
||||
TEST="$DPATH"
|
||||
echo ""
|
||||
echo "Where do you want to install the server configuration files?"
|
||||
echo "What directory are all the server configuration files in?"
|
||||
echo $n "[$TEST] -> $c"
|
||||
read cc
|
||||
if [ -z "$cc" ] ; then
|
||||
@@ -488,45 +455,26 @@ else
|
||||
DPATH=`eval echo $cc` # modified
|
||||
fi
|
||||
|
||||
TEST="$SPATH"
|
||||
echo ""
|
||||
echo "Where do you want to install the server binary?"
|
||||
echo $n "[$TEST] -> $c"
|
||||
read cc
|
||||
if [ -z "$cc" ] ; then
|
||||
SPATH=$TEST
|
||||
else
|
||||
SPATH=`eval echo $cc` # modified
|
||||
fi
|
||||
|
||||
TEST=""
|
||||
SAVEME="$SPATH"
|
||||
while [ -z "$TEST" ] ; do
|
||||
if [ "$HUB" = "1" ] ; then
|
||||
TEST="Hub"
|
||||
else
|
||||
TEST="Leaf"
|
||||
fi
|
||||
TEST="$SAVEME"
|
||||
echo ""
|
||||
echo "Would you like to compile as a hub or as a leaf?"
|
||||
echo "Type Hub to select hub and Leaf to select leaf."
|
||||
echo "What is the path to the ircd binary including the name of the binary?"
|
||||
echo $n "[$TEST] -> $c"
|
||||
read cc
|
||||
read cc
|
||||
if [ -z "$cc" ] ; then
|
||||
cc=$TEST
|
||||
SPATH=$TEST
|
||||
else
|
||||
SPATH=`eval echo $cc` # modified
|
||||
fi
|
||||
if [ "$SPATH" = "$DPATH" ]; then
|
||||
echo ""
|
||||
echo "You need to specify the path to the BINARY, not to a directory."
|
||||
echo "The answer to this question can never be identical to the previous one."
|
||||
echo "HINT: perhaps you want $DPATH/ircd ?"
|
||||
TEST=""
|
||||
fi
|
||||
case "$cc" in
|
||||
[Hh]*)
|
||||
HUB="1"
|
||||
;;
|
||||
[Ll]*)
|
||||
HUB=""
|
||||
;;
|
||||
*)
|
||||
echo ""
|
||||
echo "You must enter either Hub or Leaf"
|
||||
TEST=""
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
TEST=""
|
||||
@@ -587,7 +535,7 @@ if [ "$CRYPTOIRCD" = "1" ] ; then
|
||||
TEST="$SSLDIR"
|
||||
echo ""
|
||||
echo "If you know the path to OpenSSL on your system, enter it here. If not"
|
||||
echo "leave this blank"
|
||||
echo "leave this blank (in most cases it will be detected automatically)."
|
||||
echo $n "[$TEST] -> $c"
|
||||
read cc
|
||||
if [ -z "$cc" ] ; then
|
||||
@@ -678,6 +626,8 @@ while [ -z "$TEST" ] ; do
|
||||
fi
|
||||
echo ""
|
||||
echo "Do you want to enable remote includes?"
|
||||
echo "This allows stuff like this in your configuration file:"
|
||||
echo "include \"http://www.somesite.org/files/opers.conf\";"
|
||||
echo $n "[$TEST] -> $c"
|
||||
read cc
|
||||
if [ -z "$cc" ] ; then
|
||||
@@ -700,20 +650,144 @@ while [ -z "$TEST" ] ; do
|
||||
done
|
||||
|
||||
if [ "$REMOTEINC" = "1" ] ; then
|
||||
TEST=""
|
||||
while [ -z "$TEST" ] ; do
|
||||
TEST="$CURLDIR"
|
||||
echo ""
|
||||
echo "Specify the directory you installed libcurl to"
|
||||
echo $n "[$TEST] -> $c"
|
||||
read cc
|
||||
if [ -z "$cc" ] ; then
|
||||
cc=$TEST
|
||||
else
|
||||
TEST=$cc
|
||||
CURLDIR=`eval echo $cc` # modified
|
||||
if [ ! -d "$CURLDIR" ]; then
|
||||
# Reset any previous CURLDIR if it doesn't exist (anymore)
|
||||
CURLDIR=""
|
||||
fi
|
||||
|
||||
|
||||
INSTALLCURL="0"
|
||||
if [ "x$CURLDIR" = "x" ]; then
|
||||
# There is no reason to support this:
|
||||
if [ -d "/usr/local/include/curl" ]; then
|
||||
CURLDIR="/usr/local"
|
||||
fi
|
||||
done
|
||||
# Zeroeth, let's act SANE
|
||||
if [ -d "/usr/include/curl" ]; then
|
||||
CURLDIR="/usr"
|
||||
fi
|
||||
# First, let's make shell admins happy...
|
||||
if [ -d "/usr/share/unreal-curl" ]; then
|
||||
CURLDIR="/usr/share/unreal-curl"
|
||||
fi
|
||||
|
||||
GOTASYNC=0
|
||||
if [ "x$CURLDIR" != "x" ]; then
|
||||
# Check if it's of any use: a curl without async dns (cares) hangs the entire ircd..
|
||||
# normally this is done in ./configure but now we're forced to do it also here..
|
||||
if "$CURLDIR"/bin/curl-config --features | grep -q -e AsynchDNS; then
|
||||
GOTASYNC="1"
|
||||
fi
|
||||
if [ "$GOTASYNC" != "1" ]; then
|
||||
PREVCURLDIR="$CURLDIR"
|
||||
CURLDIR=""
|
||||
fi
|
||||
fi
|
||||
|
||||
# Second, use the local curl if it exists (overrides above)
|
||||
if [ -d "$HOME/curl" ]; then
|
||||
CURLDIR="$HOME/curl"
|
||||
|
||||
# Check if it's recent enough...
|
||||
# But first, check if curl-config can be trusted at all: it depends
|
||||
# on 'bc' for some reason and not all systems have that installed!
|
||||
echo "1+1"|bc 1>/dev/null 2>&1
|
||||
if [ "$?" = 0 ]; then
|
||||
"$CURLDIR"/bin/curl-config --checkfor 7.21.0
|
||||
if [ "$?" != 0 ]; then
|
||||
echo ""
|
||||
echo "Your self-compiled CURL library in $CURLDIR is slightly outdated."
|
||||
echo "This probably means you had the library from a previous installation of UnrealIRCd."
|
||||
echo "Because previous versions may be linked to a previous version to c-ares which"
|
||||
echo "were not ABI compatible it is highly recommended to remove the version"
|
||||
echo "and recompile it. We now have an automatic downloader and installer to compile"
|
||||
echo "and install curl for you (in $CURLDIR). You can choose to do so in the question"
|
||||
echo "after this one."
|
||||
TEST=""
|
||||
while [ -z "$TEST" ] ; do
|
||||
TEST="Yes"
|
||||
echo "Shall I rename $CURLDIR to $CURLDIR.old so it can be rebuild later on?"
|
||||
echo $n "[$TEST] -> $c"
|
||||
read cc
|
||||
if [ -z "$cc" ] ; then
|
||||
cc=$TEST
|
||||
fi
|
||||
case "$cc" in
|
||||
[Yy]*)
|
||||
rm -rf "$CURLDIR".old
|
||||
mv "$CURLDIR" "$CURLDIR".old
|
||||
CURLDIR=""
|
||||
GOTASYNC=1
|
||||
# wow the GOTASYNC=1 is hackish, but we need to prevent the error from later on
|
||||
;;
|
||||
[Nn]*)
|
||||
echo "Uh, ok... I hope you know what you are doing..."
|
||||
echo ""
|
||||
;;
|
||||
*)
|
||||
echo ""
|
||||
echo "You must enter either Yes or No"
|
||||
TEST=""
|
||||
;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# Need to output it here, as the HOME check from above may cause this to be no longer relevant.
|
||||
if [ "x$CURLDIR" = "x" -a "$GOTASYNC" != "1" ]; then
|
||||
echo "Curl library was found in $PREVCURLDIR, but it does not support Asynchronous DNS (not compiled with c-ares)"
|
||||
echo "so it's of no use to us."
|
||||
fi
|
||||
|
||||
fi
|
||||
if [ "x$CURLDIR" = "x" ]; then
|
||||
# Still empty?
|
||||
TEST=""
|
||||
while [ -z "$TEST" ] ; do
|
||||
TEST="Yes"
|
||||
echo ""
|
||||
echo "Do you want me to automatically download and install curl for you?"
|
||||
echo "(will install in $HOME/curl)"
|
||||
echo $n "[$TEST] -> $c"
|
||||
read cc
|
||||
if [ -z "$cc" ] ; then
|
||||
cc=$TEST
|
||||
fi
|
||||
case "$cc" in
|
||||
[Yy]*)
|
||||
INSTALLCURL="1"
|
||||
CURLDIR="$HOME/curl"
|
||||
;;
|
||||
[Nn]*)
|
||||
INSTALLCURL="0"
|
||||
;;
|
||||
*)
|
||||
echo ""
|
||||
echo "You must enter either Yes or No"
|
||||
TEST=""
|
||||
;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
|
||||
if [ "$INSTALLCURL" != "1" ]; then
|
||||
TEST=""
|
||||
while [ -z "$TEST" ] ; do
|
||||
TEST="$CURLDIR"
|
||||
echo ""
|
||||
echo "Specify the directory you installed libcurl to"
|
||||
echo $n "[$TEST] -> $c"
|
||||
read cc
|
||||
if [ -z "$cc" ] ; then
|
||||
cc=$TEST
|
||||
else
|
||||
TEST=$cc
|
||||
CURLDIR=`eval echo $cc` # modified
|
||||
fi
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
@@ -872,11 +946,16 @@ done
|
||||
if [ -n "$ADVANCED" ] ; then
|
||||
RUN_ADVANCED
|
||||
fi
|
||||
|
||||
TEST="$EXTRAPARA"
|
||||
echo ""
|
||||
echo "Would you like any more parameters to configure?"
|
||||
echo "Write them here:"
|
||||
echo $n "[]-> $c"
|
||||
echo "Would you like to pass any custom parameters to configure?"
|
||||
echo "See \`./configure --help' and write them here:"
|
||||
echo $n "[$TEST] -> $c"
|
||||
read EXTRAPARA
|
||||
if [ -z "$EXTRAPARA" ]; then
|
||||
EXTRAPARA="$TEST"
|
||||
fi
|
||||
|
||||
rm -f config.settings
|
||||
cat > config.settings << __EOF__
|
||||
@@ -891,7 +970,6 @@ MAXSENDQLENGTH="$MAXSENDQLENGTH"
|
||||
BUFFERPOOL="$BUFFERPOOL"
|
||||
MAXCONNECTIONS="$MAXCONNECTIONS"
|
||||
NICKNAMEHISTORYLENGTH="$NICKNAMEHISTORYLENGTH"
|
||||
HUB="$HUB"
|
||||
DEFPERM="$DEFPERM"
|
||||
CRYPTOIRCD="$CRYPTOIRCD"
|
||||
SSLDIR="$SSLDIR"
|
||||
@@ -906,7 +984,6 @@ NOOPEROVERRIDE="$NOOPEROVERRIDE"
|
||||
DISABLEUSERMOD="$DISABLEUSERMOD"
|
||||
OPEROVERRIDEVERIFY="$OPEROVERRIDEVERIFY"
|
||||
DISABLEEXTBANSTACKING="$DISABLEEXTBANSTACKING"
|
||||
MODULESWHICH="$MODULESWHICH"
|
||||
EXTRAPARA="$EXTRAPARA"
|
||||
ADVANCED="$ADVANCED"
|
||||
__EOF__
|
||||
@@ -927,8 +1004,6 @@ cat << __EOF__
|
||||
|_______________________________________________________________________|
|
||||
| - The UnrealIRCd Team - |
|
||||
| |
|
||||
| * Stskeeps stskeeps@unrealircd.com |
|
||||
| * codemastr codemastr@unrealircd.com |
|
||||
| * Syzop syzop@unrealircd.com |
|
||||
|_______________________________________________________________________|
|
||||
__EOF__
|
||||
|
||||
@@ -1,32 +1,18 @@
|
||||
UnrealIRCd is a free program, but we do put a lot of time, effort, and money
|
||||
into creating and maintaining Unreal. To make it easier for user's to show their
|
||||
into creating and maintaining Unreal. To make it easier for users to show their
|
||||
appreciation, the Unreal team has decided to accept donations through PayPal. If
|
||||
you like Unreal, and you'd like to see it continue to exist, please consider making
|
||||
a donation. We're not asking for anything huge, whatever you can afford is fine.
|
||||
|
||||
PayPal Donation Link:
|
||||
<https://www.paypal.com/xclick/business=donation%40unrealircd.org&
|
||||
item_name=UnrealIRCd+Donation&no_shipping=1&cn=Comments&tax=0¤cy_code=USD>
|
||||
PayPal Donation Link: http://unrealircd.com/donate.php
|
||||
|
||||
Or simply send a payment through PayPal to:
|
||||
donation@unrealircd.org
|
||||
If you don't want to use PayPal, or you want to donate something other than money,
|
||||
contact Syzop (syzop@unrealircd.com).
|
||||
|
||||
If you don't want to use PayPal, or you want to donate something other than money
|
||||
(old computer hardware, etc.), contact Stskeeps (stskeeps@unrealircd.com) and send
|
||||
your donation to:
|
||||
|
||||
UnrealIRCd Project
|
||||
C/O Carsten Munk
|
||||
P.O.Box 52
|
||||
7400 Herning
|
||||
Denmark
|
||||
|
||||
All those who donate at least $10 USD will have their name and/or company listed in /credits.
|
||||
Additionally, all donators will be listed on the website (regardless of the amount). To make
|
||||
this possible, please include along with your donation the name (or nickname) you want to
|
||||
appear in the list as well as the company name (or IRC server) to list.
|
||||
All those who donate at least a certain minimum amount will have their name
|
||||
and/or company listed in /CREDITS.
|
||||
Additionally, all donators will be listed on the website (regardless of the amount).
|
||||
Please check the website for details.
|
||||
|
||||
Thank you for your support,
|
||||
The UnrealIRCd Team
|
||||
|
||||
[ $Id$ ]
|
||||
|
||||
+23
-29
@@ -20,7 +20,6 @@
|
||||
#*/
|
||||
|
||||
CC=@CC@
|
||||
CXX=@CXX@
|
||||
INCLUDEDIR=../include
|
||||
NETWORKSDIR=
|
||||
FROMDOS=/home/cmunk/bin/4dos
|
||||
@@ -35,11 +34,11 @@ FROMDOS=/home/cmunk/bin/4dos
|
||||
#
|
||||
|
||||
#XCFLAGS=-O -g -export-dynamic
|
||||
IRCDLIBS=@IRCDLIBS@ @TRELIBS@ @CARESLIBS@
|
||||
IRCDLIBS=@IRCDLIBS@ @TRE_LIBS@ @CARES_LIBS@
|
||||
CRYPTOLIB=@CRYPTOLIB@
|
||||
OPENSSLINCLUDES=
|
||||
|
||||
XCFLAGS=-I@TREINCDIR@ -I@CARESINCDIR@ @CARESLIBDIR@ @CFLAGS@
|
||||
XCFLAGS=@TRE_CFLAGS@ @CARES_CFLAGS@ @CFLAGS@
|
||||
#
|
||||
# use the following on MIPS:
|
||||
#CFLAGS= -systype bsd43 -DSYSTYPE_BSD43 -I$(INCLUDEDIR)
|
||||
@@ -105,9 +104,11 @@ URL=@URL@
|
||||
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.
|
||||
# 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. You may override
|
||||
# the system FD_SETSIZE by setting the FD_SETSIZE Makefile variable to
|
||||
# -DFD_SETSIZE=<some number>.
|
||||
FD_SETSIZE=@FD_SETSIZE@
|
||||
|
||||
# Where is your openssl binary
|
||||
@@ -133,21 +134,12 @@ MAKEARGS = 'CFLAGS=${CFLAGS}' 'CC=${CC}' 'IRCDLIBS=${IRCDLIBS}' \
|
||||
'SHELL=${SHELL}' 'STRTOUL=${STRTOUL}' \
|
||||
'CRYPTOLIB=${CRYPTOLIB}' \
|
||||
'CRYPTOINCLUDES=${CRYPTOINCLUDES}' \
|
||||
'URL=${URL}' 'CXX=${CXX}'
|
||||
|
||||
INSTALL_CONFS = badwords.channel.conf badwords.message.conf \
|
||||
badwords.quit.conf dccallow.conf help.conf \
|
||||
spamfilters.conf.sample LICENSE Donation
|
||||
|
||||
INSTALL_DOCS = doc/Authors doc/example.conf doc/coding-guidelines \
|
||||
doc/tao.of.irc doc/unreal32docs.html
|
||||
'URL=${URL}'
|
||||
|
||||
custommodule:
|
||||
@if test -z "${MODULEFILE}"; then echo "Please set MODULEFILE when calling \`\`make custommodule''. For example, \`\`make custommodule MODULEFILE=callerid''." >&2; exit 1; fi
|
||||
cd src; ${MAKE} ${MAKEARGS} MODULEFILE=${MODULEFILE} 'EXLIBS=${EXLIBS}' custommodule
|
||||
|
||||
custommodulecpp:
|
||||
cd src; ${MAKE} ${MAKEARGS} MODULEFILE=${MODULEFILE} 'EXLIBS=${EXLIBS}' custommodulecpp
|
||||
|
||||
server:
|
||||
build:
|
||||
-@if [ ! -f include/setup.h ] ; then \
|
||||
@@ -214,25 +206,27 @@ depend:
|
||||
|
||||
install: all
|
||||
$(INSTALL) -m 0700 -d $(IRCDDIR)
|
||||
$(INSTALL) -m 0700 -d $(BINDIR)
|
||||
$(INSTALL) -b -m 0700 src/ircd $(BINDIR)
|
||||
$(INSTALL) -m 0700 src/ircd $(BINDIR) 2>/dev/null || { $(INSTALL) -m 0700 -d "$$(dirname '$(BINDIR)')"; $(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 $(INSTALL_DOCS) $(IRCDDIR)/doc
|
||||
$(INSTALL) -m 0600 doc/Authors doc/example.conf doc/coding-guidelines doc/tao.of.irc doc/unreal32docs.html $(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) -b -m 0600 $(INSTALL_CONFS) $(IRCDDIR)
|
||||
$(INSTALL) -b -m 0700 unreal $(IRCDDIR)
|
||||
$(INSTALL) -m 0600 spamfilter.conf dccallow.conf $(IRCDDIR)
|
||||
$(INSTALL) -m 0600 badwords.*.conf help.conf LICENSE Donation $(IRCDDIR)
|
||||
$(INSTALL) -m 0700 unreal $(IRCDDIR)
|
||||
$(INSTALL) -m 0700 -d $(IRCDDIR)/modules
|
||||
$(INSTALL) -b -m 0700 src/modules/*.so $(IRCDDIR)/modules
|
||||
$(INSTALL) -m 0700 src/modules/*.so $(IRCDDIR)/modules
|
||||
$(INSTALL) -m 0700 -d $(IRCDDIR)/ircdcron
|
||||
$(INSTALL) -m 0600 ircdcron/ircd.cron $(IRCDDIR)/ircdcron
|
||||
$(INSTALL) -m 0700 ircdcron/ircdchk $(IRCDDIR)/ircdcron
|
||||
-@if [ ! -f "$(IRCDDIR)/curl-ca-bundle.crt" ] ; then \
|
||||
$(INSTALL) -b -m 0700 curl-ca-bundle.crt $(IRCDDIR) ; \
|
||||
fi
|
||||
-@if [ -f server.key.pem ] ; then \
|
||||
if [ ! -f "$(IRCDDIR)/server.key.pem" ] ; then \
|
||||
$(INSTALL) -b -m 0600 server.*.pem $(IRCDDIR) ; \
|
||||
fi ; \
|
||||
$(INSTALL) -m 0700 curl-ca-bundle.crt $(IRCDDIR) ; \
|
||||
fi
|
||||
|
||||
pem: src/ssl.cnf
|
||||
|
||||
+55
-47
@@ -1,66 +1,74 @@
|
||||
===============================================
|
||||
= UnrealIRCd v3.3* =
|
||||
= UnrealIRCd v3.2.9-RC2 =
|
||||
===============================================
|
||||
This release was brought to you by:
|
||||
|
||||
Was brought to you by:
|
||||
Head coder:
|
||||
============
|
||||
* Syzop
|
||||
|
||||
The head coders
|
||||
================
|
||||
* Stskeeps <stskeeps@tspre.org>
|
||||
* Syzop <syzop@unrealircd.com>
|
||||
* codemastr <codemastr@unrealircd.com>
|
||||
Coders:
|
||||
========
|
||||
* binki
|
||||
|
||||
The coders
|
||||
Contributors:
|
||||
=============
|
||||
* Bock
|
||||
* goldenwolf
|
||||
* katsklaw
|
||||
* Stealth
|
||||
|
||||
RC Testers:
|
||||
===========
|
||||
* DarkElf <darkelf@unrealircd.com>
|
||||
* Trocotronic <trocotronic@unrealircd.com>
|
||||
* aquanight <aquanight@unrealircd.com>
|
||||
LqidSkin, goldenwolf, katsklaw, nph, selten, Simplicity
|
||||
|
||||
Additional credits
|
||||
===================
|
||||
Credit also goes to past UnrealIRCd coders, including: McSkaf, Zogg,
|
||||
NiQuiL, assyrian, nighthawk, DrBin, llthangel and Griever.
|
||||
Credit also goes to everyone else who contributed, and those who coded
|
||||
or contributed to UnrealIRCd's ancestors.
|
||||
Previous coders:
|
||||
================
|
||||
* Stskeeps
|
||||
* codemastr
|
||||
* Many more..
|
||||
|
||||
WEBSITE
|
||||
========
|
||||
http://www.unrealircd.com/
|
||||
|
||||
CVS
|
||||
====
|
||||
To get anonymous access: (read only)
|
||||
"cvs -d :pserver:anonymous@cvs.ircsystems.net:/home/cmunk/ircsystems/cvsroot login"
|
||||
|
||||
press enter when asked for password
|
||||
Then, choose the appropiate branch you want:
|
||||
|
||||
latest 3.3 release (unstable/development):
|
||||
"cvs -d :pserver:anonymous@cvs.ircsystems.net:/home/cmunk/ircsystems/cvsroot checkout -r devel -d Unreal-stable unreal"
|
||||
Internet Presence:
|
||||
* http://www.unrealircd.com/
|
||||
|
||||
UnrealIRCd Bugtracker (Where to report bugs, make suggestions, and submit patches)
|
||||
===================================================================================
|
||||
http://bugs.unrealircd.org/
|
||||
|
||||
To get support
|
||||
================
|
||||
Before asking others for help you MUST:
|
||||
* read the docs (doc/unreal32docs.html or online: www.unrealircd.com/unreal32docs.html)
|
||||
* check the FAQ (www.vulnscan.org/UnrealIRCd/faq/)
|
||||
* read the docs (doc/unreal32docs.html or online: http://unrealircd.com/unreal32docs.html)
|
||||
* check the FAQ (http://vulnscan.org/UnrealIrcd/faq/)
|
||||
|
||||
Means of support:
|
||||
* IRC: /server irc.unrealircd.com 6667 - /join #unreal-support
|
||||
[Note: Follow the bot's instructions in order to get voice.
|
||||
Please be patient after asking questions, we may be busy
|
||||
or we're away. Don't repeat questions, we will have heard
|
||||
you first time.
|
||||
READ THE TOPIC before you ask anything. We give support
|
||||
on a free basis. We are volunteering to help you, but we
|
||||
are humans like you. We sometimes just need some peace.]
|
||||
* Forum: http://forums.unrealircd.com/
|
||||
* IRC: /server irc.ircsystems.net 6667 - /join #unreal-support
|
||||
[Note: Follow the bots instructions in order to get voice.
|
||||
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-users@lists.sourceforge.net
|
||||
(http://lists.sourceforge.net/lists/listinfo/unreal-users also
|
||||
has links to the archive).
|
||||
|
||||
UnrealIRCd Bugtracker (Where to report bugs or make suggestions)
|
||||
=================================================================
|
||||
http://bugs.unrealircd.org
|
||||
Development version
|
||||
====================
|
||||
To access the latest development version of UnrealIRCd you need to use mercurial (hg).
|
||||
Note that because you are accessing a development version it may not compile, the
|
||||
server may crash, or other problems can occur since the code is likely to be only
|
||||
lightly tested (or not at all). On the other hand, using the development version may
|
||||
help you to get rid of that single nasty bug that is haunting you, plus if you test
|
||||
it and give us feedback (report bugs) then you actually help us with developing Unreal.
|
||||
|
||||
The command to grab the development version is:
|
||||
hg clone http://hg.unrealircd.org/unreal
|
||||
|
||||
If you get something like 'hg: command not found' then you need to install mercurial.
|
||||
Most *NIX systems have such a 'mercurial' package, but if you don't, or you are on
|
||||
Windows or Mac OS X, then see http://mercurial.selenic.com/
|
||||
|
||||
Want to discuss, chat, etc?
|
||||
=============================
|
||||
* IRC: /server irc.unrealircd.org 6667 - /join #UnrealIRCd
|
||||
* IRC: /server irc.unrealircd.com 6667 - /join #chat
|
||||
(NOT for support! If you want support then use #unreal-support instead!)
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
/* Atheme Aliases */
|
||||
|
||||
alias nickserv { type services; };
|
||||
alias ns { target nickserv; type services; };
|
||||
alias chanserv { type services; };
|
||||
alias cs { target chanserv; type services; };
|
||||
alias memoserv { type services; spamfilter yes; };
|
||||
alias ms { target memoserv; type services; spamfilter yes; };
|
||||
alias operserv { type services; };
|
||||
alias os { target operserv; type services; };
|
||||
alias helpserv { type services; };
|
||||
alias botserv { type services; };
|
||||
alias bs { target botserv; type services; };
|
||||
alias hostserv { type services; };
|
||||
alias hs { target hostserv; type services; };
|
||||
alias saslserv { type services; };
|
||||
alias sss { target saslserv; type services; };
|
||||
alias gameserv { type services; };
|
||||
alias gms { target gameserv; type services; };
|
||||
alias groupserv { type services; };
|
||||
alias grs { target groupserv; type services; };
|
||||
alias alis { type services; };
|
||||
alias ls { target alis; type services; };
|
||||
|
||||
include "aliases/aliases.conf";
|
||||
|
||||
Vendored
-174
@@ -1,174 +0,0 @@
|
||||
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
|
||||
AC_CHECK_SIZEOF(rlim_t)
|
||||
if test "$ac_cv_sizeof_rlim_t" = 8 ; then
|
||||
AC_DEFINE(LONG_LONG_RLIM_T)
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN(CHECK_LIBCURL,
|
||||
[
|
||||
AC_ARG_ENABLE(libcurl,
|
||||
[AC_HELP_STRING([--enable-libcurl=DIR],[enable libcurl (remote include) support])],
|
||||
[
|
||||
CURLCFLAG=`$enableval/bin/curl-config --cflags`
|
||||
CURLLIBS=`$enableval/bin/curl-config --libs`
|
||||
|
||||
dnl Ok this is ugly, basically we need to strip the version of c-ares that curl uses
|
||||
dnl because we want to use our own version (which is hopefully fully binary
|
||||
dnl compatible with the curl one as well).
|
||||
dnl Therefore we need to strip the cares libs in a weird way...
|
||||
dnl If anyone can come up with something better and still portable (no awk!?)
|
||||
dnl then let us know.
|
||||
if test "x`echo $CURLLIBS |grep ares`" != x ; then
|
||||
dnl Attempt one: Linux sed
|
||||
XCURLLIBS="`echo "$CURLLIBS"|sed -r 's/(@<:@^ @:>@+ @<:@^ @:>@+ )(@<:@^ @:>@+ @<:@^ @:>@+ )(.+)/\1\3/g' 2>/dev/null`"
|
||||
if test x"$XCURLLIBS" = x; then
|
||||
dnl Attempt two: FreeBSD (and others?) sed
|
||||
XCURLLIBS="`echo "$CURLLIBS"|sed -E 's/(@<:@^ @:>@+ @<:@^ @:>@+ )(@<:@^ @:>@+ @<:@^ @:>@+ )(.+)/\1\3/g' 2>/dev/null`"
|
||||
if test x"$XCURLLIBS" = x; then
|
||||
AC_MSG_ERROR([sed appears to be broken. It is needed for a remote includes compile hack.])
|
||||
fi
|
||||
fi
|
||||
CURLLIBS="$XCURLLIBS"
|
||||
fi
|
||||
|
||||
IRCDLIBS="$IRCDLIBS $CURLLIBS"
|
||||
CFLAGS="$CFLAGS $CURLCFLAG -DUSE_LIBCURL"
|
||||
URL="url.o"
|
||||
AC_SUBST(URL)
|
||||
])
|
||||
])
|
||||
|
||||
dnl the following 2 macros are based on CHECK_SSL by Mark Ethan Trostler <trostler@juniper.net>
|
||||
|
||||
AC_DEFUN([CHECK_SSL],
|
||||
[
|
||||
AC_ARG_ENABLE(ssl,
|
||||
[AC_HELP_STRING([--enable-ssl=],[enable ssl will check /usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /usr])],
|
||||
[
|
||||
AC_MSG_CHECKING(for openssl)
|
||||
for dir in $enableval /usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /usr; do
|
||||
ssldir="$dir"
|
||||
if test -f "$dir/include/openssl/ssl.h"; then
|
||||
AC_MSG_RESULT(found in $ssldir/include/openssl)
|
||||
found_ssl="yes";
|
||||
if test ! "$ssldir" = "/usr" ; then
|
||||
CFLAGS="$CFLAGS -I$ssldir/include";
|
||||
fi
|
||||
break;
|
||||
fi
|
||||
if test -f "$dir/include/ssl.h"; then
|
||||
AC_MSG_RESULT(found in $ssldir/include)
|
||||
found_ssl="yes";
|
||||
if test ! "$ssldir" = "/usr" ; then
|
||||
CFLAGS="$CFLAGS -I$ssldir/include";
|
||||
fi
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test x_$found_ssl != x_yes; then
|
||||
AC_MSG_RESULT(not found)
|
||||
echo ""
|
||||
echo "Apparently you do not have both the openssl binary and openssl development libraries installed."
|
||||
echo "You have two options:"
|
||||
echo "a) Install the needed binaries and libraries"
|
||||
echo " and run ./Config"
|
||||
echo "OR"
|
||||
echo "b) If you don't need SSL..."
|
||||
echo " Run ./Config and say 'no' when asked about SSL"
|
||||
echo ""
|
||||
exit 1
|
||||
else
|
||||
CRYPTOLIB="-lssl -lcrypto";
|
||||
if test ! "$ssldir" = "/usr" ; then
|
||||
LDFLAGS="$LDFLAGS -L$ssldir/lib";
|
||||
fi
|
||||
AC_DEFINE(USE_SSL)
|
||||
fi
|
||||
],
|
||||
)
|
||||
])
|
||||
|
||||
AC_DEFUN([CHECK_ZLIB],
|
||||
[
|
||||
AC_ARG_ENABLE(ziplinks,
|
||||
[AC_HELP_STRING([--enable-ziplinks],[enable ziplinks will check /usr/local /usr /usr/pkg])],
|
||||
[
|
||||
AC_MSG_CHECKING(for zlib)
|
||||
for dir in $enableval /usr/local /usr /usr/pkg; do
|
||||
zlibdir="$dir"
|
||||
if test -f "$dir/include/zlib.h"; then
|
||||
AC_MSG_RESULT(found in $zlibdir)
|
||||
found_zlib="yes";
|
||||
if test "$zlibdir" = "/usr" ; then
|
||||
CFLAGS="$CFLAGS -DZIP_LINKS";
|
||||
else
|
||||
CFLAGS="$CFLAGS -I$zlibdir/include -DZIP_LINKS";
|
||||
fi
|
||||
break;
|
||||
fi
|
||||
done
|
||||
if test x_$found_zlib != x_yes; then
|
||||
AC_MSG_RESULT(not found)
|
||||
echo ""
|
||||
echo "Apparently you do not have the zlib development library installed."
|
||||
echo "You have two options:"
|
||||
echo "a) Install the zlib development library"
|
||||
echo " and run ./Config"
|
||||
echo "OR"
|
||||
echo "b) If you don't need compressed links..."
|
||||
echo " Run ./Config and say 'no' when asked about ziplinks support"
|
||||
echo ""
|
||||
exit 1
|
||||
else
|
||||
IRCDLIBS="$IRCDLIBS -lz";
|
||||
if test "$zlibdir" != "/usr" ; then
|
||||
LDFLAGS="$LDFLAGS -L$zlibdir/lib";
|
||||
fi
|
||||
HAVE_ZLIB=yes
|
||||
fi
|
||||
AC_SUBST(HAVE_ZLIB)
|
||||
],
|
||||
)
|
||||
])
|
||||
@@ -1,507 +0,0 @@
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
AC_INIT(src/ircd.c)
|
||||
if test $# = 0; then
|
||||
echo "You might want to run ./Config or provide some parameters to this script."
|
||||
echo "./configure --help for information about this script"
|
||||
exit 0
|
||||
fi
|
||||
AC_CONFIG_HEADER(include/setup.h)
|
||||
AC_PROG_CC
|
||||
if test "$ac_cv_prog_gcc" = "yes"; then
|
||||
CFLAGS="$CFLAGS -funsigned-char"
|
||||
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
|
||||
|
||||
dnl (the gcc flag detection trick is taken from xemacs/Vin Shelton)
|
||||
|
||||
dnl UnrealIRCd might not be strict-aliasing safe at this time
|
||||
case "`$CC -v --help 2>&1`" in
|
||||
*-fstrict-aliasing* ) CFLAGS="$CFLAGS -fno-strict-aliasing" ;;
|
||||
esac
|
||||
|
||||
dnl Pointer signedness warnings are really a pain and 99.9% of the time
|
||||
dnl they are of absolutely no use whatsoever. IMO the person who decided
|
||||
dnl to enable this without -Wall should be shot on sight.
|
||||
case "`$CC -v --help 2>&1`" in
|
||||
*-Wpointer-sign* ) CFLAGS="$CFLAGS -Wno-pointer-sign" ;;
|
||||
esac
|
||||
AC_PROG_CXX
|
||||
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)
|
||||
AC_CHECK_PROG(MAKER, gmake, gmake, make)
|
||||
AC_PATH_PROG(GMAKE,gmake)
|
||||
AC_PATH_PROG(GUNZIP, gunzip)
|
||||
AC_PATH_PROG(PKGCONFIG, pkg-config)
|
||||
|
||||
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 " SOCKLIB="-lsocket")
|
||||
AC_CHECK_LIB(nsl, inet_ntoa,IRCDLIBS="$IRCDLIBS-lnsl " INETLIB="-lnsl")
|
||||
|
||||
AC_SUBST(IRCDLIBS)
|
||||
AC_SUBST(MKPASSWDLIBS)
|
||||
|
||||
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"
|
||||
case `uname -s` in
|
||||
Darwin*[)]
|
||||
ac_cv_pic="-bundle -flat_namespace -undefined suppress"
|
||||
;;
|
||||
HP-UX*[)]
|
||||
ac_cv_pic="-fPIC"
|
||||
;;
|
||||
esac
|
||||
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
|
||||
rm -f uscore uscore.c
|
||||
])
|
||||
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, [
|
||||
save_libs="$LIBS"
|
||||
LIBS="$LIBS $SOCKLIB"
|
||||
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)
|
||||
dnl in6addr_any detection code taken from ratbox
|
||||
AC_MSG_CHECKING([for struct in6addr_any])
|
||||
AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[#define IN_AUTOCONF
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>]],
|
||||
[[struct in6_addr a = in6addr_any;]]
|
||||
)],
|
||||
[AC_MSG_RESULT(yes)],
|
||||
[
|
||||
AC_MSG_RESULT(no)
|
||||
AC_DEFINE(NO_IN6ADDR_ANY)
|
||||
]
|
||||
)
|
||||
fi
|
||||
LIBS="$save_libs"
|
||||
])
|
||||
|
||||
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(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,[
|
||||
save_libs="$LIBS"
|
||||
LIBS="$LIBS $SOCKLIB"
|
||||
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
|
||||
LIBS="$save_libs"
|
||||
dnl Checks for library functions.
|
||||
AC_PROG_GCC_TRADITIONAL
|
||||
AC_FUNC_SETPGRP
|
||||
AC_FUNC_SETVBUF_REVERSED
|
||||
AC_FUNC_ALLOCA
|
||||
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_CHECK_FUNCS(inet_pton, AC_DEFINE(HAVE_INET_PTON))
|
||||
AC_CHECK_FUNCS(inet_ntop, AC_DEFINE(HAVE_INET_NTOP))
|
||||
dnl Check if it supports C99 style variable length arrays
|
||||
AC_CACHE_CHECK(if C99 variable length arrays are supported, ac_cv_varlen_arrays, [
|
||||
AC_TRY_COMPILE(,[
|
||||
int main() {
|
||||
int i = 5;
|
||||
int a[i];
|
||||
a[0] = 1;
|
||||
return 0;
|
||||
}], ac_cv_varlen_arrays=yes, ac_cv_varlen_arrays=no)
|
||||
])
|
||||
if test "$ac_cv_varlen_arrays" = "yes" ; then
|
||||
AC_DEFINE(HAVE_C99_VARLEN_ARRAY)
|
||||
fi
|
||||
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))
|
||||
save_libs="$LIBS"
|
||||
LIBS="$LIBS $SOCKLIB $INETLIB"
|
||||
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))
|
||||
LIBS="$save_libs"
|
||||
AC_CHECK_FUNCS(syslog,AC_DEFINE(HAVE_SYSLOG))
|
||||
AC_CHECK_FUNCS(vsyslog,AC_DEFINE(HAVE_VSYSLOG))
|
||||
AC_SUBST(STRTOUL)
|
||||
AC_SUBST(CRYPTOLIB)
|
||||
AC_SUBST(MODULEFLAGS)
|
||||
AC_ARG_WITH(listen, [AC_HELP_STRING([--with-listen=backlog],[Specify the listen backlog value])],
|
||||
AC_DEFINE_UNQUOTED(LISTEN_SIZE,$withval),AC_DEFINE(LISTEN_SIZE,5))
|
||||
AC_ARG_WITH(nick-history, [AC_HELP_STRING([--with-nick-history=length],[Specify the length of the nickname history])],
|
||||
AC_DEFINE_UNQUOTED(NICKNAMEHISTORYLENGTH,$withval), AC_DEFINE(NICKNAMEHISTORYLENGTH,2000))
|
||||
AC_ARG_WITH(sendq, [AC_HELP_STRING([--with-sendq=maxsendq],[Specify the max sendq for the server])],
|
||||
AC_DEFINE_UNQUOTED(MAXSENDQLENGTH,$withval),AC_DEFINE(MAXSENDQLENGTH,3000000))
|
||||
AC_ARG_WITH(bufferpool, [AC_HELP_STRING([--with-bufferpool=size],[Specify the size of the buffer pool])],
|
||||
AC_DEFINE_UNQUOTED(BUFFERPOOL,[($withval * MAXSENDQLENGTH)]),AC_DEFINE(BUFFERPOOL,[(18 * MAXSENDQLENGTH)]))
|
||||
AC_ARG_WITH(permissions, [AC_HELP_STRING([--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, [AC_HELP_STRING([--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, [AC_HELP_STRING([--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, [AC_HELP_STRING([--with-spath],[Specify the location of the executable])],
|
||||
AC_DEFINE_UNQUOTED(SPATH,"$withval/ircd") BINDIR="$withval",AC_DEFINE_UNQUOTED(SPATH,"`pwd`/src/ircd") BINDIR="`pwd`/src/ircd")
|
||||
AC_ARG_ENABLE(nospoof, [AC_HELP_STRING([--enable-nospoof],[Enable spoofing protection])], AC_DEFINE(NOSPOOF))
|
||||
AC_ARG_ENABLE(prefixaq, [AC_HELP_STRING([--enable-prefixaq],[Enable chanadmin and chanowner prefixes])], AC_DEFINE(PREFIX_AQ))
|
||||
AC_ARG_ENABLE(hub, [AC_HELP_STRING([--enable-hub],[Compile as a hub server])], AC_DEFINE(HUB))
|
||||
AC_ARG_WITH(showlistmodes, [AC_HELP_STRING([--with-showlistmodes], [Specify whether modes are shown in /list])],
|
||||
AC_DEFINE(LIST_SHOW_MODES))
|
||||
AC_ARG_WITH(topicisnuhost, [AC_HELP_STRING([--with-topicisnuhost], [Display nick!user@host as the topic setter])],
|
||||
AC_DEFINE(TOPIC_NICK_IS_NUHOST))
|
||||
AC_ARG_WITH(shunnotices, [AC_HELP_STRING([--with-shunnotices], [Notify a user when he/she is no longer shunned])],
|
||||
AC_DEFINE(SHUN_NOTICES))
|
||||
AC_ARG_WITH(no-operoverride, [AC_HELP_STRING([--with-no-operoverride], [Disable OperOverride])],
|
||||
AC_DEFINE(NO_OPEROVERRIDE))
|
||||
AC_ARG_WITH(disableusermod, [AC_HELP_STRING([--with-disableusermod], [Disable /set* and /chg*])],
|
||||
AC_DEFINE(DISABLE_USERMOD))
|
||||
AC_ARG_WITH(operoverride-verify, [AC_HELP_STRING([--with-operoverride-verify], [Require opers to invite themselves to +s/+p channels])],
|
||||
AC_DEFINE(OPEROVERRIDE_VERIFY))
|
||||
AC_ARG_WITH(disable-extendedban-stacking, [AC_HELP_STRING([--with-disable-extendedban-stacking], [Disable extended ban stacking])],
|
||||
AC_DEFINE(DISABLE_STACKED_EXTBANS))
|
||||
MODULES_WHICH=commandsandmodules
|
||||
AC_MSG_CHECKING(for how much module building work we need to do)
|
||||
AC_ARG_WITH(moduleswhich,
|
||||
[ --with-moduleswhich=onlycommands|onlymodules|commandsandmodules What modules to build],
|
||||
[ case "$withval" in
|
||||
yes|no)
|
||||
;;
|
||||
* )
|
||||
MODULES_WHICH="$withval"
|
||||
;;
|
||||
esac])
|
||||
AC_SUBST(MODULES_WHICH)
|
||||
AC_MSG_RESULT($MODULES_WHICH)
|
||||
CHECK_SSL
|
||||
CHECK_ZLIB
|
||||
CHECK_LIBCURL
|
||||
AC_ARG_ENABLE(dynamic-linking, [AC_HELP_STRING([--enable-dynamic-linking],[Make the IRCd dynamically link shared objects rather than statically])], [AC_ENABLE_DYN], [AC_DEFINE(STATIC_LINKING)])
|
||||
AC_ARG_ENABLE(inet6, [AC_HELP_STRING([--enable-inet6],[Make the IRCd support IPv6])], [AC_ENABLE_INET6])
|
||||
AC_SUBST(IRCDDIR)
|
||||
AC_SUBST(BINDIR)
|
||||
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 `uname -s` in
|
||||
*SunOS*)
|
||||
CFLAGS="$CFLAGS -D_SOLARIS"
|
||||
IRCDLIBS="$IRCDLIBS -lresolv "
|
||||
;;
|
||||
*solaris*)
|
||||
CFLAGS="$CFLAGS -D_SOLARIS"
|
||||
IRCDLIBS="$IRCDLIBS -lresolv "
|
||||
;;
|
||||
esac
|
||||
|
||||
dnl REMEMBER TO CHANGE WITH A NEW PCRE RELEASE!
|
||||
tre_version="7.2"
|
||||
AC_MSG_RESULT(extracting PCRE regex library)
|
||||
cur_dir=`pwd`
|
||||
cd extras
|
||||
dnl remove old tre directory to force a recompile...
|
||||
rm -rf pcre-$tre_version
|
||||
if test "x$ac_cv_path_GUNZIP" = "x" ; then
|
||||
tar xfz pcre.tar.gz
|
||||
else
|
||||
cp pcre.tar.gz pcre.tar.gz.bak
|
||||
gunzip -f pcre.tar.gz
|
||||
cp pcre.tar.gz.bak pcre.tar.gz
|
||||
tar xf pcre.tar
|
||||
fi
|
||||
AC_MSG_RESULT(configuring PCRE regex library)
|
||||
cd pcre-$tre_version
|
||||
./configure --disable-shared --disable-system-abi --disable-utf8 --prefix=$cur_dir/extras/regexp || exit 1
|
||||
AC_MSG_RESULT(compiling PCRE regex library)
|
||||
$ac_cv_prog_MAKER || exit 1
|
||||
AC_MSG_RESULT(installing PCRE regex library)
|
||||
$ac_cv_prog_MAKER install || exit 1
|
||||
TREINCDIR="$cur_dir/extras/regexp/include"
|
||||
AC_SUBST(TREINCDIR)
|
||||
if test "x$ac_cv_path_PKGCONFIG" = "x" ; then
|
||||
TRELIBS="-L../extras/regexp/lib -lpcreposix -lpcre"
|
||||
else
|
||||
TRELIBS="`$ac_cv_path_PKGCONFIG --libs libpcre.pc` -lpcreposix -lpcre"
|
||||
fi
|
||||
AC_SUBST(TRELIBS)
|
||||
cd $cur_dir
|
||||
|
||||
|
||||
dnl REMEMBER TO CHANGE WITH A NEW C-ARES RELEASE!
|
||||
cares_version="1.4.0"
|
||||
AC_MSG_RESULT(extracting c-ares resolver library)
|
||||
cur_dir=`pwd`
|
||||
cd extras
|
||||
dnl remove old c-ares directory to force a recompile...
|
||||
rm -rf c-ares-$cares_version
|
||||
if test "x$ac_cv_path_GUNZIP" = "x" ; then
|
||||
tar xfz c-ares.tar.gz
|
||||
else
|
||||
cp c-ares.tar.gz c-ares.tar.gz.bak
|
||||
gunzip -f c-ares.tar.gz
|
||||
cp c-ares.tar.gz.bak c-ares.tar.gz
|
||||
tar xf c-ares.tar
|
||||
fi
|
||||
AC_MSG_RESULT(configuring c-ares library)
|
||||
cd c-ares-$cares_version
|
||||
./configure --prefix=$cur_dir/extras/c-ares || exit 1
|
||||
AC_MSG_RESULT(compiling c-ares resolver library)
|
||||
$ac_cv_prog_MAKER || exit 1
|
||||
AC_MSG_RESULT(installing c-ares resolver library)
|
||||
$ac_cv_prog_MAKER install || exit 1
|
||||
CARESINCDIR="$cur_dir/extras/c-ares/include"
|
||||
AC_SUBST(CARESINCDIR)
|
||||
CARESLIBDIR="-L../extras/c-ares/lib"
|
||||
AC_SUBST(CARESLIBDIR)
|
||||
CARESLIBS="-lcares"
|
||||
AC_SUBST(CARESLIBS)
|
||||
cd $cur_dir
|
||||
|
||||
|
||||
AC_OUTPUT(Makefile src/modules/Makefile src/modules/chanmodes/Makefile unreal ircdcron/ircdchk)
|
||||
chmod 0700 unreal
|
||||
chmod 0700 ircdcron/ircdchk
|
||||
@@ -0,0 +1,253 @@
|
||||
#serial 1
|
||||
|
||||
dnl Macro: unreal_CHECK_TYPE_SIZES
|
||||
dnl originally called 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
|
||||
AC_CHECK_SIZEOF(rlim_t)
|
||||
if test "$ac_cv_sizeof_rlim_t" = 8 ; then
|
||||
AC_DEFINE([LONG_LONG_RLIM_T], [], [Define if rlim_t is long long])
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN([CHECK_LIBCURL],
|
||||
[
|
||||
AC_ARG_ENABLE(libcurl,
|
||||
[AC_HELP_STRING([--enable-libcurl=DIR],[enable libcurl (remote include) support])],
|
||||
[enable_curl=$enableval],
|
||||
[enable_curl=no])
|
||||
|
||||
AS_IF([test "x$enable_curl" != "xno"],
|
||||
[
|
||||
dnl sane, default directory for Operating System-managed libcURL
|
||||
dnl (when --enable-libcurl is passed without any arguments). On
|
||||
dnl systems with stuff in /usr/local, /usr/local/bin should already
|
||||
dnl be in PATH. On sane systems, this will invoke the curl-config
|
||||
dnl installed by the package manager.
|
||||
CURLCONFIG="curl-config"
|
||||
AS_IF([test "x$enable_curl" != "xyes"],
|
||||
[CURLCONFIG="$enable_curl/bin/curl-config"])
|
||||
|
||||
AC_MSG_CHECKING([$CURLCONFIG])
|
||||
AS_IF([$CURLCONFIG --version 2>/dev/null >/dev/null],
|
||||
[AC_MSG_RESULT([yes])],
|
||||
[AC_MSG_RESULT([no])
|
||||
AC_MSG_FAILURE([Could not find curl-config, try editing --enable-libcurl])])
|
||||
|
||||
CURLCFLAG="`$CURLCONFIG --cflags`"
|
||||
CURLLIBS="`$CURLCONFIG --libs`"
|
||||
|
||||
dnl This test must be this way because of #3981
|
||||
AS_IF([$CURLCONFIG --features | grep -q -e AsynchDNS],
|
||||
[CURLUSESCARES="1"],
|
||||
[CURLUSESCARES="0"])
|
||||
AS_IF([test "$CURLUSESCARES" = "0"],
|
||||
[AC_MSG_WARN([cURL seems compiled without c-ares support. Your IRCd will possibly stall when REHASHing!])])
|
||||
|
||||
dnl sanity warnings
|
||||
AS_IF([test -z "${CURLLIBS}"],
|
||||
[AC_MSG_WARN([CURLLIBS is empty, that probably means that I could not find $enable_curl/bin/curl-config])])
|
||||
|
||||
dnl Ok this is ugly, basically we need to strip the version of c-ares that curl uses
|
||||
dnl because we want to use our own version (which is hopefully fully binary
|
||||
dnl compatible with the curl one as well).
|
||||
dnl Therefore we need to strip the cares libs in a weird way...
|
||||
dnl If anyone can come up with something better and still portable (no awk!?)
|
||||
dnl then let us know. -- Syzop
|
||||
dnl
|
||||
dnl It is dangerous to mix and match cURL with potentially ABI-incompatible versions of
|
||||
dnl c-ares, just use --with-system-cares.
|
||||
dnl Thus, make sure to use --with-system-cares when using system-cURL. If the user
|
||||
dnl wants bundled c-ares + system libcURL, then we should filter out c-ares
|
||||
dnl flags. _Only_ in that case should we mess with the flags. -- ohnobinki
|
||||
|
||||
AS_IF([test "x$with_system_cares" = "xno" && test "x$HOME/curl" != "x$enable_curl" && test "x/usr/share/unreal-curl" != "x$enable_curl" && test "$CURLUSESCARES" != "0" ],
|
||||
[
|
||||
AC_MSG_ERROR([[
|
||||
|
||||
You have decided to build unrealIRCd with libcURL (remote includes) support.
|
||||
However, you have disabled system-installed c-ares support (--with-system-cares).
|
||||
Because UnrealIRCd will use a bundled copy of c-ares which may be incompatible
|
||||
with the system-installed libcURL, this is a bad idea which may result in error
|
||||
messages looking like:
|
||||
|
||||
\`\`[error] unrealircd.conf:9: include: error downloading '(http://example.net/ex.conf)': Could not resolve host: example.net (Successful completion)''
|
||||
|
||||
Or UnrealIRCd might even crash.
|
||||
|
||||
Please build UnrealIRCd with --with-system-cares when enabling --enable-libcurl
|
||||
]])
|
||||
])
|
||||
|
||||
AS_IF([test "x`echo $CURLLIBS |grep ares`" != x && test "x$with_system_cares" = "xno"],
|
||||
[
|
||||
dnl Attempt one: Linux sed
|
||||
XCURLLIBS="`echo "$CURLLIBS"|sed -r 's/(@<:@^ @:>@+ @<:@^ @:>@+ )(@<:@^ @:>@+ @<:@^ @:>@+ )(.+)/\1\3/g' 2>/dev/null`"
|
||||
AS_IF([test "x$XCURLLIBS" = "x"],
|
||||
[
|
||||
dnl Attempt two: FreeBSD (and others?) sed
|
||||
XCURLLIBS="`echo "$CURLLIBS"|sed -E 's/(@<:@^ @:>@+ @<:@^ @:>@+ )(@<:@^ @:>@+ @<:@^ @:>@+ )(.+)/\1\3/g' 2>/dev/null`"
|
||||
AS_IF([test x"$XCURLLIBS" = x],
|
||||
[
|
||||
AC_MSG_ERROR([sed appears to be broken. It is needed for a remote includes compile hack.])
|
||||
])
|
||||
])
|
||||
CURLLIBS="$XCURLLIBS"
|
||||
|
||||
IRCDLIBS_CURL_CARES="$CARES_LIBS"
|
||||
CFLAGS_CURL_CARES="$CARES_CFLAGS"
|
||||
])
|
||||
|
||||
dnl Make sure that linking against cURL works rather than letting the user
|
||||
dnl find out after compiling most of his program. ~ohnobinki
|
||||
IRCDLIBS="$IRCDLIBS $CURLLIBS"
|
||||
CFLAGS="$CFLAGS $CURLCFLAG"
|
||||
AC_DEFINE([USE_LIBCURL], [], [Define if you have libcurl installed to get remote includes and MOTD support])
|
||||
|
||||
AC_MSG_CHECKING([curl_easy_init() in $CURLLIBS])
|
||||
LIBS_SAVEDA="$LIBS"
|
||||
CFLAGS_SAVEDA="$CFLAGS"
|
||||
|
||||
LIBS="$IRCDLIBS $IRCDLIBS_CURL_CARES"
|
||||
CFLAGS="$CFLAGS $CFLAGS_CURL_CARES"
|
||||
AC_LINK_IFELSE(
|
||||
[
|
||||
AC_LANG_PROGRAM(
|
||||
[[#include <curl/curl.h>]],
|
||||
[[CURL *curl = curl_easy_init();]])
|
||||
],
|
||||
[AC_MSG_RESULT([yes])],
|
||||
[AC_MSG_RESULT([no])
|
||||
AC_MSG_FAILURE([You asked for libcURL (remote includes) support, but it can't be found at $enable_curl])
|
||||
])
|
||||
LIBS="$LIBS_SAVEDA"
|
||||
CFLAGS="$CFLAGS_SAVEDA"
|
||||
|
||||
URL="url.o"
|
||||
AC_SUBST(URL)
|
||||
]) dnl AS_IF(enable_curl)
|
||||
])
|
||||
|
||||
dnl the following 2 macros are based on CHECK_SSL by Mark Ethan Trostler <trostler@juniper.net>
|
||||
|
||||
AC_DEFUN([CHECK_SSL],
|
||||
[
|
||||
AC_ARG_ENABLE(ssl,
|
||||
[AC_HELP_STRING([--enable-ssl=],[enable ssl will check /usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/sfw /usr/local /usr])],
|
||||
[],
|
||||
[enable_ssl=no])
|
||||
AS_IF([test $enable_ssl != "no"],
|
||||
[
|
||||
AC_MSG_CHECKING([for openssl])
|
||||
for dir in $enable_ssl /usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/sfw /usr/local /usr; do
|
||||
ssldir="$dir"
|
||||
if test -f "$dir/include/openssl/ssl.h"; then
|
||||
AC_MSG_RESULT([found in $ssldir/include/openssl])
|
||||
found_ssl="yes";
|
||||
if test ! "$ssldir" = "/usr" ; then
|
||||
CFLAGS="$CFLAGS -I$ssldir/include";
|
||||
fi
|
||||
break
|
||||
fi
|
||||
if test -f "$dir/include/ssl.h"; then
|
||||
AC_MSG_RESULT([found in $ssldir/include])
|
||||
found_ssl="yes";
|
||||
if test ! "$ssldir" = "/usr" ; then
|
||||
CFLAGS="$CFLAGS -I$ssldir/include";
|
||||
fi
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test x_$found_ssl != x_yes; then
|
||||
AC_MSG_RESULT(not found)
|
||||
echo ""
|
||||
echo "Apparently you do not have both the openssl binary and openssl development libraries installed."
|
||||
echo "You have two options:"
|
||||
echo "a) Install the needed binaries and libraries"
|
||||
echo " and run ./Config"
|
||||
echo "OR"
|
||||
echo "b) If you don't need SSL..."
|
||||
echo " Run ./Config and say 'no' when asked about SSL"
|
||||
echo " (or pass --disable-ssl to ./configure)"
|
||||
echo ""
|
||||
exit 1
|
||||
else
|
||||
CRYPTOLIB="-lssl -lcrypto";
|
||||
if test ! "$ssldir" = "/usr" ; then
|
||||
LDFLAGS="$LDFLAGS -L$ssldir/lib";
|
||||
fi
|
||||
AC_DEFINE([USE_SSL], [], [Define if you want to allow SSL connections])
|
||||
fi
|
||||
])
|
||||
])
|
||||
|
||||
AC_DEFUN([CHECK_ZLIB],
|
||||
[
|
||||
AC_ARG_ENABLE([ziplinks],
|
||||
[AC_HELP_STRING([--enable-ziplinks=DIR],[enable ziplinks. will check /usr/local /usr /usr/pkg. Note that SSL does its own compression, so you won't need this for SSL links.])],
|
||||
[],
|
||||
[enable_ziplinks=no])
|
||||
AS_IF([test $enable_ziplinks != "no"],
|
||||
[
|
||||
AC_MSG_CHECKING([for zlib])
|
||||
for dir in $enable_ziplinks /usr/local /usr /usr/pkg; do
|
||||
zlibdir="$dir"
|
||||
if test -f "$dir/include/zlib.h"; then
|
||||
AC_MSG_RESULT(found in $zlibdir)
|
||||
found_zlib="yes";
|
||||
if test "$zlibdir" != "/usr" ; then
|
||||
CFLAGS="$CFLAGS -I$zlibdir/include";
|
||||
fi
|
||||
AC_DEFINE([ZIP_LINKS], [], [Define if you have zlib and want zip links support.])
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test x_$found_zlib != x_yes; then
|
||||
AC_MSG_RESULT([not found])
|
||||
echo ""
|
||||
echo "Apparently you do not have the zlib development library installed."
|
||||
echo "You have two options:"
|
||||
echo "a) Install the zlib development library"
|
||||
echo " and run ./Config"
|
||||
echo "OR"
|
||||
echo "b) If you don't need compressed links..."
|
||||
echo " Run ./Config and say 'no' when asked about ziplinks support"
|
||||
echo ""
|
||||
exit 1
|
||||
else
|
||||
IRCDLIBS="$IRCDLIBS -lz"
|
||||
if test "$zlibdir" != "/usr" ; then
|
||||
LDFLAGS="$LDFLAGS -L$zlibdir/lib"
|
||||
fi
|
||||
HAVE_ZLIB=yes
|
||||
fi
|
||||
AC_SUBST([HAVE_ZLIB])
|
||||
])
|
||||
])
|
||||
Executable
+9
@@ -0,0 +1,9 @@
|
||||
#!/bin/bash
|
||||
|
||||
cd "$(dirname "${0}")"
|
||||
|
||||
ACLOCAL_AMFLAGS=(-I autoconf/m4)
|
||||
|
||||
aclocal "${ACLOCAL_AMFLAGS[@]}"
|
||||
autoconf
|
||||
autoheader
|
||||
+667
@@ -0,0 +1,667 @@
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
AC_INIT([unrealircd], [3.2.8.1], [http://bugs.unrealircd.org/], [], [http://unrealircd.org/])
|
||||
AC_CONFIG_SRCDIR([src/ircd.c])
|
||||
AC_CONFIG_HEADER([include/setup.h])
|
||||
AC_CONFIG_AUX_DIR([autoconf])
|
||||
AC_CONFIG_MACRO_DIR([autoconf/m4])
|
||||
|
||||
if test "x$enable_dynamic_linking" = "x"; then
|
||||
echo "Please use ./Config instead of ./configure"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
AC_PROG_CC
|
||||
if test "$ac_cv_prog_gcc" = "yes"; then
|
||||
CFLAGS="$CFLAGS -funsigned-char"
|
||||
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
|
||||
|
||||
dnl (the gcc flag detection trick is taken from xemacs/Vin Shelton)
|
||||
|
||||
dnl UnrealIRCd might not be strict-aliasing safe at this time
|
||||
case "`$CC -v --help 2>&1`" in
|
||||
*-fstrict-aliasing* ) CFLAGS="$CFLAGS -fno-strict-aliasing" ;;
|
||||
esac
|
||||
|
||||
dnl Pointer signedness warnings are really a pain and 99.9% of the time
|
||||
dnl they are of absolutely no use whatsoever. IMO the person who decided
|
||||
dnl to enable this without -Wall should be shot on sight.
|
||||
case "`$CC -v --help 2>&1`" in
|
||||
*-Wpointer-sign* ) CFLAGS="$CFLAGS -Wno-pointer-sign" ;;
|
||||
esac
|
||||
|
||||
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)
|
||||
AC_CHECK_PROG(MAKER, gmake, gmake, make)
|
||||
AC_PATH_PROG(GMAKE,gmake)
|
||||
AC_PATH_PROG(GUNZIP, gunzip)
|
||||
AC_PATH_PROG(PKGCONFIG, pkg-config)
|
||||
|
||||
dnl Checks for libraries.
|
||||
AC_CHECK_LIB(descrypt, crypt,
|
||||
[AC_DEFINE([HAVE_CRYPT], [], [Define if you have crypt])
|
||||
IRCDLIBS="$IRCDLIBS-ldescrypt "
|
||||
MKPASSWDLIBS="-ldescrypt"],
|
||||
[AC_CHECK_LIB(crypt, crypt,
|
||||
[AC_DEFINE([HAVE_CRYPT], [], [Define if you have crypt])
|
||||
IRCDLIBS="$IRCDLIBS-lcrypt "
|
||||
MKPASSWDLIBS="-lcrypt"])])
|
||||
AC_CHECK_LIB(socket, socket,
|
||||
[IRCDLIBS="$IRCDLIBS-lsocket "
|
||||
SOCKLIB="-lsocket"])
|
||||
AC_CHECK_LIB(nsl, inet_ntoa,
|
||||
[IRCDLIBS="$IRCDLIBS-lnsl "
|
||||
INETLIB="-lnsl"])
|
||||
|
||||
AC_SUBST(IRCDLIBS)
|
||||
AC_SUBST(MKPASSWDLIBS)
|
||||
|
||||
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"
|
||||
case `uname -s` in
|
||||
Darwin*[)]
|
||||
ac_cv_pic="-bundle -flat_namespace -undefined suppress"
|
||||
;;
|
||||
HP-UX*[)]
|
||||
ac_cv_pic="-fPIC"
|
||||
;;
|
||||
esac
|
||||
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
|
||||
rm -f uscore uscore.c
|
||||
])
|
||||
dnl libtool has built-in tests that determine proper underscorage
|
||||
if test "$ac_cv_underscore" = "yes"; then
|
||||
AC_DEFINE([UNDERSCORE], [], [Define if your system prepends an underscore to symbols])
|
||||
fi
|
||||
|
||||
MODULEFLAGS=$ac_cv_pic
|
||||
dnl DYNAMIC_LINKING is not meant to be defined in include/setup.h, it's
|
||||
dnl defined in the Makefiles using -D. Having it defined globally will
|
||||
dnl only cause braindamage and symbol collisions :-D.
|
||||
dnl AC_DEFINE([DYNAMIC_LINKING], [], [Link dynamically as opposed to statically. (Dynamic linking is the only supported method of linking atm)])
|
||||
])
|
||||
AC_DEFUN([AC_ENABLE_INET6],[
|
||||
AC_CACHE_CHECK([if your system has IPv6 support], [ac_cv_ip6], [
|
||||
save_libs="$LIBS"
|
||||
LIBS="$LIBS $SOCKLIB"
|
||||
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_ERROR([Your system does not support IPv6 so it will not be enabled])
|
||||
else
|
||||
AC_DEFINE([INET6], [], [Define if you want IPv6 enabled])
|
||||
dnl in6addr_any detection code taken from ratbox
|
||||
AC_MSG_CHECKING([for struct in6addr_any])
|
||||
AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[#define IN_AUTOCONF
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>]],
|
||||
[[struct in6_addr a = in6addr_any;]]
|
||||
)],
|
||||
[AC_MSG_RESULT(yes)],
|
||||
[
|
||||
AC_MSG_RESULT([no])
|
||||
AC_DEFINE([NO_IN6ADDR_ANY], [1], [Define to 1 if your system has no in6addr_any.])
|
||||
]
|
||||
)
|
||||
fi
|
||||
LIBS="$save_libs"
|
||||
])
|
||||
|
||||
AC_CHECK_HEADER(sys/param.h,
|
||||
AC_DEFINE([PARAMH], [], [Define if you have the <sys/param.h> header file.]))
|
||||
AC_CHECK_HEADER(stdlib.h,
|
||||
AC_DEFINE([STDLIBH], [], [Define if you have the <stdlib.h> header file.]))
|
||||
AC_CHECK_HEADER(stddef.h,
|
||||
AC_DEFINE([STDDEFH], [], [Define if you have the <stddef.h> header file.]))
|
||||
AC_CHECK_HEADER(sys/syslog.h,
|
||||
AC_DEFINE([SYSSYSLOGH], [], [Define if you have the <sys/syslog.h> header file.]))
|
||||
AC_CHECK_HEADER(unistd.h,
|
||||
AC_DEFINE([UNISTDH], [], [Define if you have the <unistd.h> header file.]))
|
||||
AC_CHECK_HEADER(string.h,
|
||||
AC_DEFINE([STRINGH], [], [Define if you have the <string.h> header file.]))
|
||||
AC_CHECK_HEADER(strings.h,
|
||||
AC_DEFINE([STRINGSH], [], [Define if you have the <strings.h> header file.]))
|
||||
AC_CHECK_HEADER(malloc.h,
|
||||
AC_DEFINE([MALLOCH], [<malloc.h>], [Define to <malloc.h> you need malloc.h.]))
|
||||
AC_CHECK_HEADER(sys/rusage.h,
|
||||
AC_DEFINE([RUSAGEH], [], [Define if you have the <sys/rusage.h> header file.]))
|
||||
AC_CHECK_HEADER(glob.h,
|
||||
AC_DEFINE([GLOBH], [], [Define if you have the <glob.h> header file.]))
|
||||
AC_CHECK_HEADERS([stdint.h inttypes.h])
|
||||
dnl Checks for typedefs, structures, and compiler characteristics.
|
||||
AC_C_CONST
|
||||
AC_C_INLINE
|
||||
|
||||
AC_TYPE_MODE_T
|
||||
AC_TYPE_SIZE_T
|
||||
AC_TYPE_INTPTR_T
|
||||
|
||||
AC_HEADER_TIME
|
||||
AC_STRUCT_TM
|
||||
AC_TYPE_UID_T
|
||||
unreal_CHECK_TYPE_SIZES
|
||||
|
||||
dnl in the future, it would be nice to avoid AC_TRY_RUN to allow
|
||||
dnl better support for crosscompiling.
|
||||
AC_CACHE_CHECK([what kind of nonblocking sockets you have], [ac_cv_nonblocking],[
|
||||
save_libs="$LIBS"
|
||||
LIBS="$LIBS $SOCKLIB"
|
||||
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], [], [Define if you have O_NONBLOCK])
|
||||
elif test "$ac_cv_nonblocking" = "O_NDELAY"; then
|
||||
AC_DEFINE([NBLOCK_BSD], [], [Define if you have O_NDELAY])
|
||||
elif test "$ac_cv_nonblocking" = "FIONBIO"; then
|
||||
AC_DEFINE([NBLOCK_SYSV], [], [Define if you have FIONBIO])
|
||||
fi
|
||||
LIBS="$save_libs"
|
||||
dnl Checks for library functions.
|
||||
AC_PROG_GCC_TRADITIONAL
|
||||
AC_FUNC_SETPGRP
|
||||
AC_FUNC_SETVBUF_REVERSED
|
||||
AC_FUNC_ALLOCA
|
||||
AC_CHECK_FUNCS(snprintf,
|
||||
AC_DEFINE([HAVE_SNPRINTF], [], [Define if you have snprintf]))
|
||||
AC_CHECK_FUNCS(vsnprintf,
|
||||
AC_DEFINE([HAVE_VSNPRINTF], [], [Define if you have vsnprintf]))
|
||||
AC_CHECK_FUNCS(strlcpy,
|
||||
AC_DEFINE([HAVE_STRLCPY], [], [Define if you have strlcpy. Otherwise, an internal implementation will be used!]))
|
||||
AC_CHECK_FUNCS(strlcat,
|
||||
AC_DEFINE([HAVE_STRLCAT], [], [Define if you have strlcat]))
|
||||
AC_CHECK_FUNCS(strlncat,
|
||||
AC_DEFINE([HAVE_STRLNCAT], [], [Define if you have strlncat]))
|
||||
AC_CHECK_FUNCS(inet_pton,
|
||||
AC_DEFINE([HAVE_INET_PTON], [], [Define if you have inet_pton]))
|
||||
AC_CHECK_FUNCS(inet_ntop,
|
||||
AC_DEFINE([HAVE_INET_NTOP], [], [Define if you have inet_ntop]))
|
||||
dnl Check if it supports C99 style variable length arrays
|
||||
AC_CACHE_CHECK([if C99 variable length arrays are supported], [ac_cv_varlen_arrays], [
|
||||
AC_TRY_COMPILE(,[
|
||||
int main() {
|
||||
int i = 5;
|
||||
int a[i];
|
||||
a[0] = 1;
|
||||
return 0;
|
||||
}], ac_cv_varlen_arrays=yes, ac_cv_varlen_arrays=no)
|
||||
])
|
||||
if test "$ac_cv_varlen_arrays" = "yes" ; then
|
||||
AC_DEFINE([HAVE_C99_VARLEN_ARRAY], [], [Define if you have a compiler with C99 variable length array support])
|
||||
fi
|
||||
|
||||
dnl This check doesn't need to be in ./configure, we can
|
||||
dnl write the sourcecode to actually handle the return value
|
||||
dnl of setrlimit if necessary... -- ohnobinki
|
||||
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], [], [Define if you can set the core size to unlimited])
|
||||
fi
|
||||
AC_FUNC_VPRINTF
|
||||
AC_CHECK_FUNCS([gettimeofday],
|
||||
[AC_DEFINE([GETTIMEOFDAY], [], [Define if you have gettimeofday])],
|
||||
[AC_CHECK_FUNCS([lrand48],
|
||||
[AC_DEFINE([LRADN48], [], [Define if you have lrand48])])])
|
||||
AC_CHECK_FUNCS([getrusage],
|
||||
[AC_DEFINE([GETRUSAGE_2], [], [Define if you have getrusage])],
|
||||
[AC_CHECK_FUNCS([times],
|
||||
[AC_DEFINE([TIMES_2], [], [Define if you have times])])])
|
||||
AC_CHECK_FUNCS([setproctitle],
|
||||
[AC_DEFINE([HAVE_SETPROCTITLE], [], [Define if you have setproctitle])],
|
||||
[AC_CHECK_LIB([util],
|
||||
[setproctitle],
|
||||
[AC_DEFINE([HAVE_SETPROCTITLE], [], [Define if you have setproctitle])
|
||||
IRCDLIBS="$IRCDLIBS-lutil"],
|
||||
[
|
||||
AC_EGREP_HEADER([#define.*PS_STRINGS.*],[sys/exec.h],
|
||||
[AC_DEFINE([HAVE_PSSTRINGS],[], [Define if you have PS_STRINGS])],
|
||||
[AC_CHECK_FUNCS([pstat],
|
||||
[AC_DEFINE([HAVE_PSTAT], [], [Define if you 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], [], [Define if you have POSIX signals])
|
||||
elif test "$ac_cv_sigtype" = "BSD"; then
|
||||
AC_DEFINE([BSD_RELIABLE_SIGNALS], [], [Define if you have BSD signals])
|
||||
else
|
||||
AC_DEFINE([SYSV_UNRELIABLE_SIGNALS], [], [Define if you have SYSV signals])
|
||||
fi
|
||||
AC_CHECK_FUNCS(strtoken,,AC_DEFINE([NEED_STRTOKEN], [], [Define if you need the strtoken function.]))
|
||||
AC_CHECK_FUNCS(strtok,,AC_DEFINE([NEED_STRTOK], [], [Define if you need the strtok function.]))
|
||||
AC_CHECK_FUNCS(strerror,,AC_DEFINE([NEED_STRERROR], [], [Define if you need the strerror function.]))
|
||||
AC_CHECK_FUNCS(index,,AC_DEFINE([NOINDEX], [], [Define if you do not have the index function.]))
|
||||
AC_CHECK_FUNCS(strtoul,,STRTOUL="strtoul.o")
|
||||
AC_CHECK_FUNCS(bcopy,,AC_DEFINE([NEED_BCOPY], [], [Define if you don't have bcopy]))
|
||||
AC_CHECK_FUNCS(bcmp,,AC_DEFINE([NEED_BCMP], [], [Define if you don't have bcmp]))
|
||||
AC_CHECK_FUNCS(bzero,,AC_DEFINE([NEED_BZERO], [], [Define if you need bzero]))
|
||||
AC_CHECK_FUNCS(strcasecmp,AC_DEFINE([GOT_STRCASECMP], [], [Define if you have strcasecmp]))
|
||||
save_libs="$LIBS"
|
||||
LIBS="$LIBS $SOCKLIB $INETLIB"
|
||||
AC_CHECK_FUNCS(inet_addr,,AC_DEFINE([NEED_INET_ADDR], [], [Define if you need inet_addr]))
|
||||
AC_CHECK_FUNCS(inet_ntoa,,AC_DEFINE([NEED_INET_NTOA], [], [Define if you need inet_ntoa]))
|
||||
AC_CHECK_FUNCS(inet_netof,,AC_DEFINE([NEED_INET_NETOF], [], [Define if you need inet_netof]))
|
||||
LIBS="$save_libs"
|
||||
AC_CHECK_FUNCS(syslog,AC_DEFINE([HAVE_SYSLOG], [], [Define if you have syslog]))
|
||||
AC_CHECK_FUNCS(vsyslog,AC_DEFINE([HAVE_VSYSLOG], [], [Define if you have vsyslog]))
|
||||
AC_SUBST(STRTOUL)
|
||||
AC_SUBST(CRYPTOLIB)
|
||||
AC_SUBST(MODULEFLAGS)
|
||||
AC_ARG_WITH(listen, [AS_HELP_STRING([--with-listen=backlog],[Specify the listen backlog value])],
|
||||
[AC_DEFINE_UNQUOTED([LISTEN_SIZE], [$withval], [Set to the listen backlog size you want])],
|
||||
[AC_DEFINE([LISTEN_SIZE], [5], [Set to the listen backlog size you want])])
|
||||
AC_ARG_WITH(nick-history, [AS_HELP_STRING([--with-nick-history=length],[Specify the length of the nickname history])],
|
||||
[AC_DEFINE_UNQUOTED([NICKNAMEHISTORYLENGTH], [$withval], [Set to the nickname history length you want])],
|
||||
[AC_DEFINE([NICKNAMEHISTORYLENGTH], [2000], [Set to the nickname history length you want])])
|
||||
AC_ARG_WITH([sendq], [AS_HELP_STRING([--with-sendq=maxsendq],[Specify the max sendq for the server])],
|
||||
[AC_DEFINE_UNQUOTED([MAXSENDQLENGTH], [$withval], [Set to the max sendq you want])],
|
||||
[AC_DEFINE([MAXSENDQLENGTH], [3000000], [Set to the max sendq you want])])
|
||||
AC_ARG_WITH(bufferpool, [AS_HELP_STRING([--with-bufferpool=size],[Specify the size of the buffer pool])],
|
||||
[AC_DEFINE_UNQUOTED([BUFFERPOOL],[($withval * MAXSENDQLENGTH)], [Set to the bufferpool size you want])],
|
||||
[AC_DEFINE([BUFFERPOOL],[(18 * MAXSENDQLENGTH)], [Set to the bufferpool size you want])])
|
||||
AC_ARG_WITH(permissions, [AS_HELP_STRING([--with-permissions=permissions], [Specify the default permissions for
|
||||
configuration files])],
|
||||
dnl We have an apparently out-of-place 0 here because of a MacOSX bug and because
|
||||
dnl we assume that a user thinks that `chmod 0600 blah' is the same as `chmod 600 blah'
|
||||
dnl (#3189)
|
||||
[AC_DEFINE_UNQUOTED([DEFAULT_PERMISSIONS], [0$withval], [The default permissions for configuration files. Set to 0 to prevent unrealircd from calling chmod() on the files.])],
|
||||
[AC_DEFINE([DEFAULT_PERMISSIONS], [0600], [The default permissions for configuration files. Set to 0 to prevent unrealircd from calling chmod() on the files.])])
|
||||
AC_ARG_WITH(dpath, [AS_HELP_STRING([--with-dpath=path],[Specify the path where configuration files are stored])],
|
||||
[AC_DEFINE_UNQUOTED([DPATH], ["$withval"], [Define the location of the configuration files])
|
||||
IRCDDIR="$withval"],
|
||||
[AC_DEFINE_UNQUOTED([DPATH], ["`pwd`"], [Define the location of the configuration files])
|
||||
IRCDDIR="`pwd`"])
|
||||
|
||||
AC_ARG_WITH(fd-setsize, [AS_HELP_STRING([--with-fd-setsize=size], [Specify the max file descriptors to use])],
|
||||
[ac_fd=$withval],
|
||||
[ac_fd=1024])
|
||||
AC_DEFINE_UNQUOTED([MAXCONNECTIONS], [$ac_fd], [Set to the max connections you want])
|
||||
|
||||
dnl It would be nice if this could just respect --bindir like every other
|
||||
dnl program does someday... -- ohnobinki
|
||||
AC_ARG_WITH(spath, [AS_HELP_STRING([--with-spath],[Specify the location of the executable])],
|
||||
[AC_DEFINE_UNQUOTED([SPATH], ["$withval"], [Define the location of the executable])
|
||||
BINDIR="$withval"],
|
||||
[AC_DEFINE_UNQUOTED([SPATH], ["`pwd`/src/ircd"], [Define the location of the executable])
|
||||
BINDIR="`pwd`/src/ircd"])
|
||||
|
||||
# enable nospoof by default; protects against javascript POST attacks and much more ;-)
|
||||
AC_ARG_ENABLE([nospoof],
|
||||
[AS_HELP_STRING([--disable-nospoof], [Disable spoofing protection (requires clients to respond to a randomly generated PING packet after USER and NICK but before using other commands)])],
|
||||
[],
|
||||
[enable_nospoof=yes])
|
||||
AS_IF([test $enable_nospoof = "yes"],
|
||||
[AC_DEFINE([NOSPOOF], [], [Define if you want spoof protection])])
|
||||
|
||||
AC_ARG_ENABLE([prefixaq],
|
||||
[AS_HELP_STRING([--disable-prefixaq],[Enable chanadmin (+a) and chanowner (+q) prefixes])],
|
||||
[],
|
||||
[enable_prefixaq=yes])
|
||||
AS_IF([test $enable_prefixaq = "yes"],
|
||||
[AC_DEFINE([PREFIX_AQ], [], [Define if you want +a/+q prefixes])])
|
||||
|
||||
AC_ARG_WITH(showlistmodes,
|
||||
[AS_HELP_STRING([--with-showlistmodes], [Specify whether modes are shown in /list])],
|
||||
[AS_IF([test $withval = "yes"],
|
||||
[AC_DEFINE([LIST_SHOW_MODES], [], [Define if you want modes shown in /list])])])
|
||||
AC_ARG_WITH(topicisnuhost, [AS_HELP_STRING([--with-topicisnuhost], [Display nick!user@host as the topic setter])],
|
||||
[AS_IF([test $withval = "yes"],
|
||||
[AC_DEFINE([TOPIC_NICK_IS_NUHOST], [], [Define if you want nick!user@host shown for the topic setter])])])
|
||||
AC_ARG_WITH(shunnotices, [AS_HELP_STRING([--with-shunnotices], [Notify a user when he/she is no longer shunned])],
|
||||
[AS_IF([test $withval = "yes"],
|
||||
[AC_DEFINE([SHUN_NOTICES], [], [Define if you want users to be notified when their shun is removed])])])
|
||||
AC_ARG_WITH(no-operoverride, [AS_HELP_STRING([--with-no-operoverride], [Disable OperOverride])],
|
||||
[AS_IF([test $withval = "yes"],
|
||||
[AC_DEFINE([NO_OPEROVERRIDE], [], [Define if you want OperOverride disabled])])])
|
||||
AC_ARG_WITH(disableusermod, [AS_HELP_STRING([--with-disableusermod], [Disable /set* and /chg*])],
|
||||
[AS_IF([test $withval = "yes"],
|
||||
[AC_DEFINE([DISABLE_USERMOD], [], [Define if you want to disable /set* and /chg*])])])
|
||||
AC_ARG_WITH(operoverride-verify, [AS_HELP_STRING([--with-operoverride-verify], [Require opers to invite themselves to +s/+p channels])],
|
||||
[AS_IF([test $withval = "yes"],
|
||||
[AC_DEFINE([OPEROVERRIDE_VERIFY], [], [Define if you want opers to have to use /invite to join +s/+p channels])])])
|
||||
AC_ARG_WITH(disable-extendedban-stacking, [AS_HELP_STRING([--with-disable-extendedban-stacking], [Disable extended ban stacking])],
|
||||
[AS_IF([test $withval = "yes"],
|
||||
[AC_DEFINE([DISABLE_STACKED_EXTBANS], [], [Define to disable extended ban stacking (~q:~c:\#chan, etc)])])])
|
||||
AC_ARG_WITH(system-tre, [AS_HELP_STRING([--with-system-tre], [Use the system tre package instead of bundled, discovered using pkg-config])], [], [with_system_tre=no])
|
||||
AC_ARG_WITH(system-cares, [AS_HELP_STRING([--with-system-cares], [Use the system c-ares (at least version 1.6.0) package instead of bundled c-ares, discovered using pkg-config])], [], [with_system_cares=no])
|
||||
CHECK_SSL
|
||||
CHECK_ZLIB
|
||||
AC_ARG_ENABLE(dynamic-linking, [AS_HELP_STRING([--disable-dynamic-linking], [Make the IRCd statically link with shared objects rather than dynamically (noone knows if disabling dynamic linking actually does anything or not)])],
|
||||
[enable_dynamic_linking=$enableval], [enable_dynamic_linking="yes"])
|
||||
AS_IF([test $enable_dynamic_linking = "yes"],
|
||||
[AC_ENABLE_DYN],
|
||||
[AC_DEFINE([STATIC_LINKING], [], [Link... statically(?) (defining this macro will probably cause the build tofail)])])
|
||||
|
||||
AC_ARG_ENABLE([inet6], [AS_HELP_STRING([--enable-inet6], [Make the IRCd support IPv6])],
|
||||
[AS_IF([test $enableval = "yes"],
|
||||
[AC_ENABLE_INET6])])
|
||||
AC_SUBST(IRCDDIR)
|
||||
AC_SUBST(BINDIR)
|
||||
AC_MSG_CHECKING([if FD_SETSIZE is large enough to allow $ac_fd file descriptors])
|
||||
AC_COMPILE_IFELSE([
|
||||
#include <sys/types.h>
|
||||
#include <sys/time.h>
|
||||
int main() {
|
||||
#if FD_SETSIZE < $ac_fd
|
||||
#error FD_SETSIZE is smaller than $ac_fd
|
||||
#endif
|
||||
exit(0);
|
||||
}
|
||||
], AC_MSG_RESULT([yes]), [
|
||||
# must be passed on the commandline to avoid a ``warning, you redefined something''
|
||||
FD_SETSIZE="-DFD_SETSIZE=$ac_fd"
|
||||
AC_MSG_RESULT(no)
|
||||
])
|
||||
AC_SUBST([FD_SETSIZE])
|
||||
|
||||
case `uname -s` in
|
||||
*SunOS*|*solaris*)
|
||||
AC_DEFINE([_SOLARIS], [], [Define if you are compiling unrealircd on Sun's (or Oracle's?) Solaris])
|
||||
IRCDLIBS="$IRCDLIBS -lresolv "
|
||||
;;
|
||||
esac
|
||||
|
||||
dnl c-ares needs PATH_SEPARATOR set or it will
|
||||
dnl fail on certain solaris boxes. We might as
|
||||
dnl well set it here.
|
||||
export PATH_SEPARATOR
|
||||
|
||||
AS_IF([test "x$with_system_tre" = "xno"],[
|
||||
dnl REMEMBER TO CHANGE WITH A NEW TRE RELEASE!
|
||||
tre_version="0.8.0"
|
||||
AC_MSG_RESULT(extracting TRE regex library)
|
||||
cur_dir=`pwd`
|
||||
cd extras
|
||||
dnl remove old tre directory to force a recompile...
|
||||
dnl and remove its installation prefix just to clean things up.
|
||||
rm -rf tre-$tre_version rege[]xp
|
||||
if test "x$ac_cv_path_GUNZIP" = "x" ; then
|
||||
tar xfz tre.tar.gz
|
||||
else
|
||||
cp tre.tar.gz tre.tar.gz.bak
|
||||
gunzip -f tre.tar.gz
|
||||
cp tre.tar.gz.bak tre.tar.gz
|
||||
tar xf tre.tar
|
||||
fi
|
||||
AC_MSG_RESULT(configuring TRE regex library)
|
||||
cd tre-$tre_version
|
||||
./configure --disable-agrep --disable-shared --disable-system-abi --disable-wchar --disable-multibyte --prefix=$cur_dir/extras/regexp || exit 1
|
||||
AC_MSG_RESULT(compiling TRE regex library)
|
||||
$ac_cv_prog_MAKER || exit 1
|
||||
AC_MSG_RESULT(installing TRE regex library)
|
||||
$ac_cv_prog_MAKER install || exit 1
|
||||
TRE_CFLAGS="-I$cur_dir/extras/regexp/include"
|
||||
AC_SUBST(TRE_CFLAGS)
|
||||
|
||||
TRE_LIBS=
|
||||
dnl See c-ares's compilation section for more info on this hack.
|
||||
dnl ensure that we're linking against the bundled version of tre
|
||||
dnl (we only reach this code if linking against the bundled version is desired).
|
||||
AS_IF([test -n "$ac_cv_path_PKGCONFIG"],
|
||||
[TRE_LIBS="`$ac_cv_path_PKGCONFIG --static --libs tre.pc | sed ['s,-L\([^ ]\+lib\) -ltre,\1/libtre.a,']`"])
|
||||
dnl For when pkg-config isn't available -- or for when pkg-config
|
||||
dnl doesn't see the tre.pc file somehow... (#3982)
|
||||
AS_IF([test -z "$TRE_LIBS"],
|
||||
[TRE_LIBS="../extras/regexp/lib/libtre.a"])
|
||||
AC_SUBST(TRE_LIBS)
|
||||
cd $cur_dir
|
||||
],[
|
||||
dnl use pkgconfig for tre:
|
||||
PKG_CHECK_MODULES([TRE], tre >= 0.7.5)
|
||||
])
|
||||
|
||||
AS_IF([test "x$with_system_cares" = "xno"],[
|
||||
dnl REMEMBER TO CHANGE WITH A NEW C-ARES RELEASE!
|
||||
dnl NOTE: when changing this here, ALSO change it in ./curlinstall
|
||||
dnl and in the comment in this file around line 400!
|
||||
cares_version="1.7.3"
|
||||
AC_MSG_RESULT(extracting c-ares resolver library)
|
||||
cur_dir=`pwd`
|
||||
cd extras
|
||||
dnl remove old c-ares directory to force a recompile...
|
||||
rm -rf c-ares-$cares_version c-ares
|
||||
if test "x$ac_cv_path_GUNZIP" = "x" ; then
|
||||
tar xfz c-ares.tar.gz
|
||||
else
|
||||
cp c-ares.tar.gz c-ares.tar.gz.bak
|
||||
gunzip -f c-ares.tar.gz
|
||||
cp c-ares.tar.gz.bak c-ares.tar.gz
|
||||
tar xf c-ares.tar
|
||||
fi
|
||||
AC_MSG_RESULT(configuring c-ares library)
|
||||
cd c-ares-$cares_version
|
||||
./configure --prefix=$cur_dir/extras/c-ares --disable-shared || exit 1
|
||||
AC_MSG_RESULT(compiling c-ares resolver library)
|
||||
$ac_cv_prog_MAKER || exit 1
|
||||
AC_MSG_RESULT(installing c-ares resolver library)
|
||||
$ac_cv_prog_MAKER install || exit 1
|
||||
CARES_CFLAGS="-I$cur_dir/extras/c-ares/include"
|
||||
AC_SUBST(CARES_CFLAGS)
|
||||
CARES_LIBS="-L../extras/c-ares/lib"
|
||||
|
||||
dnl Set default library parameters for when pkg-config is not available
|
||||
dnl Ugly cd'ing out of extras/c-ares-xxx ;)
|
||||
dnl Note: must be a full path, not relative path.
|
||||
cd ../..
|
||||
CARESLIBSALT="`pwd`/extras/c-ares/lib/libcares.a"
|
||||
cd -
|
||||
case `uname -s` in
|
||||
*FreeBSD*)
|
||||
CARESLIBSALT="$CARESLIBSALT"
|
||||
;;
|
||||
*Linux*)
|
||||
CARESLIBSALT="$CARESLIBSALT -lrt"
|
||||
;;
|
||||
*SunOS*)
|
||||
CARESLIBSALT="$CARESLIBSALT -lrt"
|
||||
;;
|
||||
esac
|
||||
|
||||
dnl Use pkg-config for c-ares libraries, and if not available use defaults
|
||||
dnl from above. Also, if pkg-config returns an empty result (ex: on fbsd
|
||||
dnl or older versions it might be missing --static) then also use defaults.
|
||||
if test "x$ac_cv_path_PKGCONFIG" = "x" ; then
|
||||
CARES_LIBS="$CARES_LIBS $CARESLIBSALT"
|
||||
else
|
||||
CARES_LIBSPRE="$CARES_LIBS"
|
||||
dnl the sed expression forces an absolute path to the .a file to be generated
|
||||
dnl because this is what libtool would do. If this wasn't done and /usr/lib*/libcares.so
|
||||
dnl exists, then unrealircd would still try to link against the system c-ares.
|
||||
dnl The [] quotation is needed because the sed expression has [] in it.
|
||||
[CARES_LIBS="$CARES_LIBS `$ac_cv_path_PKGCONFIG --static --libs libcares.pc | sed -e 's,-L\([^ ]\+lib\) -lcares,\1/libcares.a,'`"]
|
||||
if test "$CARES_LIBS" = "$CARES_LIBSPRE " ; then
|
||||
CARES_LIBS="$CARES_LIBS $CARESLIBSALT"
|
||||
fi
|
||||
fi
|
||||
AC_SUBST(CARES_LIBS)
|
||||
cd $cur_dir
|
||||
],[
|
||||
dnl use pkg-config for system c-ares:
|
||||
PKG_CHECK_MODULES([CARES], libcares >= 1.6.0)
|
||||
])
|
||||
|
||||
CHECK_LIBCURL
|
||||
|
||||
AC_CONFIG_FILES([Makefile
|
||||
src/modules/Makefile
|
||||
unreal
|
||||
ircdcron/ircdchk
|
||||
ircdcron/ircd.cron])
|
||||
AC_OUTPUT
|
||||
chmod 0700 unreal
|
||||
chmod 0700 ircdcron/ircdchk
|
||||
+3963
-4342
File diff suppressed because it is too large
Load Diff
+70
-51
@@ -1,66 +1,85 @@
|
||||
#!/bin/sh
|
||||
|
||||
if test "x$1" = x -o "x$2" = x ; then
|
||||
echo "Syntax:"
|
||||
echo "curlinstall ares_path libcurl_path"
|
||||
echo ""
|
||||
URL="http://www.unrealircd.com/files/curl-latest.tar.gz"
|
||||
OUTF="curl-latest.tar.gz"
|
||||
OUTD="curl-latest"
|
||||
ARESPATH="`pwd`/extras/c-ares"
|
||||
CARESVERSION="1.7.3"
|
||||
if [ ! -f "Unreal.nfo" ]; then
|
||||
echo "Please run this program from your UnrealIRCd directory"
|
||||
echo "(usually $HOME/Unreal3.2 or something like that)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
wget --version 1>/dev/null 2>&1
|
||||
if [ "$?" = 0 ]; then
|
||||
FETCHER="wget"
|
||||
else
|
||||
fetch --version 1>/dev/null 2>&1
|
||||
if [ "$?" = 0 ]; then
|
||||
FETCHER="fetch"
|
||||
else
|
||||
lynx --version 1>/dev/null 2>&1
|
||||
if [ "$?" = 0 ]; then
|
||||
FETCHER="lynx"
|
||||
else
|
||||
echo "ERROR: unable to find wget/fetch/lynx, please install at least one of these programs"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -d tmp ]; then
|
||||
mkdir tmp || exit 1
|
||||
fi
|
||||
|
||||
cd tmp || exit 1
|
||||
|
||||
rm -f "$OUTF"
|
||||
|
||||
if [ "$FETCHER" = "wget" ]; then
|
||||
wget -O "$OUTF" "$URL"
|
||||
elif [ "$FETCHER" = "lynx" ]; then
|
||||
lynx -dump "$URL" >"$OUTF"
|
||||
elif [ "$FETCHER" = "fetch" ]; then
|
||||
cd tmp #todo: find out the cmd line parameter ;)
|
||||
fetch "$URL"
|
||||
fi
|
||||
|
||||
if [ "$?" != 0 ]; then
|
||||
echo "ERROR: Something went wrong while trying to download $URL"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
rm -rf "$OUTD" # remove old directory prior to extracting
|
||||
tar xzf "$OUTF" || exit 1
|
||||
|
||||
|
||||
if [ "`eval echo -n 'a'`" = "-n a" ] ; then
|
||||
c="\c"
|
||||
else
|
||||
n="-n"
|
||||
fi
|
||||
|
||||
save_PWD=`pwd`
|
||||
echo "Installing ares"
|
||||
cd $1
|
||||
./configure --prefix=$HOME/ares && make && make install
|
||||
|
||||
SSLFLAG=""
|
||||
while [ -z "$SSLFLAG" ] ; do
|
||||
if [ ! -d "$ARESPATH/lib" ]; then
|
||||
echo "c-ares has not been build yet, let's do that now..."
|
||||
cd ../extras/
|
||||
tar xzf c-ares.tar.gz || exit 1
|
||||
cd c-ares-$CARESVERSION || exit 1
|
||||
./configure --prefix=$ARESPATH || exit 1
|
||||
(make && make install) || exit 1
|
||||
cd ../../tmp/
|
||||
echo "c-ares built."
|
||||
echo ""
|
||||
echo "Should libcurl be built with SSL support?"
|
||||
echo $n "-> " $c
|
||||
read cc
|
||||
case "$cc" in
|
||||
[Yy]*)
|
||||
SSLFLAG="--with-ssl"
|
||||
;;
|
||||
[Nn]*)
|
||||
SSLFLAG="--without-ssl"
|
||||
;;
|
||||
*)
|
||||
echo ""
|
||||
echo "You must enter either Yes or No"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
if [ -f $HOME/ares/lib/libcares.a ] ; then
|
||||
if [ -f $HOME/ares/lib/libares.a ] ; then
|
||||
rm -f $HOME/ares/lib/libares.a
|
||||
fi
|
||||
cp $HOME/ares/lib/libcares.a $HOME/ares/lib/libares.a
|
||||
fi
|
||||
|
||||
echo "Installing libcurl"
|
||||
cd $2
|
||||
CPPFLAGS="-I$HOME/ares/include" ./configure --prefix=$HOME/curl --disable-shared \
|
||||
--disable-thread --enable-ares=$HOME/ares --disable-ipv6 $SSLFLAG
|
||||
cp -R $HOME/ares/lib ares
|
||||
# We assume curl has been packaged in a way it will extract to "$OUTD"/
|
||||
cd "$OUTD" || exit 1
|
||||
|
||||
echo "Building and installing libcurl"
|
||||
CPPFLAGS="-I$ARESPATH/include" ./configure --prefix=$HOME/curl --disable-shared \
|
||||
--disable-thread --enable-ares=$ARESPATH --disable-ipv6 $SSLFLAG
|
||||
cp -R $ARESPATH/lib ares
|
||||
make && make install
|
||||
|
||||
if [ -f $HOME/curl/lib/libares.a ] ; then
|
||||
rm -f $HOME/curl/lib/libares.a
|
||||
fi
|
||||
cp $HOME/ares/lib/libares.a $HOME/curl/lib
|
||||
|
||||
cd $save_PWD
|
||||
|
||||
echo ""
|
||||
echo ""
|
||||
echo "libcurl has been installed. When running ./Config specify:"
|
||||
echo "$HOME/curl"
|
||||
echo "for the directory you installed libcurl to."
|
||||
|
||||
#cp $ARESPATH/lib/libcares.a $HOME/curl/lib
|
||||
# that isn't needed anymore as the lib is already in unreal...
|
||||
|
||||
+7
-6
@@ -119,12 +119,13 @@ Tom Hopkins <hoppie@buengf.bu.edu> / September, October 1990:
|
||||
lines worth. :)
|
||||
|
||||
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, December 2002
|
||||
Bram Matthys <syzop@unrealircd.com> / January 2002, date
|
||||
Carsten Munk <stskeeps@unrealircd.com> / May 1999 - December 2008
|
||||
Dominick Meglio <codemastr@unrealircd.com> / June 1999 - August 2005
|
||||
David Flynn / March 2000 - June 2000
|
||||
McSkaf / June 2001 - September 2001
|
||||
Finny Merrill <griever@unrealircd.com> / November 2001 - December 2002
|
||||
Bram Matthys <syzop@unrealircd.com> / January 2002 - date
|
||||
This list is incomplete, type /INFO on IRC to find the updated list.
|
||||
|
||||
Thanks go to those persons not mentioned here who have added their advice,
|
||||
opinions, and code to IRC.
|
||||
|
||||
+141
-97
@@ -1,97 +1,141 @@
|
||||
|
||||
Some minor rules about patches & modifications to UnrealIRCd
|
||||
|
||||
1. When making a change, always add a small description in Changes, in the
|
||||
BOTTOM. Be sure to mention the bugid# (or muliple id's) if you are fixing
|
||||
a bug from a bugtracker, and be sure to credit the reporter. Use:
|
||||
'Fixed blahblahblah, reported by Blah (#0001234).'
|
||||
Or, for example, for features:
|
||||
'Added support for blahbalbvdshd, suggested by Blah (#0001235).'
|
||||
Or something similar ;)
|
||||
|
||||
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.
|
||||
|
||||
9. We generally use tabsize 4 and 8. In any case, use tabs and NOT spaces.
|
||||
Some code is old and horrible and has a mix of tabs and spaces used for
|
||||
spacing, that's something we do not want to have ;)
|
||||
|
||||
10. Be careful about overflows. As you know a line from a user can never be longer
|
||||
than 511 (510?) characters, sometimes you can use this knowledge to your
|
||||
advantage. Whenever it's not safe or when you don't know what input size you
|
||||
can expect, use strlcpy instead of strcpy. Do not ever use strncpy, this is
|
||||
older, slower, and does not add proper zero termination.
|
||||
For the same reason, use snprintf if really needed. Note though, that using
|
||||
ircsprintf with a bigger buffer (eg: 1024 bytes) is MUCH faster, so preferably
|
||||
use that instead of snprintf. The same can be true for strcpy vs strlcpy in
|
||||
some circumstances as well.
|
||||
|
||||
11. Speed. When optimizing or writing code, keep in mind that readability and
|
||||
stability comes first, and after that comes speed. So we'd rather prefer some
|
||||
readable code (even if difficult) over some odd highly optimized routine which
|
||||
nobody understands, is difficult to extend, and might have several bugs.
|
||||
As mentioned earlier: use ircsprintf, not sprintf (this is because ircsprintf
|
||||
is optimized for simple strings like the ones we use).
|
||||
Prefer ircsprintf with a bigger buffer over the use of snprintf, since
|
||||
ircsprintf is much faster.
|
||||
|
||||
12. Initialize your structs and use the proper memory calls.
|
||||
In UnrealIRCd we use MyMalloc, MyMallocEx and MyFree (so not malloc/free).
|
||||
MyMalloc usually maps to malloc, and MyMallocEx is a malloc plus filling
|
||||
the memory area (eg: the struct) with zero's (a la calloc).
|
||||
Use of MyMallocEx is suggested. In general you should not be using MyMalloc.
|
||||
"But MyMalloc is faster!" you might say. This is true, but using MyMallocEx
|
||||
has very little speed impact and enourmous benefits: people tend to forget
|
||||
to set certain fields in the struct to NULL, or much more common: when
|
||||
someone later on (eg: 1 year later) adds a field to a struct, there could
|
||||
be several places he/she needs to update to make sure x->something is NULL
|
||||
after allocating a new struct. Bad idea.
|
||||
Little speed impact, huge stability benefits, easy decision ;).
|
||||
|
||||
13. Comment your code! This should speak for itself...
|
||||
Put comments wherever you think they are needed, to aid any further coders
|
||||
with reading your code.. and, in fact, it will aid yourself as well if you
|
||||
would look back at your code 2 years later.
|
||||
If there's some obscure pitfall, do mention it! Don't just "hope" a next
|
||||
author will see it like you did.
|
||||
|
||||
14. Use enums whenever possible, rather than #define constants. Besides making
|
||||
things more clean, it also aids debugging.
|
||||
|
||||
15. Whenever you add a new directive or setting, be sure to add documentation
|
||||
for it in unreal32docs, and for new commands in help.conf as well.
|
||||
|
||||
16. Whenever you add a new set:: item, be sure to add it to /stats S
|
||||
|
||||
Rules about patches & modifications to UnrealIRCd
|
||||
|
||||
1. When making a change, always add a small description in Changes, in the
|
||||
BOTTOM. Don't forget to mention the bug# and credit the reporter (if any).
|
||||
|
||||
2. If new files are made, it must contain proper copyright headers.
|
||||
|
||||
3. If you want to submit patches (f.e. if you don't have CVS write access)
|
||||
then submit them to http://bugs.unrealircd.org/ (shortly called bugs*)
|
||||
using "cvs diff -u > patchname". A submission must contain description of
|
||||
what it does, etc.
|
||||
|
||||
4. Each bug or feature should have a bug# so people can have a discussion
|
||||
about it. This has a few implications (read!!):
|
||||
* People must report bugs/feature requests to bugs* and not on
|
||||
IRC, e-mail, etc.
|
||||
* That means other people can see the bug# and comment on it. This means
|
||||
discussion is easy to read back for each issue and not spread between
|
||||
several IRC logs.
|
||||
Furthermore, by using the bugtracker instead of directly committing,
|
||||
people could point out that there might be a better way to do things
|
||||
than you originally thought, or it might be that other devs don't like
|
||||
it at all.
|
||||
* If a head coder has 'acknowledged' or 'confirmed' the bug or stated in
|
||||
a comment that it's OK to implement, then a dev may take the issue.
|
||||
The dev should change the status to 'assigned' and work on it, then
|
||||
commit and change it to 'resolved', set 'fixed in version' to next
|
||||
release, and add a comment pasting the relevant Changelog item and the
|
||||
releaseid (.XYZ).
|
||||
Of course other guidelines, like #7 and #8 still apply.
|
||||
|
||||
5. Do not commit changes that do not have an associated bug# and have not
|
||||
had any discussion.
|
||||
Small/tiny bugfixes that do not change any functionality, are very
|
||||
unlikely to break anything and definitely don't require any prior
|
||||
discussion may be exempted.
|
||||
|
||||
6. Regarding reidenting, restructuring or other code cleanups: please
|
||||
discuss before doing so. The other devs might not agree with you on the
|
||||
particular cleanup you have in mind which would result in another
|
||||
clean-up-the-cleanup commit.
|
||||
You may, however reindent and clean up individual sections when you are
|
||||
working on fixing a particular bug# or implementing a new feature. In fact
|
||||
you're encouraged to do so if the code is confusing without it. However,
|
||||
obey the style of Unreal's code (mostly outlined in this document)
|
||||
and do not introduce yet another (new) style. Also, be careful with doing
|
||||
any cleanup: if you're unsure in any way about the use of something,
|
||||
or something that looks redundant on first sight, then look more
|
||||
carefully... it might indeed be useless and/or redundant, but it might
|
||||
also be a subtle thing that can create great bugs when 'cleaned up'.
|
||||
|
||||
7. Prior to a release: be very careful with any restructuring of a subsystem
|
||||
or doing any major commits that may break things. Stuff like this can be
|
||||
perfectly fine if there are many months to go, but are not good to do a
|
||||
month before release. The head coder may impose additional restrictions
|
||||
during such a period.
|
||||
|
||||
8. During the Release Candidate stage (from RC1 until the final release)
|
||||
only the head coder may commit directly, all others should ask and
|
||||
present their patch before committing. Yes, even if you are changing only
|
||||
1 line of code or text.
|
||||
|
||||
9. UnrealIRCd should compile on all supported operating systems and
|
||||
platforms, using GCC 3 or higher on *NIX, and Visual Studio 2008 or
|
||||
higher on Windows. This means you cannot blindly use all C99 extensions.
|
||||
|
||||
10. Coders should test their code before committing.
|
||||
|
||||
11. /*
|
||||
* These kind of comments
|
||||
*/
|
||||
|
||||
NOT
|
||||
|
||||
// These kind of comments
|
||||
|
||||
12. if (something == 1)
|
||||
{
|
||||
moo; /* comment */
|
||||
/* This does what what what */
|
||||
cow(go(moo));
|
||||
}
|
||||
|
||||
NOT
|
||||
|
||||
if (something == 1) {
|
||||
}
|
||||
|
||||
13. Do not touch version.c.SH or version.h, unless you are a head coder
|
||||
if you need a credit in, contact us
|
||||
|
||||
14. Protocol changes must be discussed before making patches for it.
|
||||
|
||||
15. We do NOT rip people off. If we use other people's code, it MUST be
|
||||
properly credited.
|
||||
|
||||
16. We generally use tabsize 4 and 8. In any case, use tabs and NOT spaces.
|
||||
Some code is old and horrible and has a mix of tabs and spaces used for
|
||||
spacing, that's something we do not want to have ;)
|
||||
|
||||
17. Be careful about overflows. As you know a line from a user can never be longer
|
||||
than 511 (510?) characters, sometimes you can use this knowledge to your
|
||||
advantage. Whenever it's not safe or when you don't know what input size you
|
||||
can expect, use strlcpy instead of strcpy. Do not ever use strncpy, this is
|
||||
older, slower, and does not add proper zero termination.
|
||||
For the same reason, use snprintf if really needed. Note though, that using
|
||||
ircsprintf with a bigger buffer (eg: 1024 bytes) is MUCH faster, so preferably
|
||||
use that instead of snprintf. The same can be true for strcpy vs strlcpy in
|
||||
some circumstances as well.
|
||||
|
||||
18. Speed. When optimizing or writing code, keep in mind that readability and
|
||||
stability comes FIRST, and after that comes speed. So we'd rather prefer some
|
||||
readable code (even if difficult) over some odd highly optimized routine which
|
||||
nobody understands, is difficult to extend, and might have several bugs.
|
||||
As mentioned earlier: use ircsprintf, not sprintf (this is because ircsprintf
|
||||
is optimized for simple strings like the ones we use).
|
||||
Prefer ircsprintf with a bigger buffer over the use of snprintf, since
|
||||
ircsprintf is much faster.
|
||||
|
||||
19. Initialize your structs and use the proper memory calls.
|
||||
In UnrealIRCd we use MyMalloc, MyMallocEx and MyFree (so not malloc/free).
|
||||
MyMalloc usually maps to malloc, and MyMallocEx is a malloc plus filling
|
||||
the memory area (eg: the struct) with zero's (a la calloc).
|
||||
Use of MyMallocEx is suggested. In general you should not be using MyMalloc.
|
||||
"But MyMalloc is faster!" you might say. This is true, but using MyMallocEx
|
||||
has very little speed impact and enormous benefits: people tend to forget
|
||||
to set certain fields in the struct to NULL, or much more common: when
|
||||
someone later on (eg: 1 year later) adds a field to a struct, there could
|
||||
be several places he/she needs to update to make sure x->something is NULL
|
||||
after allocating a new struct. Bad idea.
|
||||
Little speed impact, huge stability benefits, easy decision ;).
|
||||
|
||||
20. Comment your code! This should speak for itself...
|
||||
Put comments wherever you think they are needed, to aid any further coders
|
||||
with reading your code.. and, in fact, it will aid yourself as well if you
|
||||
would look back at your code 2 years later.
|
||||
If there's some obscure pitfall, do mention it! Don't just "hope" a next
|
||||
author will see it like you did.
|
||||
|
||||
21. Use enums whenever possible, rather than #define constants. Besides making
|
||||
things more clean, it also aids debugging.
|
||||
|
||||
+79
-70
@@ -1,95 +1,105 @@
|
||||
==[ IMPORTANT MESSAGE ABOUT DISABLING NOSPOOF ]==
|
||||
Disabling NOSPOOF at windows (w9x, nt, w2k, xp) is NOT recommended since this
|
||||
WILL allow users to use "spoofed hosts" (like the IP of someone you trust).
|
||||
|
||||
If you have problems with NOSPOOF, fix your client (bot?) instead (you should PONG
|
||||
back to the initial PING at connect).
|
||||
|
||||
==[ GENERAL GUIDELINES ]==
|
||||
First of all you need Microsoft Visual C++ (see below), compiling with
|
||||
cygwin is not supported (nor is there any good reason to do so).
|
||||
cygwin is not supported.
|
||||
|
||||
Compatible compilers:
|
||||
cygwin NOT supported. Will not work. Should be no reason to use this anyway.
|
||||
msvc 6.x Microsoft Visual Studio 6 does not work, this compiler is too old.
|
||||
msvc 7.x Microsoft Visual Studio 7.x (.NET) will work just fine
|
||||
msvc 8.x Microsoft Visual Studio 8.x (.NET 2005), including the free kit,
|
||||
should work fine (since Unreal3.2.5).
|
||||
cygwin NOT supported. Will not work. Should be no reason to use this anyway
|
||||
as cygwin is an emulation layer. It's obviously much better to run
|
||||
native (Windows) code on Windows.
|
||||
msvc 6.x Microsoft Visual Studio 6 does not work, this compiler is too old.
|
||||
msvc 7.x Microsoft Visual Studio 7.x (.NET), works.
|
||||
msvc 8.x Microsoft Visual Studio 8.x (.NET 2005), including the free kit, works.
|
||||
msvc 9.x Microsoft Visual Studio 9.x (.NET 2008), is used for official compile.
|
||||
mssdk Microsoft Windows SDK for Windows 7
|
||||
|
||||
If you don't have the paid version of Microsoft Visual Studio 7.x, then you can
|
||||
use the FREE development kit and PSDK as explained below:
|
||||
1. Download the MS Visual Studio Development kit at:
|
||||
http://msdn.microsoft.com/visualc/vctoolkit2003/
|
||||
2. Install the Platform Software Development Kit (PSDK) from:
|
||||
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
|
||||
3. NOTE: Whenever you need to compile something we say 'Start the Visual Studio
|
||||
use the FREE development kit available for Windows 7 explained below:
|
||||
1. Download the 'MS SDK for Windows 7 and .NET Framework 3.5 SP1' at:
|
||||
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c17ba869-9671-4330-a63e-1fd44e0e2505&displaylang=en
|
||||
|
||||
2. NOTE: Whenever you need to compile something we say 'Start the Visual Studio
|
||||
.NET Command Prompt' below, but you - a person using the free version - will
|
||||
actually have to start the Platform SDK Prompt instead (check out the
|
||||
Start Menu).
|
||||
actually have to start the CMD Shell instead (check out the
|
||||
Start Menu under Microsoft Windows SDK v7.0). Users on x64 environment will have
|
||||
to change their environment to x86 by typing 'SETENV /x86'.
|
||||
|
||||
== Simple compile (no SSL/ZIP/Remote includes) ==
|
||||
3. Download http://www.vulnscan.org/tmp/dlltool.exe and put the file somewhere
|
||||
in your path (eg: put it in c:\windows\system32).
|
||||
|
||||
==[ EXTERNAL LIBRARIES ]==
|
||||
Fetch the external libraries (c-ares, tre, openssl, zlib, curl) from:
|
||||
http://www.vulnscan.org/unrealwin32dev/
|
||||
|
||||
==[ COMPILING ]==
|
||||
1. Start the Visual Studio .NET Command Prompt
|
||||
2. Go to your UnrealIRCd dir (like: cd \dev\unreal3.2) and then compile with:
|
||||
nmake -f makefile.win32
|
||||
This will generate a wircd.exe and unreal.exe
|
||||
3. Copy the src\win32\tre.dll to your UnrealIRCd main dir.
|
||||
4. Done!
|
||||
2. Go to your UnrealIRCd dir (like: cd \dev\unreal3.2)
|
||||
3. Have a look at 'makefile.win32' to look at what parameters you need to
|
||||
use, this depends on what libraries you want to link in and their location.
|
||||
4. Two options, use either one (B is preferred), and read step 5 too:
|
||||
A. Edit makefile.win32 directly to reflect your configuration and run
|
||||
'nmake -f makefile.win32'
|
||||
B. Don't edit makefile.win32 but instead create a one-line command (which
|
||||
you can put in a batch file), like this (all on one line!):
|
||||
nmake -f makefile.win32 USE_ZIPLINKS=1 ZLIB_INC_DIR="c:\dev\zlib"
|
||||
ZLIB_LIB_DIR="c:\dev\zlib\dll32" USE_SSL=1
|
||||
OPENSSL_INC_DIR="c:\openssl\include" OPENSSL_LIB_DIR="c:\openssl\lib"
|
||||
USE_REMOTEINC=1 LIBCURL_INC_DIR="c:\dev\curl-ssl\include"
|
||||
LIBCURL_LIB_DIR="c:\dev\curl-ssl\lib\dll-release"
|
||||
CARES_LIB_DIR="C:\dev\c-ares\vc\cares\dll-release"
|
||||
CARES_INC_DIR="C:\dev\c-ares" CARESLIB="cares.lib"
|
||||
TRE_LIB_DIR="C:\dev\tre\win32\release" TRE_INC_DIR="C:\dev\tre"
|
||||
TRELIB="tre.lib"
|
||||
5. You are likely to encounter an error like
|
||||
M_OPER.obj : error LNK2019: unresolved external symbol _sendto_snomask_global
|
||||
referenced in function _m_oper
|
||||
(the exact name and symbol will differ!!)
|
||||
In that case you need to generate a symbols file:
|
||||
nmake -f makefile.win32 SYMBOLFILE
|
||||
And after that simply re-run your nmake -f makefile.win32 [options]
|
||||
command, the same command you ran before the error occured.
|
||||
You should not get any unresolved external symbol error again.
|
||||
If you still do, then something is wrong.
|
||||
6. Your compile is now done, you can package unreal if you have InnoSetup,
|
||||
in that case check out src\win32\unrealinst.iss
|
||||
Otherwise, manually copy over the necessary files (and the dll files
|
||||
from the external libraries).
|
||||
|
||||
== Compiling modules ==
|
||||
==[ Compiling modules ]==
|
||||
1. Put your module (the .c file) in src\modules (eg: c:\dev\unreal3.2\src\modules).
|
||||
2. Start the Visual Studio .NET Command Prompt
|
||||
3. Go to your UnrealIRCd dir (like: cd \dev\unreal3.2).
|
||||
4. Compile the module with:
|
||||
nmake -f makefile.win32 custommodule MODULEFILE=<name>
|
||||
nmake -f makefile.win32 <YOUR OPTIONS> custommodule MODULEFILE=<name>
|
||||
<name> is the name of the module WITHOUT the .c suffix, so if your
|
||||
module has the filename 'm_crappymod.c', then you use:
|
||||
nmake -f makefile.win32 custommodule MODULEFILE=m_crappymod
|
||||
nmake -f makefile.win32 <YOUR OPTIONS> custommodule MODULEFILE=m_crappymod
|
||||
Note that <YOUR OPTIONS> is the whole lot of options explained in
|
||||
previous section under 4B. If you use method 4A then there aren't any.
|
||||
Note 2: If you get any symbol file errors, see the section 'SYMBOL FILES'
|
||||
5. Done. A .dll file should have been created.
|
||||
|
||||
If you compiled with VC7 and used the official source (not a CVS version,
|
||||
but for example 3.2.1 source) then the module should work on all these
|
||||
versions (binary compatible) and you could for example put them on
|
||||
your website so users can download them.
|
||||
Such a module will work on both SSL and non-SSL, there should be no need
|
||||
for separate versions... unless, of course, you use SSL-specific code in your
|
||||
mod.
|
||||
DO NOT download a CVS version & compile your mod and then start
|
||||
distributing the .dll for use at another (non-CVS) version!!
|
||||
Every time we change a struct (and in some other cases) it makes the
|
||||
binary/module binary incompatible which practically means that your module
|
||||
might seem to work fine at first (or not..) but will CRASH or cause memory
|
||||
corruption and other subtle errors.
|
||||
If you compiled with the same Visual Studio version that we use to compile
|
||||
the official UnrealIRCd version, and use the same Unreal3.2.X.tar.gz as the
|
||||
official version (and not CVS!), then your module is fully binary compatible
|
||||
and you can put it on your website (or ours) so users can use them.
|
||||
If you do anything else, this won't work.
|
||||
So, again, it will NOT work properly, if:
|
||||
1. You use a different UnrealIRCd source (like CVS, or a previous version).
|
||||
2. You use another compiler... this might still work but may require an
|
||||
additional .DLL file to be put in your UnrealIRCd directory (MSVxxxxxx.DLL).
|
||||
3. You compile with different options, such as compiling with SSL but trying
|
||||
to load the module on non-SSL.
|
||||
NOTE: unless your module uses SSL-specific code, you should compile
|
||||
without SSL as it will run on both SSL and non-SSL UnrealIRCd's.
|
||||
|
||||
== COMPILING WITH ZIP LINKS / SSL / REMOTE INCLUDES SUPPORT ==
|
||||
First of all, DO NOT use any precompiled libs from the official
|
||||
zlib/openssl/curl sites. We require certain compile parameters.
|
||||
Versions downloaded from such sites will often CRASH.
|
||||
|
||||
The easiest is to download the UnrealIRCd development package
|
||||
which contains zlib, openssl and curl precompiled for you.
|
||||
See: www.vulnscan.org/unrealwin32dev/
|
||||
|
||||
Just extract it somewhere (eg: to c:\dev).
|
||||
Then, use compile flags to enable the features + specify where to look.
|
||||
Here are examples if you used c:\dev:
|
||||
ZIP: nmake -f makefile.win32 USE_ZIPLINKS=1 ZLIB_INC_DIR="c:\dev\zlib" ZLIB_LIB_DIR="c:\dev\zlib\dll32"
|
||||
SSL: nmake -f makefile.win32 USE_SSL=1 OPENSSL_INC_DIR="c:\dev\openssl\include" OPENSSL_LIB_DIR="c:\dev\openssl\lib"
|
||||
CURL: nmake -f makefile.win32 USE_REMOTEINC=1 LIBCURL_INC_DIR="c:\dev\curl\include" LIBCURL_LIB_DIR="c:\dev\curl\lib"
|
||||
|
||||
Obviously you can (and probably will) combine all these options, like
|
||||
to build a zip+ssl+curl version (all in 1 line):
|
||||
nmake -f makefile.win32 USE_ZIPLINKS=1 ZLIB_INC_DIR="c:\dev\zlib" ZLIB_LIB_DIR="c:\dev\zlib\dll32"
|
||||
USE_SSL=1 OPENSSL_INC_DIR="c:\dev\openssl\include" OPENSSL_LIB_DIR="c:\dev\openssl\lib" USE_REMOTEINC=1
|
||||
LIBCURL_INC_DIR="c:\dev\curl\include" LIBCURL_LIB_DIR="c:\dev\curl\lib"
|
||||
|
||||
== SYMBOL FILES ==
|
||||
==[ SYMBOL FILES ]==
|
||||
If you get something like this:
|
||||
|
||||
Creating library L_COMMANDS.lib and object L_COMMANDS.exp
|
||||
M_OPER.obj : error LNK2019: unresolved external symbol _sendto_snomask_global re
|
||||
ferenced in function _m_oper
|
||||
|
||||
(note: the exact name of the symbol will vary)
|
||||
(note: the exact name of the symbol will vary!)
|
||||
|
||||
Then you will have to rebuild the wircd.def symbol file. You do this by
|
||||
downloading http://www.vulnscan.org/tmp/dlltool.exe and putting the file somewhere
|
||||
@@ -102,8 +112,7 @@ nmake -f makefile.win32 [your other options here]
|
||||
So basically you just run 'nmake -f makefile.win32 SYMBOLFILE' and then restart
|
||||
compiling again.
|
||||
|
||||
== COMPILING ZLIB/SSL/CURL YOURSELF ==
|
||||
==[ COMPILING ZLIB/SSL/CURL YOURSELF ]==
|
||||
This is off-topic and not explained here.
|
||||
Again, use the stuff from the win32 development pack unless you have a good
|
||||
reason to do otherwise (in which case we might not support your self-compiled version
|
||||
because we work with specific versions / compile options).
|
||||
reason to do otherwise.
|
||||
|
||||
+52
-3
@@ -363,7 +363,7 @@ drpass {
|
||||
* NEW: log {} OLD: N/A Tells the ircd where and what to log(s). You can have
|
||||
* as many as you wish.
|
||||
*
|
||||
* FLAGS: errors, kills, tkl, connects, server-connects, kline, oper
|
||||
* FLAGS: errors, kills, tkl, connects, server-connects, oper
|
||||
*
|
||||
* Syntax:
|
||||
* log "log file"
|
||||
@@ -383,7 +383,6 @@ log "ircd.log" {
|
||||
maxsize 2097152;
|
||||
flags {
|
||||
oper;
|
||||
kline;
|
||||
connects;
|
||||
server-connects;
|
||||
kills;
|
||||
@@ -518,7 +517,55 @@ alias "glinebot" {
|
||||
type command;
|
||||
};
|
||||
|
||||
/*
|
||||
* NEW: files {}
|
||||
* OLD: include/config.h
|
||||
*
|
||||
* This block overrides the IRCd's default paths for loading things
|
||||
* like the MOTD, saving its PID, or writing/loading its tunefile. The
|
||||
* existence of this block allows one UnrealIRCd installation to
|
||||
* support multiple running instances when combined with the -c
|
||||
* commandline option.
|
||||
*
|
||||
* As usual, relative paths are interpreted relative to the directory
|
||||
* where UnrealIRCd would find unrealircd.conf if -c is _not_
|
||||
* specified on the commandline.
|
||||
*/
|
||||
files
|
||||
{
|
||||
/* The Message Of The Day shown to users who log in: */
|
||||
/* motd ircd.motd; */
|
||||
|
||||
/*
|
||||
* A short MOTD. If this file exists, it will be displayed to
|
||||
* the user in place of the MOTD. Users can still view the
|
||||
* full MOTD by using the /MOTD command.
|
||||
*/
|
||||
/* shortmotd ircd.smotd; */
|
||||
|
||||
/* Shown when an operator /OPERs up */
|
||||
/* opermotd oper.motd; */
|
||||
|
||||
/* Services MOTD append. */
|
||||
/* svsmotd ircd.svsmotd; */
|
||||
|
||||
/* Bot MOTD */
|
||||
/* botmotd bot.motd; */
|
||||
|
||||
/* Shown upon /RULES */
|
||||
/* rules ircd.rules; */
|
||||
|
||||
/*
|
||||
* Where the IRCd stores and loads a few values which should
|
||||
* be persistent across server restarts. Must point to an
|
||||
* existing file which the IRCd has permission to alter or to
|
||||
* a file in a folder within which the IRCd may create files.
|
||||
*/
|
||||
/* tunefile ircd.tune; */
|
||||
|
||||
/* Where to save the IRCd's pid. Should be writable by the IRCd. */
|
||||
/* pidfile ircd.pid; */
|
||||
};
|
||||
|
||||
/*
|
||||
* NEW: tld {}
|
||||
@@ -712,6 +759,8 @@ set {
|
||||
* The keys should be 3 random strings of 5-100 characters
|
||||
* (10-20 chars is just fine) and must consist of lowcase (a-z),
|
||||
* upcase (A-Z) and digits (0-9) [see first key example].
|
||||
* HINT: On *NIX, you can run './unreal gencloak' in your shell to let
|
||||
* Unreal generate 3 random strings for you.
|
||||
*/
|
||||
cloak-keys {
|
||||
"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
|
||||
@@ -787,6 +836,6 @@ set {
|
||||
* Problems or need more help?
|
||||
* 1) www.vulnscan.org/UnrealIRCd/unreal32docs.html
|
||||
* 2) www.vulnscan.org/UnrealIRCd/faq/ <- contains 80% of your questions!
|
||||
* 3) If you still have problems you can go irc.ircsystems.net #unreal-support,
|
||||
* 3) If you still have problems you can go irc.unrealircd.org #unreal-support,
|
||||
* note that we require you to READ THE DOCUMENTATION and FAQ first!
|
||||
*/
|
||||
|
||||
@@ -0,0 +1,786 @@
|
||||
/*
|
||||
* example.conf von Daniel Hawton AKA Osiris (osiris@unrealircd.org).
|
||||
* $Id$
|
||||
*
|
||||
* Arbeitet mit Unreal3.2 und darüber
|
||||
*
|
||||
* Dies hier ist die neue example.conf. Sie ähnelt irgendwie ein wenig C++ und sie
|
||||
* soll sie jedenfalls einmal erläutert werden. Es ist ein wenig schwer, erstmals
|
||||
* damit umzugehen, aber mit ein Wenig Übung und sorgfältigem Lesen sollte das zu
|
||||
* verstehen sein.
|
||||
*
|
||||
* Diese Datei ist einfach in das Hauptverzeichnis des UnrealIRCD zu kopieren und in
|
||||
* 'unrealircd.conf' umzubenennen.
|
||||
*
|
||||
* ZU BEACHTEN: Sämtliche Zeilen außer der mit einer '{' zu Beginn werden mit dem Zeichen
|
||||
* ';' beendet, auch die Zeile mit '}'. (Beliebter Syntaxfehler!)
|
||||
* Kommentar Zeilen werden vom IRCd ignoriert.
|
||||
*
|
||||
* BITTE LESE die doc/unreal32docs.html! Sie ist auch online erhältlich bei:
|
||||
* www.vulnscan.org/UnrealIrcd/unreal32docs.html
|
||||
* Diese Datei enthält zahlreiche ergänzende Informationen über jeden Block, Variablen usw.
|
||||
* Übersetzung durch stylus740@smart-irc.de (bei irc.smart-irc.net)
|
||||
*/
|
||||
|
||||
/* Kommentar Typen */
|
||||
#Kommentar Typ 1 (Shell Typ)
|
||||
// Kommentar Typ 2(C++ Stil)
|
||||
/* Kommentar Typ 3 (C Stil) */
|
||||
#Solche Zeilen vom Typ 1, 2 oder 3 werden vom ircd ignoriert.
|
||||
|
||||
/*
|
||||
* UnrealIRCd arbeitet mit Modulen, die geladen werden, wenn sie benötigt werden.
|
||||
* Man benötigt mindestens das commands Modul und ein cloaking Modul.
|
||||
*/
|
||||
|
||||
/* FÜR *NIX (Unix, Linux, Xenix etc.), sind diese 2 Zeilen auszukommentieren: */
|
||||
//loadmodule "src/modules/commands.so";
|
||||
//loadmodule "src/modules/cloak.so";
|
||||
|
||||
/* FÜR Windows sind diese 2 Zeilen auszukommentieren: */
|
||||
//loadmodule "modules/commands.dll";
|
||||
//loadmodule "modules/cloak.dll";
|
||||
|
||||
/*
|
||||
* Man kann über eine 'include' Anweisung auch weitere Konfigurationsdateien einfügen.
|
||||
* help.conf enthält sämtliche /helpop Texte. Die badwords.*.conf filtert alle badword
|
||||
* Einträge für den Modus +G...
|
||||
* Die spamfilter.conf enthält einige wirksame Regeln für aktuelle Trojaner.
|
||||
* Falls man diese Dateien mit einfügen möchte:
|
||||
*/
|
||||
include "help.conf";
|
||||
include "badwords.channel.conf";
|
||||
include "badwords.message.conf";
|
||||
include "badwords.quit.conf";
|
||||
include "spamfilter.conf";
|
||||
|
||||
/*
|
||||
* NEU: me {}
|
||||
* ALT: M:Line
|
||||
* me {} legt Name, Beschreibung und eindeutige Nummer ('numeric') für diesen Server fest.
|
||||
* Syntax ist wie folgt:
|
||||
* me {
|
||||
* name "server.name";
|
||||
* info "Server Beschreibung";
|
||||
* numeric (server numeric*);
|
||||
* };
|
||||
* Falls der Server mit anderen gelinkt wird, darf muss die Nummer bei 'numeric' eindeutig
|
||||
* sein, darf also von keinem anderen Server im Netzwerk verwendet werden.
|
||||
*/
|
||||
me
|
||||
{
|
||||
name "irc.foonet.com";
|
||||
info "FooNet Server";
|
||||
numeric 1;
|
||||
};
|
||||
|
||||
/*
|
||||
* NEU: admin {}
|
||||
* ALT: A:Line
|
||||
* Admin liefert Informationen über den Server Administrator. Man kann
|
||||
* so viele Zeilen unter 'admin {' angeben, wie man will.
|
||||
* Syntax ist wie folgt:
|
||||
* admin {
|
||||
* "erste Zeile";
|
||||
* "zweite Zeile";
|
||||
* [usw]
|
||||
* };
|
||||
*/
|
||||
admin {
|
||||
"Bob Smith";
|
||||
"bob";
|
||||
"widely@used.name";
|
||||
};
|
||||
|
||||
/*
|
||||
* NEU: class {}
|
||||
* ALT: Y:line (alte Form war verwirrend)
|
||||
* Hiermit werden Klassen und ihre Einstellungen festgelegt. Eine Klasse ist eine Gruppen-
|
||||
* einstellung für Verbindungen. So kann man beispielsweise Server Verbindungen in einer
|
||||
* eigenen Klasse behandeln, statt zusammen mit Clients.
|
||||
* Syntax ist wie folgt:
|
||||
* class (class name)
|
||||
* {
|
||||
* pingfreq (wie oft in Sekunden wird ein user/server angepingt);
|
||||
* maxclients (wie viele Verbindungen sind in dieser Klasse möglich);
|
||||
* sendq (maximale send Queue einer Verbindung);
|
||||
* recvq (maximale Empfangs Queue einer Verbindung [Flood Kontrolle!]);
|
||||
* };
|
||||
*/
|
||||
|
||||
class clients
|
||||
{
|
||||
pingfreq 90;
|
||||
maxclients 500;
|
||||
sendq 100000;
|
||||
recvq 8000;
|
||||
};
|
||||
|
||||
class servers
|
||||
{
|
||||
pingfreq 90;
|
||||
maxclients 10; /* Wieviele Servers können gleichzeitig gelinkt sein */
|
||||
sendq 1000000;
|
||||
connfreq 100; /* Wieviele Sekunden zwischen jedem Verbindungsversuch */
|
||||
};
|
||||
|
||||
/*
|
||||
* NEU: allow {}
|
||||
* ALT: I:Line
|
||||
* Hier wird festgelegt, welche Verbindungen erlaubt sind...
|
||||
* Grundlegend kann man damit Clienten erlauben, zu verbinden und hat etwas Kontrolle
|
||||
* Syntax ist wie folgt:
|
||||
* allow {
|
||||
* ip (ip Maske für allow);
|
||||
* hostname (host Maske);
|
||||
* class (Klasse, die zugewiesen wird [siehe class {}]);
|
||||
* password "(password)"; (optional)
|
||||
* maxperip (wie viele Verbindungen je IP); (optional)
|
||||
* };
|
||||
*/
|
||||
|
||||
allow {
|
||||
ip *@*;
|
||||
hostname *@*;
|
||||
class clients;
|
||||
maxperip 5;
|
||||
};
|
||||
|
||||
/* Passworded allow line */
|
||||
allow {
|
||||
ip *@255.255.255.255;
|
||||
hostname *@*.passworded.ugly.people;
|
||||
class clients;
|
||||
password "f00Ness";
|
||||
maxperip 1;
|
||||
};
|
||||
|
||||
/*
|
||||
* NEU: allow channel {}
|
||||
* ALT: chrestrict
|
||||
* Erlaubt es Usern, einen Channel zu betreten...
|
||||
* Ist wie eine Ausnahme von 'deny channel'.
|
||||
* Syntax ist wie folgt:
|
||||
* allow channel {
|
||||
* channel "channel name";
|
||||
* };
|
||||
*/
|
||||
allow channel {
|
||||
channel "#WarezSucks";
|
||||
};
|
||||
|
||||
/*
|
||||
* NEU: oper {}
|
||||
* ALT: O:Line
|
||||
* Legt einen IRC Operator fest
|
||||
* IRC Operatoren halten den Server in Ordnung, warten ihn und halten die Verbindung
|
||||
* zum Netzwerk.
|
||||
* Syntax ist wie folgt:
|
||||
* oper (login) {
|
||||
* class (Klasse, die zugewiesen wird, falls anders als meine, wird eine neuee Klasse
|
||||
* zugewiesen);
|
||||
* from {
|
||||
* userhost (ident@host);
|
||||
* userhost (ident@host);
|
||||
* };
|
||||
* flags
|
||||
* {
|
||||
* (Flags hier*);
|
||||
* };
|
||||
* ODER
|
||||
* flags "alte Form von Flags, wie OAaRD";
|
||||
* };
|
||||
*/
|
||||
|
||||
|
||||
/* Die Liste möglicher Oper Flags kann in doc/unreal32docs.html#operblock nachgelesen werden
|
||||
* [WIRKLICH empfehlenswert, zu lesen!]
|
||||
*/
|
||||
|
||||
oper bobsmith {
|
||||
class clients;
|
||||
from {
|
||||
userhost bob@smithco.com;
|
||||
};
|
||||
password "f00";
|
||||
flags
|
||||
{
|
||||
netadmin;
|
||||
can_zline;
|
||||
can_gzline;
|
||||
can_gkline;
|
||||
global;
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* NEU: listen {}
|
||||
* ALT: P:Line
|
||||
* Legt den Port fest, an dem der ircd 'lauscht', um Usern/Servern zu erlauben, eine
|
||||
* Verbindung zum Server aufzunehmen.
|
||||
* Syntax ist wie folgt:
|
||||
* listen (ip number):(port number)
|
||||
* {
|
||||
* options {
|
||||
* (options here);
|
||||
* };
|
||||
* };
|
||||
* oder für ein einfaches listen:
|
||||
* listen (ip):(port);
|
||||
*
|
||||
* ACHTUNG: für ipv6 ips (3ffe:b80:2:51d::2 etc), benutze listen [ip]:port;
|
||||
*
|
||||
* Das funktioniert ebenfalls.
|
||||
*/
|
||||
|
||||
/* Options for listen:
|
||||
OLD | NEW
|
||||
S serversonly
|
||||
C clientsonly
|
||||
J java
|
||||
s ssl
|
||||
* standard
|
||||
*/
|
||||
|
||||
/* ZU BEACHTEN BEI SSL PORTS: SSL Ports sind nicht standardisiert.
|
||||
* Es wird oft gesagt, man solle den Port 994 benutzen, weil dies der
|
||||
* offizielle SSL Port sei. Aber das erfordert root Rechte! Andererseits
|
||||
* ist der Port 194 der offizielle Port und wann hat man je einen Ircd
|
||||
* auf diesem Port laufen gesehen?
|
||||
* Unsere Empfehlung ist, den Port 6697 für SSL zu benutzen, wie es auch
|
||||
* bei vielen anderen Netzwerken gemacht wird und für z.B. StunTour benutzt wird.
|
||||
* Man kann so viele SSL Ports öffnen, wie man will, aber wenn man (auch) den Port
|
||||
* 6697 benutzt, hilft man mit, die Welt ein klein wenig zu standardisieren ;).
|
||||
*/
|
||||
listen *:6697
|
||||
{
|
||||
options
|
||||
{
|
||||
ssl;
|
||||
clientsonly;
|
||||
};
|
||||
};
|
||||
|
||||
listen *:8067;
|
||||
listen *:6667;
|
||||
|
||||
/* ACHTUNG: Wird der IRCd auf einer Shell mit verschiedenen IP's ausgeführt, kann
|
||||
* die Fehlermeldung 'Address already in use' ('Adresse wird schon benutzt')
|
||||
* in den Logfiles auftauchen und der IRCd startet nicht.
|
||||
* Das bedeutet, dass man eine spezifische Adresse anstelle von '*' definieren
|
||||
* MUSS, wie z.B.:
|
||||
* listen 1.2.3.4:6667;
|
||||
* Es sollte klar sein, dass die IP durch die zu ersetzen ist, die einem
|
||||
* zugewiesen ist.
|
||||
*/
|
||||
|
||||
/*
|
||||
* NEU: link {}
|
||||
* ALT: C/N:Lines
|
||||
* Hiermit wird ein okay für eine Server Verbindung festgelegt.
|
||||
* ACHTUNG: BEIDE SERVER MÜSSEN EINE LINK {} EINSTELLUNG HABEN, UM KORREKT ZU VERBINDEN!
|
||||
* Syntax ist wie folgt:
|
||||
* link (server name)
|
||||
* {
|
||||
* username (username, * funktioniert auch);
|
||||
* hostname (ip Nummer/Hostmaske);
|
||||
* bind-ip (Welche IP soll zum Verbinden benutzt werden, oder *);
|
||||
* port (Port, zu dem verbunden werden soll);
|
||||
* hub (Wenn dies ein Hub ist, funktioniert * , oder Servermasken);
|
||||
* [oder leaf *;]
|
||||
* password-connect "(Passwort zu senden)";
|
||||
* password-receive "(Passwort, welches wir emfangen sollten)";
|
||||
* class (Klasse, in die Server sollen);
|
||||
* options {
|
||||
* (options hier*);
|
||||
* };
|
||||
* // Wird SSL benutzt, kann bestimmt werden, welche Verschlüsselung im SSL
|
||||
* // Modus zu benutzen ist
|
||||
* // Bei mehreren "openssl ciphers" sind die einzelnen Verschlüsselungen
|
||||
* // durch ':' zu trennen
|
||||
*
|
||||
* ciphers "DES-CBC3-MD5";
|
||||
*
|
||||
* };
|
||||
*/
|
||||
|
||||
/*
|
||||
options:
|
||||
OLD | NEW
|
||||
S ssl
|
||||
Z zip
|
||||
N/A autoconnect
|
||||
N/A quarantine
|
||||
N/A nodnscache
|
||||
*/
|
||||
|
||||
|
||||
link hub.mynet.com
|
||||
{
|
||||
username *;
|
||||
hostname 1.2.3.4;
|
||||
bind-ip *;
|
||||
port 7029;
|
||||
hub *;
|
||||
password-connect "LiNk";
|
||||
password-receive "LiNk";
|
||||
class servers;
|
||||
options {
|
||||
/* Achtung: autoconnect sollte nicht benutzt werden, wenn man Services linkt */
|
||||
autoconnect;
|
||||
ssl;
|
||||
zip;
|
||||
};
|
||||
};
|
||||
/*
|
||||
*
|
||||
* NEU: ulines {}
|
||||
* ALT: U:Line
|
||||
* U-lines geben Servern mehr Möglichkeiten/Befehle, sie sollten NUR für Services/Stats
|
||||
* gesetzt werden und NIEMALS für normale UnrealIRCd Server!
|
||||
* Syntax ist wie folgt:
|
||||
* ulines {
|
||||
* (server to uline);
|
||||
* (server to uline);
|
||||
* [etc]
|
||||
* };
|
||||
*/
|
||||
ulines {
|
||||
services.roxnet.org;
|
||||
stats.roxnet.org;
|
||||
};
|
||||
|
||||
/*
|
||||
* NEU: drpass {}
|
||||
* ALT: X:Line
|
||||
* Hiermit werden die Passworte für /die und /restart festgelegt.
|
||||
* Syntax ist wie folgt:
|
||||
* drpass {
|
||||
* restart "(Passwort für Restart)";
|
||||
* die "(Passwort für die (die = 'sterben' = Abschaltung))";
|
||||
* };
|
||||
*/
|
||||
drpass {
|
||||
restart "I-love-to-restart";
|
||||
die "die-you-stupid";
|
||||
};
|
||||
|
||||
/*
|
||||
* NEU: log {} ALT: N/A Festlegung von Namen und Speicherort der Logfiles. Man kann
|
||||
* beliebig viele festlegen.
|
||||
*
|
||||
* FLAGS: errors, kills, tkl, connects, server-connects, oper
|
||||
*
|
||||
* Syntax:
|
||||
* log "log file"
|
||||
* {
|
||||
* flags
|
||||
* {
|
||||
* flag;
|
||||
* flag;
|
||||
* etc..
|
||||
* };
|
||||
* };
|
||||
*/
|
||||
|
||||
log "ircd.log" {
|
||||
/* Lösche das Logfile und starte ein neues, wenn 2MB erreicht wurden,
|
||||
nichts festlegen, wenn man immer das gleiche Log will */
|
||||
maxsize 2097152;
|
||||
flags {
|
||||
oper;
|
||||
kline;
|
||||
connects;
|
||||
server-connects;
|
||||
errors;
|
||||
sadmin-commands;
|
||||
chg-commands;
|
||||
oper-override;
|
||||
spamfilter;
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* NEU: alias {}
|
||||
* ALT: N/A
|
||||
* Hier kann man Befels Aliasse festlegen, wie z.B. /nickserv, /chanserv usw.
|
||||
* FLAGS: services, stats, normal
|
||||
*
|
||||
* Syntax:
|
||||
* alias "name" {
|
||||
* target "points to";
|
||||
* type aliastype;
|
||||
* };
|
||||
*
|
||||
* [ACHTUNG: Mann kann hier auch eine Datei mit vordefinierten Aliassen per include
|
||||
* einfügen. Siehe auch: doc/unreal32docs.html Abschnitt 2.9]
|
||||
*/
|
||||
|
||||
// Hiermit wird der Befehl /nickserv an den User NickServ geleitet, welcher zur Einstellung set::services-server server verbunden ist
|
||||
/*alias NickServ {
|
||||
target "NickServ";
|
||||
type services;
|
||||
};*/
|
||||
|
||||
// Soll der Befehl auf denselben Nick wie das der Befehl leiten, kann man den Nick auslassen
|
||||
//alias ChanServ { type services; };
|
||||
|
||||
// leitet den /statserv Befehl an den User StatServ aus set::stats-server server
|
||||
//alias StatServ { type stats; };
|
||||
|
||||
// leitet den /superbot Befehl an den User SuperBot
|
||||
//alias SuperBot { type normal; };
|
||||
|
||||
|
||||
/* Standard Aliasse */
|
||||
alias NickServ { type services; };
|
||||
alias ChanServ { type services; };
|
||||
alias OperServ { type services; };
|
||||
alias HelpServ { type services; };
|
||||
alias StatServ { type stats; };
|
||||
|
||||
/*
|
||||
* NEU: alias {}
|
||||
* ALT: N/A
|
||||
* Hier können Befehls Aliase, wie z.B.: /identify, /services, usw festgelegt werden.
|
||||
*
|
||||
* Syntax:
|
||||
* alias "name" {
|
||||
* format "format string" {
|
||||
* target "zeigt auf";
|
||||
* type aliastype;
|
||||
* parameters "zu sendende Parameter";
|
||||
* };
|
||||
* type command;
|
||||
* };
|
||||
*/
|
||||
/* Die nachfolgenden Zeilen eigens deshalb, um zu zeigen, dass trotz gleichem Namens die vorherige Anweisung
|
||||
* völlig unterschiedlich in der Syntax ist, obwohl eine ähnliche Funktion unterstützt wird.
|
||||
*/
|
||||
/*
|
||||
alias "identify" {
|
||||
format "^#" {
|
||||
target "chanserv";
|
||||
type services;
|
||||
parameters "IDENTIFY %1-";
|
||||
};
|
||||
format "^[^#]" {
|
||||
target "nickserv";
|
||||
type services;
|
||||
parameters "IDENTIFY %1-";
|
||||
};
|
||||
type command;
|
||||
};
|
||||
*/
|
||||
/* Die alias::format Anweisung ist ein regulärer Ausdruck. Das erste Format passt auf den /identify Befehl,
|
||||
* wenn das erste Zeichen ein # ist. Dann wird dies an den chanserv alias mit dem Parameters IDENTIFY
|
||||
* %1- übergeben. Das zweite Format passt auf den /identify Befehl, wenn das erste Zeichen kein # ist. Danach
|
||||
* wird der Befehl an den nickserv alias mit den Parameters IDENTIFY %1- geleitet.
|
||||
*/
|
||||
|
||||
/* Die alias::format::parameters Scripting Sprachen ähnlich. %N (wobei N einen Nummer ist) repräsentiert einen
|
||||
* Parameter, der an den Befehl (in diesem Fall /identify) zu senden ist. Wird %N- angegeben, bedeutet dies
|
||||
* alle Parameter vom N bis zum letzten Parameter des Strings. Man kann ebenso %n angeben, welches durch den
|
||||
* Nicknamen des users ersetzt wird.
|
||||
*/
|
||||
|
||||
/* Standard Aliasse */
|
||||
alias "services" {
|
||||
format "^#" {
|
||||
target "chanserv";
|
||||
type services;
|
||||
parameters "%1-";
|
||||
};
|
||||
format "^[^#]" {
|
||||
target "nickserv";
|
||||
type services;
|
||||
parameters "%1-";
|
||||
};
|
||||
type command;
|
||||
};
|
||||
|
||||
alias "identify" {
|
||||
format "^#" {
|
||||
target "chanserv";
|
||||
type services;
|
||||
parameters "IDENTIFY %1-";
|
||||
};
|
||||
format "^[^#]" {
|
||||
target "nickserv";
|
||||
type services;
|
||||
parameters "IDENTIFY %1-";
|
||||
};
|
||||
type command;
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* NEU: tld {}
|
||||
* ALT: T:Line
|
||||
* Hiermit werden unterschiedliche motd und rules Dateien in Abhängigkeit
|
||||
* von der Hostmaske des Clients eingestellt.
|
||||
* Syntax ist wie folgt:
|
||||
* tld {
|
||||
* mask (ident@host);
|
||||
* motd "(motd file)";
|
||||
* rules "(rules file)";
|
||||
* };
|
||||
*/
|
||||
|
||||
tld {
|
||||
mask *@*.fr;
|
||||
motd "ircd.motd.fr";
|
||||
rules "ircd.rules.fr";
|
||||
};
|
||||
|
||||
/* zu beachten: Will man nur die default motd/rules Dateien (ircd.motd, ircd.rules)
|
||||
* für jedermann benutzen, genügt es, den obigen Beispiel Block einfach zu löschen.
|
||||
*/
|
||||
|
||||
/*
|
||||
* NEU: ban nick {}
|
||||
* ALT: Q:Line
|
||||
* Bannt einen Nicknamen, so dass dieser nicht benutzt werden kann.
|
||||
* Syntax ist wie folgt:
|
||||
* ban nick {
|
||||
* mask "(nick to ban)";
|
||||
* reason "(reason)";
|
||||
* };
|
||||
*/
|
||||
ban nick {
|
||||
mask "*C*h*a*n*S*e*r*v*";
|
||||
reason "Reserviert für Services";
|
||||
};
|
||||
/*
|
||||
* NEU: ban ip {}
|
||||
* ALT: Z:Line
|
||||
* Bannt eine IP, so dass diese nicht mehr zum Netzwerk verbinden kann.
|
||||
* Syntax:
|
||||
* ban ip { mask (ip Nummer/Hostmaske); reason "(Grund)"; };
|
||||
*/
|
||||
ban ip {
|
||||
mask 195.86.232.81;
|
||||
reason "Server nicht mehr gelinkt";
|
||||
};
|
||||
/*
|
||||
* NEU: ban server {}
|
||||
* ALT: Server Q:Line
|
||||
* Nimmt einem Server die Möglichkeit, zum Neztwerk zu verbinden.
|
||||
* Wenn der Server zu einem anderen Server des Netzwerkes linkt, wird der
|
||||
* lokale server die Verbindung zum Netzwerk trennen.
|
||||
* Syntax ist wie folgt:
|
||||
* ban server {
|
||||
* mask "(Server Name)";
|
||||
* reason "(angegebener Grund)";
|
||||
* };
|
||||
*/
|
||||
|
||||
ban server {
|
||||
mask eris.berkeley.edu;
|
||||
reason "Hau ab hier.";
|
||||
};
|
||||
/*
|
||||
* NEU: ban user {}
|
||||
* ALT: K:Line
|
||||
* Bewirkt, dass ein User mit einer bestimmten Maske nicht mehr zum Server verbinden kann.
|
||||
* Syntax:
|
||||
* ban user { mask (Hostmaske/ip Nummer); reason "(Grund)"; };
|
||||
*/
|
||||
|
||||
ban user {
|
||||
mask *tirc@*.saturn.bbn.com;
|
||||
reason "Idiot";
|
||||
};
|
||||
|
||||
/*
|
||||
* NEU: ban realname {}
|
||||
* ALT: n:Line
|
||||
* Verhindert, dass ein bestimmter Realname benutzt werden kann.
|
||||
* Syntax:
|
||||
* ban realname {
|
||||
* mask "(Realname)";
|
||||
* reason "(Grund)";
|
||||
* };
|
||||
*/
|
||||
|
||||
ban realname {
|
||||
mask "Swat Team";
|
||||
reason "mIRKFORCE";
|
||||
};
|
||||
|
||||
ban realname {
|
||||
mask "sub7server";
|
||||
reason "sub7";
|
||||
};
|
||||
|
||||
/*
|
||||
* Sämtliche Banns dürfen durch zusätzliche Einträge wiederholt werden!
|
||||
*
|
||||
* NEU: except ban {}
|
||||
* ALT: E:Line
|
||||
* Diese Maske ist von Banns ausgenommen.
|
||||
* Syntax:
|
||||
* except ban { mask (ident@host); };
|
||||
* except ban {} kann so oft angegeben werden, wie man für verschiedene Hosts will.
|
||||
*/
|
||||
|
||||
except ban {
|
||||
/* don't ban stskeeps */
|
||||
mask *stskeeps@212.*;
|
||||
};
|
||||
|
||||
/*
|
||||
* NEU: deny dcc {}
|
||||
* ALT: dccdeny.conf
|
||||
* Mit diesem Block können dcc send's geblockt werden... Gut, um Viren aufzuhalten.
|
||||
* Syntax:
|
||||
* deny dcc
|
||||
* {
|
||||
* filename "zu sperrende Datei(ie, *exe)";
|
||||
* reason "Grund";
|
||||
* };
|
||||
*/
|
||||
deny dcc {
|
||||
filename "*sub7*";
|
||||
reason "Möglicherweise Sub7 Virus";
|
||||
};
|
||||
|
||||
/*
|
||||
* NEU: deny channel {}
|
||||
* ALT: N/A (NEW)
|
||||
* Verhindert, dass angegebene Channels benutzt werden können.
|
||||
* Syntax:
|
||||
* deny channel {
|
||||
* channel "(channel)";
|
||||
* reason "Grund";
|
||||
* };
|
||||
*/
|
||||
deny channel {
|
||||
channel "*warez*";
|
||||
reason "Warez sind illegal";
|
||||
};
|
||||
|
||||
/*
|
||||
* NEU: vhost {}
|
||||
* ALT: Vhost.conf file
|
||||
* Setzt eine Fake IP für Nicht-Opers, oder opers, die zu bequem für /sethost sind.... :P
|
||||
* Syntax:
|
||||
* vhost {
|
||||
* vhost (vhost.com);
|
||||
* from {
|
||||
* userhost (ident@host um die Nutzung zu gestatten);
|
||||
* };
|
||||
* login (Loginname);
|
||||
* password (Passwort);
|
||||
* };
|
||||
* um den vhost zu nutzen, mache /vhost (login) (password) im IRC
|
||||
*/
|
||||
vhost {
|
||||
vhost i.hate.microsefrs.com;
|
||||
from {
|
||||
userhost *@*.image.dk;
|
||||
};
|
||||
login stskeeps;
|
||||
password moocowsrulemyworld;
|
||||
};
|
||||
|
||||
/* Man kann hier weitere Config Dateien einfügen */
|
||||
/* include "klines.conf"; */
|
||||
|
||||
/* Network configuration */
|
||||
set {
|
||||
network-name "ROXnet";
|
||||
default-server "irc.roxnet.org";
|
||||
services-server "services.roxnet.org";
|
||||
stats-server "stats.roxnet.org";
|
||||
help-channel "#ROXnet";
|
||||
hiddenhost-prefix "rox";
|
||||
/* prefix-quit "no"; */
|
||||
/* Cloak keys müssen angegeben sein und sie müssen die selben auf allen Servern
|
||||
* im Netzwerk sein. Sie werden zur Generierung der maskierten Hosts verwendet
|
||||
* und sie sollten geheim gehalten werden.
|
||||
* Die Keys sollten 3 zufällige Strings von 5-100 Zeichen Länge sein (10-20 Zeichen
|
||||
* (sind ganz ok) und müssen aus Kleinbuchstaben(a-z), Großbuchstaben (A-Z) und
|
||||
* Ziffern (0-9) bestehen [wie im ersten Key Beispiel].
|
||||
* TIPP: Auf *NIX, kann man in der Shell './unreal gencloak' aufrufen und durch
|
||||
* Unreal 3 Zufalls Stings erzeugen und anzeigen lassen.
|
||||
*/
|
||||
cloak-keys {
|
||||
"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
|
||||
"und noch einer";
|
||||
"und noch einer";
|
||||
};
|
||||
/* on-oper Host */
|
||||
hosts {
|
||||
local "locop.roxnet.org";
|
||||
global "ircop.roxnet.org";
|
||||
coadmin "coadmin.roxnet.org";
|
||||
admin "admin.roxnet.org";
|
||||
servicesadmin "csops.roxnet.org";
|
||||
netadmin "netadmin.roxnet.org";
|
||||
host-on-oper-up "no";
|
||||
};
|
||||
};
|
||||
|
||||
/* Server spezifische Configuration */
|
||||
|
||||
set {
|
||||
kline-address "setze.diese.email";
|
||||
modes-on-connect "+ixw";
|
||||
modes-on-oper "+xwgs";
|
||||
oper-auto-join "#opers";
|
||||
options {
|
||||
hide-ulines;
|
||||
/* Man kann hier ident checking aktivieren, wenn man will */
|
||||
/* identd-check; */
|
||||
show-connect-info;
|
||||
};
|
||||
|
||||
maxchannelsperuser 10;
|
||||
/* Die Mindestzeit, die ein User verbunden sein muss, bevor er eine QUIT Meldung
|
||||
* senden darf (Das wird offentlich helfen, Spam zu verhindern) */
|
||||
anti-spam-quit-message-time 10s;
|
||||
/* Macht die Meldung statisch, die in allen Quit Meldungen angezeigt wird.
|
||||
Somit sind keine individuellen Quts auf dem lokalen Server mehr erlaubt */
|
||||
/* static-quit "Client quit"; */
|
||||
|
||||
/* Man kann auch sämtliche Part Meldungen blocken, indem man dies auskommentiert
|
||||
* und 'yes' sagt oder einen anderen Text angibt (z.B. "Bye bye!")
|
||||
/* static-part yes; */
|
||||
|
||||
/* Hiermit kann man bestimmte stats auf ausschliesslich Opers beschränken. Für
|
||||
* alle Stats kann man * benutzen. Wenn man es weglässt, können alle User alle
|
||||
* Stats abfragen. Eine vollständige Liste erhält man mit dem Befehl '/stats'.
|
||||
* Manche Admins entfernen 'kGs' und erlauben so normalen Usern die Anzeige von
|
||||
* klines, glines and shuns.
|
||||
*/
|
||||
oper-only-stats "okfGsMRUEelLCXzdD";
|
||||
|
||||
/* Throttling: Dieses Beispiel setzte ein Limit von 3 Verbindungen je 60s (pro Host). */
|
||||
throttle {
|
||||
connections 3;
|
||||
period 60s;
|
||||
};
|
||||
|
||||
/* Anti Flood Schutz */
|
||||
anti-flood {
|
||||
nick-flood 3:60; /* 3 Nickänderungen pro 60 Sekunden (Default) */
|
||||
};
|
||||
|
||||
/* Spam Filter */
|
||||
spamfilter {
|
||||
ban-time 1d; /* Default Dauer eines *line Banns durch Spamfilter */
|
||||
ban-reason "Spam/Belästigung"; /* default Grund */
|
||||
virus-help-channel "#help"; /* Channel, der für die 'viruschan' action benutzt wird*/
|
||||
/* except "#help"; Channel, der von Filtern ausgenommen wird */
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* Probleme? Weitere Hilfe nötig?
|
||||
* 1) www.vulnscan.org/UnrealIrcd/unreal32docs.html
|
||||
* 2) www.vulnscan.org/UnrealIrcd/faq/ <- enthält 80% deiner Fragen - Wetten Dass?
|
||||
* 3) Hat man dann noch Probleme, kann man den Chat bei irc.unrealircd.org
|
||||
* #unreal-support aufsuchen. Achtung, wir setzen voraus, dass zuvor die
|
||||
* DOKU GELESEN WURDE (genauso, wie die FAQ!)!
|
||||
*/
|
||||
@@ -0,0 +1,805 @@
|
||||
/*
|
||||
* example.conf par Daniel Hawton AKA Osiris (osiris@unrealircd.org).
|
||||
* Ancien traducteur français : babass
|
||||
* Tradution française : Alef Burzmali - http://www.burzmali.com
|
||||
* Dernière mise à jour : 2010-09-11
|
||||
* $Id$
|
||||
*
|
||||
* Fonctionne pour Unreal3.2 et supérieur
|
||||
*
|
||||
* Okay les gars, voici la nouvelle version de l'example.conf. Cela ressemble plus à du C++.
|
||||
* Peu importe, il est temps de se lancer. Il est difficile de l'attaquer pour la première fois, mais
|
||||
* avec un peu d'expérience et de lecture vous comprendrez.
|
||||
*
|
||||
* Copiez juste ce fichier dans votre répertoire unrealircd principal et appellez le 'unrealircd.conf'.
|
||||
*
|
||||
* NOTE: Toutes les lignes, exceptées les ligne d'ouvertures { , se terminent par un ;, en particulier
|
||||
* celles de fermeture }.
|
||||
* L'IRCd ignorera les lignes commentées.
|
||||
*
|
||||
* LISEZ S'IL VOUS PLAIT doc/unreal32docs.fr.html !
|
||||
* La version en ligne est aussi disponible à : http://www.unrealircd.com/files/docs/unreal32docs.fr.html
|
||||
* Elle contient beaucoup d'informations à propos du fichier de configuration : fournit des informations
|
||||
* à propos de chaque bloc, variable, etc..
|
||||
* Si vous essayez de modifier ce fichier sans avoir bien lu la documentation,
|
||||
* vous êtes presque sûr de vous tromper.
|
||||
*/
|
||||
|
||||
/* Type de commentaires */
|
||||
#Commentaire type 1 (type Shell)
|
||||
// Commentaire type 2 (style C++)
|
||||
/* Commentaire type 3 (style C) */
|
||||
# Toutes ces lignes sont ignorées par l'ircd.
|
||||
|
||||
/*
|
||||
* UnrealIRCd supporte des modules et certains sont obligatoires.
|
||||
* Vous aurez besoin au moins du module commands et du module cloaking.
|
||||
*/
|
||||
|
||||
/* POUR *NIX, décommentez les 2 lignes suivantes : */
|
||||
//loadmodule "src/modules/commands.so";
|
||||
//loadmodule "src/modules/cloak.so";
|
||||
|
||||
/* POUR Windows, décommentez les 2 lignes suivantes : */
|
||||
//loadmodule "modules/commands.dll";
|
||||
//loadmodule "modules/cloak.dll";
|
||||
|
||||
/*
|
||||
* Vous pouvez également inclure d'autres fichiers de configuration.
|
||||
* doc/help.fr.conf contient tout le texte de /helpop en français.
|
||||
* help.conf contient la version anglaise.
|
||||
* Les fichiers badwords.*.conf contiennent tous les badwords pour le mode +G...
|
||||
* spamfilter.conf contient quelques bonnes règles pour les trojans courrants.
|
||||
* Vous voudrez probablement les inclure:
|
||||
*/
|
||||
include "doc/help.fr.conf";
|
||||
include "badwords.channel.conf";
|
||||
include "badwords.message.conf";
|
||||
include "badwords.quit.conf";
|
||||
include "spamfilter.conf";
|
||||
|
||||
/*
|
||||
* ACTUEL : me {}
|
||||
* ANCIEN : M:Line
|
||||
* me {} definit le nom, la description et l'identifiant numérique pour ce serveur.
|
||||
* La syntaxe est la suivante :
|
||||
* me {
|
||||
* name "nom.du.serveur";
|
||||
* info "Description du Serveur";
|
||||
* numeric (numeric* serveur);
|
||||
* };
|
||||
* En cas de link, cet identifiant ne peut être utilisé pour aucun autre serveur du réseau.
|
||||
*/
|
||||
me
|
||||
{
|
||||
name "irc.foonet.com";
|
||||
info "FooNet Server";
|
||||
numeric 1;
|
||||
};
|
||||
|
||||
/*
|
||||
* ACTUEL : admin {}
|
||||
* ANCIEN : A:Line
|
||||
* Admin donne des informations sur les server admins.
|
||||
* Vous pouvez mettre autant de lignes que vous voulez après admin {.
|
||||
* La syntaxe est la suivante :
|
||||
* admin {
|
||||
* "première ligne";
|
||||
* "deuxième ligne";
|
||||
* [etc]
|
||||
* };
|
||||
*/
|
||||
admin {
|
||||
"Bob Smith";
|
||||
"bob";
|
||||
"widely@used.name";
|
||||
};
|
||||
|
||||
/*
|
||||
* ACTUEL : class {}
|
||||
* ANCIEN : Y:line (l'ancien était déroutant)
|
||||
* Définit les réglages pour les classes. Une classe est un groupe de réglages pour
|
||||
* des connexions. Par exemple, pour les connexions serveurs, au lieu de passer par une classe
|
||||
* client, vous utilisez directement une classe serveur. La syntaxe est la suivante :
|
||||
* class (nom de la classe)
|
||||
* {
|
||||
* pingfreq (fréquence des pings utilisateurs/serveurs en secondes);
|
||||
* maxclients (combien de connexions pour cette classe);
|
||||
* sendq (file d'attente maximum pour l'envoie depuis une connexion);
|
||||
* recvq (file d'attente maximum pour la réception depuis une connexion [contrôle du flood]);
|
||||
* };
|
||||
*/
|
||||
|
||||
class clients
|
||||
{
|
||||
pingfreq 90;
|
||||
maxclients 500;
|
||||
sendq 100000;
|
||||
recvq 8000;
|
||||
};
|
||||
|
||||
class servers
|
||||
{
|
||||
pingfreq 90;
|
||||
maxclients 10; /* Nombre maximum de serveurs pouvant être reliés en même temps */
|
||||
sendq 1000000;
|
||||
connfreq 100; /* Combien de secondes entre chaque tentatives de connexions */
|
||||
};
|
||||
|
||||
/*
|
||||
* ACTUEL : allow {}
|
||||
* ANCIEN : I:Line
|
||||
* Définit les autorisations de connexions...
|
||||
* Principalement pour les clients, cela leur permet de se connecter, vous pouvez donc avoir un certain
|
||||
* contrôle et/ou mettre un mot de passe.
|
||||
* La syntaxe est la suivante :
|
||||
* allow {
|
||||
* ip (ip mask à autoriser);
|
||||
* hostname (host mask);
|
||||
* class (classe à laquelle les renvoyer [voir class {}]);
|
||||
* password "(mot de passe)"; (optionnel)
|
||||
* maxperip (nombre de connexions par ip); (optionnel)
|
||||
* };
|
||||
*/
|
||||
|
||||
allow {
|
||||
ip *@*;
|
||||
hostname *@*;
|
||||
class clients;
|
||||
maxperip 5;
|
||||
};
|
||||
|
||||
/* connexion autorisée avec mot de passe */
|
||||
allow {
|
||||
ip *@255.255.255.255;
|
||||
hostname *@*.passworded.ugly.people;
|
||||
class clients;
|
||||
password "f00Ness";
|
||||
maxperip 1;
|
||||
};
|
||||
|
||||
/*
|
||||
* ACTUEL : oper {}
|
||||
* ANCIEN : O:Line
|
||||
* Définit un IRC Operateur
|
||||
* Les IRC operateurs sont là pour préserver la qualité du serveur mais aussi d'en assurer
|
||||
* la maintenance et sa connexion au réseau.
|
||||
* La syntaxe est la suivante :
|
||||
* oper (login) {
|
||||
* class (classe à laquelle les associer, si différent du bloc allow, les déplace vers une nouvelle classe);
|
||||
* from {
|
||||
* userhost (ident@host);
|
||||
* userhost (ident@host);
|
||||
* };
|
||||
* flags
|
||||
* {
|
||||
* (flags ici*);
|
||||
* };
|
||||
* OU
|
||||
* flags "ancien type de flags, comme OAaRD";
|
||||
* };
|
||||
*/
|
||||
|
||||
|
||||
/* Pour avoir la liste des flags oper, voir doc/unreal32docs.fr.html#operblock
|
||||
* [lecture HAUTEMENT recommendée]
|
||||
*/
|
||||
|
||||
oper bobsmith {
|
||||
class clients;
|
||||
from {
|
||||
userhost bob@smithco.com;
|
||||
};
|
||||
password "f00";
|
||||
flags
|
||||
{
|
||||
netadmin;
|
||||
can_zline;
|
||||
can_gzline;
|
||||
can_gkline;
|
||||
global;
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* ACTUEL : listen {}
|
||||
* ANCIEN : P:Line
|
||||
* Définit un port à rattacher à l'ircd, pour autoriser
|
||||
* des utilisateurs/serveurs à se connecter au serveur.
|
||||
* La syntaxe est la suivante :
|
||||
* listen (ip):(port)
|
||||
* {
|
||||
* options {
|
||||
* (options ici);
|
||||
* };
|
||||
* };
|
||||
* ou pour une écoute
|
||||
* indifférente : listen (ip):(port);
|
||||
*
|
||||
* NOTICE : pour les ips ipv6 (3ffe:b80:2:51d::2 etc), utilisez listen [ip]:port;
|
||||
*
|
||||
* Cela fonctionne également.
|
||||
*/
|
||||
|
||||
/* Options de listen:
|
||||
ANCIEN | ACTUEL
|
||||
S serversonly
|
||||
C clientsonly
|
||||
J java
|
||||
s ssl
|
||||
* standard
|
||||
*/
|
||||
|
||||
/* NOTE SUR LES PORTS SSL: les ports SSL sont plutôt non standardisés,
|
||||
* A côté des nombreux ports high-SSL, certaines personnes disent que vous devez
|
||||
* l'utiliser sur le port 994 car c'est le port SSL officiel.. mais cela
|
||||
* requière d'être root! D'un autre coté, le port 194 est le port irc officiel et
|
||||
* avez vous déjà vu un ircd fonctionner sur celui-ci ?
|
||||
* Donc, notre suggestion est d'utiliser le port 6697 pour le SSL, ceci est utilisé par
|
||||
* beaucoup de réseaux et est reconnu par exemple par StunTour.
|
||||
* Vous êtes libre d'ouvrir autant de ports SSL que vous le désirez mais
|
||||
* en utilisant (au moins) 6697 vous aidez le monde à se standardiser un peu ;).
|
||||
*/
|
||||
listen *:6697
|
||||
{
|
||||
options
|
||||
{
|
||||
ssl;
|
||||
clientsonly;
|
||||
};
|
||||
};
|
||||
|
||||
listen *:8067;
|
||||
listen *:6667;
|
||||
|
||||
/* NOTE: Si vous êtes sur un shell avec de multiples IP vous êtes
|
||||
* susceptibles d'avoir l'erreur 'Address already in use' (adresse déjà utilisée)
|
||||
* dans vos logs et l'ircd refusera de démarer.
|
||||
* Cela signifie que vous devrez utiliser une IP spécifique au lieu de '*',
|
||||
* Donc par exemple :
|
||||
* listen 1.2.3.4:6667;
|
||||
* Evidemment, remplacez l'IP par celle qui vous a été assignée.
|
||||
*/
|
||||
|
||||
/*
|
||||
* ACTUEL : link {}
|
||||
* ANCIEN : C/N:Lines
|
||||
* Définit un accord pour la connexion d'un serveur.
|
||||
* NOTE : CHACUN DES SERVEURS NECESSITE UN PARAMETRE LINK {} POUR SE CONNECTER CORRECTEMENT !
|
||||
* La syntaxe est la suivante :
|
||||
* link (nom du serveur)
|
||||
* {
|
||||
* username (username, * fonctionne aussi);
|
||||
* hostname (ip/hostmask);
|
||||
* bind-ip (IP à laquelle se relier lors de la connexion, ou *);
|
||||
* port (port auquel se connecter, si il y en a un);
|
||||
* hub (Si c'est un a hub, * fonctionne, ou les servermasks qu'il doit porter);
|
||||
* [ou leaf *;]
|
||||
* password-connect "(mot de passe à envoyer)";
|
||||
* password-receive "(mot de passe que l'on doit recevoir)";
|
||||
* class (classe à affecter aux serveurs);
|
||||
* options {
|
||||
* (options ici*);
|
||||
* };
|
||||
* // Si vous utilisez le SSL, vous pouvez choisir quel algorithme de hash utiliser dans le mode SSL
|
||||
* // Utilisez la commande "openssl ciphers" pour obtenir la liste des algorithmes disponibles, séparez les par des ":"
|
||||
*
|
||||
* ciphers "DES-CBC3-MD5";
|
||||
*
|
||||
* };
|
||||
*/
|
||||
|
||||
/*
|
||||
options:
|
||||
ANCIEN | ACTUEL
|
||||
S ssl
|
||||
Z zip
|
||||
N/A autoconnect
|
||||
N/A quarantine
|
||||
N/A nodnscache
|
||||
*/
|
||||
|
||||
|
||||
link hub.mynet.com
|
||||
{
|
||||
username *;
|
||||
hostname 1.2.3.4;
|
||||
bind-ip *;
|
||||
port 7029;
|
||||
hub *;
|
||||
password-connect "LiNk";
|
||||
password-receive "LiNk";
|
||||
class servers;
|
||||
options {
|
||||
/* Note : Vous ne devriez pas utiliser autoconnect lorsque vous linkez des services */
|
||||
autoconnect;
|
||||
ssl;
|
||||
zip;
|
||||
};
|
||||
};
|
||||
/*
|
||||
*
|
||||
* ACTUEL : ulines {}
|
||||
* ANCIEN : U:Line
|
||||
* Les U-lines donnent aux serveurs plus de pouvoir/commandes, ceci doit UNIQUEMENT être appliqué
|
||||
* aux serveurs de services/stats et JAMAIS pour des serveurs UnrealIRCd normaux !
|
||||
* La syntaxe est la suivante :
|
||||
* ulines {
|
||||
* (serveur auquel appliquer la uline);
|
||||
* (serveur auquel appliquer la uline);
|
||||
* [etc]
|
||||
* };
|
||||
*/
|
||||
ulines {
|
||||
services.roxnet.org;
|
||||
stats.roxnet.org;
|
||||
};
|
||||
|
||||
/*
|
||||
* ACTUEL : drpass {}
|
||||
* ANCIEN : X:Line
|
||||
* Défini les mots de passe pour les commandes /die et /restart.
|
||||
* La syntaxe est la suivante :
|
||||
* drpass {
|
||||
* restart "(mot de passe pour relancer)";
|
||||
* die "(mot de passe pour arrêter)";
|
||||
* };
|
||||
*/
|
||||
drpass {
|
||||
restart "I-love-to-restart";
|
||||
die "die-you-stupid";
|
||||
};
|
||||
|
||||
/*
|
||||
* ACTUEL : log {}
|
||||
* ANCIEN : N/A
|
||||
* Dit à l'ircd où et quoi loguer. Vous pouvez en avoir
|
||||
* autant que vous le souhaitez.
|
||||
*
|
||||
* FLAGS : errors, kills, tkl, connects, server-connects, oper
|
||||
*
|
||||
* Syntaxe :
|
||||
* log "fichier de log"
|
||||
* {
|
||||
* flags
|
||||
* {
|
||||
* flag;
|
||||
* flag;
|
||||
* etc..
|
||||
* };
|
||||
* };
|
||||
*/
|
||||
|
||||
log "ircd.log" {
|
||||
/* Efface le fichier de log et commence un nouveau lorsqu'il dépasse 2MB,
|
||||
retirez ceci pour toujour utiliser le même fichier de log */
|
||||
maxsize 2097152;
|
||||
flags {
|
||||
oper;
|
||||
connects;
|
||||
server-connects;
|
||||
kills;
|
||||
errors;
|
||||
sadmin-commands;
|
||||
chg-commands;
|
||||
oper-override;
|
||||
spamfilter;
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* ACTUEL : alias {}
|
||||
* ANCIEN : N/A
|
||||
* Ceci vous permet de définir des alias pour les commandes telles que /nickserv, /chanserv etc
|
||||
* FLAGS: services, stats, normal
|
||||
*
|
||||
* Syntaxe :
|
||||
* alias "nom" {
|
||||
* target "pointe vers";
|
||||
* type typedalias;
|
||||
* };
|
||||
*
|
||||
* [NOTE : Vous pouvez également inclure un fichier d'alias prédéfinis ici, voir
|
||||
* doc/unreal32docs.fr.html section 2.9]
|
||||
*/
|
||||
|
||||
// Ceci fait pointer la commande /nickserv vers l'utilisateur NickServ qui est connecté au serveur set::services-server
|
||||
/*alias NickServ {
|
||||
target "NickServ";
|
||||
type services;
|
||||
};*/
|
||||
|
||||
// Si vous voulez que la commande pointe vers le même nom que la commande, vous pouvez ignorez l'entré du nom
|
||||
//alias ChanServ { type services; };
|
||||
|
||||
// Faire pointer la commande /statserv vers l'utilisateur StatServ sur le serveur set::stats-name
|
||||
//alias StatServ { type stats; };
|
||||
|
||||
// Faire pointer la commande /superbot vers l'utilisateur SuperBot
|
||||
//alias SuperBot { type normal; };
|
||||
|
||||
|
||||
/* Alias Standards */
|
||||
alias NickServ { type services; };
|
||||
alias ChanServ { type services; };
|
||||
alias OperServ { type services; };
|
||||
alias HelpServ { type services; };
|
||||
alias StatServ { type stats; };
|
||||
|
||||
/*
|
||||
* ACTUEL : alias {}
|
||||
* ANCIEN : N/A
|
||||
* Ceci vous permet de définir des alias pour les commandes telles que /identify, /services, etc
|
||||
*
|
||||
* Syntaxe :
|
||||
* alias "nom" {
|
||||
* format "format string" {
|
||||
* target "pointer vers";
|
||||
* type typedalias;
|
||||
* parameters "paramètres à envoyer";
|
||||
* };
|
||||
* type command;
|
||||
* };
|
||||
*/
|
||||
/* Ceci est expliqué séparément car même si elle a le même nom que la directive précédente, elle est très
|
||||
* différente dans sa syntaxe, bien qu'elle a une fonction similaire et dépend des alias standards pour
|
||||
* fonctionner.
|
||||
*/
|
||||
/*
|
||||
alias "identify" {
|
||||
format "^#" {
|
||||
target "chanserv";
|
||||
type services;
|
||||
parameters "IDENTIFY %1-";
|
||||
};
|
||||
format "^[^#]" {
|
||||
target "nickserv";
|
||||
type services;
|
||||
parameters "IDENTIFY %1-";
|
||||
};
|
||||
type command;
|
||||
};
|
||||
*/
|
||||
/* La directive alias::format est une expression régulière. Le premier format correspond à la commande
|
||||
* /identify command lorsque le premier caractère est un #. Cela renvoit donc à l'alias chanserv avec
|
||||
* les paramètres IDENTIFY %1-. Le second format correspond à la commande /identify lorsque le premier
|
||||
* caractère n'est pas un #. Cela envoie alors la commande à l'alias nickserv avec les paramètres
|
||||
* IDENTIFY %1-.
|
||||
*/
|
||||
|
||||
/* L'alias::format::parameters est similaire aux languages de programmation. %N (où N est un nombre)
|
||||
* représente un paramètre envoyé à la commande (dans ce cas /identify). Si vous spécifiez %N- cela
|
||||
* signifie que tous les paramètres depuis N jusqu'au dernier paramètre dans la chaîne de caractères.
|
||||
* Vous pouvez également spécifier %n qui est remplacé par le pseudo de l'utilisateur.
|
||||
*/
|
||||
|
||||
/* Alias Standards */
|
||||
alias "services" {
|
||||
format "^#" {
|
||||
target "chanserv";
|
||||
type services;
|
||||
parameters "%1-";
|
||||
};
|
||||
format "^[^#]" {
|
||||
target "nickserv";
|
||||
type services;
|
||||
parameters "%1-";
|
||||
};
|
||||
type command;
|
||||
};
|
||||
|
||||
alias "identify" {
|
||||
format "^#" {
|
||||
target "chanserv";
|
||||
type services;
|
||||
parameters "IDENTIFY %1-";
|
||||
};
|
||||
format "^[^#]" {
|
||||
target "nickserv";
|
||||
type services;
|
||||
parameters "IDENTIFY %1-";
|
||||
};
|
||||
type command;
|
||||
};
|
||||
|
||||
/* Ceci est un exemple de véritable alias de commande*/
|
||||
/* Ceci renvoye /GLINEBOT à /GLINE <parameter> 2d etc... */
|
||||
alias "glinebot" {
|
||||
format ".+" {
|
||||
command "gline";
|
||||
type real;
|
||||
parameters "%1 2d Les bots ne sont pas permis sur ce serveur, lisez s'il-vous-plait la faq sur http://www.example.com/faq/123";
|
||||
};
|
||||
type command;
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* ACTUEL : tld {}
|
||||
* ANCIEN : T:Line
|
||||
* Ceci applique une motd et des fichiers de règles différents
|
||||
* en fonction de l'hostmask des clients.
|
||||
* La syntaxe est la suivante :
|
||||
* tld {
|
||||
* mask (ident@host);
|
||||
* motd "(motd file)";
|
||||
* rules "(rules file)";
|
||||
* };
|
||||
*/
|
||||
|
||||
tld {
|
||||
mask *@*.fr;
|
||||
motd "ircd.motd.fr";
|
||||
rules "ircd.rules.fr";
|
||||
};
|
||||
|
||||
/* Note : vous pouvez juste effacer le bloc d'exemple ci-dessus,
|
||||
* auquel cas les fichiers motd/règles par défaut (ircd.motd, ircd.rules)
|
||||
* seront utilisés pour tout le monde.
|
||||
*/
|
||||
|
||||
/*
|
||||
* ACTUEL : ban nick {}
|
||||
* ANCIEN : Q:Line
|
||||
* Bannit un pseudo, il ne peut donc être utilisé.
|
||||
* La syntaxe est la suivante :
|
||||
* ban nick {
|
||||
* mask "(pseudo à bannir)";
|
||||
* reason "(raison)";
|
||||
* };
|
||||
*/
|
||||
ban nick {
|
||||
mask "*C*h*a*n*S*e*r*v*";
|
||||
reason "Reservé aux Services";
|
||||
};
|
||||
/*
|
||||
* ACTUEL : ban ip {}
|
||||
* ANCIEN : Z:Line
|
||||
* Empêche une ip de se connecter au réseau.
|
||||
* Syntaxe :
|
||||
* ban ip { mask (ip/hostmask); reason "(raison)"; };
|
||||
*/
|
||||
ban ip {
|
||||
mask 195.86.232.81;
|
||||
reason "Serveur délinké";
|
||||
};
|
||||
/*
|
||||
* ACTUEL : ban server {}
|
||||
* ANCIEN : Server Q:Line
|
||||
* Empêche un serveur de se connecter au réseau.
|
||||
* Si le serveur est linké à un serveur distant, le serveur local
|
||||
* sera déconnecté du réseau.
|
||||
* La syntaxe est la suivante :
|
||||
* ban server {
|
||||
* mask "(nom du serveur)";
|
||||
* reason "(raison à donner)";
|
||||
* };
|
||||
*/
|
||||
|
||||
ban server {
|
||||
mask eris.berkeley.edu;
|
||||
reason "Va-t-en d'ici.";
|
||||
};
|
||||
/*
|
||||
* ACTUEL : ban user {}
|
||||
* ANCIEN : K:Line
|
||||
* Fait qu'un utilisateur avec un certain masque ne peut se connecter
|
||||
* à votre serveur.
|
||||
* Syntaxe :
|
||||
* ban user { mask (hostmask/ip); reason "(raison)"; };
|
||||
*/
|
||||
|
||||
ban user {
|
||||
mask *tirc@*.saturn.bbn.com;
|
||||
reason "Idiot";
|
||||
};
|
||||
|
||||
/*
|
||||
* ACTUEL : ban realname {}
|
||||
* ANCIEN : n:Line
|
||||
* Ceci empêche un certain realname d'être utilisé.
|
||||
* Syntaxe :
|
||||
* ban realname {
|
||||
* mask "(realname)";
|
||||
* reason "(raison)";
|
||||
* };
|
||||
*/
|
||||
|
||||
ban realname {
|
||||
mask "Swat Team";
|
||||
reason "mIRKFORCE";
|
||||
};
|
||||
|
||||
ban realname {
|
||||
mask "sub7server";
|
||||
reason "sub7";
|
||||
};
|
||||
|
||||
/*
|
||||
* NOTE POUR TOUS LES BANS, ils peuvent être répetés pour ajouter des entrées !
|
||||
*
|
||||
* ACTUEL : except ban {}
|
||||
* ANCIEN : E:Line
|
||||
* Fait que vous ne pouvez être banni.
|
||||
* Syntaxe :
|
||||
* except ban { mask (ident@host); };
|
||||
* Répétez l'except ban {} autant de fois
|
||||
* que vous voulez pour différents hosts.
|
||||
*/
|
||||
|
||||
except ban {
|
||||
/* ne bannit pas stskeeps */
|
||||
mask *stskeeps@212.*;
|
||||
};
|
||||
|
||||
/*
|
||||
* ACTUEL : deny dcc {}
|
||||
* ANCIEN : dccdeny.conf
|
||||
* Utilisez ceci pour bloquer l'envoi de dcc ...
|
||||
* Utile pour bloquer les virus.
|
||||
* Syntaxe :
|
||||
* deny dcc
|
||||
* {
|
||||
* filename "fichier à bloquer (ex : *exe)";
|
||||
* reason "raison";
|
||||
* };
|
||||
*/
|
||||
deny dcc {
|
||||
filename "*sub7*";
|
||||
reason "Possible Sub7 Virus";
|
||||
};
|
||||
|
||||
/*
|
||||
* ACTUEL : deny channel {}
|
||||
* ANCIEN : N/A (NEW)
|
||||
* Ceci empêche des salons d'être joints.
|
||||
* Syntaxe :
|
||||
* deny channel {
|
||||
* channel "(salon)";
|
||||
* reason "raison";
|
||||
* };
|
||||
*/
|
||||
deny channel {
|
||||
channel "*warez*";
|
||||
reason "Warez is illegal";
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* ACTUEL : allow channel {}
|
||||
* ANCIEN : chrestrict
|
||||
* Autorise un utilisateur à joindre un salon...
|
||||
* comme une exception au deny channel.
|
||||
* Syntaxe :
|
||||
* allow channel {
|
||||
* channel "nom du salon";
|
||||
* };
|
||||
*/
|
||||
allow channel {
|
||||
channel "#WarezSucks";
|
||||
};
|
||||
|
||||
/*
|
||||
* ACTUEL : vhost {}
|
||||
* ANCIEN : Vhost.conf file
|
||||
* Applique une ip factice aux non-opers, ou aux
|
||||
* opers trop flemmards pour utiliser /sethost :P
|
||||
* Syntaxe :
|
||||
* vhost {
|
||||
* vhost (vhost.com);
|
||||
* from {
|
||||
* userhost (ident@host à autoriser à utiliser);
|
||||
* };
|
||||
* login (login);
|
||||
* password (mot de passe);
|
||||
* };
|
||||
* ensuite pour utiliser ce vhost, tapez /vhost (login) (mot de passe) sur l'IRC
|
||||
*/
|
||||
vhost {
|
||||
vhost i.hate.microsefrs.com;
|
||||
from {
|
||||
userhost *@*.image.dk;
|
||||
};
|
||||
login stskeeps;
|
||||
password moocowsrulemyworld;
|
||||
};
|
||||
|
||||
/* Vous pouvez utiliser d'autres fichiers de configuration */
|
||||
/* include "klines.conf"; */
|
||||
|
||||
/* Configuration du réseau */
|
||||
set {
|
||||
network-name "ROXnet";
|
||||
default-server "irc.roxnet.org";
|
||||
services-server "services.roxnet.org";
|
||||
stats-server "stats.roxnet.org";
|
||||
help-channel "#ROXnet";
|
||||
hiddenhost-prefix "rox";
|
||||
/* prefix-quit "no"; */
|
||||
/* Les Cloak keys doivent être les mêmes sur tous les serveurs du réseau.
|
||||
* Ils sont utilisés pour générer des hosts masqués et doivent être gardés secrets.
|
||||
* Les clés doivent être 3 chaînes de 5-100 caractères melangés.
|
||||
* (10-20 caractères est parfait) et elles doivent être constituées de minuscules (a-z),
|
||||
* majuscules (A-Z) et chiffres (0-9) [voir le premier exemple de clé].
|
||||
* Astuce : Sur *NIX, vous pouvez utiliser la commande './unreal gencloak' dans votre shell pour que
|
||||
* Unreal génère 3 chaînes aléatoires pour vous.
|
||||
*/
|
||||
cloak-keys {
|
||||
"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
|
||||
"et une autre";
|
||||
"et un autre";
|
||||
};
|
||||
/* host à l'identification oper */
|
||||
hosts {
|
||||
local "locop.roxnet.org";
|
||||
global "ircop.roxnet.org";
|
||||
coadmin "coadmin.roxnet.org";
|
||||
admin "admin.roxnet.org";
|
||||
servicesadmin "csops.roxnet.org";
|
||||
netadmin "netadmin.roxnet.org";
|
||||
host-on-oper-up "no";
|
||||
};
|
||||
};
|
||||
|
||||
/* Configuration spécifique d'un serveur */
|
||||
|
||||
set {
|
||||
kline-address "définir.cet.email";
|
||||
modes-on-connect "+ixw";
|
||||
modes-on-oper "+xwgs";
|
||||
oper-auto-join "#opers";
|
||||
options {
|
||||
hide-ulines;
|
||||
/* Vous pouvez enclencher la vérification des idents si vous voulez */
|
||||
/* identd-check; */
|
||||
show-connect-info;
|
||||
};
|
||||
|
||||
maxchannelsperuser 10;
|
||||
/* Durée maximum pendant laquelle un utilisateur doit rester connecté avant de pouvoir utiliser
|
||||
* un message de QUIT.
|
||||
* Ceci devrait aider à stoper le spam */
|
||||
anti-spam-quit-message-time 10s;
|
||||
/* Applique le message de static-quit à tous les quits - cela signifie qu'aucun
|
||||
message de quit personalisé ne sera autorisé sur le serveur local */
|
||||
/* static-quit "Client quit"; */
|
||||
|
||||
/* Vous pouvez également bloquer toutes les raisons de part en décommentant ceci et en disant
|
||||
* 'yes', ou spécifiez un autre texte (ex: "Bye bye!") pour qu'il soit toujours utilisé.. */
|
||||
/* static-part yes; */
|
||||
|
||||
/* Vous permet de restreindre certaines stats aux opers, utilisez * pour toutes les stats,
|
||||
* enlevez le pour autoriser les utilisateurs à voir toutes les stats. Tapez '/stats' pour
|
||||
* une liste complète.
|
||||
* Certains admins pourront vouloir bloquer 'kGs' pour que les utilisateurs normaux ne puissent
|
||||
* lister les klines, glines et shuns.
|
||||
*/
|
||||
oper-only-stats "okfGsMRUEelLCXzdD";
|
||||
|
||||
/* Throttling: cet exemple applique une limite de 3 tentatives de connection en 60s (par host). */
|
||||
throttle {
|
||||
connections 3;
|
||||
period 60s;
|
||||
};
|
||||
|
||||
/* Protection Anti flood */
|
||||
anti-flood {
|
||||
nick-flood 3:60; /* 3 changements de pseudo en 60 secondes (la valeur par défaut) */
|
||||
};
|
||||
|
||||
/* Filtre anti-spam */
|
||||
spamfilter {
|
||||
ban-time 1d; /* durée par défaut d'un ban *line appliqué par le spamfilter */
|
||||
ban-reason "Spam/Advertising"; /* raison par défaut */
|
||||
virus-help-channel "#help"; /* salon à utiliser pour l'action 'viruschan' */
|
||||
/* excepté "#help"; salon à exempter de filtrage */
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* Problèmes ou besoin de plus d'aide ?
|
||||
* 1) http://www.unrealircd.com/files/docs/unreal32docs.fr.html
|
||||
* 2) http://www.vulnscan.org/UnrealIRCd/faq/ <- contient 80% de vos questions !
|
||||
* 3) Si vous avez encore des problèmes vous pouvez aller sur irc.unrealircd.org #unreal-support,
|
||||
* notez que vous devez avoir LU LA DOCUMENTATION ET LA FAQ d'abord !
|
||||
*/
|
||||
@@ -0,0 +1,823 @@
|
||||
/*
|
||||
* example.conf Daniel Hawton avagy Osiris jóvoltából (osiris@unrealircd.org).
|
||||
* A magyar fordítást AngryWolf <angrywolf2009@gmail.com> készítette.
|
||||
* $Id$
|
||||
*
|
||||
* Felhasználható Unreal3.2 és későbbi verziókhoz
|
||||
*
|
||||
* Oké, emberek! Ez az új példa konfiguráció. A kinézete nagyon hasonló
|
||||
* a C++-hoz, olyasformán. Mindenesetre itt az ideje végigmennünk rajta. Eleinte
|
||||
* nehéz nekilendülni, de kis gyakorlással és olvasgatással meg fogjuk érteni.
|
||||
*
|
||||
* Csak másoljuk be ezt a fájlt a fő unrealircd könyvtárunkba, és nevezzük
|
||||
* 'unrealircd.conf'-nak.
|
||||
*
|
||||
* MEGJEGYZÉS: Minden sor, kivéve a nyitó { sort, ;-vel végződik, beleértve
|
||||
* a záró } sort is. Az IRCd figyelmen kívül hagyja a megjegyzéssorokat.
|
||||
*
|
||||
* KÉRLEK, OLVASD EL A doc/unreal32docs.html-T! Az online verzió is elérhető
|
||||
* a www.vulnscan.org/UnrealIRCd/unreal32docs.html címen.
|
||||
* Rengeteg információt tartalmaz a konfigurációs fájlról: tájékoztatást ad
|
||||
* minden blokkról, változóról stb.
|
||||
* Ha megpróbálod szerkeszteni ezt a fájlt anélkül, hogy megfelelően elolvastad
|
||||
* volna a dokumentációt, jó eséllyel kanyarodsz a biztos kudarc felé!
|
||||
*/
|
||||
|
||||
/* Megjegyzések típusai */
|
||||
#1. Megjegyzéstípus (Shell típusú)
|
||||
// 2. Megjegyzéstípus (C++ stílusú)
|
||||
/* 3. Megjegyzéstípus (C stílusú) */
|
||||
#ezeket a sorokat az ircd figyelmen kívül hagyja.
|
||||
|
||||
/*
|
||||
* Az UnrealIRCd támogat modulokat, néhányuk betöltése kötelező is.
|
||||
* Legalább a parancsokat biztosító és egy álcázó modulra lesz szükségünk.
|
||||
*/
|
||||
|
||||
/* *NIX-BAN vegyük ki a megjegyzésből a következő két sort: */
|
||||
//loadmodule "src/modules/commands.so";
|
||||
//loadmodule "src/modules/cloak.so";
|
||||
|
||||
/* Windows-BAN vegyük ki a megjegyzésből a következő két sort: */
|
||||
//loadmodule "modules/commands.dll";
|
||||
//loadmodule "modules/cloak.dll";
|
||||
|
||||
/*
|
||||
* Azt is megtehetjük, hogy befűzünk más konfigurációs fájlokat.
|
||||
* A help.conf tartalmazza az összes /helpop szöveget. A badwords.*.conf
|
||||
* fájlok tartalmazzák az összes csúnyaszó bejegyzést a +G módhoz...
|
||||
* A spamfilter.conf néhány jó szabályt a jelenlegi trójai vírusokra.
|
||||
* Valószínűleg be akarjuk tölteni őket:
|
||||
*/
|
||||
include "help.conf";
|
||||
include "badwords.channel.conf";
|
||||
include "badwords.message.conf";
|
||||
include "badwords.quit.conf";
|
||||
include "spamfilter.conf";
|
||||
|
||||
/*
|
||||
* ÚJ: me {}
|
||||
* RÉGI: M:Line
|
||||
* A me {} határozza meg ennek a szervernek a nevét, a leírását és az unrealbeli
|
||||
* szerverazonosító-számát. A szintaktikája a következő:
|
||||
* me {
|
||||
* name "szerver.név";
|
||||
* info "A szerver leírása";
|
||||
* numeric (szerverazonosító*);
|
||||
* };
|
||||
* Ha linkelünk, ezt az azonosítószámot nem használhatja semmilyen más szerver
|
||||
* a hálózaton.
|
||||
*/
|
||||
me
|
||||
{
|
||||
name "irc.valaminet.com";
|
||||
info "ValamiNet Szerver";
|
||||
numeric 1;
|
||||
};
|
||||
|
||||
/*
|
||||
* ÚJ: admin {}
|
||||
* RÉGI: A:Line
|
||||
* Ez a blokk információt ad a szerver adminisztrátorairól. Annyi sort tehetünk
|
||||
* az admin { alá, amennyit kívánunk.
|
||||
* A szintaktikája a következő:
|
||||
* admin {
|
||||
* "első sor";
|
||||
* "második sor";
|
||||
* [stb]
|
||||
* };
|
||||
*/
|
||||
admin {
|
||||
"Bob Smith";
|
||||
"bob";
|
||||
"szeleskorben@hasznalt.nev";
|
||||
};
|
||||
|
||||
/*
|
||||
* ÚJ: class {}
|
||||
* RÉGI: Y:line (a régi zavarbaejtő volt)
|
||||
* Ezek az osztályokat állítják be. Az osztályok a kapcsolatok egy csoportjának
|
||||
* beállításai. Például a szerver kapcsolatokat, ahelyett, hogy egy kliens
|
||||
* osztályába kerülnének, beleirányítjuk a szerverek osztályába. Szintaktika:
|
||||
* class (osztálynév)
|
||||
* {
|
||||
* pingfreq (hány másodpercenként pingeljünk egy felhasználót/szervert);
|
||||
* maxclients (mennyi kapcsolat lehet ebben az osztályban);
|
||||
* sendq (egy kapcsolat küldési sorának maximális mérete);
|
||||
* recvq (egy kapcsolat fogadási sorának maximális mérete [árvízvédelem]);
|
||||
* };
|
||||
*/
|
||||
|
||||
class clients
|
||||
{
|
||||
pingfreq 90;
|
||||
maxclients 500;
|
||||
sendq 100000;
|
||||
recvq 8000;
|
||||
};
|
||||
|
||||
class servers
|
||||
{
|
||||
pingfreq 90;
|
||||
maxclients 10; /* Legfeljebb ennyi szervert linkelhetünk egyszerre */
|
||||
sendq 1000000;
|
||||
connfreq 100; /* Ennyi másodpercet várjon, mielőtt újra kapcsolódik */
|
||||
};
|
||||
|
||||
/*
|
||||
* ÚJ: allow {}
|
||||
* RÉGI: I:Line
|
||||
* Ez a kapcsolatok engedélyezését határozza meg...
|
||||
* Alapvetően kliensekre használjuk; megengedi nekik, hogy kapcsolódjanak, így
|
||||
* némileg van lehetőség a szabályozásra, valamint jelszót is beállíthatunk.
|
||||
* A szintaktika a következő:
|
||||
* allow {
|
||||
* ip (ip maszk az engedélyezéshez);
|
||||
* hostname (gazdanév maszk);
|
||||
* class (osztály, ahová küldjük őket [lásd: class {}]);
|
||||
* password "(jelszó)"; (nem kötelező)
|
||||
* maxperip (mennyi kapcsolatot engedjünk ip címenként); (nem kötelező)
|
||||
* };
|
||||
*/
|
||||
|
||||
allow {
|
||||
ip *@*;
|
||||
hostname *@*;
|
||||
class clients;
|
||||
maxperip 5;
|
||||
};
|
||||
|
||||
/* Jelszavas allow blokk */
|
||||
allow {
|
||||
ip *@255.255.255.255;
|
||||
hostname *@*.jelszavas.csunya.emberkek;
|
||||
class clients;
|
||||
password "V4lami";
|
||||
maxperip 1;
|
||||
};
|
||||
|
||||
/*
|
||||
* ÚJ: allow channel {}
|
||||
* RÉGI: chrestrict
|
||||
* Megengedi egy felhasználónak, hogy belépjen egy csatornára...
|
||||
* mint egy csatornáról letiltás alóli kivétel.
|
||||
* Szintaktika:
|
||||
* allow channel {
|
||||
* channel "csatornanév";
|
||||
* };
|
||||
*/
|
||||
allow channel {
|
||||
channel "#AWarezSzívás";
|
||||
};
|
||||
|
||||
/*
|
||||
* ÚJ: oper {}
|
||||
* RÉGI: O:Line
|
||||
* Definiál egy IRC operátort
|
||||
* Az IRC operátorok feladata, hogy épségben tartsák a szervert; rendszerint
|
||||
* ügyelnek a karbantartottságára és arra, hogy kapcsolatban maradjon
|
||||
* a hálózattal. A szintaktika a következő:
|
||||
* oper (bejelentkezőnév) {
|
||||
* class (osztály, ahová berakjuk őket; ha eddig más osztályban voltak,
|
||||
* átteszi őket ebbe az új osztályba);
|
||||
* from {
|
||||
* userhost (azonosító@gazdanév);
|
||||
* userhost (azonosító@gazdanév);
|
||||
* };
|
||||
* flags
|
||||
* {
|
||||
* (flagek ide*);
|
||||
* };
|
||||
* VAGY
|
||||
* flags "régi típusú flagek, mint pl. OAaRD";
|
||||
* };
|
||||
*/
|
||||
|
||||
|
||||
/* Az oper flagek listáját lásd a doc/unreal32docs.hu.html#operblock szekcióban
|
||||
* [ERŐSEN ajánlott elolvasni]
|
||||
*/
|
||||
|
||||
oper bobsmith {
|
||||
class clients;
|
||||
from {
|
||||
userhost bob@smithco.com;
|
||||
};
|
||||
password "f00";
|
||||
flags
|
||||
{
|
||||
netadmin;
|
||||
can_zline;
|
||||
can_gzline;
|
||||
can_gkline;
|
||||
global;
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* ÚJ: listen {}
|
||||
* RÉGI: P:Line
|
||||
* Meghatároz egy olyan portot, amelyet az ircd megnyit, és engedélyt ad
|
||||
* a felhasználóknak/szervereknek, hogy kapcsolódjanak a szerverre.
|
||||
* A szintaktika a következő:
|
||||
* listen (ip cím):(portszám)
|
||||
* {
|
||||
* options {
|
||||
* (opciók ide);
|
||||
* };
|
||||
* };
|
||||
* vagy egy síma portnyitáshoz:
|
||||
* listen (ip):(port);
|
||||
*
|
||||
* MEGJEGYZÉS: ipv6-os ip-kre (3ffe:b80:2:51d::2 stb.) használjuk a
|
||||
* listen [ip]:port;
|
||||
* szintaktikát. Az is működik.
|
||||
*/
|
||||
|
||||
/* Opciók a listenhez:
|
||||
RÉGI | ÚJ
|
||||
S serversonly
|
||||
C clientsonly
|
||||
J java
|
||||
s ssl
|
||||
* standard
|
||||
*/
|
||||
|
||||
/* MEGJEGYZÉS SSL PORTOKRA: az SSL portok eléggé szabványosítatlanok, emellett
|
||||
* sok a magas SSL port. Néhányan azt mondják, a 994-en célszerű futtatni,
|
||||
* mert az a hivatalos SSL port... de a rendszergazdát igényel! Ezenkívül,
|
||||
* a 194 a hivatalos irc port, de láttunk valaha egy ircd-t azon futni?
|
||||
* Így mi a javaslatunk az, hogy használjuk a 6697-et SSL-hez, ezt használja
|
||||
* jónéhány hálózat, és ezt ismeri fel például a StunTour is.
|
||||
* Szabadon megnyithatunk annyi SSL portot, amennyit akarunk, de ha a 6697-et
|
||||
* (is) használjuk, kicsit segítjük a világot szabványosodni ;).
|
||||
*/
|
||||
listen *:6697
|
||||
{
|
||||
options
|
||||
{
|
||||
ssl;
|
||||
clientsonly;
|
||||
};
|
||||
};
|
||||
|
||||
listen *:8067;
|
||||
listen *:6667;
|
||||
|
||||
/* MEGJEGYZÉS: Ha egy több IP címes IRCd shellen vagyunk, előfordulhat, hogy
|
||||
* "Address already in use" ("A cím már használatban van") hibaüzeneteket
|
||||
* találunk a naplóban, és az ircd nem indul el. Ez azt jelenti, hogy
|
||||
* az ircd-nek egy meghatározott IP címre KELL bindelnie a "*" helyett
|
||||
* vagyis például így:
|
||||
* listen 1.2.3.4:6667;
|
||||
* Természetesen cseréljük ki az IP címet arra az IP-re, amelyet nekünk
|
||||
* osztottak ki.
|
||||
*/
|
||||
|
||||
/*
|
||||
* ÚJ: link {}
|
||||
* RÉGI: C/N:Line-ok
|
||||
* Ez a blokk "igen"-t mond egy szerver kapcsolódására.
|
||||
* MEGJEGYZÉS: MINDKÉRT SZERVEREN KELL EGY LINK {} BEÁLLÍTÁS A HELYES
|
||||
* KAPCSOLÓDÁSHOZ!
|
||||
* A szintaktika a következő:
|
||||
* link (szervernév)
|
||||
* {
|
||||
* username (felhasználónév, * is működik);
|
||||
* hostname (ip cím/gazdanév maszk);
|
||||
* bind-ip (amilyen IP címre bindeljen kapcsolódáskor, vagy *);
|
||||
* port (port, ahová kapcsolódjon, ha van);
|
||||
* hub (Ha ez egy hub; * működik, vagy szervermaszkokat is beírhatunk);
|
||||
* [vagy leaf *;]
|
||||
* password-connect "(elküldendő jelszó)";
|
||||
* password-receive "(fogadandó jelszó)";
|
||||
* class (osztály, ahová betesszük a szervereket);
|
||||
* options {
|
||||
* (opciók ide*);
|
||||
* };
|
||||
* // Ha SSL-t használunk, kiválaszthatjuk, milyen rejtjelező algoritmusok
|
||||
* // legyenek használatban SSL módban. Listát kapunk az "openssl ciphers"
|
||||
* // paranccsal. Az egyes algoritmusokat :-tal válasszuk el.
|
||||
*
|
||||
* ciphers "DES-CBC3-MD5";
|
||||
*
|
||||
* };
|
||||
*/
|
||||
|
||||
/*
|
||||
opciók:
|
||||
RÉGI | ÚJ
|
||||
S ssl
|
||||
Z zip
|
||||
N/A autoconnect
|
||||
N/A quarantine
|
||||
N/A nodnscache
|
||||
*/
|
||||
|
||||
|
||||
link hub.sajatnet.com
|
||||
{
|
||||
username *;
|
||||
hostname 1.2.3.4;
|
||||
bind-ip *;
|
||||
port 7029;
|
||||
hub *;
|
||||
password-connect "LiNk";
|
||||
password-receive "LiNk";
|
||||
class servers;
|
||||
options {
|
||||
/* Megjegyzés: szolgáltatások linkelésekor célszerű nem
|
||||
* használni az autoconnect opciót.
|
||||
*/
|
||||
autoconnect;
|
||||
ssl;
|
||||
zip;
|
||||
};
|
||||
};
|
||||
/*
|
||||
*
|
||||
* ÚJ: ulines {}
|
||||
* RÉGI: U:Line
|
||||
* Az U-line-ok több hatalmat/parancsot adnak a szervereknek. CSAK
|
||||
* szolgáltatásokat és statisztikákat nyújtó szerverekre érdemes beállítani,
|
||||
* és SOHA rendes UnrealIRCd szerverekre!
|
||||
* A szintaktika a következő:
|
||||
* ulines {
|
||||
* (uline-ra teendő szerver);
|
||||
* (uline-ra teendő szerver);
|
||||
* [stb.]
|
||||
* };
|
||||
*/
|
||||
ulines {
|
||||
services.roxnet.org;
|
||||
stats.roxnet.org;
|
||||
};
|
||||
|
||||
/*
|
||||
* ÚJ: drpass {}
|
||||
* RÉGI: X:Line
|
||||
* Meghatározza a jelszavakat a /die és /restart parancsokhoz.
|
||||
* A szintaktika a következő:
|
||||
* drpass {
|
||||
* restart "(újraindítás jelszava)";
|
||||
* die "(leállítás jelszava)";
|
||||
* };
|
||||
*/
|
||||
drpass {
|
||||
restart "Imádok-újraindítani";
|
||||
die "Halj-te-buta";
|
||||
};
|
||||
|
||||
/*
|
||||
* ÚJ: log {}
|
||||
* RÉGI: N/A
|
||||
* Megmondja az ircd-nek, hová és mit naplózzon. Annyi naplófájlunk lehet,
|
||||
* amennyit szeretnénk.
|
||||
*
|
||||
* FLAGEK: errors, kills, tkl, connects, server-connects, oper
|
||||
*
|
||||
* Szintaktika:
|
||||
* log "naplófájl"
|
||||
* {
|
||||
* flags
|
||||
* {
|
||||
* (flag);
|
||||
* (flag);
|
||||
* [stb.]
|
||||
* };
|
||||
* };
|
||||
*/
|
||||
|
||||
log "ircd.log" {
|
||||
/* Törölje a naplófájlt, és kezdjen egy újat, ha eléri a 2 MB-ot;
|
||||
* hagyjuk ki ezt a beállításból, ha mindig ugyanazt a naplót
|
||||
* szeretnénk használni
|
||||
*/
|
||||
maxsize 2097152;
|
||||
flags {
|
||||
oper;
|
||||
connects;
|
||||
server-connects;
|
||||
kills;
|
||||
errors;
|
||||
sadmin-commands;
|
||||
chg-commands;
|
||||
oper-override;
|
||||
spamfilter;
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* ÚJ: alias {}
|
||||
* RÉGI: N/A
|
||||
* Ezzel olyan álparancsokat készíthetünk, mint a /nickserv, /chanserv stb.
|
||||
* FLAGEK: services (szolgáltatás), stats (statisztika), normal (közönséges
|
||||
* felhasználó)
|
||||
*
|
||||
* Szintaxis:
|
||||
* alias "név" {
|
||||
* target "ahová mutasson";
|
||||
* type álparancstípus;
|
||||
* };
|
||||
*
|
||||
* [MEGJEGYZÉS: Beilleszthetünk ide egy előre beállított álparancsfájlt is,
|
||||
* lásd: doc/unreal32docs.html, 2.9-es szekció]
|
||||
*/
|
||||
|
||||
// Ez a /nickserv parancsot a NickServ felhasználóra irányítja, aki a set::services-server szerverre kapcsolódott.
|
||||
/*alias NickServ {
|
||||
target "NickServ";
|
||||
type services;
|
||||
};*/
|
||||
|
||||
// Ha a parancsot ugyanarra a nicknévre szeretnénk irányítani, ami a parancs neve, kihagyhatjuk a nick bejegyzést.
|
||||
//alias ChanServ { type services; };
|
||||
|
||||
// A /statserv parancsot a set::stats-server szerveren lévő StatServ felhasználóra irányítja
|
||||
//alias StatServ { type stats; };
|
||||
|
||||
// A /superbot parancsot a SuperBot felhasználóra irányítja.
|
||||
//alias SuperBot { type normal; };
|
||||
|
||||
|
||||
/* Szabványos álparancsok */
|
||||
alias NickServ { type services; };
|
||||
alias ChanServ { type services; };
|
||||
alias OperServ { type services; };
|
||||
alias HelpServ { type services; };
|
||||
alias StatServ { type stats; };
|
||||
|
||||
/*
|
||||
* ÚJ: alias {}
|
||||
* RÉGI: N/A
|
||||
* Ezzel olyan álparancsokat készíthetünk, mint az /identify, /services stb.
|
||||
*
|
||||
* Szintaktika:
|
||||
* alias "név" {
|
||||
* format "formátumsztring" {
|
||||
* target "ahova mutasson";
|
||||
* type álparancstípus;
|
||||
* parameters "küldendő paraméterek";
|
||||
* };
|
||||
* type command;
|
||||
* };
|
||||
*/
|
||||
/* Ezt azért mutatjuk külön, mert még ha ugyanaz is a neve, mint az előző direktívának, a szintaktikája nagyon
|
||||
* más, habár hasonló feladatot lát el, és a szabványosok álparancsokra van szüksége, hogy működjön.
|
||||
*/
|
||||
/*
|
||||
alias "identify" {
|
||||
format "^#" {
|
||||
target "chanserv";
|
||||
type services;
|
||||
parameters "IDENTIFY %1-";
|
||||
};
|
||||
format "^[^#]" {
|
||||
target "nickserv";
|
||||
type services;
|
||||
parameters "IDENTIFY %1-";
|
||||
};
|
||||
type command;
|
||||
};
|
||||
*/
|
||||
/* Az alias::format direktíva egy reguláris kifejezés. Az első formátum akkor illeszkedik az /identify parancsra,
|
||||
* ha az első karakter egy #. Azután elküldi ezt a chanserv álparancshoz az IDENTIFY %1- paraméterekkel.
|
||||
* A második formátum akkor illeszkedik az /identify parancsra, ha az első karakter nem egy #. Azután
|
||||
* elküldi a parancsot a nickserv álparancshoz az IDENTIFY %1- paraméterekkel.
|
||||
*/
|
||||
|
||||
/* Az alias::format::parameters hasonló a scriptnyelvekhez. Az %N (ahol N egy szám) a parancshoz küldött egyik
|
||||
* paramétert ábrázolja (ebben az esetben az /identify-ét). Ha azt írjuk, hogy %N-, a sztring N-edik
|
||||
* paraméterétől az utolsóig minden paramétert fog jelenteni. Megadhatunk egy %n-et is, amely ki lesz cserélve
|
||||
* a felhasználó nicknevével.
|
||||
*/
|
||||
|
||||
/* Szabványos álparancsok */
|
||||
alias "services" {
|
||||
format "^#" {
|
||||
target "chanserv";
|
||||
type services;
|
||||
parameters "%1-";
|
||||
};
|
||||
format "^[^#]" {
|
||||
target "nickserv";
|
||||
type services;
|
||||
parameters "%1-";
|
||||
};
|
||||
type command;
|
||||
};
|
||||
|
||||
alias "identify" {
|
||||
format "^#" {
|
||||
target "chanserv";
|
||||
type services;
|
||||
parameters "IDENTIFY %1-";
|
||||
};
|
||||
format "^[^#]" {
|
||||
target "nickserv";
|
||||
type services;
|
||||
parameters "IDENTIFY %1-";
|
||||
};
|
||||
type command;
|
||||
};
|
||||
|
||||
/* Példa egy valódi álparancsra */
|
||||
/* A /GLINEBOT parancsot leképezi arra, hogy /GLINE <paraméter> 2d stb... */
|
||||
alias "glinebot" {
|
||||
format ".+" {
|
||||
command "gline";
|
||||
type real;
|
||||
parameters "%1 2d Botok tilosak ezen a szerveren, kérlek, olvasd el a faq-ot a http://www.example.com/faq/123 címen";
|
||||
};
|
||||
type command;
|
||||
};
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* ÚJ: tld {}
|
||||
* RÉGI: T:Line
|
||||
* Beállít más motd és rules fájlt
|
||||
* a kliens hostmaszkjára.
|
||||
* A szintaktikája a következő:
|
||||
* tld {
|
||||
* mask (azonosító@gazda);
|
||||
* motd "(motd fájl)";
|
||||
* rules "(rules fájl)";
|
||||
* };
|
||||
*/
|
||||
|
||||
tld {
|
||||
mask *@*.fr;
|
||||
motd "ircd.motd.fr";
|
||||
rules "ircd.rules.fr";
|
||||
};
|
||||
|
||||
/* megjegyzés: a fenti példa blokkot akár le is törölhetjük; ebben az esetben
|
||||
* mindenkire az alapértelmezett motd/rules fájlok (ircd.motd, ircd.rules)
|
||||
* lesznek használatban.
|
||||
*/
|
||||
|
||||
/*
|
||||
* ÚJ: ban nick {}
|
||||
* RÉGI: Q:Line
|
||||
* Kitilt egy nicknevet, így az nem használható.
|
||||
* A szintaktikája a következő:
|
||||
* ban nick {
|
||||
* mask "(kitiltandó nick)";
|
||||
* reason "(indoklás)";
|
||||
* };
|
||||
*/
|
||||
ban nick {
|
||||
mask "*C*h*a*n*S*e*r*v*";
|
||||
reason "Fenntartva a szolgáltatásoknak";
|
||||
};
|
||||
/*
|
||||
* ÚJ: ban ip {}
|
||||
* RÉGI: Z:Line
|
||||
* Megtiltja egy ip-nek, hogy a hálózatra kapcsolódjon.
|
||||
* Szintaktika:
|
||||
* ban ip { mask (ip cím/gazdanévmaszk); reason "(indoklás)"; };
|
||||
*/
|
||||
ban ip {
|
||||
mask 195.86.232.81;
|
||||
reason "Lecsatolt szerver";
|
||||
};
|
||||
/*
|
||||
* ÚJ: ban server {}
|
||||
* RÉGI: Q:Line szerverekre
|
||||
* Megtiltja egy szervernek, hogy a hálózatra kapcsolódjon.
|
||||
* Ha egy szerver távoli szerverre linkel, a helyi szerver
|
||||
* szétkapcsolja a hálózatról.
|
||||
* A szintaktikája a következő:
|
||||
* ban server {
|
||||
* mask "(szervernév)";
|
||||
* reason "(indoklás)";
|
||||
* };
|
||||
*/
|
||||
|
||||
ban server {
|
||||
mask eris.berkeley.edu;
|
||||
reason "Mars ki innen!";
|
||||
};
|
||||
/*
|
||||
* ÚJ: ban user {}
|
||||
* RÉGI: K:Line
|
||||
* Elintézi, hogy egy felhasználó egy bizonyos maszkról ne tudjon kapcsolódni
|
||||
* a szerverünkre.
|
||||
* Szintaktika:
|
||||
* ban user { mask (gazdanévmaszk/ip cím); reason "(indok)"; };
|
||||
*/
|
||||
|
||||
ban user {
|
||||
mask *tirc@*.saturn.bbn.com;
|
||||
reason "Idióta";
|
||||
};
|
||||
|
||||
/*
|
||||
* ÚJ: ban realname {}
|
||||
* RÉGI: n:Line
|
||||
* Letiltja egy bizonyos valós név használatát.
|
||||
* Szintaktikája:
|
||||
* ban realname {
|
||||
* mask "(valós név)";
|
||||
* reason "(indok)";
|
||||
* };
|
||||
*/
|
||||
|
||||
ban realname {
|
||||
mask "Swat Team";
|
||||
reason "mIRKFORCE";
|
||||
};
|
||||
|
||||
ban realname {
|
||||
mask "sub7server";
|
||||
reason "sub7";
|
||||
};
|
||||
|
||||
/*
|
||||
* MEGJEGYZÉS MINDEN BANRA: ezek ismételhetőek további bejegyzésekhez!
|
||||
*
|
||||
* ÚJ: except ban {}
|
||||
* RÉGI: E:Line
|
||||
* Elintézi, hogy ne lehessen minket kibannolni.
|
||||
* Szintaktika:
|
||||
* except ban { mask (azonosító@gazda); };
|
||||
* További gazdákhoz annyiszor ismételjük az except ban {}-t,
|
||||
* amennyiszer szükséges.
|
||||
*/
|
||||
|
||||
except ban {
|
||||
/* ne tiltsuk ki stskeeps-t */
|
||||
mask *stskeeps@212.*;
|
||||
};
|
||||
|
||||
/*
|
||||
* ÚJ: deny dcc {}
|
||||
* RÉGI: dccdeny.conf
|
||||
* Használjuk dcc küldések blokkolására... Jobban
|
||||
* megállítja a vírusokat.
|
||||
* Szintaktika:
|
||||
* deny dcc
|
||||
* {
|
||||
* filename "blokkolandó fájl (pl. *exe)";
|
||||
* reason "indok";
|
||||
* };
|
||||
*/
|
||||
deny dcc {
|
||||
filename "*sub7*";
|
||||
reason "Valószínűleg Sub7 Virus";
|
||||
};
|
||||
|
||||
/*
|
||||
* ÚJ: deny channel {}
|
||||
* RÉGI: N/A (ÚJ)
|
||||
* Letiltja bizonyos csatornákon a belépést.
|
||||
* Szintaktika:
|
||||
* deny channel {
|
||||
* channel "(csatorna)";
|
||||
* reason "indok";
|
||||
* };
|
||||
*/
|
||||
deny channel {
|
||||
channel "*warez*";
|
||||
reason "A warez törvényellenes";
|
||||
};
|
||||
|
||||
/*
|
||||
* ÚJ: vhost {}
|
||||
* RÉGI: Vhost.conf fájl
|
||||
* Beállít egy hamis ip címet közönséges felhasználókon, vagy
|
||||
* olyan operátorokon, akik lusták a /sethost-ot használni :P
|
||||
* Szintaktika:
|
||||
* vhost {
|
||||
* vhost (vhost.com);
|
||||
* from {
|
||||
* userhost (azonosító@gazda, aki használhatja);
|
||||
* };
|
||||
* login (bejelentkezőnév);
|
||||
* password (jelszó);
|
||||
* };
|
||||
* azután e vhost használatához adjuk ki
|
||||
* a /vhost (bejelentkezőnév) (jelszó) parancsot IRC-n
|
||||
*/
|
||||
vhost {
|
||||
vhost i.hate.microsefrs.com;
|
||||
from {
|
||||
userhost *@*.image.dk;
|
||||
};
|
||||
login stskeeps;
|
||||
password moocowsrulemyworld;
|
||||
};
|
||||
|
||||
/* Befűzhetünk más konfigurációs fájlokat */
|
||||
/* include "klines.conf"; */
|
||||
|
||||
/* Hálózati beállítások */
|
||||
set {
|
||||
network-name "ROXnet";
|
||||
default-server "irc.roxnet.org";
|
||||
services-server "services.roxnet.org";
|
||||
stats-server "stats.roxnet.org";
|
||||
help-channel "#ROXnet";
|
||||
hiddenhost-prefix "rox";
|
||||
/* prefix-quit "no"; */
|
||||
/* Az álcázó kulcsoknak a hálózat minden szerverén azonosnak kell
|
||||
* lenniük. Az álcázott gazdanevek előállításában van szerepük, ezért
|
||||
* legyenek titokban tartva! Mind 3 kulcs legyen egy-egy véletlenszerű
|
||||
* sztring 5-100 karakterből (10-20 karakter kitűnő), valamint
|
||||
* tartalmazniuk kell kisbetűket (a-z), nagybetűket (A-Z) és számokat
|
||||
* (0-9) [ahogy az első kulcsos példában látható].
|
||||
* TIPP: *NIX alatt az './unreal gencloak' parancsot futtatva
|
||||
* a parancsértelmezőnkben, az Unreal 3 véletlen sztringet
|
||||
* generál nekünk.
|
||||
*/
|
||||
cloak-keys {
|
||||
"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
|
||||
"írjunk hozzá még egyet";
|
||||
"írjunk hozzá még egyet";
|
||||
};
|
||||
/* gazdanevek opereléskor */
|
||||
hosts {
|
||||
local "locop.roxnet.org";
|
||||
global "ircop.roxnet.org";
|
||||
coadmin "coadmin.roxnet.org";
|
||||
admin "admin.roxnet.org";
|
||||
servicesadmin "csops.roxnet.org";
|
||||
netadmin "netadmin.roxnet.org";
|
||||
host-on-oper-up "no";
|
||||
};
|
||||
};
|
||||
|
||||
/* Szerverszintű beállítások */
|
||||
|
||||
set {
|
||||
kline-address "állítsuk.be.ezt.az.emailt";
|
||||
modes-on-connect "+ixw";
|
||||
modes-on-oper "+xwgs";
|
||||
oper-auto-join "#operek";
|
||||
options {
|
||||
hide-ulines;
|
||||
/* Itt engedélyezhetjük az ident ellenőrzést, ha szeretnénk */
|
||||
/* identd-check; */
|
||||
show-connect-info;
|
||||
};
|
||||
|
||||
maxchannelsperuser 10;
|
||||
/* Legkevesebb ennyi ideig kell a felhasználónak kapcsolatban lennie,
|
||||
* mielőtt engedélyt kap a QUIT üzenetek használatára. Remélhetőleg
|
||||
* ez leállítja a spamot. */
|
||||
anti-spam-quit-message-time 10s;
|
||||
/* A static-quit a neki megadott üzenetet megjeleníti minden
|
||||
* kilépésben - avagy egyéni kilépési szövegek nem engedélyezettek
|
||||
* a helyi szerveren */
|
||||
/* static-quit "Kliens kilépés"; */
|
||||
|
||||
/* Hasonlóan blokkolható minden lelépési indok, úgy, hogy kivesszük
|
||||
* a megjegyzésből ezt, és "yes"-t írunk vagy megadunk valamilyen
|
||||
* más szöveget (pl. "Bye bye!"), hogy mindig az legyen a lelépés
|
||||
* indoklószövege. */
|
||||
/* static-part yes; */
|
||||
|
||||
/* Ezzel megmondhatjuk, mely statisztikákat szeretnénk csak operátorok
|
||||
* számára engedélyezni. Használjunk *-ot, ha az összeset kívánjuk,
|
||||
* és hagyjuk el a direktívát, ha a felhasználók mindet láthatják. Írjuk
|
||||
* be a "/stats" parancsot a teljes listáért.
|
||||
* Lehet, hogy néhány adminisztrátor törölni fogja a "kGs"-t, hogy
|
||||
a közönséges felhasználók láthassák a kline-okat, gline-okat és
|
||||
* shunokat.
|
||||
*/
|
||||
oper-only-stats "okfGsMRUEelLCXzdD";
|
||||
|
||||
/* Elfojtás: ez a példa 60 másodpercenként legfeljebb 3 kapcsolódási
|
||||
* kísérletet engedélyező korlátozást állít be (gazdánként). */
|
||||
throttle {
|
||||
connections 3;
|
||||
period 60s;
|
||||
};
|
||||
|
||||
/* Árasztásellenes védelem */
|
||||
anti-flood {
|
||||
nick-flood 3:60; /* 3 nicknévváltás 60 másodpercenként
|
||||
(az alapértelmezés) */
|
||||
};
|
||||
|
||||
/* Spamszűrő */
|
||||
spamfilter {
|
||||
ban-time 1d; /* a spamszűrő által beállított *line-ok
|
||||
alapértelmezett kitiltási ideje */
|
||||
ban-reason "Spam/Reklámozás"; /* alapértelmezett indok */
|
||||
virus-help-channel "#help"; /* a "viruschan" tevékenységhez
|
||||
használt csatorna */
|
||||
/* except "#help"; kivesszük a szűrés alól ezt a csatornát */
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* Problémák akadtak, vagy szükség van további segítségre?
|
||||
* 1) www.vulnscan.org/UnrealIRCd/unreal32docs.html
|
||||
* 2) www.vulnscan.org/UnrealIRCd/faq/ <- a kérdéseid 80%-át tartalmazza!
|
||||
* 3) Ha még mindig gondod van, felmehetsz az irc.unrealircd.org #unreal-support
|
||||
* csatornájára. Fontos: kérjük, hogy előbb OLVASD EL A DOKUMENTÁCIÓT és
|
||||
* a GYIK-ot!
|
||||
*/
|
||||
@@ -0,0 +1,816 @@
|
||||
/*
|
||||
* example.conf door Daniel Hawton AKA Osiris (osiris@unrealircd.org).
|
||||
* $Id$
|
||||
* Vertaald door Mark
|
||||
*
|
||||
* Werkt voor Unreal3.2 en hoger
|
||||
*
|
||||
* Dit is de nieuwe example.conf. Het lijkt veel op C++.
|
||||
* Het begin is wellicht moeilijk, maar met wat ervaring en lezen
|
||||
* zul je het wel begrijpen.
|
||||
*
|
||||
* Kopieer dit bestand naar je hoofd UnrealIRCd dir en noem het 'unrealircd.conf'.
|
||||
*
|
||||
* OPMERKING: Alle regels, behalve de openings { regel, eindingen met een ;, dus
|
||||
* ook de sluitende } regel. Commentaar regels worden door de IRCd niet verwerkt.
|
||||
*
|
||||
* LEES doc/unreal32docs.html! De online versie is tevens te bereiken op:
|
||||
* www.vulnscan.org/UnrealIRCd/unreal32docs.html
|
||||
* Er staat heel veel informatie in over het configbestand: informatie over
|
||||
* elk block, variabele, etc..
|
||||
* Wanneer je dit bestand aanpast zonder de documentatie grondig te lezen,
|
||||
* zul je gegarandeerd falen!
|
||||
*/
|
||||
|
||||
/* Type van commentaar */
|
||||
#Commentaar type 1 (Shell type)
|
||||
// Commentaar type 2(C++ style)
|
||||
/* Commentaar type 3 (C Style) */
|
||||
#Deze regels worden niet verwerkt door de IRCd.
|
||||
|
||||
/*
|
||||
* UnrealIRCd ondersteunt modules, het laden van sommige is benodigd.
|
||||
* Je hebt tenminste een commands module en een cloacking module nodig.
|
||||
*/
|
||||
|
||||
/* VOOR *NIX, haal de commentaartekens weg bij de volgende 2 regels: */
|
||||
//loadmodule "src/modules/commands.so";
|
||||
//loadmodule "src/modules/cloak.so";
|
||||
|
||||
/* VOOR Windows, haal de commentaartekens weg bij de volgende 2 regels: */
|
||||
//loadmodule "modules/commands.dll";
|
||||
//loadmodule "modules/cloak.dll";
|
||||
|
||||
/*
|
||||
* Je kan tevens andere configuratiebestanden toevoegen.
|
||||
* help.conf bevat alle /helpop tekst. De badwords.*.conf
|
||||
* bestanden bevatten alle badword instellingen voor mode +G..
|
||||
* spamfilter.conf bevat enkele goede regels voor huidige trojans.
|
||||
* Je wilt deze waarschijnlijk laden:
|
||||
*/
|
||||
|
||||
include "help.conf";
|
||||
include "badwords.channel.conf";
|
||||
include "badwords.message.conf";
|
||||
include "badwords.quit.conf";
|
||||
include "spamfilter.conf";
|
||||
|
||||
/*
|
||||
* NIEUW: me {}
|
||||
* OUD: M:Line
|
||||
* me {} definieert de naam, beschrijving en unreal numeriek voor deze server.
|
||||
* De syntax is als volgt:
|
||||
* me {
|
||||
* name "server.naam";
|
||||
* info "Server Beschrijving";
|
||||
* numeric (server numeric*);
|
||||
* };
|
||||
* Waneer je servers linkt, mag de numeric niet door een andere server in gebruik zijn.
|
||||
*/
|
||||
me
|
||||
{
|
||||
name "irc.foonet.com";
|
||||
info "FooNet Server";
|
||||
numeric 1;
|
||||
};
|
||||
|
||||
/*
|
||||
* NIEUW: admin {}
|
||||
* OUD: A:Line
|
||||
* Admin geeft informatie over de server admin. Je mag hier
|
||||
* zo veel regels opgeven als je wilt.
|
||||
* De syntax is als volgt:
|
||||
* admin {
|
||||
* "eerste regel";
|
||||
* "tweede regel";
|
||||
* [etc]
|
||||
* };
|
||||
*/
|
||||
admin {
|
||||
"Bob Smith";
|
||||
"bob";
|
||||
"widely@used.name";
|
||||
};
|
||||
|
||||
/*
|
||||
* NIEUW: class {}
|
||||
* OUD: Y:line (de oude was verwarrend)
|
||||
* Hiermee stel je de classes in. Een class is een groepsinstelling voor
|
||||
* connections. Server connecties stuur je naar een andere class dan
|
||||
* gebruikers.
|
||||
* De syntax is als volgt:
|
||||
* class (class naam)
|
||||
* {
|
||||
* pingfreq (hoe vaak er gepingt moet worden naar een gebruiker/server in seconden);
|
||||
* maxclients (hoeveel connecties er maximaal in deze class mogen zijn);
|
||||
* sendq (maximale send queue voor 1 connectie);
|
||||
* recvq (maximale receive queue voor 1 connectie [flood control]);
|
||||
* };
|
||||
*/
|
||||
|
||||
class clients
|
||||
{
|
||||
pingfreq 90;
|
||||
maxclients 500;
|
||||
sendq 100000;
|
||||
recvq 8000;
|
||||
};
|
||||
|
||||
class servers
|
||||
{
|
||||
pingfreq 90;
|
||||
maxclients 10; /* Hoeveel servers we maximaal tegelijk gelinkt kunnen hebben */
|
||||
sendq 1000000;
|
||||
connfreq 100; /* Hoeveel seconden tussen een poging to verbinden */
|
||||
};
|
||||
|
||||
/*
|
||||
* NIEUW: allow {}
|
||||
* OUD: I:Line
|
||||
* Hiermee stel je het toestaan van connecties in.
|
||||
* Gebruikers kunnen verbinden, en jij hebt wat controle en kan eventueel
|
||||
* een wachtwoord instellen.
|
||||
* De syntax is als volgt:
|
||||
* allow {
|
||||
* ip (ip mask dat toegestaan moet worden);
|
||||
* hostname (host mask);
|
||||
* class (class waarnaar ze gestuurd moeten worden [see class {}]);
|
||||
* password "(wachtwoord)"; (optioneel)
|
||||
* maxperip (hoeveel connecties per IP); (optioneel)
|
||||
* };
|
||||
*/
|
||||
|
||||
allow {
|
||||
ip *@*;
|
||||
hostname *@*;
|
||||
class clients;
|
||||
maxperip 5;
|
||||
};
|
||||
|
||||
/* Allow met wachtwoord */
|
||||
allow {
|
||||
ip *@255.255.255.255;
|
||||
hostname *@*.passworded.ugly.people;
|
||||
class clients;
|
||||
password "f00Ness";
|
||||
maxperip 1;
|
||||
};
|
||||
|
||||
/*
|
||||
* NIEUW: allow channel {}
|
||||
* OUD: chrestrict
|
||||
* Geeft de mogelijkheid een kanaal te joinen,
|
||||
* als uitzondering voor een deny channel {}
|
||||
* De syntax is als volgt:
|
||||
* allow channel {
|
||||
* channel "kanaal naam";
|
||||
* };
|
||||
*/
|
||||
allow channel {
|
||||
channel "#WarezSucks";
|
||||
};
|
||||
|
||||
/*
|
||||
* NIEUW: oper {}
|
||||
* OUD: O:Line
|
||||
* Stelt een IRC Operator in
|
||||
* IRC Operators zorgen voor orde op de server en zorgen er
|
||||
* tevens voor dat de server verbonden blijft met het netwerk.
|
||||
* De syntax is als volgt:
|
||||
* oper (login) {
|
||||
* class (class waarin ze geplaatst moeten worden.);
|
||||
* from {
|
||||
* userhost (ident@host);
|
||||
* userhost (ident@host);
|
||||
* };
|
||||
* flags
|
||||
* {
|
||||
* (flags hier*);
|
||||
* };
|
||||
* OF
|
||||
* flags "oud type flags, zoals OAaRD";
|
||||
* };
|
||||
*/
|
||||
|
||||
|
||||
/* Voor een lange lijst van oper flags, zie doc/unreal32docs.html#operblock
|
||||
* [wordt ten zeerste aangeraden te lezen!]
|
||||
*/
|
||||
|
||||
oper bobsmith {
|
||||
class clients;
|
||||
from {
|
||||
userhost bob@smithco.com;
|
||||
};
|
||||
password "f00";
|
||||
flags
|
||||
{
|
||||
netadmin;
|
||||
can_zline;
|
||||
can_gzline;
|
||||
can_gkline;
|
||||
global;
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* NIEUW: listen {}
|
||||
* OUD: P:Line
|
||||
* Hiermee stel je een poort in voor de IRCd, zodat
|
||||
* gebruikers/servers kunnen verbinden met je server.
|
||||
* De syntax is als volgt:
|
||||
* listen (ip nummer):(port nummer)
|
||||
* {
|
||||
* options {
|
||||
* (opties hier);
|
||||
* };
|
||||
* };
|
||||
* of een gewone:
|
||||
* listen: listen (ip):(port);
|
||||
*
|
||||
* OPMERKING: voor IPv6 IPs (3ffe:b80:2:51d::2 etc), gebruik listen [ip]:port;
|
||||
*
|
||||
* Dat werkt ook.
|
||||
*/
|
||||
|
||||
/* Opties voor listen:
|
||||
OUD | NIEUW
|
||||
S serversonly
|
||||
C clientsonly
|
||||
J java
|
||||
s ssl
|
||||
* standard
|
||||
*/
|
||||
|
||||
|
||||
/* Opmerking voor SSL poorten: SSL poorten zijn niet echt
|
||||
* standaard. Mensen zeggen dat je SSL op poort 994 moet laten
|
||||
* lopen, omdat dit de standaard SSL poort is.. Maar meestal worden
|
||||
* hogere poorten gebruikt. Om poort 994 te gebruiken, moet je root
|
||||
* zijn! Tevens is poort 194 de officiele IRC poort. Maar heb je daar
|
||||
* ooit een IRCd op zien lopen?
|
||||
* Wij raden je aan om poort 6697 voor SSL te gebruiken. Dit wordt op
|
||||
* vrijwel alle netwerken gebruikt en wordt herkend door bijvoorbeeld
|
||||
* StunTour. Je mag zoveel SSL poorten openen als je wil, maar als je
|
||||
* (tevens) 6697 gebruikt, help je mee de wereld meer uniform te maken ;).
|
||||
*/
|
||||
|
||||
listen *:6697
|
||||
{
|
||||
options
|
||||
{
|
||||
ssl;
|
||||
clientsonly;
|
||||
};
|
||||
};
|
||||
|
||||
listen *:8067;
|
||||
listen *:6667;
|
||||
|
||||
|
||||
/* Opmerking: Als je een IRCd shell gebruikt met meerdere IPs, krijg
|
||||
* je wellicht een "Address already in use" error in je log
|
||||
* en de IRCd zal niet starten. Dit betekent dat je MOET binden
|
||||
* naar een specifiek IP in plaats van '*', bijvoorbeeld:
|
||||
* listen 1.2.3.4:6667l
|
||||
* Natuurlijk moet je het IP vervangen door het IP dat je toewezen is.
|
||||
*/
|
||||
|
||||
/*
|
||||
* NIEUW: link {}
|
||||
* OUD: C/N:Lines
|
||||
* Geeft een server toegang om te verbinden.
|
||||
* OPMERKING: Beiden servers hebben een link { } nodig om goed te kunnen verbinden!
|
||||
* De syntax is als volgt:
|
||||
* link (server naam)
|
||||
* {
|
||||
* username (username, * werkt ook);
|
||||
* hostname (ip number/hostmask);
|
||||
* bind-ip (welk IP te binden wanneer je connect, of *);
|
||||
* port (poort om naar te verbinden);
|
||||
* hub (Als dit een hub is, werkt '*');
|
||||
* [of leaf *;]
|
||||
* password-connect "(wachtwoord te zenden)";
|
||||
* password-receive "(wachtwoord te ontvangen)";
|
||||
* class (class waarin de server geplaatst moet worden);
|
||||
* options {
|
||||
* (opties hier*);
|
||||
* };
|
||||
* // Als we SSL gebruiken, kunnen we kiezen welke cipher we willen gebruiken in SSL mode
|
||||
* // Verkrijg een lijst door "openssl ciphers", onderscheid ciphers met :'s
|
||||
* ciphers "DES-CBC3-MD5";
|
||||
*
|
||||
* };
|
||||
*/
|
||||
|
||||
/*
|
||||
opties:
|
||||
OUD | NIEUW
|
||||
S ssl
|
||||
Z zip
|
||||
N/A autoconnect
|
||||
N/A quarantine
|
||||
N/A nodnscache
|
||||
*/
|
||||
|
||||
|
||||
link hub.mynet.com
|
||||
{
|
||||
username *;
|
||||
hostname 1.2.3.4;
|
||||
bind-ip *;
|
||||
port 7029;
|
||||
hub *;
|
||||
password-connect "LiNk";
|
||||
password-receive "LiNk";
|
||||
class servers;
|
||||
options {
|
||||
/* Opmerking: Gebruik geen autoconnect naar Services */
|
||||
autoconnect;
|
||||
ssl;
|
||||
zip;
|
||||
};
|
||||
};
|
||||
/*
|
||||
*
|
||||
* NIEUW: ulines {}
|
||||
* OUD: U:Line
|
||||
* U:Lines geven servers meer macht/commando's. Gebruik het alleen voor
|
||||
* services en stats, en NOOIT voor normale UnrealIRCd servers!
|
||||
* De syntax is als volgt:
|
||||
* ulines {
|
||||
* (server to uline);
|
||||
* (server to uline);
|
||||
* [etc]
|
||||
* };
|
||||
*/
|
||||
ulines {
|
||||
services.roxnet.org;
|
||||
stats.roxnet.org;
|
||||
};
|
||||
|
||||
/*
|
||||
* NIEUW: drpass {}
|
||||
* OUD: X:Line
|
||||
* Stelt de wachtwoorden voor /die en /restart in.
|
||||
* De syntax is als volgt:
|
||||
* drpass {
|
||||
* restart "(wachtwoord voor herstart)";
|
||||
* die "(wachtwoord voor beeindigen)";
|
||||
* };
|
||||
*/
|
||||
drpass {
|
||||
restart "I-love-to-restart";
|
||||
die "die-you-stupid";
|
||||
};
|
||||
|
||||
/*
|
||||
* NIEUW: log {}
|
||||
* OUD: N/A
|
||||
* Laat de IRCd weten wat en waar te loggen. Je kan er
|
||||
* zoveel instellen als je wilt.
|
||||
*
|
||||
* FLAGS: errors, kills, tkl, connects, server-connects, kline, oper
|
||||
*
|
||||
* De syntax is als volgt:
|
||||
*
|
||||
* log "log file"
|
||||
* {
|
||||
* flags
|
||||
* {
|
||||
* flag;
|
||||
* flag;
|
||||
* etc..
|
||||
* };
|
||||
* };
|
||||
*/
|
||||
|
||||
log "ircd.log" {
|
||||
/* Verwijder het logbestand en begint een nieuwe wanneer de oude 2MB groot is. Laat dit leeg om altijd
|
||||
hetzelfde bestand te gebruiken */
|
||||
maxsize 2097152;
|
||||
flags {
|
||||
oper;
|
||||
kline;
|
||||
connects;
|
||||
server-connects;
|
||||
kills;
|
||||
errors;
|
||||
sadmin-commands;
|
||||
chg-commands;
|
||||
oper-override;
|
||||
spamfilter;
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* NIEUW: alias {}
|
||||
* OUD: N/A
|
||||
* Hiermee stel je commando's zoals /nickserv, /chanserv etc in.
|
||||
* FLAGS: services, stats, normal
|
||||
*
|
||||
* De syntax is als volgt:
|
||||
* alias "naam" {
|
||||
* target "wijst naar";
|
||||
* type aliastype;
|
||||
* };
|
||||
*
|
||||
* [Opmerking: Je kan ook een standaard alias bestand gebruiken, zie doc/unreal32docs.nl.html sectie 2.9]
|
||||
*/
|
||||
|
||||
// Dit wijst het commando /nickserv naar de gebruiker NickServ welke verbonden is met set::services-server
|
||||
|
||||
/*alias NickServ {
|
||||
target "NickServ";
|
||||
type services;
|
||||
};*/
|
||||
|
||||
// Als je het commando naar dezelfde nick als het commando wil sturen, kun je "target" weglaten.
|
||||
//alias ChanServ { type services; };
|
||||
|
||||
// Wijst het /statserv commando naar de gebruiker Statserv verbonden met set::stats-server
|
||||
//alias StatServ { type stats; };
|
||||
|
||||
// Wijst het /superbot commando naar de gebruiker SuperBot
|
||||
//alias SuperBot { type normal; };
|
||||
|
||||
/* Standaard aliases */
|
||||
alias NickServ { type services; };
|
||||
alias ChanServ { type services; };
|
||||
alias OperServ { type services; };
|
||||
alias HelpServ { type services; };
|
||||
alias StatServ { type stats; };
|
||||
|
||||
/*
|
||||
* NIEUW: alias {}
|
||||
* OUD: N/A
|
||||
* Hiermee stel je commando's zoals /identify, /services in.
|
||||
*
|
||||
* De syntax is als volgt:
|
||||
* alias "naam" {
|
||||
* format "format string" {
|
||||
* target "wijst naar";
|
||||
* type aliastype;
|
||||
* parameters "parameters te verzenden";
|
||||
* };
|
||||
* type command;
|
||||
* };
|
||||
*/
|
||||
|
||||
/* Hier wordt apart notitie van gemaakt, hoewel het dezelfde naam heeft als het vorige block. Het verschilt veel
|
||||
* in syntax, maar het maakt gebruik van dezelfde functies.
|
||||
*/
|
||||
|
||||
/*
|
||||
alias "identify" {
|
||||
format "^#" {
|
||||
target "chanserv";
|
||||
type services;
|
||||
parameters "IDENTIFY %1-";
|
||||
};
|
||||
format "^[^#]" {
|
||||
target "nickserv";
|
||||
type services;
|
||||
parameters "IDENTIFY %1-";
|
||||
};
|
||||
type command;
|
||||
};
|
||||
*/
|
||||
|
||||
/* De alias::format is een reguliere expressie. Het eerste formaat matcht het /identify commando wanneer
|
||||
* het eerste teken een # is. Daarna wordt het doorgezonden naar de chanserv alias met de parameters
|
||||
* IDENTIFY %1-. Het tweede formaat matcht het /identify commando wanneer het eerste teken geen # is. Daarna
|
||||
* wordt het commando doorgestuurd naar de nickserv alias met de parameters IDENTIFY %1-.
|
||||
*/
|
||||
|
||||
/* Het alias::format::parameters is gelijk aan script-talen. %N (N is een nummer) staat voor de parameter die
|
||||
* gezonden is naar het commando (in dit geval /identify). Wanneer je %N- opgeeft, betekent dat alle parameters
|
||||
* vanaf N tot de laatste paramater in de string. Je kan ook %n gebruiken, waar %n vervangen wordt door de nick.
|
||||
*/
|
||||
|
||||
/* Standaard aliases */
|
||||
alias "services" {
|
||||
format "^#" {
|
||||
target "chanserv";
|
||||
type services;
|
||||
parameters "%1-";
|
||||
};
|
||||
format "^[^#]" {
|
||||
target "nickserv";
|
||||
type services;
|
||||
parameters "%1-";
|
||||
};
|
||||
type command;
|
||||
};
|
||||
|
||||
alias "identify" {
|
||||
format "^#" {
|
||||
target "chanserv";
|
||||
type services;
|
||||
parameters "IDENTIFY %1-";
|
||||
};
|
||||
format "^[^#]" {
|
||||
target "nickserv";
|
||||
type services;
|
||||
parameters "IDENTIFY %1-";
|
||||
};
|
||||
type command;
|
||||
};
|
||||
|
||||
/* Dit is een voorbeeld van een echt commando alias */
|
||||
/* Dit verwijst /GLINEBOT naar /GLINE <parameter> 2d etc... */
|
||||
alias "glinebot" {
|
||||
format ".+" {
|
||||
command "gline";
|
||||
type real;
|
||||
parameters "%1 2d Bots are not allowed on this server, please read the faq at http://www.example.com/faq/123";
|
||||
};
|
||||
type command;
|
||||
};
|
||||
|
||||
/*
|
||||
* NIEUW: tld {}
|
||||
* OUD: T:Line
|
||||
* Hiermee stel je verschillende MOTD en RULES bestanden in,
|
||||
* afhangend van de gebruikers hostmask.
|
||||
* De syntax is als volgt:
|
||||
* tld {
|
||||
* mask (ident@host);
|
||||
* motd "(motd bestand)";
|
||||
* rules "(rules bestand)";
|
||||
* };
|
||||
*/
|
||||
|
||||
tld {
|
||||
mask *@*.fr;
|
||||
motd "ircd.motd.fr";
|
||||
rules "ircd.rules.fr";
|
||||
};
|
||||
|
||||
/* Opmerking: je kan het bovenstaande voorbeeld verwijderen.
|
||||
* In dat geval worden de standaard motd/rules bestanden (ircd.motd, ircd.rules).
|
||||
* gebruikt voor iedereen.
|
||||
*/
|
||||
|
||||
/*
|
||||
* NIEUW: ban nick {}
|
||||
* OUD: Q:Line
|
||||
* Bant een nickname zodat deze niet gebruikt kan worden.
|
||||
* De syntax is als volgt:
|
||||
* ban nick {
|
||||
* mask "(nick om te bannen)";
|
||||
* reason "(reden)";
|
||||
* };
|
||||
*/
|
||||
|
||||
ban nick {
|
||||
mask "*C*h*a*n*S*e*r*v*";
|
||||
reason "Reserved for Services";
|
||||
};
|
||||
|
||||
/*
|
||||
* NIEUW: ban ip {}
|
||||
* OUD: Z:Line
|
||||
* Bant een IP van de server
|
||||
* De syntax is als volgt:
|
||||
* ban ip {
|
||||
* mask (ip number/hostmask);
|
||||
* reason "(reden)";
|
||||
* };
|
||||
*/
|
||||
|
||||
ban ip {
|
||||
mask 195.86.232.81;
|
||||
reason "Delinked server";
|
||||
};
|
||||
|
||||
/*
|
||||
* NIEUW: ban server {}
|
||||
* OUD: Server Q:Line
|
||||
* Zorgt ervoor dat een server niet kan verbinden met het netwerk.
|
||||
* Als de server naar een andere server linkt, zal de lokale server
|
||||
* de verbinding met het netwerk verbreken.
|
||||
* De syntax is als volgt:
|
||||
* ban server {
|
||||
* mask "(server naam)";
|
||||
* reason "(reden)";
|
||||
* };
|
||||
*/
|
||||
|
||||
ban server {
|
||||
mask eris.berkeley.edu;
|
||||
reason "Get out of here.";
|
||||
};
|
||||
/*
|
||||
* NIEUW: ban user {}
|
||||
* OUD: K:Line
|
||||
* Zorgt ervoor dat een gebruiker met een bepaalde mask niet
|
||||
* kan verbinden met je server.
|
||||
* De syntax is als volgt:
|
||||
* ban user {
|
||||
* mask (hostmask/ip number);
|
||||
* reason "(reden)";
|
||||
* };
|
||||
*/
|
||||
|
||||
ban user {
|
||||
mask *tirc@*.saturn.bbn.com;
|
||||
reason "Idiot";
|
||||
};
|
||||
|
||||
/*
|
||||
* NIEUW: ban realname {}
|
||||
* OUD: n:Line
|
||||
* Belet het gebruik van een bepaalde realname.
|
||||
* De syntax is als volgt:
|
||||
* ban realname {
|
||||
* mask "(real name)";
|
||||
* reason "(reden)";
|
||||
* };
|
||||
*/
|
||||
|
||||
ban realname {
|
||||
mask "Swat Team";
|
||||
reason "mIRKFORCE";
|
||||
};
|
||||
|
||||
ban realname {
|
||||
mask "sub7server";
|
||||
reason "sub7";
|
||||
};
|
||||
|
||||
/*
|
||||
* OPMERKING VOOR ALLE BANS: Ze mogen herhaald worden voor extra toevoegingen!
|
||||
*
|
||||
* NIEUW: except ban {}
|
||||
* OUD: E:Line
|
||||
* Zorgt ervoor dat jij niet gebanned kan worden.
|
||||
* De syntax is als volgt:
|
||||
* except ban { mask (ident@host); };
|
||||
* Herhaal de except ban {} zo vaak als je wilt
|
||||
* voor andere hosts.
|
||||
*/
|
||||
|
||||
except ban {
|
||||
/* don't ban stskeeps */
|
||||
mask *stskeeps@212.*;
|
||||
};
|
||||
|
||||
/*
|
||||
* NIEUW: deny dcc {}
|
||||
* OUD: dccdeny.conf
|
||||
* Wordt gebruikt om DCC sends te blokkeren..
|
||||
* Stopt virii beter.
|
||||
* De syntax is als volgt:
|
||||
* deny dcc
|
||||
* {
|
||||
* filename "bestand te blokkeren (bv, *exe)";
|
||||
* reason "reden";
|
||||
* };
|
||||
*/
|
||||
deny dcc {
|
||||
filename "*sub7*";
|
||||
reason "Possible Sub7 Virus";
|
||||
};
|
||||
|
||||
/*
|
||||
* NIEUW: deny channel {}
|
||||
* OUD: N/A (NIEUW)
|
||||
* Belet het gebruik van een kanaal.
|
||||
* De syntax is als volgt:
|
||||
* deny channel {
|
||||
* channel "(kanaal)";
|
||||
* reason "reden";
|
||||
* };
|
||||
*/
|
||||
deny channel {
|
||||
channel "*warez*";
|
||||
reason "Warez is illegal";
|
||||
};
|
||||
|
||||
/*
|
||||
* NIEUW: vhost {}
|
||||
* OUD: Vhost.conf file
|
||||
* Dit zet een nep ip voor niet-opers, of voor opers
|
||||
* die te lui zijn /sethost te gebruiken ;)
|
||||
* De syntax is als volgt:
|
||||
* vhost {
|
||||
* vhost (vhost.com);
|
||||
* from {
|
||||
* userhost (ident@host toegestaan de vhost te gebruiken);
|
||||
* };
|
||||
* login (login name);
|
||||
* password (password);
|
||||
* };
|
||||
* Om je vhost te gebruiken, typ /vhost (login) (password) op IRC
|
||||
*/
|
||||
vhost {
|
||||
vhost i.hate.microsefrs.com;
|
||||
from {
|
||||
userhost *@*.image.dk;
|
||||
};
|
||||
login stskeeps;
|
||||
password moocowsrulemyworld;
|
||||
};
|
||||
|
||||
/* Je kan ook andere configuratiebestanden laden */
|
||||
/* include "klines.conf"; */
|
||||
|
||||
/* Netwerk configuratie */
|
||||
set {
|
||||
network-name "ROXnet";
|
||||
default-server "irc.roxnet.org";
|
||||
services-server "services.roxnet.org";
|
||||
stats-server "stats.roxnet.org";
|
||||
help-channel "#ROXnet";
|
||||
hiddenhost-prefix "rox";
|
||||
/* prefix-quit "no"; */
|
||||
/* Cloak keys moeten op alle servers in het netwerk hetzelfde zijn.
|
||||
* Ze worden gebruikt voor het maken van gemaskte hosts en moeten geheim blijven.
|
||||
* De keys moeten 3 willekeurige strings zijn, bestaande uit 5-100 tekens
|
||||
* (10-20 tekens is genoeg) en moeten bestaan uit kleine letters (a-z),
|
||||
* hoofdletters (A-Z) en getallen (0-9) [zie de eerste key als voorbeeld].
|
||||
* Tip: Wanneer je met een *NIX systeem werkt, kun je './unreal gencloak' gebruiken in
|
||||
* je shell. Dit genereert 3 willekeurige strings die je kunt gebruiken.
|
||||
*/
|
||||
cloak-keys {
|
||||
"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
|
||||
"en nog eentje";
|
||||
"en nog eentje";
|
||||
};
|
||||
/* on-oper host */
|
||||
hosts {
|
||||
local "locop.roxnet.org";
|
||||
global "ircop.roxnet.org";
|
||||
coadmin "coadmin.roxnet.org";
|
||||
admin "admin.roxnet.org";
|
||||
servicesadmin "csops.roxnet.org";
|
||||
netadmin "netadmin.roxnet.org";
|
||||
host-on-oper-up "no";
|
||||
};
|
||||
};
|
||||
|
||||
/* Server gerelateerde configuratie */
|
||||
|
||||
set {
|
||||
kline-address "stel.dit.adres.in";
|
||||
modes-on-connect "+ixw";
|
||||
modes-on-oper "+xwgs";
|
||||
oper-auto-join "#opers";
|
||||
options {
|
||||
hide-ulines;
|
||||
/* Je kan hier ident checking aanzetten als je wilt */
|
||||
/* identd-check; */
|
||||
show-connect-info;
|
||||
};
|
||||
|
||||
maxchannelsperuser 10;
|
||||
/* Hoelang een gebruiker minimaal verbonden moet zijn voordat hij toegestaan wordt het
|
||||
* QUIT bericht te gebruiken. Dit stopt spam hopelijk. */
|
||||
anti-spam-quit-message-time 10s;
|
||||
/* Stelt een tekst in die standaard wordt gebruikt voor een quit.
|
||||
* Houdt in dat er geen eigen quits gebruikt mogen worden op deze server. */
|
||||
/* static-quit "Client quit"; */
|
||||
|
||||
/* Je kan ook alle part-redenen blokkeren door hieronder het commentaar weg te halen
|
||||
* en er 'yes' neer te zetten. Je kan ook een standaard tekst gebruiken (bijvoorbeeld
|
||||
* "Bye bye!") om deze tekst altijd te gebruiken..
|
||||
*/
|
||||
/* static-part yes; */
|
||||
|
||||
/* Stelt in dat stats alleen door opers gebruikt mogen worden. Gebruik * voor alle stats,
|
||||
* en laat het weg zodat gebruikers alle stats kunnen zien. Typ '/stats' voor een lijst
|
||||
* van alle stats.
|
||||
* Sommige admins willen 'kGs' wellicht verwijderen zodat gewone gebruikers een lijst van
|
||||
* klines, glines en shunts kunnen zien.
|
||||
*/
|
||||
|
||||
oper-only-stats "okfGsMRUEelLCXzdD";
|
||||
|
||||
/* Throttle: dit voorbeeld zet een limie van 3 conneties per 60s (per host). */
|
||||
throttle {
|
||||
connections 3;
|
||||
period 60s;
|
||||
};
|
||||
|
||||
/* Anti flood protectie */
|
||||
anti-flood {
|
||||
nick-flood 3:60; /* 3 naamsveranderingen per 60 seconden (standaard) */
|
||||
};
|
||||
|
||||
/* Spam filter */
|
||||
spamfilter {
|
||||
ban-time 1d; /* standaard duur van een *line gezet door spamfilter */
|
||||
ban-reason "Spam/Advertising"; /* standaard reden */
|
||||
virus-help-channel "#help"; /* kanaal te gebruiken voor 'viruschan' actie */
|
||||
/* except "#help"; kanaal waar niet gefilterd wordt */
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* Problemen of meer hulp nodig?
|
||||
* 1) www.vulnscan.org/UnrealIRCd/unreal32docs.html
|
||||
* 2) www.vulnscan.org/UnrealIRCd/faq/ <- hier staat 80% van je vragen!
|
||||
* 3) Als je nog steeds problemen hebt, kun je naar irc.unrealircd.org #unreal-support,
|
||||
maar je moet wel eerst de documentatie en FAQ gelezen hebben!
|
||||
*/
|
||||
@@ -0,0 +1,791 @@
|
||||
/*
|
||||
* example.conf by Daniel Hawton AKA Osiris (osiris@unrealircd.org).
|
||||
* example.ru.conf by Samets Anton aka Bock (bock@bynets.org).
|
||||
* $Id$
|
||||
*
|
||||
* (Encoding): Windows-1251
|
||||
*
|
||||
* Работает для Unreal3.2 и выше
|
||||
*
|
||||
* Итак, это русскоязычный пример example.conf. По синтаксису похож на C++.
|
||||
* По началу будет тяжело понять, что тут написано, однако во время практики и чтения
|
||||
* вы научитесь это делать.
|
||||
*
|
||||
* Просто скопируйте этот файл в главную директорию unrealircd и переименуйте в 'unrealircd.conf'.
|
||||
*
|
||||
* Замечание: Все линии, кроме тех, которые начинаются с {, заканчиваются ; включая и закрывающую }.
|
||||
* IRCd проигнорирует закомментированные линии.
|
||||
*
|
||||
* ПРОЧТИТЕ doc/unreal32docs.ru.html! Версия в интернете доступна по адресу:
|
||||
* www.vulnscan.org/UnrealIRCd/unreal32docs.ru.html
|
||||
* Она содержит большинство информации о конфигурировании, даёт представление о каждом блоке,
|
||||
* переменной и так далее...
|
||||
* Если вы пытаетесь редактировать этот файл без прочтения документации, вы гарантированно
|
||||
* потерпите неудачу!
|
||||
*/
|
||||
|
||||
/* Типы комментариев */
|
||||
# Первый тип (Shell type)
|
||||
// Второй тип (C++ style)
|
||||
/* Третий тип (C Style) */
|
||||
# данные линии игнорируются ircd.
|
||||
|
||||
/*
|
||||
* UnrealIRCd поддерживает модули, загрузка некоторых необходима для запуска.
|
||||
* Вам необходимо загрузить как минимум модули команд и скрытия хоста.
|
||||
*/
|
||||
|
||||
/* Для *NIX систем раскомментируйте следующие 2 линии: */
|
||||
//loadmodule "src/modules/commands.so";
|
||||
//loadmodule "src/modules/cloak.so";
|
||||
|
||||
/* Для Windows систем раскомментируйте следующие 2 линии: */
|
||||
//loadmodule "modules/commands.dll";
|
||||
//loadmodule "modules/cloak.dll";
|
||||
|
||||
/*
|
||||
* Вам необходимо подключить и другие конфигурационные файлы.
|
||||
* help.ru.conf содержит весь текст команды /helpop. Файлы badwords.*.conf
|
||||
* содержат все включения матных слов для режима +G...
|
||||
* spamfilter.conf содержит правила для защиты от троянских коней.
|
||||
* Вы вероятно захотите подключить эти файлы:
|
||||
*/
|
||||
include "help.ru.conf";
|
||||
include "badwords.channel.conf";
|
||||
include "badwords.message.conf";
|
||||
include "badwords.quit.conf";
|
||||
include "spamfilter.conf";
|
||||
|
||||
/*
|
||||
* НОВОЕ: me {}
|
||||
* СТАРОЕ: M:Line
|
||||
* me {} определяет имя, описание и нумерик сервера unreal для данного сервера.
|
||||
* Синтаксис:
|
||||
* me {
|
||||
* name "Имя.сервера";
|
||||
* info "Описание сервера";
|
||||
* numeric (нумерик сервера*);
|
||||
* };
|
||||
* При соединении с другими серверами, нумерик должен быть уникальным в сети. Имя сервера - англоязычное.
|
||||
*/
|
||||
me
|
||||
{
|
||||
name "irc.foonet.com";
|
||||
info "Сервер FooNet";
|
||||
numeric 1;
|
||||
};
|
||||
|
||||
/*
|
||||
* НОВОЕ: admin {}
|
||||
* СТАРОЕ: A:Line
|
||||
* Данный блок предоставляет информацию об администраторе сервера.
|
||||
* Вы можете поместить сколько угодно линий после admin {.
|
||||
* Синтаксис:
|
||||
* admin {
|
||||
* "первая линия";
|
||||
* "вторая линия";
|
||||
* [так далее]
|
||||
* };
|
||||
*/
|
||||
admin {
|
||||
"Вася Пупкин!";
|
||||
"vasya_pupkin";
|
||||
"haker@lamer.ru";
|
||||
"ICQ: 987654321";
|
||||
};
|
||||
|
||||
/*
|
||||
* НОВОЕ: class {}
|
||||
* СТАРОЕ: Y:line (был слишком запутан)
|
||||
* Определяет настройки для классов. Класс определяет групповые настройки для подключений.
|
||||
* Например, подключение сервера, вместо включения его в класс пользователей, вы направляете в
|
||||
* класс серверов. Используется следующий синтаксис:
|
||||
* class (имя класса)
|
||||
* {
|
||||
* pingfreq (как часто пиновать пользователя/сервер в секундах);
|
||||
* maxclients (сколько максимально соединений разрешено данному классу);
|
||||
* sendq (максимальная очередь для отправки от подключения);
|
||||
* recvq (максимальная очередь для получения от подключения [контроль за флудом]);
|
||||
* };
|
||||
*/
|
||||
|
||||
class clients
|
||||
{
|
||||
pingfreq 90;
|
||||
maxclients 500;
|
||||
sendq 100000;
|
||||
recvq 8000;
|
||||
};
|
||||
|
||||
class servers
|
||||
{
|
||||
pingfreq 90;
|
||||
maxclients 10; /* Какое максимальное количество серверов может быть прилинковано к этому серверу */
|
||||
sendq 1000000;
|
||||
connfreq 100; /* Через сколько секунд проводить следующую попытку подключения */
|
||||
};
|
||||
|
||||
/*
|
||||
* НОВОЕ: allow {}
|
||||
* СТАРОЕ: I:Line
|
||||
* Определяет, кому разрешено подключаться к серверу...
|
||||
* В основном используется для клиентов, это разрешает им подключаться к серверу, а вы можете их контролировать
|
||||
* и/или устанавивать пароль.
|
||||
* Синтаксис:
|
||||
* allow {
|
||||
* ip (разрешённая маска ip);
|
||||
* hostname (маска хоста);
|
||||
* class (класс, в который определить[смотри class {}]);
|
||||
* password "(пароль)"; (необязательно)
|
||||
* maxperip (сколько подключений с одного ip); (необязательно)
|
||||
* };
|
||||
*/
|
||||
|
||||
allow {
|
||||
ip *@*;
|
||||
hostname *@*;
|
||||
class clients;
|
||||
maxperip 5;
|
||||
};
|
||||
|
||||
/* Разрешение подключения с паролем */
|
||||
allow {
|
||||
ip *@255.255.255.255;
|
||||
hostname *@*.passworded.ugly.people;
|
||||
class clients;
|
||||
password "аццкип0р0ль";
|
||||
maxperip 1;
|
||||
};
|
||||
|
||||
/*
|
||||
* НОВОЕ: allow channel {}
|
||||
* СТАРОЕ: chrestrict
|
||||
* Позволяет пользователю зайти на канал...
|
||||
* служит как исключение из запрещённых каналов.
|
||||
* Синтаксис:
|
||||
* allow channel {
|
||||
* channel "имя канала";
|
||||
* };
|
||||
*/
|
||||
allow channel {
|
||||
channel "#WarezSucks";
|
||||
};
|
||||
|
||||
/*
|
||||
* НОВОЕ: oper {}
|
||||
* СТАРОЕ: O:Line
|
||||
* Определяет IRC оператора
|
||||
* IRC операторы следят за сервером, занимаются его поддержкой и подключением к сети.
|
||||
* Синтаксис:
|
||||
* oper (логин) {
|
||||
* class (класс, в который определять их, если отличен от блока I, в какой класс переместить);
|
||||
* from {
|
||||
* userhost (идент@хост);
|
||||
* userhost (идент@хост);
|
||||
* };
|
||||
* flags
|
||||
* {
|
||||
* (тут флаги*);
|
||||
* };
|
||||
* ИЛИ
|
||||
* flags "флаги старого типа, вида OAaRD";
|
||||
* };
|
||||
*/
|
||||
|
||||
|
||||
/* Для списка флагов оператора прочитайте doc/unreal32docs.ru.html#operblock
|
||||
* [ОЧЕНЬ НАСТОЯТЕЛЬНО рекомендуется к прочтения]
|
||||
*/
|
||||
|
||||
oper vasyapupkin {
|
||||
class clients;
|
||||
from {
|
||||
userhost vasya@somewhere.by;
|
||||
};
|
||||
password "p0r0l'";
|
||||
flags
|
||||
{
|
||||
netadmin;
|
||||
can_zline;
|
||||
can_gzline;
|
||||
can_gkline;
|
||||
global;
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* НОВОЕ: listen {}
|
||||
* СТАРОЕ: P:Line
|
||||
* Определяет, на каких портах будет работать ircd,
|
||||
* позволяя пользователям/серверам подключаться к серверу.
|
||||
* Синтаксис:
|
||||
* listen (ip):(номер порта)
|
||||
* {
|
||||
* options {
|
||||
* (тут опции);
|
||||
* };
|
||||
* };
|
||||
* или просто
|
||||
* listen: listen (ip):(порт);
|
||||
*
|
||||
* ЗАМЕЧАНИЕ: для протокола ip v6 (3ffe:b80:2:51d::2), используйте [ip]:порт;
|
||||
*
|
||||
* Это так же будет работать.
|
||||
*/
|
||||
|
||||
/* Опции для listen:
|
||||
СТАРЫЕ | НОВЫЕ
|
||||
S serversonly
|
||||
C clientsonly
|
||||
J java
|
||||
s ssl
|
||||
* standard
|
||||
*/
|
||||
|
||||
/* ЗАМЕЧАНИЕ ДЛЯ ПОРТОВ SSL: SSL порты стандартизированы,
|
||||
* за исключением многочисленных "высоких" портов SSL, некоторые люди могут сказать вам,
|
||||
* чтобы вы запустили на порту 994, потому что он официальный порт SSL... Но это же
|
||||
* требует привилегий пользователя root! К слову, порт 194 - официальный порт irc,
|
||||
* но вы видели когда-нибудь ircd, запущенный на нём?
|
||||
* Итак, наше предложение - использовать порт 6697 для SSL, он используется уже рядом сетей
|
||||
* и используется в примере StunTour.
|
||||
* Вы можете открыть сколько угодно портов SSL, но используя так же и 6697, вы поможете
|
||||
* стандартизировать его;).
|
||||
*/
|
||||
listen *:6697
|
||||
{
|
||||
options
|
||||
{
|
||||
ssl;
|
||||
clientsonly;
|
||||
};
|
||||
};
|
||||
|
||||
listen *:8067;
|
||||
listen *:6667;
|
||||
|
||||
/* ЗАМЕЧАНИЕ: Если вы используете шелл IRCd, где несколько IP адресов, вы можете получить сообщение типа
|
||||
* 'Address already in use', ошибки в вашем лог-файле и ircd не запустится.
|
||||
* Это значит, что вам необходимо указать определённый адрес IP вместо '*', к примеру:
|
||||
* listen 1.2.3.4:6667;
|
||||
* Конечно же, измените IP адрес на тот, который назначен вам.
|
||||
*/
|
||||
|
||||
/*
|
||||
* НОВОЕ: link {}
|
||||
* СТАРОЕ: C/N:Lines
|
||||
* Определяет блок для подключения серверов.
|
||||
* ЗАМЕЧАНИЕ: ЧТОБЫ ПОДКЛЮЧИТЬСЯ БЕЗ ВОПРОСОВ, НА ОБОИХ СЕРВЕРАХ НЕОБХОДИМЫ ПРАВИЛЬНЫЕ НАСТРОЙКИ LINK {}!
|
||||
* Синтаксис:
|
||||
* link (имя сервера)
|
||||
* {
|
||||
* username (имя пользователя, * работает тоже);
|
||||
* hostname (адрес ip/маска хоста);
|
||||
* bind-ip (На каком адресе IP слушать или *);
|
||||
* port (порт для соединения);
|
||||
* hub (если это хаб, * так же работает, или макси сервера, которые могут быть под ним);
|
||||
* [или leaf *;]
|
||||
* password-connect "(пароль для отправки)";
|
||||
* password-receive "(пароль, что мы должны получить)";
|
||||
* class (класс, в который определить сервер);
|
||||
* options {
|
||||
* (тут указываются опции*);
|
||||
* };
|
||||
* // Если мы используем SSL, мы можем указать, какой шифр использовать в режиме SSL
|
||||
* // Получить список можно "openssl ciphers", шифры разделяются двоеточиями (:)
|
||||
*
|
||||
* ciphers "DES-CBC3-MD5";
|
||||
*
|
||||
* };
|
||||
*/
|
||||
|
||||
/*
|
||||
опции:
|
||||
СТАРЫЕ | НОВЫЕ
|
||||
S ssl
|
||||
Z zip
|
||||
N/A autoconnect
|
||||
N/A quarantine
|
||||
N/A nodnscache
|
||||
*/
|
||||
|
||||
|
||||
link hub.ru.by
|
||||
{
|
||||
username *;
|
||||
hostname 1.2.3.4;
|
||||
bind-ip *;
|
||||
port 7029;
|
||||
hub *;
|
||||
password-connect "LiNk";
|
||||
password-receive "LiNk";
|
||||
class servers;
|
||||
options {
|
||||
/* Замечание: Вы не должны использовать автоподключение (autoconnect) при подключении сервисов */
|
||||
autoconnect;
|
||||
ssl;
|
||||
zip;
|
||||
};
|
||||
};
|
||||
/*
|
||||
*
|
||||
* НОВОЕ: ulines {}
|
||||
* СТАРОЕ: U:Line
|
||||
* U-lines обладают большей силой/властью, чем другие сервера. Это нужно устанавливать только на
|
||||
* сервисы/сервера сбора статистики и НИКОГДА на обычные сервера UnrealIRCd!
|
||||
* Синтаксис:
|
||||
* ulines {
|
||||
* (сервер в uline);
|
||||
* (сервер в uline);
|
||||
* [и т.д.]
|
||||
* };
|
||||
*/
|
||||
ulines {
|
||||
services.roxnet.org;
|
||||
stats.roxnet.org;
|
||||
};
|
||||
|
||||
/*
|
||||
* НОВОЕ: drpass {}
|
||||
* СТАРОЕ: X:Line
|
||||
* Определяет пароли для использования команд /die и /restart.
|
||||
* Синтаксис:
|
||||
* drpass {
|
||||
* restart "(пароль для перезапуска)";
|
||||
* die "(пароль для отключения)";
|
||||
* };
|
||||
*/
|
||||
drpass {
|
||||
restart "Я-люблю-перезапускать-сервер";
|
||||
die "умри-тупое!:)";
|
||||
};
|
||||
|
||||
/*
|
||||
* НОВОЕ: log {}
|
||||
* СТАРОЕ: N/A
|
||||
* Указыает ircd куда и что протоколировать (вести лог). Вы можете указать столько, сколько пожелаете.
|
||||
*
|
||||
* ФЛАГИ: errors, kills, tkl, connects, server-connects, oper
|
||||
*
|
||||
* Синтаксис:
|
||||
* log "путь_к_лог_файлу"
|
||||
* {
|
||||
* flags
|
||||
* {
|
||||
* flag;
|
||||
* flag;
|
||||
* etc..
|
||||
* };
|
||||
* };
|
||||
*/
|
||||
|
||||
log "ircd.log" {
|
||||
/* Удалять логфайл и старовать новый, если размер превышает 2MB, оставьте это как есть, чтобы использовать
|
||||
тот же самый файл */
|
||||
maxsize 2097152;
|
||||
flags {
|
||||
oper;
|
||||
connects;
|
||||
server-connects;
|
||||
kills;
|
||||
errors;
|
||||
sadmin-commands;
|
||||
chg-commands;
|
||||
oper-override;
|
||||
spamfilter;
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* НОВОЕ: alias {}
|
||||
* СТАРОЕ: N/A
|
||||
* Позволяет установить вам псевдонимы на команды, такие как /nickserv, /chanserv и т.д.
|
||||
* ФЛАГИ: services, stats, normal
|
||||
*
|
||||
* Синтаксис:
|
||||
* alias "имя" {
|
||||
* target "куда направить";
|
||||
* type aliastype;
|
||||
* };
|
||||
*
|
||||
* [ЗАМЕЧАНИЕ: Вы так же можете подключить уже определённый файл с псевдонимами,подробнее doc/unreal32docs.ru.html в секции 2.9]
|
||||
*/
|
||||
|
||||
// Данный псевдноним /nickserv направляет команды пользователю NickServ, который подключён к серверу set::services-server
|
||||
/*alias NickServ {
|
||||
target "NickServ";
|
||||
type services;
|
||||
};*/
|
||||
|
||||
// Если вы хотите, чтобы команды направлялись на тот же ник, что и команда, вы можете не указывать target
|
||||
//alias ChanServ { type services; };
|
||||
|
||||
// Указывает, что команда /statserv будет отправлена пользователю StatServ, подключённого к серверу set::stats-server
|
||||
//alias StatServ { type stats; };
|
||||
|
||||
// Указывает, что команда /superbot будет отправлена пользователю SuperBot
|
||||
//alias SuperBot { type normal; };
|
||||
|
||||
|
||||
/* Стандартные псевдонимы */
|
||||
alias NickServ { type services; };
|
||||
alias ChanServ { type services; };
|
||||
alias OperServ { type services; };
|
||||
alias HelpServ { type services; };
|
||||
alias StatServ { type stats; };
|
||||
|
||||
/*
|
||||
* НОВОЕ: alias {}
|
||||
* СТАРОЕ: N/A
|
||||
* Позволяет установить такие псевдонимы на команды как /identify, /services и т.д.
|
||||
*
|
||||
* Синтаксис:
|
||||
* alias "имя" {
|
||||
* format "строка формата" {
|
||||
* target "кому";
|
||||
* type aliastype;
|
||||
* parameters "список параметров";
|
||||
* };
|
||||
* type command;
|
||||
* };
|
||||
*/
|
||||
/* Вынесено отдельно, так как имеются отличия по сравнению с предыдущим типом псевдонимов и имеются очень большие отличия в
|
||||
* синтаксисе, так же используется для других целей, чем стандартные псевдонимы.
|
||||
*/
|
||||
/*
|
||||
alias "identify" {
|
||||
format "^#" {
|
||||
target "chanserv";
|
||||
type services;
|
||||
parameters "IDENTIFY %1-";
|
||||
};
|
||||
format "^[^#]" {
|
||||
target "nickserv";
|
||||
type services;
|
||||
parameters "IDENTIFY %1-";
|
||||
};
|
||||
type command;
|
||||
};
|
||||
*/
|
||||
/* Директива alias::format является регулярным выражением. Под первый формат подпадает команда /identify,
|
||||
* если первым символом является #. Она посылает команду chanserv с параметрами IDENTIFY %1-.
|
||||
* Второй формат срабатывает, если в команде, посланной посредством /identify первый символ не #. Тогда ircd
|
||||
* передаёт эту команду nickserv с параметрами IDENTIFY %1-.
|
||||
*/
|
||||
|
||||
/* alias::format::parameters сходно со скриптовыми языками. %N (где N число) представляет собой параметр, посланный командой
|
||||
* (в случае /identify). Если вы указали %N-, так вы определили все параметры, начиная от N до последнего в этой строке.
|
||||
* Вы можете так же указать %n, что будет означать ник пользователя.
|
||||
*/
|
||||
|
||||
/* Стандартные псевдонимы */
|
||||
alias "services" {
|
||||
format "^#" {
|
||||
target "chanserv";
|
||||
type services;
|
||||
parameters "%1-";
|
||||
};
|
||||
format "^[^#]" {
|
||||
target "nickserv";
|
||||
type services;
|
||||
parameters "%1-";
|
||||
};
|
||||
type command;
|
||||
};
|
||||
|
||||
alias "identify" {
|
||||
format "^#" {
|
||||
target "chanserv";
|
||||
type services;
|
||||
parameters "IDENTIFY %1-";
|
||||
};
|
||||
format "^[^#]" {
|
||||
target "nickserv";
|
||||
type services;
|
||||
parameters "IDENTIFY %1-";
|
||||
};
|
||||
type command;
|
||||
};
|
||||
|
||||
/* Тут идёт пример использования "действительно псевдонима" (real command alias) */
|
||||
/* Данный пример - использование /GLINEBOT как /GLINE <параметры> 2d и т.д... */
|
||||
alias "glinebot" {
|
||||
format ".+" {
|
||||
command "gline";
|
||||
type real;
|
||||
parameters "%1 2d Боты запрещены на этом сервере, прочитайте ЧаВО на http://www.example.com/faq/123";
|
||||
};
|
||||
type command;
|
||||
};
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* НОВОЕ: tld {}
|
||||
* СТАРОЕ: T:Line
|
||||
* Устанавливает различные different motd и rules файлы
|
||||
* в зависимости от маски хостов клиентов.
|
||||
* Синтаксис:
|
||||
* tld {
|
||||
* mask (идент@хост);
|
||||
* motd "(файл motd)";
|
||||
* rules "(файл rules)";
|
||||
* };
|
||||
*/
|
||||
|
||||
tld {
|
||||
mask *@*.ru;
|
||||
motd "ircd.motd.ru";
|
||||
rules "ircd.rules.ru";
|
||||
};
|
||||
|
||||
/* замечание: вы можете просто удалить блок выше, указанный для примера в случае, если есть в наличии
|
||||
* файлы motd/rules, используемые по умолчанию (ircd.motd, ircd.rules), которые будут использоваться всеми
|
||||
*/
|
||||
|
||||
/*
|
||||
* НОВОЕ: ban nick {}
|
||||
* СТАРОЕ: Q:Line
|
||||
* Банит ник, он не может быть использован.
|
||||
* Синтаксис:
|
||||
* ban nick {
|
||||
* mask "(ник для бана)";
|
||||
* reason "(причина)";
|
||||
* };
|
||||
*/
|
||||
ban nick {
|
||||
mask "*C*h*a*n*S*e*r*v*";
|
||||
reason "Зарезервирован для сервисов";
|
||||
};
|
||||
/*
|
||||
* НОВОЕ: ban ip {}
|
||||
* СТАРОЕ: Z:Line
|
||||
* Банит адрес ip при подключении в сеть.
|
||||
* Синтаксис:
|
||||
* ban ip { mask (адрес ip/маска хоста); reason "(причина)"; };
|
||||
*/
|
||||
ban ip {
|
||||
mask 195.86.232.81;
|
||||
reason "Отключённый сервер";
|
||||
};
|
||||
/*
|
||||
* НОВОЕ: ban server {}
|
||||
* СТАРОЕ: Серверный Q:Line
|
||||
* Отключает сервер от попыток подключиться в сеть.
|
||||
* Если сервер подключается к удалённому серверу в сети, локальный сервер
|
||||
* будет отключён он сети.
|
||||
* Синтаксис:
|
||||
* ban server {
|
||||
* mask "(имя сервера)";
|
||||
* reason "(причина)";
|
||||
* };
|
||||
*/
|
||||
|
||||
ban server {
|
||||
mask eris.berkeley.edu;
|
||||
reason "Ламерский сервер :).";
|
||||
};
|
||||
/*
|
||||
* НОВОЕ: ban user {}
|
||||
* СТАРОЕ: K:Line
|
||||
* Пользователь с указанной маской не может подключиться к вашему серверу.
|
||||
* Синтаксис:
|
||||
* ban user { mask (маска хоста/адрес ip); reason "(причина)"; };
|
||||
*/
|
||||
|
||||
ban user {
|
||||
mask *newiceman@*.irc.by;
|
||||
reason "Идиот!";
|
||||
};
|
||||
|
||||
/*
|
||||
* НОВОЕ: ban realname {}
|
||||
* СТАРОЕ: n:Line
|
||||
* Банит по указанному пользователем реальному имени.
|
||||
* Синтаксис:
|
||||
* ban realname {
|
||||
* mask "(Реальное имя)";
|
||||
* reason "(причина)";
|
||||
* };
|
||||
*/
|
||||
|
||||
ban realname {
|
||||
mask "Swat Team";
|
||||
reason "mIRKFORCE";
|
||||
};
|
||||
|
||||
ban realname {
|
||||
mask "sub7server";
|
||||
reason "sub7";
|
||||
};
|
||||
|
||||
/*
|
||||
* ЗАМЕЧАНИЕ ДЛЯ ВСЕХ БАНОВ: они могут повторятся в случае необходимости уточнений!
|
||||
*
|
||||
* НОВОЕ: except ban {}
|
||||
* СТАРОЕ: E:Line
|
||||
* Предотвращает бан.
|
||||
* Синтаксис:
|
||||
* except ban { mask (идент@хост); };
|
||||
* Повторите except ban {} столько раз, сколько хотите использовать различные хосты.
|
||||
*/
|
||||
|
||||
except ban {
|
||||
/* не банить wax */
|
||||
mask *wax@195.222.*;
|
||||
};
|
||||
|
||||
/*
|
||||
* НОВОЕ: deny dcc {}
|
||||
* СТАРОЕ: dccdeny.conf
|
||||
* Используется чтобы запретить отправку dcc... служит для защиты от вирусов
|
||||
* Синтаксис:
|
||||
* deny dcc
|
||||
* {
|
||||
* filename "имя файла для блокироваки (т.е. *exe)";
|
||||
* reason "причина";
|
||||
* };
|
||||
*/
|
||||
deny dcc {
|
||||
filename "*sub7*";
|
||||
reason "Вероятность вируса Sub7";
|
||||
};
|
||||
|
||||
/*
|
||||
* НОВОЕ: deny channel {}
|
||||
* СТАРОЕ: N/A (НОВОЕ)
|
||||
* Запрещает вход на указанные каналы.
|
||||
* Синтаксис:
|
||||
* deny channel {
|
||||
* channel "(канал)";
|
||||
* reason "причина";
|
||||
* };
|
||||
*/
|
||||
deny channel {
|
||||
channel "*warez*";
|
||||
reason "Warez нелегален";
|
||||
};
|
||||
|
||||
/*
|
||||
* НОВОЕ: vhost {}
|
||||
* СТАРОЕ: файл Vhost.conf
|
||||
* Устанавливает фейковый ip для не-операторов или операторы слишком
|
||||
* ленивые, чтобы сделать /sethost :P
|
||||
* Синтаксис:
|
||||
* vhost {
|
||||
* vhost (vhost.com);
|
||||
* from {
|
||||
* userhost (идент@хост, кому разрешено использовать);
|
||||
* };
|
||||
* login (логин);
|
||||
* password (пароль);
|
||||
* };
|
||||
* чтобы использовать vhost, наберите /vhost (логин) (пароль) в IRC
|
||||
*/
|
||||
vhost {
|
||||
vhost i.hate.microsefrs.com;
|
||||
from {
|
||||
userhost *@*.image.dk;
|
||||
};
|
||||
login stskeeps;
|
||||
password moocowsrulemyworld;
|
||||
};
|
||||
|
||||
/* Вы так же можете подключить и другие конфигурационные файлы */
|
||||
/* include "klines.conf"; */
|
||||
|
||||
/* Конфигурация Сети */
|
||||
set {
|
||||
network-name "ROXnet";
|
||||
default-server "irc.roxnet.org";
|
||||
services-server "services.roxnet.org";
|
||||
stats-server "stats.roxnet.org";
|
||||
help-channel "#ROXnet";
|
||||
hiddenhost-prefix "rox";
|
||||
/* prefix-quit "no"; */
|
||||
/* Ключи скрытия хостов должны быть одинаковы на всех серверах в сети.
|
||||
* Они использутся для генерации замаскированных хостов и должны держаться в секрете.
|
||||
* Ключи должен быть 3-мя случайными срочками с 5-100 символами в каждой
|
||||
* (10-20 символов должно быть достаточно) и должны содержать прописные (a-z),
|
||||
* заглавные (A-Z) буквы и цифрты (0-9) [смотрите пример первого ключа].
|
||||
* Подсказка: В *NIX системах вы можете запустить './unreal gencloak' в вашем шелле, чтобы получить
|
||||
* 3 строки, сгенерированные случайным образом.
|
||||
*/
|
||||
cloak-keys {
|
||||
"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
|
||||
"и ещё одна;
|
||||
"и ещё одна";
|
||||
};
|
||||
/* хост on-oper */
|
||||
hosts {
|
||||
local "locop.roxnet.org";
|
||||
global "ircop.roxnet.org";
|
||||
coadmin "coadmin.roxnet.org";
|
||||
admin "admin.roxnet.org";
|
||||
servicesadmin "csops.roxnet.org";
|
||||
netadmin "netadmin.roxnet.org";
|
||||
host-on-oper-up "no";
|
||||
};
|
||||
};
|
||||
|
||||
/* Специфическая конфигурация сервера */
|
||||
|
||||
set {
|
||||
kline-address "set.this.email";
|
||||
modes-on-connect "+ixw";
|
||||
modes-on-oper "+xwgs";
|
||||
oper-auto-join "#opers";
|
||||
options {
|
||||
hide-ulines;
|
||||
/* Если желаете, вы можете включить проверку ident */
|
||||
/* identd-check; */
|
||||
show-connect-info;
|
||||
};
|
||||
|
||||
maxchannelsperuser 10;
|
||||
/* Указывает минимальное время, сколько был подключен пользователь,
|
||||
* прежде чем разрешать ему использовать сообщение QUIT.
|
||||
* Должно помочь в борьбе со спамом */
|
||||
anti-spam-quit-message-time 10s;
|
||||
/* Устанавливает постоянное сообщение о выходе - значит, что локальный сервер не разрешит
|
||||
различные сообщения о выходе */
|
||||
/* static-quit "Клиент вышел"; */
|
||||
|
||||
/* Вы так же можете блокировать все сообщения о выходе из канала просто раскомментировав это и указать'yes'
|
||||
* или указать какой-нибудь другой текст (например: "Пока пока!"), который всегда будет использован как причина. */
|
||||
/* static-part yes; */
|
||||
|
||||
/* Позволяет сделать важные сообщения stats были использованы только операторами, используйте * для всех сообщений stats,
|
||||
* или закомментируйте, что позволит пользователям видеть все сообщения stats. Чтобы получить весь список, введите '/stats'.
|
||||
* Некоторые администраторы могут убрать 'kGs' для того, чтобы разрешить обычным пользователям видеть список
|
||||
* klines, glines и shuns.
|
||||
*/
|
||||
oper-only-stats "okfGsMRUEelLCXzdD";
|
||||
|
||||
/* Тротлинг: данный пример устанавливает предел в 3 попытки подключения в 60 секунд (для одного хоста). */
|
||||
throttle {
|
||||
connections 3;
|
||||
period 60s;
|
||||
};
|
||||
|
||||
/* Защита от флуда */
|
||||
anti-flood {
|
||||
nick-flood 3:60; /* 3 изменения ника в 60 секунд (по умолчанию) */
|
||||
};
|
||||
|
||||
/* Фильтр спама */
|
||||
spamfilter {
|
||||
ban-time 1d; /* длительность по умолчанию бана *line, установленного spamfilter */
|
||||
ban-reason "Спам/Реклама"; /* причина по умолчанию */
|
||||
virus-help-channel "#help"; /* канал при использовании действия 'viruschan' */
|
||||
/* except "#help"; канал для исключения действия фильтра */
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* Проблемы или нуждаетесь в более подробной информации?
|
||||
* 1) www.vulnscan.org/UnrealIRCd/unreal32docs.ru.html
|
||||
* 2) www.vulnscan.org/UnrealIRCd/faq/ <- содержит 80% ваших вопросов!
|
||||
* 3) Если у вас до сих пор остались проблемы, зайдите на irc.unrealircd.org #unreal-support,
|
||||
* но мы требуем, чтобы вы ПРЕЖДЕ ПРОЧИТАЛИ ДОКУМЕНТАЦИЮ и ЧаВО!
|
||||
*/
|
||||
@@ -0,0 +1,787 @@
|
||||
/*
|
||||
* example.conf by Daniel Hawton AKA Osiris (osiris@unrealircd.org).
|
||||
* $Id$
|
||||
* Türkçe çeviri: Mustafa "Ironic" Cakmak (ironic@unrealircd.org)
|
||||
*
|
||||
* Unreal3.2 ve üstü sürümler için kullanılmaktadır
|
||||
*
|
||||
* Peki beyler. Bu example.conf dosyasının yenisi. C++ türüne çok benziyor.
|
||||
* Neyse şimdi bunun üstesinden gelme zamanı. Başlangıçta zor gelebilir, fakat
|
||||
* okuyarak ve biraz pratikle anlayacaksınız.
|
||||
*
|
||||
* Yapmanız gereken bu dosyayı ana dizine atıp, 'unrealircd.conf' olarak adlandırmak.
|
||||
*
|
||||
* NOTE: Bütün satırlar, açılış { satırı dışında, kapama } satırı dahil, sonunda ; taşır.
|
||||
* IRCd açıklama satırlarını göz ardı edecektir.
|
||||
*
|
||||
* Lütfen doc/unreal32docs.tk.html dosyasını okuyunuz! Çevrimiçi sürümüne ulaşabileceğiniz adres:
|
||||
* www.vulnscan.org/UnrealIRCd/unreal32docs.tk.html
|
||||
* Yapılandırma dosyası hakkında bir çok bilgi içerir: Her blok,
|
||||
* değişken vs.. hakkında bilgi verir.
|
||||
* Eğer dökümantasyon dosyasını tam olarak okumadan bu dosyayı düzenlemeye kalkarsanız
|
||||
* başarısız olacağınız oldukça yüksek bir oranda garanti edilir!
|
||||
*/
|
||||
|
||||
/* Açıklama satırı çeşitleri */
|
||||
#Açıklama satırı 1 (Shell tipi)
|
||||
// Açıklama satırı 2 (C++ tipi)
|
||||
/* Açıklama satırı satırı 3 (C tipi) */
|
||||
#Bu satırlar ircd tarafından göz ardı edilecektir.
|
||||
|
||||
/*
|
||||
* UnrealIRCd modülleri destekler, Bunların bazılarının yüklenmesi gereklidir.
|
||||
* En azından komutlar modülü(commands) ve gizleme modülü(cloaking)'ne ihtiyacınız vardır.
|
||||
*/
|
||||
|
||||
/* *NIX için, sonraki 2 satırın açıklama satıracını(//) kaldırın: */
|
||||
//loadmodule "src/modules/commands.so";
|
||||
//loadmodule "src/modules/cloak.so";
|
||||
|
||||
/* Windows için, sonraki 2 satırın açıklama satıracını(//) kaldırın: */
|
||||
//loadmodule "modules/commands.dll";
|
||||
//loadmodule "modules/cloak.dll";
|
||||
|
||||
/*
|
||||
* Diğer yapılandırma dosyalarınıda dahil edebilirsiniz.
|
||||
* help.conf bütün /helpop metinlerini içerir. +G kipi için badwords.*.conf
|
||||
* dosyaları bütün kötü kelime girdilerini içerir...
|
||||
* spamfilter.conf güncel trojanlar için uygun kuralları içerir.
|
||||
* Muhtemelen bunları eklemek isteyeceksiniz:
|
||||
*/
|
||||
include "help.conf";
|
||||
include "badwords.channel.conf";
|
||||
include "badwords.message.conf";
|
||||
include "badwords.quit.conf";
|
||||
include "spamfilter.conf";
|
||||
|
||||
/*
|
||||
* YENI: me {}
|
||||
* ESKI: M:Line
|
||||
* me {} bu sunucu için isim, tanımlama ve unreal sunucu sayısalını(numeric) belirler.
|
||||
* Sözdizimi aşağıdaki gibidir:
|
||||
* me {
|
||||
* name "sunucu.ismi";
|
||||
* info "Sunucu tanımlaması";
|
||||
* numeric (sunucu sayısalı*);
|
||||
* };
|
||||
* Eğer link varsa, bu sayısal ağ üzerinde varolan herhangi bir server tarafından kullanılmamalıdır.
|
||||
*/
|
||||
me
|
||||
{
|
||||
name "irc.foonet.com";
|
||||
info "FooNet Server";
|
||||
numeric 1;
|
||||
};
|
||||
|
||||
/*
|
||||
* YENI: admin {}
|
||||
* ESKI: A:Line
|
||||
* Admin sunucu yöneticisine dair bilgi verir. Dilediğiniz kadar
|
||||
* satırı admin { altına yerleştirebilirsiniz.
|
||||
* Sözdizimi aşağıdaki gibidir:
|
||||
* admin {
|
||||
* "ilk satır";
|
||||
* "ikinci satır";
|
||||
* [vs]
|
||||
* };
|
||||
*/
|
||||
admin {
|
||||
"Bob Smith";
|
||||
"bob";
|
||||
"widely@used.name";
|
||||
};
|
||||
|
||||
/*
|
||||
* YENI: class {}
|
||||
* ESKI: Y:line (eskisi karışıktı)
|
||||
* Bu sınıflar için ayarları belirtir. Bir sınıf bağlantılar için bir grup
|
||||
* ayarıdır. Örneğin, sunucu bağlantılarını, bir istemci sınıfı
|
||||
* yerine, sunucu sınıfına yönlendirirsiniz. Sözdizimi aşağıdaki gibidir:
|
||||
* class (class name)
|
||||
* {
|
||||
* pingfreq (ne sıklıkta saniye içerisinde kullanıcı veya sunucunun ping edileceği);
|
||||
* maxclients (bu sınıf için kaç bağlantı);
|
||||
* sendq (bir bağlantıdan gönderilecek en yüksek dizi);
|
||||
* recvq (bir bağlantıdan alınacak en yüksek dizi [flood kontrolü]);
|
||||
* };
|
||||
*/
|
||||
|
||||
class clients
|
||||
{
|
||||
pingfreq 90;
|
||||
maxclients 500;
|
||||
sendq 100000;
|
||||
recvq 8000;
|
||||
};
|
||||
|
||||
class servers
|
||||
{
|
||||
pingfreq 90;
|
||||
maxclients 10; /* Link edebileceğimiz en yüksek sunucu sayısı */
|
||||
sendq 1000000;
|
||||
connfreq 100; /* Her bağlantı girişimi arasında ne kadar saniye olacağı */
|
||||
};
|
||||
|
||||
/*
|
||||
* YENI: allow {}
|
||||
* ESKI: I:Line
|
||||
* Bağlantı izinlerini belirtir..
|
||||
* Temel olarak istemcilerin sunucuya bağlanabilmesi için herhangi bir kontrol
|
||||
* ve/veya bir şifre belirtmenize olanak sağlar.
|
||||
* Sözdizimi aşağıdaki gibidir:
|
||||
* allow {
|
||||
* ip (izin verilecek ip maskesi);
|
||||
* hostname (host maskesi);
|
||||
* class (gönderilecek sınıf [class {} bloğuna göz atınız]);
|
||||
* password "(şifre)"; (isteğe bağlı)
|
||||
* maxperip (ip başına kabul edilecek bağlantı sayısı); (isteğe bağlı)
|
||||
* };
|
||||
*/
|
||||
|
||||
allow {
|
||||
ip *@*;
|
||||
hostname *@*;
|
||||
class clients;
|
||||
maxperip 5;
|
||||
};
|
||||
|
||||
/* Şifrelendirilmiş allow bloğu */
|
||||
allow {
|
||||
ip *@255.255.255.255;
|
||||
hostname *@*.passworded.ugly.people;
|
||||
class clients;
|
||||
password "f00Ness";
|
||||
maxperip 1;
|
||||
};
|
||||
|
||||
/*
|
||||
* YENI: allow channel {}
|
||||
* ESKI: chrestrict
|
||||
* Bir kullanıcının bir kanala girmesine olanak sağlar...
|
||||
* yasak kanal bloğundaki hariçlik gibi.
|
||||
* Sözdizimi:
|
||||
* allow channel {
|
||||
* channel "kanal ismi";
|
||||
* };
|
||||
*/
|
||||
allow channel {
|
||||
channel "#WarezSucks";
|
||||
};
|
||||
|
||||
/*
|
||||
* YENI: oper {}
|
||||
* ESKI: O:Line
|
||||
* Bir IRC Operatörü tanımlamanızı sağlar.
|
||||
* IRC Operatörleri sunucuya uygun bir biçimde bağlanılmasını ve
|
||||
* makullüğü sağlarlar.
|
||||
* Sözdizimi aşağıdaki gibidir:
|
||||
* oper (login) {
|
||||
* class (sınıf ismini ekleyin, eğer istemciden farklıysa, yeni sınıfı ekleyin);
|
||||
* from {
|
||||
* userhost (ident@host);
|
||||
* userhost (ident@host);
|
||||
* };
|
||||
* flags
|
||||
* {
|
||||
* (flaglar buraya*);
|
||||
* };
|
||||
* VEYA
|
||||
* flags "OAaRD gibi eski tip flaglar";
|
||||
* };
|
||||
*/
|
||||
|
||||
|
||||
/* Oper flaglarının listesine doc/unreal32docs.html#operblock dan göz atabilirsiniz.
|
||||
* [Okumanız şiddetle önerilir]
|
||||
*/
|
||||
|
||||
oper bobsmith {
|
||||
class clients;
|
||||
from {
|
||||
userhost bob@smithco.com;
|
||||
};
|
||||
password "f00";
|
||||
flags
|
||||
{
|
||||
netadmin;
|
||||
can_zline;
|
||||
can_gzline;
|
||||
can_gkline;
|
||||
global;
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* YENI: listen {}
|
||||
* ESKI: P:Line
|
||||
* İstemci ve sunucuların sunucuya bağlanmasını sağlamak için ircd tarafından
|
||||
* kullanılacak bir port tanımlamanızı sağlar .
|
||||
* Sözdizimi aşağıdaki gibidir:
|
||||
* listen (ip adresi):(port numarası)
|
||||
* {
|
||||
* options {
|
||||
* (tercihler buraya);
|
||||
* };
|
||||
* };
|
||||
* veya sade bir biçimde
|
||||
* listen: listen (ip):(port);
|
||||
*
|
||||
* UYARI: ipv6 ipleri için (3ffe:b80:2:51d::2 vb), [ip]:port; kullanınız
|
||||
*
|
||||
* Böylede çalışır.
|
||||
*/
|
||||
|
||||
/* listen için tercihler:
|
||||
ESKI | YENI
|
||||
S serversonly
|
||||
C clientsonly
|
||||
J java
|
||||
s ssl
|
||||
* standard
|
||||
*/
|
||||
|
||||
/* SSL PORTLARI İÇİN NOT: SSL portları oldukça standart dışıdır,
|
||||
* ayrıca pek çok yüksek-SSL portları için bazı insanlar 994 te çalıştırın
|
||||
* der çünkü bu resmi SSL portudur..Fakat bu root erişimi gerektirir.Yanı sıra,
|
||||
* 194 resmi irc portu olarak bunun üzerinde çalışan ircd
|
||||
* hiç gördünüz mü?
|
||||
* Böyle olunca bizim önerimiz 6697 portunu SSL için kullanmanız, bu hayli
|
||||
* sunucuda kullanılıyor ve örnek için StunTour tarafından kabul görmüş durumda.
|
||||
* İstediğiniz kadar SSL port açmakta özgürsünüz, fakat 6697 yi kullanmanız
|
||||
* dünya standartı haline gelmesine biraz daha yardım edecektir. ;).
|
||||
*/
|
||||
listen *:6697
|
||||
{
|
||||
options
|
||||
{
|
||||
ssl;
|
||||
clientsonly;
|
||||
};
|
||||
};
|
||||
|
||||
listen *:8067;
|
||||
listen *:6667;
|
||||
|
||||
/* NOT: Eğer bir çok IP barındıran bir IRCd Shell kullanıyorsanız logunuzda olası
|
||||
* 'Address already in use' alırsınız ve ircd başlamaz.Bunun anlamı '*' yerine
|
||||
* belirli bir IP adresi kullanmanız gerektiğidir.Yani örneğin:
|
||||
* listen 1.2.3.4:6667;
|
||||
* Açıkça, IP yi önceden koyduğunuz IP ile değiştirin.
|
||||
*/
|
||||
|
||||
/*
|
||||
* YENI: link {}
|
||||
* ESKI: C/N:Lines
|
||||
* Bir sunucu bağlantısı için bir onay tanımlamanızı sağlar.
|
||||
* NOT: HER IKI SUNUCUDA BAĞLANTI IÇIN TAM OLARAK DÜZGÜN BİR LINK {} GEREĞİ DUYAR!
|
||||
* Sözdizimi aşağıdaki gibidir:
|
||||
* link (sunucu ismi)
|
||||
* {
|
||||
* username (username, * da uygundur);
|
||||
* hostname (ip adresi/hostmask);
|
||||
* bind-ip (Bağlanırken hangi IP ile bağlanacağı, veya *);
|
||||
* port (bağlantı portu, eğer herhangi biriyse);
|
||||
* hub (Bu bir hub ise, * çalışır, veya sunucu maskeleri bunu sağlar);
|
||||
* [veya leaf *;]
|
||||
* password-connect "(gönderilecek şifre)";
|
||||
* password-receive "(almamız gereken şifre)";
|
||||
* class (sunucuların yönetileceği sınıf);
|
||||
* options {
|
||||
* (tercihler buraya*);
|
||||
* };
|
||||
* /* Eğer SSL kullanıyorsak, SSL modunda ne tür bir anahtar kullanacağımızı seçebiliriz
|
||||
* * "openssl ciphers" ile bir liste alınır, anahtarlar birbirinden : ile ayrılırak belirtilebilirler.
|
||||
* */
|
||||
* ciphers "DES-CBC3-MD5";
|
||||
*
|
||||
* };
|
||||
*/
|
||||
|
||||
/*
|
||||
tercihler:
|
||||
YENI | ESKI
|
||||
S ssl
|
||||
Z zip
|
||||
N/A autoconnect
|
||||
N/A quarantine
|
||||
N/A nodnscache
|
||||
*/
|
||||
|
||||
|
||||
link hub.mynet.com
|
||||
{
|
||||
username *;
|
||||
hostname 1.2.3.4;
|
||||
bind-ip *;
|
||||
port 7029;
|
||||
hub *;
|
||||
password-connect "LiNk";
|
||||
password-receive "LiNk";
|
||||
class servers;
|
||||
options {
|
||||
/* Note: Servisler link edilirken autoconnect kullanmamalısınız.*/
|
||||
autoconnect;
|
||||
ssl;
|
||||
zip;
|
||||
};
|
||||
};
|
||||
/*
|
||||
*
|
||||
* YENI: ulines {}
|
||||
* ESKI: U:Line
|
||||
* U-lines satırları sunuculara daha güç/komut kazandırır.Bu servis/istatistik
|
||||
* sunucuları içindir ve ASLA normal UnrealIRCd sunucuları için değildir.
|
||||
* Sözdizimi aşağıdaki gibidir:
|
||||
* ulines {
|
||||
* (uline olacak sunucu);
|
||||
* (uline olacak sunucu);
|
||||
* [vb]
|
||||
* };
|
||||
*/
|
||||
ulines {
|
||||
services.roxnet.org;
|
||||
stats.roxnet.org;
|
||||
};
|
||||
|
||||
/*
|
||||
* YENI: drpass {}
|
||||
* ESKI: X:Line
|
||||
* Bu blok /die ve /restart için şifre tanımlamanızı sağlar.
|
||||
* Sözdizimi aşağıdaki gibidir:
|
||||
* drpass {
|
||||
* restart "(yeniden başlatmak için şfire)";
|
||||
* die "(sona erdirmek için şifre)";
|
||||
* };
|
||||
*/
|
||||
drpass {
|
||||
restart "I-love-to-restart";
|
||||
die "die-you-stupid";
|
||||
};
|
||||
|
||||
/*
|
||||
* YENI: log {} ESKI: N/A Ircd e logun ne ve nerede olacağını bildirir. Dilediğiniz
|
||||
* kadara sahip olabilirsiniz.
|
||||
*
|
||||
* FLAGS: errors, kills, tkl, connects, server-connects, kline, oper
|
||||
*
|
||||
* Syntax:
|
||||
* log "log file"
|
||||
* {
|
||||
* flags
|
||||
* {
|
||||
* flag;
|
||||
* flag;
|
||||
* etc..
|
||||
* };
|
||||
* };
|
||||
*/
|
||||
|
||||
log "ircd.log" {
|
||||
/* Eğer 2 MB yi geçerse log dosyasını sil ve yenisini aç, eğer her zaman aynı log
|
||||
dosyasını kullanmak istiyorsanız karışmayın */
|
||||
maxsize 2097152;
|
||||
flags {
|
||||
oper;
|
||||
kline;
|
||||
connects;
|
||||
server-connects;
|
||||
kills;
|
||||
errors;
|
||||
sadmin-commands;
|
||||
chg-commands;
|
||||
oper-override;
|
||||
spamfilter;
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* YENI: alias {}
|
||||
* ESKI: N/A
|
||||
* /nickserv, /chanserv gibi komutlar hazırlamanızı sağlar.
|
||||
* FLAGS: services, stats, normal
|
||||
*
|
||||
* Sözdizimi:
|
||||
* alias "isim" {
|
||||
* target "gidecek nokta";
|
||||
* type aliastype;
|
||||
* };
|
||||
*
|
||||
* [NOT: Aynı zamanda önceden tanımlanmış alias dosyası dahil edebilirsiniz, doc/unreal32docs.html bölüm 2.9]
|
||||
*/
|
||||
|
||||
// Bu nokta /NickServ komutu ile set::services-server server üzerinden bağlanmış olan NickServ e döner.
|
||||
/*alias NickServ {
|
||||
target "NickServ";
|
||||
type services;
|
||||
};*/
|
||||
|
||||
// Eğer komutla noktanın aynı olmasını istiyorsanız nick girişini gözardı edebilirsiniz
|
||||
//alias ChanServ { type services; };
|
||||
|
||||
// Bu nokta /statserv komutu ile set::stats-server server üzerinden bağlanmış olan StatServ e döner.
|
||||
//alias StatServ { type stats; };
|
||||
|
||||
// Bu nokta /superbot komutu ile kullanıcı SuperBot a döner
|
||||
//alias SuperBot { type normal; };
|
||||
|
||||
|
||||
/* Standart aliases */
|
||||
alias NickServ { type services; };
|
||||
alias ChanServ { type services; };
|
||||
alias OperServ { type services; };
|
||||
alias HelpServ { type services; };
|
||||
alias StatServ { type stats; };
|
||||
|
||||
/*
|
||||
* ESKI: alias {}
|
||||
* YENI: N/A
|
||||
* Bu /identify, /services gibi komutlar hazırlamanızı sağlar.
|
||||
*
|
||||
* Sözdizimi:
|
||||
* alias "isim" {
|
||||
* format "format satırı" {
|
||||
* target "gidecek nokta";
|
||||
* type aliastype;
|
||||
* parameters "gönderilecek parametreler";
|
||||
* };
|
||||
* type command;
|
||||
* };
|
||||
*/
|
||||
/* Bu ayrı bir şekilde gösterilir.Çünkü bir önceki direktif ile aynı isme sahip olsa bile benzer bir
|
||||
* fonksiyon sağlaması ve standart aliaseslerin çalışmasına dayanması ile birlikte çok farklı sözdizimine sahip olması.
|
||||
*/
|
||||
/*
|
||||
alias "identify" {
|
||||
format "^#" {
|
||||
target "chanserv";
|
||||
type services;
|
||||
parameters "IDENTIFY %1-";
|
||||
};
|
||||
format "^[^#]" {
|
||||
target "nickserv";
|
||||
type services;
|
||||
parameters "IDENTIFY %1-";
|
||||
};
|
||||
type command;
|
||||
};
|
||||
*/
|
||||
/* alias::format direktifi bir düzenli ifadedir. İlk biçim /identify komutundan sonraki ilk karakter bir # ise eşleşir.
|
||||
* Ardından IDENTIFY %1- ile chanserv aliases e döner.
|
||||
* İkinci biçim ise /identify komutundan sonraki ilk karakterin bir # işareti ile eşleşmeme durumunu belirtir.Ardından
|
||||
* IDENTIFY %1- ile nickserv aliases e döner.
|
||||
*/
|
||||
|
||||
/* alias::format::parameters betik diline benzerdir. %N (N bir numaradır) komuta gönderilecek
|
||||
* parametreyi temsil eder.(bu durumda /identify). Eğer bir %N- belirtirseniz bu N den sonraki
|
||||
* bütün parametleri içerir. Ayrıca kullanıcı nickname inin yerine %n kullanabilirsiniz.
|
||||
*/
|
||||
|
||||
/* Standart aliases */
|
||||
alias "services" {
|
||||
format "^#" {
|
||||
target "chanserv";
|
||||
type services;
|
||||
parameters "%1-";
|
||||
};
|
||||
format "^[^#]" {
|
||||
target "nickserv";
|
||||
type services;
|
||||
parameters "%1-";
|
||||
};
|
||||
type command;
|
||||
};
|
||||
|
||||
alias "identify" {
|
||||
format "^#" {
|
||||
target "chanserv";
|
||||
type services;
|
||||
parameters "IDENTIFY %1-";
|
||||
};
|
||||
format "^[^#]" {
|
||||
target "nickserv";
|
||||
type services;
|
||||
parameters "IDENTIFY %1-";
|
||||
};
|
||||
type command;
|
||||
};
|
||||
|
||||
/* Bu gerçek komut aliası için bir örnektir */
|
||||
/* Bu eşlem /GLINEBOT ile /GLINE <parametre> 2d vb... şeklindedir */
|
||||
alias "glinebot" {
|
||||
format ".+" {
|
||||
command "gline";
|
||||
type real;
|
||||
parameters "%1 2d Bu sunucuda botlara izin verilmemektedir, lütfen http://www.example.com/faq/123 sayfasından sss ı okuyunuz.";
|
||||
};
|
||||
type command;
|
||||
};
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* ESKI: tld {}
|
||||
* YENI: T:Line
|
||||
* Bu istemcilerin hostmaskesine bağlı olarak farklı
|
||||
* motd ve rules dosyaları belirler.
|
||||
* Sözdizimi aşağıdaki gibidir:
|
||||
* tld {
|
||||
* mask (ident@host);
|
||||
* motd "(motd dosyası)";
|
||||
* rules "(rules dosyası)";
|
||||
* };
|
||||
*/
|
||||
|
||||
tld {
|
||||
mask *@*.fr;
|
||||
motd "ircd.motd.fr";
|
||||
rules "ircd.rules.fr";
|
||||
};
|
||||
|
||||
/* not: Bütün istemciler için aynı motd/rules (ircd.motd, ircd.rules) dosyaları
|
||||
* görüntületmek istiyorsanız sadece yukarıdaki örnek bloğu silebilirsiniz.
|
||||
*/
|
||||
|
||||
/*
|
||||
* YENI: ban nick {}
|
||||
* ESKI: Q:Line
|
||||
* Nir nickname yasaklar, bundan doalyı kullanılamaz.
|
||||
* Sözdizimi aşağıdaki gibidir:
|
||||
* ban nick {
|
||||
* mask "(yasaklanak nick)";
|
||||
* reason "(neden)";
|
||||
* };
|
||||
*/
|
||||
ban nick {
|
||||
mask "*C*h*a*n*S*e*r*v*";
|
||||
reason "Servisler için ayrılmıştır";
|
||||
};
|
||||
/*
|
||||
* YENI: ban ip {}
|
||||
* ESKI: Z:Line
|
||||
* Ağa bağlanan bir ip yi yasaklar.
|
||||
* Sözdizimi:
|
||||
* ban ip { mask (ip adresi/hostmask); reason "(neden)"; };
|
||||
*/
|
||||
ban ip {
|
||||
mask 195.86.232.81;
|
||||
reason "Bağlı olmayan sunucu";
|
||||
};
|
||||
/*
|
||||
* YENI: ban server {}
|
||||
* ESKI: Server Q:Line
|
||||
* Ağa bir sunucunun bağlanmasını devredışı kılar.
|
||||
* eğer sunucu uzak bir sunucuya bağlanmışsa, yerel sunucunun
|
||||
* ağdan bağlantısı kesilir.
|
||||
* Sözdizimi aşağıdaki gibidir:
|
||||
* ban server {
|
||||
* mask "(sunucu ismi)";
|
||||
* reason "(neden)";
|
||||
* };
|
||||
*/
|
||||
|
||||
ban server {
|
||||
mask eris.berkeley.edu;
|
||||
reason "Defol buradan.";
|
||||
};
|
||||
/*
|
||||
* YENI: ban user {}
|
||||
* ESKI: K:Line
|
||||
* Kullanıcının belirtilen kesin bir mask ile sunucuya bağlanmasını engeller.
|
||||
* Sözdizimi:
|
||||
* ban user { mask (hostmask/ip adresi); reason "(neden)"; };
|
||||
*/
|
||||
|
||||
ban user {
|
||||
mask *tirc@*.saturn.bbn.com;
|
||||
reason "Idiot";
|
||||
};
|
||||
|
||||
/*
|
||||
* YENI: ban realname {}
|
||||
* ESKI: n:Line
|
||||
* Kullanılan kesin bir realname i yasaklar.
|
||||
* Sözdizimi:
|
||||
* ban realname {
|
||||
* mask "(real name)";
|
||||
* reason "(neden)";
|
||||
* };
|
||||
*/
|
||||
|
||||
ban realname {
|
||||
mask "Swat Team";
|
||||
reason "mIRKFORCE";
|
||||
};
|
||||
|
||||
ban realname {
|
||||
mask "sub7server";
|
||||
reason "sub7";
|
||||
};
|
||||
|
||||
/*
|
||||
* BUTUN BANLAR İÇİN NOT, ilave girdiler için tekrarlanabilir!
|
||||
*
|
||||
* YENI: except ban {}
|
||||
* ESKI: E:Line
|
||||
* Bu yasaklanmamanızı sağlar.
|
||||
* Sözdizimi:
|
||||
* except ban { mask (ident@host); };
|
||||
* Farklı hostlar için istediğiniz kadar except ban {}
|
||||
* bloğunu tekrarlayın.
|
||||
*/
|
||||
|
||||
except ban {
|
||||
/* stskeeps i yasaklama*/
|
||||
mask *stskeeps@212.*;
|
||||
};
|
||||
|
||||
/*
|
||||
* YENI: deny dcc {}
|
||||
* ESKI: dccdeny.conf
|
||||
* Dcc gönderimlerini bloklamak için kullanılır..Virüsler
|
||||
* dursa iyi olur.
|
||||
* Sözdizimi:
|
||||
* deny dcc
|
||||
* {
|
||||
* filename "bloklanacak dosya (örnek, *exe)";
|
||||
* reason "neden";
|
||||
* };
|
||||
*/
|
||||
deny dcc {
|
||||
filename "*sub7*";
|
||||
reason "Muhtemek Sub7 Virüsü";
|
||||
};
|
||||
|
||||
/*
|
||||
* ESKI: deny channel {}
|
||||
* YENI: N/A (NEW)
|
||||
* Girilen kanalları bloklar.
|
||||
* Sözdizimi:
|
||||
* deny channel {
|
||||
* channel "(kanal)";
|
||||
* reason "neden";
|
||||
* };
|
||||
*/
|
||||
deny channel {
|
||||
channel "*warez*";
|
||||
reason "Warez yasaktır";
|
||||
};
|
||||
|
||||
/*
|
||||
* YENI: vhost {}
|
||||
* ESKI: Vhost.conf file
|
||||
* Oper olmayan kullanıcılar için sahte ip hazırlar, veya
|
||||
* tembellik yaparak /sethost kullanmayan operler içindir :P
|
||||
* Sözdizimi:
|
||||
* vhost {
|
||||
* vhost (vhost.com);
|
||||
* from {
|
||||
* userhost (kullanılacak ident@host);
|
||||
* };
|
||||
* login (login ismi);
|
||||
* password (şifre);
|
||||
* };
|
||||
* ardından bu vhostu kullanmak için, IRC de /vhost (login) (şifre) yapın
|
||||
*/
|
||||
vhost {
|
||||
vhost i.hate.microsefrs.com;
|
||||
from {
|
||||
userhost *@*.image.dk;
|
||||
};
|
||||
login stskeeps;
|
||||
password moocowsrulemyworld;
|
||||
};
|
||||
|
||||
/* Diğer yapılandırma dosyalarını dahil edebilirsiniz */
|
||||
/* include "klines.conf"; */
|
||||
|
||||
/* Ağ yapılandırması */
|
||||
set {
|
||||
network-name "ROXnet";
|
||||
default-server "irc.roxnet.org";
|
||||
services-server "services.roxnet.org";
|
||||
stats-server "stats.roxnet.org";
|
||||
help-channel "#ROXnet";
|
||||
hiddenhost-prefix "rox";
|
||||
/* prefix-quit "no"; */
|
||||
/* Gizleme anahtarları ağ üzerindeki bütün sunucularda aynı olmalı.
|
||||
* Bu anahtarlar maskeli hostlar yaratmak ve bunları saklamak için kullanılır.
|
||||
* Anahtarlar 5-100 karakterlik (10-20 karakter yeterli) 3 rastgele diziden oluşmalı ve
|
||||
* küçük harf (a-z), büyük harf (A-Z) ve rakamlardan (0-9) meydana gelmelidirler.. [ilk örneğe bakınız].
|
||||
*/
|
||||
cloak-keys {
|
||||
"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
|
||||
"and another one";
|
||||
"and another one";
|
||||
};
|
||||
/* on-oper host */
|
||||
hosts {
|
||||
local "locop.roxnet.org";
|
||||
global "ircop.roxnet.org";
|
||||
coadmin "coadmin.roxnet.org";
|
||||
admin "admin.roxnet.org";
|
||||
servicesadmin "csops.roxnet.org";
|
||||
netadmin "netadmin.roxnet.org";
|
||||
host-on-oper-up "no";
|
||||
};
|
||||
};
|
||||
|
||||
/* Sunucunun kendine özgü yapılandırması */
|
||||
|
||||
set {
|
||||
kline-address "bunu.email.olarak.ayarlayın";
|
||||
modes-on-connect "+ixw";
|
||||
modes-on-oper "+xwgs";
|
||||
oper-auto-join "#opers";
|
||||
options {
|
||||
hide-ulines;
|
||||
/* Eğer isterseniz identd kontrolünü buradan aktif edebilirsiniz */
|
||||
/* identd-check; */
|
||||
show-connect-info;
|
||||
};
|
||||
|
||||
maxchannelsperuser 10;
|
||||
/* /quit mesajının görüntülenebilmesi için, bir kullanıcının sunucuya bağlı kalması gereken süre
|
||||
* Umarız spamleri durdurmak için yardım eder */
|
||||
anti-spam-quit-message-time 10s;
|
||||
/* Bütün çıkışlarda değişmeyen bir çıkış mesajı yaratır - anlamı yerel sunucuda
|
||||
ısmarlama çıkışlara izin verilmemesidir */
|
||||
/* static-quit "Client quit"; */
|
||||
|
||||
/* Ayrıca bu seçeneğin açıklama satırlarını kaldırıp 'yes' diyerek bütün kanaldan ayrılma mesajlarını,
|
||||
* bloklamış veya belirli bir diğer metini bunun için kullanabilirsiniz. (örnek: "Bye bye!") Her zaman kanaldan
|
||||
* ayrılma mesajı olarak kullanılır */
|
||||
/* static-part yes; */
|
||||
|
||||
/* Operlerin sadece belirli istatistikleri görüntüleyebilmesini sağlar, bütün istatistikler için * kullanın,
|
||||
* bütün istatistikleri görebilmeleri için gözardı edin. Full liste için '/stats' yapınız.
|
||||
* Bazı yöneticiler normal kullanıcıların 'kGs' istatistiklerine ulaşmasını istemeyebilir.
|
||||
*/
|
||||
oper-only-stats "okfGsMRUEelLCXzdD";
|
||||
|
||||
/* Throttling: Bu örnek bir hosta 60 saniye içerisine yanlızca 3 bağlantı imkanı sağlar. */
|
||||
throttle {
|
||||
connections 3;
|
||||
period 60s;
|
||||
};
|
||||
|
||||
/* Anti flood koruması */
|
||||
anti-flood {
|
||||
nick-flood 3:60; /* Her 60 saniyede 3 nick değişikliği (varsayılan) */
|
||||
};
|
||||
|
||||
/* Spam filtresi */
|
||||
spamfilter {
|
||||
ban-time 1d; /* spamfilter ile bir *line yasağının varsayılan devaö süresi */
|
||||
ban-reason "Spam/Advertising"; /* varsayılan neden */
|
||||
virus-help-channel "#help"; /* 'viruschan' eylemi için kullanılacak kanal */
|
||||
/* except "#help"; spam filtreden muaf tutulacak kanal */
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* Sorununuz veya daha fazla yardımamı ihtiyacınız var?
|
||||
* 1) www.vulnscan.org/UnrealIRCd/unreal32docs.tr.html
|
||||
* 2) www.vulnscan.org/UnrealIRCd/faq/ <- sorularınızın %80 ini kapsamakta!
|
||||
* 3) Eğer probleminiz hala devam ediyorsa irc.unrealircd.org sunucusu #unreal-support kanalına girebilirsiniz
|
||||
* DÖKÜMANTASYON ve FAQ kısmını okumanızı gerekli gördüğümüzü belirtiyoruz!
|
||||
*/
|
||||
+1417
File diff suppressed because it is too large
Load Diff
+1418
File diff suppressed because it is too large
Load Diff
+1517
File diff suppressed because it is too large
Load Diff
+1404
File diff suppressed because it is too large
Load Diff
+17
-4
@@ -1,4 +1,6 @@
|
||||
Numeric 005 Documentation (c) 2002-2005 codemastr (Dominick Meglio) [codemastr@unrealircd.com]
|
||||
Numeric 005 Documentation
|
||||
(c) 2002-2005 codemastr (Dominick Meglio) [codemastr@unrealircd.com]
|
||||
(c) 2005-2009 syzop (Bram Matthys) [syzop@vulnscan.org]
|
||||
|
||||
Numeric 005 allows the server to inform the client of any protocol specific features in the
|
||||
IRCd. The numeric is sent at connection time immediately after numeric 004. Additionally
|
||||
@@ -22,9 +24,9 @@ impractical and technically impossible to correctly implement due to existing li
|
||||
in the standard. Therefore, this token is not currently supported.
|
||||
|
||||
Unreal does additionally provide a few tokens which are not specified in the standard, these
|
||||
include: HCN, AWAYLEN, WATCH, SILENCE, EXTBAN, ELIST, and CMDS. Unreal also maintains a few
|
||||
legacy tokens such as MAXCHANNELS and WALLCHOPS to ensure compatibility until the ISupport
|
||||
standard is more widely accepted by clients.
|
||||
include: HCN, AWAYLEN, WATCH, SILENCE, EXTBAN, ELIST, CMDS, NAMESX, UHNAMES, and WATCHOPTS.
|
||||
Unreal also maintains a few legacy tokens such as MAXCHANNELS and WALLCHOPS to ensure
|
||||
compatibility until the ISupport standard is more widely accepted by clients.
|
||||
|
||||
Token Value Default Value Description
|
||||
------------------------------------------------------------------------------------------------
|
||||
@@ -165,3 +167,14 @@ NAMESX none none Indicates that extend
|
||||
all channel rights in a NAMES reply
|
||||
instead of only the highest right
|
||||
(eg: @+Person instead of @Person).
|
||||
|
||||
UHNAMES none none Indicates that (other) extended
|
||||
/NAMES info is available on the
|
||||
server. If the client sends
|
||||
"PROTOCTL UHNAMES" then the server
|
||||
will, from then on, send user@host
|
||||
information in a NAMES reply
|
||||
(eg: @nick!ident@hostname).
|
||||
|
||||
WATCHOPTS flags A WATCH options supported. 'A' means
|
||||
Away Notification is available.
|
||||
|
||||
@@ -139,3 +139,18 @@ NICKCHARS This specifies a list of language characters that are allowed in n
|
||||
The items in the list sent as NICKCHARS=.. must always be sorted.
|
||||
If a server sends NICKCHARS= and if the remote parameters do not match the
|
||||
charsets in use locally, then the server link is rejected.
|
||||
|
||||
CHANMODES Like CHANMODES from the 005 numeric. Useful to see which channel modes are
|
||||
supported/used, and can also be used to properly eat parameters in parameter
|
||||
modes in the MODE command (for eg: +jk 1:1 a).
|
||||
|
||||
EAUTH Early Authorization. This makes it possible for servers to authenticate each
|
||||
other before the regular SERVER command. Needs to be done prior to using the
|
||||
SERVERS token, and possibly other tokens or commands in the future. Hence,
|
||||
is recommended to be sent as first (or early) PROTOCTL token. Note also that
|
||||
the PASS command should be sent prior to this PROTOCTL token.
|
||||
EAUTH=my.server.name[,options]
|
||||
|
||||
SERVERS Informs the other server about the other servers (numerics) on this network
|
||||
(including our own numeric).
|
||||
Syntax: SERVERS=numeric1,numeric2,numeric3,etc
|
||||
|
||||
+467
-465
@@ -1,465 +1,467 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<!-- $Id$ -->
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
|
||||
<title>Unreal 3.2 Protocol Documentation</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1 style="text-align: center;">Unreal 3.2 Protocol Documentation</h1>
|
||||
<h3 style="text-align: center;">Last update: 29 November 2006</h3>
|
||||
<h1>Table of Contents</h1>
|
||||
<p><a href="#S1">1 Introduction</a></p>
|
||||
<p><a href="#S2">2 Server Negotiation</a></p>
|
||||
<blockquote><p><a href="#S2_1">2.1 PASS - Connection Password</a></p></blockquote>
|
||||
<blockquote><p><a href="#S2_2">2.2 PROTOCTL - Server Protocol Negotiation</a></p></blockquote>
|
||||
<blockquote><p><a href="#S2_3">2.3 SERVER - Server Negotiation</a></p></blockquote>
|
||||
<blockquote><p><a href="#S2_4">2.4 EOS - End Of Synch</a></p></blockquote>
|
||||
<blockquote><p><a href="#S2_5">2.5 NETINFO - Network Information</a></p></blockquote>
|
||||
<p><a href="#S3">3 User Operations</a></p>
|
||||
<blockquote><p><a href="#S3_1">3.1 NICK - User Introduction and Nick Change</a></p></blockquote>
|
||||
<blockquote><blockquote><p><a href="#S3_1_1">3.1.1 Nick Collisions</a></p></blockquote></blockquote>
|
||||
<blockquote><p><a href="#S3_2">3.2 MODE, UMODE2 - User Mode Change</a></p></blockquote>
|
||||
<blockquote><p><a href="#S3_3">3.3 QUIT - User Disconnect</a></p></blockquote>
|
||||
<blockquote><p><a href="#S3_4">3.4 KILL - Force Disconnect</a></p></blockquote>
|
||||
<blockquote><p><a href="#S3_5">3.5 SETHOST/CHGHOST - Change virtual host</a></p></blockquote>
|
||||
<blockquote><p><a href="#S3_6">3.6 SETIDENT/CHGIDENT - Change a user's username</a></p></blockquote>
|
||||
<blockquote><p><a href="#S3_7">3.7 SETNAME/CHGNAME - Change a user's realname</a></p></blockquote>
|
||||
<blockquote><p><a href="#S3_8">3.8 WHOIS - User Information</a></p></blockquote>
|
||||
<p><a href="#S1">4 Server Operations</a></p>
|
||||
<blockquote><p><a href="#S4_1">4.1 SERVER - Server Introduction</a></p></blockquote>
|
||||
<blockquote><p><a href="#S4_2">4.2 SQUIT - Server Removal</a></p></blockquote>
|
||||
<blockquote><p><a href="#S4_3">4.3 SDESC - Server Description</a></p></blockquote>
|
||||
<blockquote><p><a href="#S4_4">4.4 PING - Live Connection Query</a></p></blockquote>
|
||||
<blockquote><p><a href="#S4_5">4.5 PONG - Live Connection Reply</a></p></blockquote>
|
||||
<blockquote><p><a href="#S4_6">4.6 STATS - Server Stats</a></p></blockquote>
|
||||
<p><a href="#S5">5 Channel Operations</a></p>
|
||||
<blockquote><p><a href="#S5_1">5.1 SJOIN - Channel Burst</a></p></blockquote>
|
||||
<blockquote><p><a href="#S5_2">5.2 JOIN - Channel Join</a></p></blockquote>
|
||||
<blockquote><p><a href="#S5_3">5.3 PART - Channel Part</a></p></blockquote>
|
||||
<blockquote><p><a href="#S5_4">5.4 KICK - Channel Kick</a></p></blockquote>
|
||||
<blockquote><p><a href="#S5_5">5.5 MODE - Channel Mode</a></p></blockquote>
|
||||
<blockquote><p><a href="#S5_6">5.6 INVITE - Invite a user to a channel</a></p></blockquote>
|
||||
<blockquote><p><a href="#S5_7">5.7 SAJOIN - Channel Force Join</a></p></blockquote>
|
||||
<blockquote><p><a href="#S5_8">5.8 SAPART - Channel Force Part</a></p></blockquote>
|
||||
<blockquote><p><a href="#S5_9">5.9 SAMODE - Channel Force Mode</a></p></blockquote>
|
||||
<blockquote><p><a href="#S5_10">5.10 TOPIC - Chanel Topic</a></p></blockquote>
|
||||
<p><a href="#S6">6 Services Commands</a></p>
|
||||
<blockquote><p><a href="#S6_1">6.1 SVSKILL - Force Disconnect by Service</a></p></blockquote>
|
||||
<blockquote><p><a href="#S6_2">6.2 SVSMODE, SVS2MODE - Force User Mode Change</a></p></blockquote>
|
||||
<blockquote><p><a href="#S6_3">6.3 SVSSNO, SVS2SNO - Forced SNomask Change</a></p></blockquote>
|
||||
<blockquote><p><a href="#S6_4">6.4 SVSNICK - Forced Nick Change</a></p></blockquote>
|
||||
<blockquote><p><a href="#S6_5">6.5 SVSJOIN - Forced Join</a></p></blockquote>
|
||||
<blockquote><p><a href="#S6_6">6.6 SVSPART - Forced Part</a></p></blockquote>
|
||||
<blockquote><p><a href="#S6_7">6.7 SVSO - Oper Permissions</a></p></blockquote>
|
||||
<blockquote><p><a href="#S6_8">6.8 SVSNOOP - Oper Lockdown</a></p></blockquote>
|
||||
<blockquote><p><a href="#S6_9">6.9 SVSNLINE - RealName Ban</a></p></blockquote>
|
||||
<blockquote><p><a href="#S6_10">6.10 SVSFLINE - File Ban</a></p></blockquote>
|
||||
<p><a href="#S7">7 Messaging</a></p>
|
||||
<blockquote><p><a href="#S7_1">7.1 PRIVMSG, NOTICE - Simple Message Transmission</a></p></blockquote>
|
||||
<blockquote><p><a href="#S7_2">7.2 SENDUMODE, SMO - Usermode-based Delivery</a></p></blockquote>
|
||||
<blockquote><p><a href="#S7_3">7.3 SENDSNO - SNomask-based Delivery</a></p></blockquote>
|
||||
<blockquote><p><a href="#S7_4">7.4 CHATOPS - IRCop Chat</a></p></blockquote>
|
||||
<blockquote><p><a href="#S7_5">7.5 WALLOPS - Wallop Chat</a></p></blockquote>
|
||||
<blockquote><p><a href="#S7_6">7.6 GLOBOPS - FailOp Chat</a></p></blockquote>
|
||||
<blockquote><p><a href="#S7_7">7.7 ADCHAT - Admin Chat</a></p></blockquote>
|
||||
<blockquote><p><a href="#S7_8">7.8 NACHAT - NetAdmin Chat</a></p></blockquote>
|
||||
<p><a href="#S8">8 Ban Control</a></p>
|
||||
<blockquote><p><a href="#S8_1">8.1 TKL - Master Ban Control</a></p></blockquote>
|
||||
<blockquote><blockquote><p><a href="#S8_1_1">8.1.1 GLINE - Network-wide user@host ban</a></p></blockquote></blockquote>
|
||||
<blockquote><blockquote><p><a href="#S8_1_2">8.1.2 GZLINE - Network-wide IP ban</a></p></blockquote></blockquote>
|
||||
<blockquote><blockquote><p><a href="#S8_1_3">8.1.3 SQLINE, UNSQLINE - Network-wide Nickname ban</a></p></blockquote></blockquote>
|
||||
<blockquote><blockquote><p><a href="#S8_1_4">8.1.4 SPAMFILTER - Message Spam Filtration System</a></p></blockquote></blockquote>
|
||||
<p><a href="#S9">9 Base64 Tables</a></p>
|
||||
<blockquote><p><a href="#S9_1">9.1 Table for SJB64 (NICK and SJOIN).</a></p></blockquote>
|
||||
<blockquote><p><a href="#S9_2">9.2 Table for NICKIP.</a></p></blockquote>
|
||||
<hr/>
|
||||
<h1><a name="S1"></a>1 Introduction</h1>
|
||||
<p>This document describes the UnrealIRCd server-to-server protocol as of protocol 2307 (Unreal 3.2.4).</p>
|
||||
<h2>A word about clocks.</h2>
|
||||
<p>Unreal is very time-dependant. Users and channels, for example, are timestamped, and if server clocks are not synchronized properly, things can go very wrong very fast. See <a href="http://vulnscan.org/UnrealIrcd/faq/#67">http://vulnscan.org/UnrealIrcd/faq/#67</a> for more information on this. Note that there is a slight difference between server time and what is actually reported by the UNIX date command or by the C time() function. Unreal can apply an offset to the real time to create the server time, allowing servers to be virtually synchronized when synchronizing the real clocks is not possible (such as on shell servers).
|
||||
I should make it quite clear that GMT time is used for everything. To be specific, timestamps in unreal are 32-bit integer values (actually, however many bits the time_t type is, which is 32 on 32-bit systems such as x86). This integer value is the number of seconds that have elapsed since Midnight January 1, 1970 GMT (can be referred to as Epoch time in the UNIX world). This means that timezones are no problem, nor is daylight savings time (or whatever your country of choice calls it).</p>
|
||||
<hr/>
|
||||
<h1><a name="S2"></a>2 Server Negotiation</h1>
|
||||
<p>The first step to establish a server-to-server communication is to negotiate the connection as a server. Negotiation is done using standard IRC commands - no PROTOCTL options are in force until the link is established. The first step is to open a TCP/IP connection to the target server. The target port must be one described by a listen {} block in the remote server's configuration, and that listen block must not have the clientsonly option. After the connection is open, you will be treated as any other connection and be greeted with the "Looking up your hostname..." and "Checking identd..." notices as you would for a client. As these are NOTICE messages and your session as a server isn't established, they should simply be ignored. Use the commands below to introduce a server connection.</p>
|
||||
<h2><a name="S2_1"></a>2.1 PASS - Connection Password</h2>
|
||||
<p><b>Syntax:</b> <tt>PASS :<i>link password</i></tt></p>
|
||||
<p>The PASS command is used to transmit the password required for a server link. It must match the password specified in the remote server's link::password-receive (which can be crypted), otherwise the link will be rejected. This should be the first message sent.</p>
|
||||
<h2><a name="S2_2"></a>2.2 PROTOCTL - Server Protocol Negotiation</h2>
|
||||
<p><b>Syntax:</b> <tt>PROTOCTL <i>protocol options</i></tt></p>
|
||||
<p>The PROTOCTL command sets several protocol options. The tokens supported are listed below.</p>
|
||||
<ul>
|
||||
<li>NOQUIT : When a netsplit occurs, only send a SQUIT message for each server lost. This server will assume that clients on these servers were also lost and will send the appropriate QUIT messages to local clients and to any non-NOQUIT servers.</li>
|
||||
<li>TOKEN : Use tokenized commands. Tokens are case-sensitive, shortened versions of command names. Tokens will be usually one or two characters.</li>
|
||||
<li>NICKv2 : Use extended NICK message for introducing users. See the NICK command for information about this.</li>
|
||||
<li>VHP : When introducing a user, send his cloaked host as if it were a vhost. Usually used for services to avoid having duplicate code.</li>
|
||||
<li>SJOIN : Supports SJOIN version 1 which is no longer in use. Use with SJ3.</li>
|
||||
<li>SJOIN2 : Supports SJOIN version 2 which is no longer in use. Use with SJ3.</li>
|
||||
<li>UMODE2 : Supports the UMODE2 command, which is a shortened version of MODE for usermode changes.</li>
|
||||
<li>VL : Supports V:Line information. Extends the SERVER message to include version information used in deny version{} blocks. Note that this is assumed - unreal will always send its own version information.</li>
|
||||
<li>SJ3 : Supports SJOIN version 3.</li>
|
||||
<li>NS : Supports server numerics which provides a shorthand for server names. In any circumstance where a :server.name is permitted (the server is the message's real source), @servernumeric may be used instead. In addition, the server.name parameter in the NICK message may be simply the server's numeric. Requires VL support.</li>
|
||||
<li>SJB64 : Timestamps in NICK and SJOIN are expressed in base64 rather than base10.</li>
|
||||
<li>TKLEXT : Supports exntended TKL messages for spamfilter support.</li>
|
||||
<li>NICKIP : Adds an IP parameter to the NICK message, which is the base64 encoding of the user's ip address (in network byte order). Requires NICKv2.</li>
|
||||
<li>NICKCHARS : Indicates the set of enabled nickchar options (see the regular documention for info about this).</li>
|
||||
<li>CHANMODES : (Not required to be sent) This is the same as the CHANMODES value in the 005 for client connections. Useful for autodetecting things like what modes are valid for ChanServ MLOCK, for example.</li>
|
||||
<li>CLK : Supports an extra field in NICK for sending the cloaked host (not vhost).</li>
|
||||
</ul>
|
||||
<p>The syntax examples here follow the conventions for TOKEN and also NS in cases of server-only messages.</p>
|
||||
<h2><a name="S2_3"></a>2.3 SERVER - Server Negotiation</h2>
|
||||
<p><b>Note:</b> This message is also used for introducing additional servers, the format of this message in those cases is described later.</p>
|
||||
<p><b>Syntax (normal):</b> <tt>SERVER <i>server.name</i> 1 :<i>server description</i></tt></p>
|
||||
<p><b>Syntax (with VL):</b> <tt>SERVER <i>server.name</i> 1 :U<i>protocolversion</i>-<i>protocolflags</i> <i>server description</i></tt></p>
|
||||
<p><b>Syntax (with VL and NS):</b> <tt>SERVER <i>server.name</i> 1 :U<i>protocolversion</i>-<i>protocolflags</i>-<i>servernumeric</i> <i>server description</i></tt></p>
|
||||
<p>The literal 1 in the parameter list is the hopcount parameter. Since you are a direct link, your own hopcount will be 1.</p>
|
||||
<p>The server.name is the same as that in the remote server's link:: block. When received from unreal servers, this will be the value of that server's me::name. The protocol version is the numeric protocol version (2306 for example), and the protocol flags are the server's compilation flags (described below). These two fields are checked against the deny version {} blocks in the remote server's configuration. A value of 0 for either field prevents deny version{} checking for that field. The server description can be anything. When received from unreal servers, it'll be the value of me::description.</p>
|
||||
<p>The following version numbers have been used previously:</p>
|
||||
<ul>
|
||||
<li>2309 - Unreal 3.2.6</li>
|
||||
<li>2308 - Unreal 3.2.5</li>
|
||||
<li>2307 - Unreal 3.2.4</li>
|
||||
<li>2306 - Unreal 3.2.3</li>
|
||||
<li>2305 - Unreal 3.2.2</li>
|
||||
<li>2304 - Unreal 3.2.1</li>
|
||||
<li>2303 - Unreal 3.2beta* through 3.2 Release</li>
|
||||
<li>2302 - Unreal 3.1.1 through 3.1.4</li>
|
||||
<li>2301 - Unreal 3.1 Release</li>
|
||||
<li>2300 - Unreal 3.0 Release</li>
|
||||
</ul>
|
||||
<p>The compile flags as specified in protocol flags are:</p>
|
||||
<ul>
|
||||
<li>c : Server is chrooted (#define CHROOTDIR).</li>
|
||||
<li>C : Server has command line config (-f option) enabled (#define CMDLINE_CONFIG).</li>
|
||||
<li>D : Server is in debugmode (#define DEBUGMODE).</li>
|
||||
<li>F : Using filedescriptor lists.</li>
|
||||
<li>h : Server is compiled with hub support (#define HUB or answer "Hub" to relevant ./Config prompt).</li>
|
||||
<li>i : Server shows invisible users in /TRACE.</li>
|
||||
<li>n : NOSPOOF (pingcookies) is enabled (#define NOSPOOF or answer "Yes" to relevant ./Config prompt).</li>
|
||||
<li>V : Server is using valloc().</li>
|
||||
<li>W : Windows IRCd.</li>
|
||||
<li>Y : Syslog logging enabled.</li>
|
||||
<li>6 : Server has IPv6 support (#define INET6 or answer "yes" to relevant ./Config prompt).</li>
|
||||
<li>X : Server has badword stripping (user and channel modes +G) (#define STRIPBADWORDS).</li>
|
||||
<li>P : Server is using poll().</li>
|
||||
<li>e : Server has SSL Support (#define USE_SSL or answer "yes" (and have ssl libraries installed) to relevant ./Config prompt).</li>
|
||||
<li>O : Server has OperOverride enabled (#undef NO_OPEROVERRIDE or answer "no" to relevant ./Config prompt).</li>
|
||||
<li>o : Server has disabled Oper verify (#undef OPEROVERRIDE_VERIFY or answer "no" to relevant ./Config prompt).</li>
|
||||
<li>Z : Server has ziplink support (#define ZIP_LINKS or answer "yes" to relevant ./Config prompt AND have the zlib dev libraries).</li>
|
||||
<li>E : Server has extended channel mode support.</li>
|
||||
<li>3 : 3rd party modules are loaded or some system libraries are wonky.</li>
|
||||
<li>m : Private message handling is 'tainted' (one or modules registered a USERMSG hook).</li>
|
||||
<li>M : Channel message handling is 'tainted' (one or modules registered a CHANMSG hook).</li>
|
||||
<li>Additional Version flags can be added by 3rd-party modules.</li>
|
||||
</ul>
|
||||
<h2><a name="S2_4"></a>2.4 EOS - End Of Synch (TOKEN: ES)</h2>
|
||||
<p><b>Syntax:</b> ES</p>
|
||||
<p>Marks the end of the synching process. This is really optional, but it might be a good idea to send it anyway when you really are done synching. Once you send this, unreal will announce "Client connecting" or "Client exiting" notices (to those with snomask +F) for users (unless your server is U:Lined), and joins will be counted toward channel flood controls (chanmode +f).</p>
|
||||
<p>Sending EOS only marks your server as synched, but does not do so for servers behind you. EOS would need to be sent on those servers' behalf as well.</p>
|
||||
<h2><a name="S2_5"></a>2.5 NETINFO - Network Information (TOKEN: AO)</h2>
|
||||
<p><b>Syntax:</b> AO <i>maxglobal</i> <i>currenttime</i> <i>protocolversion</i> <i>cloakhash</i> 0 0 0 :<i>networkname</i></p>
|
||||
<p>This tells the other server your current network configuration. The max global is the highest number of concurrent users network-wide that this server has seen. The current time is a timestamp value. Protocolversion is the same as that in the SERVER command. Cloakhash is a hash representing the configured cloak keys. It may be a * if you are implementing services. The network name is that specified in set::network-name. The cloak-prefix is currently not sent here (and thus unreal won't generate warning for mismatching cloak prefixes, but they should be the same anyway).</p>
|
||||
<p>It is NETINFO, not EOS, that triggers the "Link bla bla bla is now synched" notices, but NETINFO does not imply synching is actually complete (see EOS).</p>
|
||||
<hr/>
|
||||
<h1><a name="S3"></a>3 User Operations</h1>
|
||||
<p>One important function of servers is it must notify all other servers about all of the users behind it. These commands represent the operations that can result in the change of a user's global state.</p>
|
||||
<h2><a name="S3_1"></a>3.1 NICK - User Introduction and Nick Change (TOKEN: &)</h2>
|
||||
<p><b>Syntax (nick change):</b> <tt>:<i>oldnick</i> & <i>newnick</i> :<i>timestamp</i></tt></p>
|
||||
<p>This format of the NICK message indicates an existing user is changing his or her nickname. If a collision occurs, see the section on Nick Collisions below. The timestamp is the new nickname's timestamp.</p>
|
||||
<p><b>Syntax (normal):</b> <tt>& <i>nick</i> <i>hopcount</i> <i>timestamp</i> <i>username</i> <i>hostname</i> <i>server</i> <i>servicestamp</i> :<i>realname</i></tt></p>
|
||||
<p><b>Syntax (NICKv2):</b> <tt>& <i>nick</i> <i>hopcount</i> <i>timestamp</i> <i>username</i> <i>hostname</i> <i>server</i> <i>servicestamp</i> <i>+usermodes</i> <i>virtualhost</i> :<i>realname</i></tt></p>
|
||||
<p><b>Syntax (NICKv2+CLK):</b> <tt>& <i>nick</i> <i>hopcount</i> <i>timestamp</i> <i>username</i> <i>hostname</i> <i>server</i> <i>servicestamp</i> <i>+usermodes</i> <i>virtualhost</i> <i>cloakhost</i> :<i>realname</i></tt>
|
||||
<p><b>Syntax (NICKv2+NICKIP):</b> <tt>& <i>nick</i> <i>hopcount</i> <i>timestamp</i> <i>username</i> <i>hostname</i> <i>server</i> <i>servicestamp</i> <i>+usermodes</i> <i>virtualhost</i> <i>nickipaddr</i> :<i>realname</i></tt></p>
|
||||
<p><b>Syntax (NICKv2+NICKIP+CLK):</b> <tt>& <i>nick</i> <i>hopcount</i> <i>timestamp</i> <i>username</i> <i>hostname</i> <i>server</i> <i>servicestamp</i> <i>+usermodes</i> <i>virtualhost</i> <i>cloakhost</i> <i>nickipaddr</i> :<i>realname</i></tt>
|
||||
<p><b>Note:</b> Because each server normally does its own cloak generation, Unreal does not expect to receive NICK messages with the CLK info, so do not send it. It will send this info to a server it has received a PROTOCTL CLK from however.</p>
|
||||
<p>This format of the NICK message introduces a new user to the network. If PROTOCTL VHP is enabled, the user's cloaked host is put in the virtualhost field, otherwise it'll be * unless the user is +t. With the addition of CLK, VHP is no longer necessary for determining the cloak host.</p>
|
||||
<h3><a name="S3_1_1"></a>3.1.1 Nick Collisions</h3>
|
||||
<p>A nick collision occurs when a server receives a NICK message (or & token) introducing a user that the server already sees on the network. When a collision occurs, one or both of the colliding clients must be disconnected. The timestamp is examined to determine which client loses. The client with the earlier timestamp remains. If both clients have equal timestamps, both are removed. Currently, Unreal handles NICK collisions both passively and agressively:</p>
|
||||
<ul>
|
||||
<li><b>Aggressive Handling:</b> The server actively sends a KILL message back across the link to terminate that end's client.</li>
|
||||
<li><b>Passive Handling:</b> Upon receipt of a NICK message that should "win", the server simply silently exits it's own client.</li>
|
||||
</ul>
|
||||
<h2><a name="S3_2"></a>3.2 MODE, UMODE2 - User Mode Change (TOKEN: G or |)</h2>
|
||||
<p><b>Syntax (MODE):</b> <tt>:<i>user</i> G <i>user</i> <i>modechange</i></tt></p>
|
||||
<p><b>Syntax (UMODE2):</b> <tt>:<i>user</i> | <i>modechange</i></tt></p>
|
||||
<p>This indicates a usermode change. The modechange can consist of zero or more strings of characters, each prefixed with either a + or -; the only delimiter between them being said + or -. If no + or - is at the beginning of the mode string, a + should be implied.</p>
|
||||
<p>Some user modes are never sent between servers. Specifically, usermode +s and +O are not sent between servers. Modules can define additional usermodes that also might not be sent between servers. The UMODE2 saves bandwidth by not including the redundant target field for usermode changes, so use it when possible.</p>
|
||||
<h2><a name="S3_3"></a>3.3 QUIT - User Disconnect (TOKEN: ,)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>user</i> , :<i>reason</i></tt></p>
|
||||
<p>This command indicates that a user has disconnected. The reason field is filled in with the reason the user disconnected, which will be any of: quit message provided by the user in a /quit command, kill message for local operator kills, "Client exited" if the user does a brutal quit (clean (by TCP's definition) disconnect without sending a QUIT message), or a socket error message if present.</p>
|
||||
<p>The QUIT message must NOT be prefixed when passing on to other servers. Only local user quit messages are affected by set::prefix-quit.</p>
|
||||
<h2><a name="S3_4"></a>3.4 KILL - Force Disconnect (TOKEN: .)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> . <i>target</i> :<i>killpath</i>!<i>source</i> (<i>reason</i>)</tt></p>
|
||||
<p>Used to indicate that an operator has used KILL on a user not on the same server. Anything beyond the last ! in the kill path is used as the reason. The source (reason) part is simply a standard used by Unreal. As each server passes on a KILL message, it usually prepends the bottommost part (up to the first .) of it's name followed by a ! character. When unreal receives a KILL from a directly connected irc operator, it will usually add that oper's vhost (or realhost if -x) as the first hop in the kill path, then follow with it's own name as mentioned before if it is passing to another server.</p>
|
||||
<p>A server can also send KILLs on it's own. This is done in cases involving nickname collisions, fake senders, bad direction, and other cases of protocol errors. Usually, in these cases, the server puts it's own name as the source, and also prefixes with <i>bottompart</i>! like for any other ircop on that server. For example: @3 . someone :irc!irc.example.com (Nick collision)</p>
|
||||
<h2><a name="S3_5"></a>3.5 SETHOST/CHGHOST - Change virtual host (TOKEN: AA or AL)</h2>
|
||||
<p><b>Syntax (SETHOST):</b> <tt>:<i>source</i> AA <i>newvhost</i></tt></p>
|
||||
<p><b>Syntax (CHGHOST):</b> <tt>:<i>source</i> AL <i>target</i> <i>newvhost</i></tt></p>
|
||||
<p>Indicates the change of a user's virtual host. Currently, servers are expected to assume UMODE2 +xt on the target user in both commands. (In the case of SETHOST, the target is the sender.) Servers using PROTOCTL VHP will receive the cloaked host in a SETHOST message when a user activates his cloaked host. A server can also send CHGHOST (from one of it's opered clients) to change a user's hostname. This is generally used by HostServ implementations. To disable a cloaked host, use CHGHOST to set the user's virtual host equal to his real host, or use SVSMODE -xt, but the latter requires services.</p>
|
||||
<h2><a name="S3_6"></a>3.6 SETIDENT/CHGIDENT - Change a user's username (TOKEN: AD or AZ)</h2>
|
||||
<p><b>Syntax (SETIDENT):</b> <tt>:<i>source</i> AD <i>newusername</i></tt></p>
|
||||
<p><b>Syntax (CHGIDENT):</b> <tt>:<i>source</i> AZ <i>target</i> <i>newusername</i></tt></p>
|
||||
<p>Indicates the change of a user's username. No usermode change is associated with this. Unreal does not use a distinguished virtual username, so servers should only keep the original username (from the NICK message) if they intend to allow the user to reset the original username. Servers can use CHGIDENT to change a user's username.</p>
|
||||
<h2><a name="S3_7"></a>3.7 SETNAME/CHGNAME - Change a user's realname (TOKEN: AE or BK)</h2>
|
||||
<p><b>Syntax (SETNAME):</b> <tt>:<i>source</i> AE :<i>newrealname</i></tt></p>
|
||||
<p><b>Syntax (CHGNAME):</b> <tt>:<i>source</i> BK <i>target</i> :<i>newrealname</i></tt></p>
|
||||
<p>Indicates the change of a user's realname. No usermode change is associated with this. Unreal does not use a distinguished virtual realname, so servers should only keep the original realname (from the NICK message) if they intend to allow the user to reset the original realname. Servers can use CHGNAME to change a user's username. Note that servers must NOT check that the sender be an IRCop in SETNAME - normal users are permitted to use SETNAME.</p>
|
||||
<h2><a name="#S3_8"></a>3.8 WHOIS - User Information (TOKEN: #)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> # [<i>from-server</i> ]<i>nick</i></tt></p>
|
||||
<p>Requests the information on a user. This works exactly like the user /whois command - in fact, the source parameter must be a user, or the command will do nothing. <i>from-server</i> is the server to request the information from; if a server recives a WHOIS message without this parameter, it should return its own information on the user, otherwise it should pass the message to the given server. Note that <i>from-server</i> may name a user instead of a server (such as when a user uses /whois nick nick), in which case the the nick should be interpreted as naming the server that user is on. <i>nick</i> may be several users seperated by commas, but may not contain wildcards.</p>
|
||||
<p>The reply to a WHOIS message uses the same numeric replies as the user command.</p>
|
||||
<hr/>
|
||||
<h1><a name="S4"></a>4 Server Operations</h1>
|
||||
<p>This is different from server negotiation. Negotiation is when you are first connecting. Server introduction is used for introducing additional servers behind an existing server (aka hubbing). Hubbing is limited as specified by the hub, leaf, and leafdepth parameters in the link block and attempted violation of a hub restriction results in termination of the link. If no hub or leaf directive is given your server is a leaf by default, so any introduction of any server behind you would be an automatic drop. U:Lines don't matter here; services must be configured as a hub in the link block. The reason is U:Line is a permission rule, but hub privilege is a network structure rule.</p>
|
||||
<h2><a name="S4_1"></a>4.1 SERVER - Server Introduction (TOKEN: ')</h2>
|
||||
<p><b>Note: This command is also used for negotiation. Be warned that the token for this command is NOT VALID at that time! See section 2.3 for the syntax for negotiation.</b></p>
|
||||
<p><b>Syntax (without PROTOCTL NS):</b> <tt>:<i>source</i> SERVER <i>new.server</i> <i>hopcount</i> :<i>description</i></tt></p>
|
||||
<p><b>Syntax (with PROTOCTL NS):</b> <tt>@<i>sourcenumeric</i> SERVER <i>new.server</i> <i>hopcount</i> <i>numeric</i> :<i>description</i></tt></p>
|
||||
<p>The command indicates that the server named new.server is being introduced by the source (the source is the server which new.server is directly linked to). The hopcount will be the number of links the receiving server would have to cross to reach new.server. In other words, new.server introduced itself with a hopcount of 1, and as the SERVER message is passed along, hopcount is incremented.</p>
|
||||
<p>As an example, a services server faking a SERVER message for JUPE functionality would use a hopcount of 2.</p>
|
||||
<h2><a name="S4_2"></a>4.2 SQUIT - Server Removal (TOKEN: -)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> SQUIT <i>server.name</i> <i>:reason</i></tt></p>
|
||||
<p>From an IRCop or when server.name is not behind the source, this command requests the removal of the specified server.name. The command in this case is treated very much like KILL in the respect that the message is broadcasted to all servers, except server.name and any servers behind it. When the SQUIT reaches server.name's uplink, that server closes the link to server.name (which would then generate it's own SQUIT on behalf of it's uplink for the servers behind it).</p>
|
||||
<p>A server can also use SQUIT in the same manner as QUIT to note the removal of a server behind it, or that it itself is quitting. In the former case, server.name is behind source, and the message is forward on to all other servers. In the latter case, source and server.name are equal, the receiving server closes the link and forwards the SQUIT message.</p>
|
||||
<p>Unreal closes a direct link by simply sending an ERROR message and then closing the TCP connection. This typically causes the other end to generate an SQUIT bearing the message "Client exited" or similar, however, the ERROR will usually cause the server to send a message to all IRCops.</p>
|
||||
<h2><a name="S4_3"></a>4.3 SDESC - Server Description (TOKEN: AG)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> AG :<i>newdesc</i></tt></p>
|
||||
<p>The server to which source is connected to should have it's description updated to newdesc. This does NOT include the VL inforamtion.</p>
|
||||
<h2><a name="S4_4">4.4 PING - Live Connection Query (TOKEN: 8)</a></h2>
|
||||
<p><b>Syntax:</b> <tt>8 <i>source</i>[ :<i>destination</i>]</tt></p>
|
||||
<p>Used to check if a connection is still live if it has been "quiet" for a certain amount of time. Typically, unreal will send PING requests at intervals determined by the class::pingfreq setting. PINGs originating from the direct uplink will use the token, but it seems PINGs originating from a distant server will not.</p>
|
||||
<p>The response to a PING is sent with the <a href="#S4_5">PONG</a> command.</p>
|
||||
<p>When receiving a two-parameter PING, the second parameter is the target. If the target isn't you, you can either reply on behalf of that target (using its name instead of yours), or if there is a real connection representing the target, forward the PING to the target.</p>
|
||||
<h2><a name="S4_5">4.5 PONG - Live Connection Reply (TOKEN: 9)</a></h2>
|
||||
<p><b>Syntax:</b> <tt>9 <i>source</i>[ :<i>destination</i>]</tt></p>
|
||||
<p>Used to respond to a <a href="#S4_4">PING</a> query.</p>
|
||||
<p><b>Responding to a ping:</b> Once a PING is received, you usually have an amount of time to respond equal to your class::pingfreq. The correct response will always have two parameters. If you received one parameter, then the received parameter becomes the second parameter of your response, and the first parameter is your server name. If you received two parameters, the response returns both parameters in reverse order.</p>
|
||||
<p>For example, the response to <tt>8 uplink.server</tt> is <tt>9 my.name uplink.server</tt>, while the response to <tt>PING distant.server your.server</tt> is <tt>9 your.server distant.server</tt>. Unreal typically includes a : prior to the last parameter. This isn't required if that parameter contains no spaces, but it is especially important to not include the colon when reversing the parameters, or else Unreal mistake it for a single-parameter PONG.
|
||||
<p>If a two-parameter PONG is received, the second parameter names the target. If the target is not you, and a real connection represents that target, you should forward the PONG message via that connection.</p>
|
||||
<h2><a name="#S4_6"></a>4.6 STATS - Server Stats (TOKEN: 2)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> 2 [<i>type</i> [<i>server</i>] [<i>extended-params</i>]]</tt></p>
|
||||
<p>Requests statistics or configuration information from a server. This command is used to transport cross-server STATS requests from users (eg: /stats o other.server), and should only be sent from a user (not a server). With no parameters, this will cause unreal to simply dump its help output. <i>type</i> is the type of stats to request, <i>server</i> names a server (or a user on that server) to request stats from, and <i>extended-params</i> is used to filter output from STATS G, etc. When received, it is up to the receiver to determine what stats to support and how to reply, but generally numeric replies are used. For the list of unreal's stats types, type /stats in a client for the helptext dump.</p>
|
||||
<p><b>Note:</b> Stats set as oper-only (see set::oper-only-stats) will be refused from a server. In this case, it will be necessary to send the stats request from a psuedo-oper (such as a services agent, etc) for services/stats/etc.</p>
|
||||
<hr/>
|
||||
<h1><a name="S5"></a>5 Channel Operations</h1>
|
||||
<p>These commands deal with the state of channels across the network. Unreal only supports Network Channels, where the first character is a # character.</p>
|
||||
<h2><a name="S5_1"></a>5.1 SJOIN - Channel Burst (TOKEN: ~)</h2>
|
||||
<p><b>Syntax:</b> <tt>@<i>servernumeric</i> ~ <i>timestamp</i> <i>channel</i> +<i>modes</i>[ <i>modeparams</i>] :<i>memberlist</i> <i>&ban</i> <i>"exempt</i> <i>'invex</i></tt></p>
|
||||
<p>Timestamp is the channel timestamp and can be !b64 as defined by PROTOCTL SJB64. Modes should only include those in the last three mode sets listed in CHANMODES. Modeparams is one parameter for each mode character that requires one. Memberlist is a series of users (all of which must at least be behind the server sending the SJOIN), each user is prefixed with one or more characters indicating their status. Owners (+q) are prefixed with *, admins (+a) ~, ops (+o) @, halfops (+h) %, voices (+v) +. Normal users are not prefixed with anything. Ban, ban exception, and invite exception masks are also included, with bans prefixed with &, ban exceptions prefixed with ", and invite exceptions with '. Note that when a &, " or ' is encountered as the first character, further processing of ~, *, @, %, or + characters must not continue because ban, exempt, and invite masks can contain any of those characters. (Plus it's just not right for a ban mask to be marked as a channel admin...)</p>
|
||||
<p>If the channel didn't already exist it is created with the information given in the SJOIN. Otherwise the timestamp is used to determine how the SJOIN information is handled. As a given, all members are joined into the channel, regardless. The mode information (modes, modeparams, memberlist prefixes, bans, exempts, and invites) is subject to the timestamp rules:</p>
|
||||
<ul>
|
||||
<li>If the channel's current timestamp is equal to the timestamp in SJOIN, then the mode information is merged.</li>
|
||||
<li>If the channel's current timestamp is less than the SJOIN timestamp, then the mode information is ignored.</li>
|
||||
<li>If the channel's current timestamp is greater than the SJOIN timestamp, then the channel's existing mode information is cleared (for example, deop, etc all local clients), and the SJOIN mode information is added.</li>
|
||||
</ul>
|
||||
<p>When merging modes, conflicting modes (including +p vs +s, differing +l limits or +k keys, etc) are handled as follows:</p>
|
||||
<ul>
|
||||
<li><b>Private (+p) vs. Secret (+s):</b> Secret (+s) is preferred. Private (+p) is removed. (Note: there is a <a href="http://bugs.unrealircd.org/view.php?id=2391">bug</a> in Unreal versions prior to 3.2.3 in which a desynch will occur in which one side is +p and the other is +s. Update to Unreal 3.2.4 if you have problems with this.)</li>
|
||||
<li><b>Strip Color (+S) vs. Block Color (+c):</b> Block (+c) is preferred. Strip (+S) is removed. (Note: Bug for +p vs. +s in prior unreal versions apply here as well.)</li>
|
||||
<li><b>Channel Limit:</b> Numericly larger limit is preferred (for example, +l 30 versus +l 15 : +l 30 wins).</li>
|
||||
<li><b>Channel Key:</b> "Larger" key (as defined by strcmp) is preferred (for example, +k moo versus +k meow : +k moo wins).</li>
|
||||
<li><b>Channel Link:</b> "Larger" link name (as defined by stricmp - not case sensitive) is preferred (for example, +L #moo versus +L #meow : +L #moo wins, but +L #Meow versus +L #meow : values are equal).</li>
|
||||
<li><b>Flood String:</b> Not really sure on this. I think larger value in each component wins.</li>
|
||||
<li><b>Join-Throttle:</b> Highest of time period wins, if equal, highest of join amount wins (so +j 3:40 beats +j 5:20 but +j 5:20 beats +j 3:20).</li>
|
||||
<li>Parameterized modes in third party modules will define their own conflict resolution formula.</li>
|
||||
</ul>
|
||||
<h2><a name="S5_2"></a>5.2 JOIN - Channel Join (TOKEN: C)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> C <i>#channel</i></tt></p>
|
||||
<p>Indicates a user has joined a channel. Only one channel is sent this way, and the key is not sent even if the user gave one one joining. If the channel parameter is the special "0" case, the server must interpret the message as a PART for all channels the user is on.</p>
|
||||
<h2><a name="S5_3"></a>5.3 PART - Channel Part (TOKEN: D)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> D <i>#channel</i>[ :<i>reason</i></tt>]</p>
|
||||
<p>Indicates a user has left a channel. Only one channel is sent this way. The reason parameter may be left out if no reason was given.</p>
|
||||
<h2><a name="S5_4"></a>5.4 KICK - Channel Kick (TOKEN: H)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> H <i>#channel</i> <i>user</i> :<i>reason</i></tt></p>
|
||||
<p>Orders the forced removal of user from #channel with the given reason. When updating state for this command, it should be the same as if :user PART #channel had been received - the user is removed from #channel's memberlist.</p>
|
||||
<h2><a name="S5_5"></a>5.5 MODE - Channel Mode (TOKEN: G)</h2>
|
||||
<p><b>Note:</b> This is the same command as that used for usermode changes.</p>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> G <i>#channel</i> <i>modechange</i> <i>modeparams</i>[ <i>timestamp</i>]</tt></p>
|
||||
<p>Changes the specified modes on the given channel. If the source is a server and the last parameter is numeric, it is interpreted as timestamp (although it can also be consumed as a parameter for modes. For example: :server.name MODE #channel +l 4 <-- 4 will be a timestamp and the +l parameter). When a mode change is timestamped in this way, the mode is treated as it is with SJOIN: the MODE message is ignored if the timestamp is greater than the channel timestamp. (If the timestamp is equal, the mode is simply added replacing any conflicting modes already in place.)</p>
|
||||
<p>A services implementation can easily clear all entries in a list mode such as bans with SVSMODE (see below).</p>
|
||||
<h2><a name="S5_6"></a>5.6 INVITE - Invite a user to a channel (TOKEN: *)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> * <i>target</i> <i>#channel</i></tt></p>
|
||||
<p>Sends to target an invitation to join #channel. If the source is a channel operator on #channel, or a U:Lined server, the invitation grants the user the temporary ability to join the channel regardless of any bans or some restricting channel modes (not +O or +A).</p>
|
||||
<h2><a name="S5_7"></a>5.7 SAJOIN - Channel Force Join (TOKEN: AX)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> AX <i>targetuser</i> <i>#channel</i></tt></p>
|
||||
<p>This requests the forced join of targetuser to #channel. This type of forced join overrides bans, and most modes. The server to which targetuser is connected to must actually acknowledge the join for it to occur. Service implementations may ignore this command, as they would only ever receive it if an SAJOIN was targeted at a service client, in which case it should be ignored...</p>
|
||||
<h2><a name="S5_8"></a>5.8 SAPART - Channel Force Part (TOKEN: AY)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> AY <i>targetuser</i> <i>#channel</i>[ :<i>reason</i>]</tt></p>
|
||||
<p>This requests the forced part of targetuser from #channel. This is slightly different from a KICK in that the user's removal is announced with PART. The server to which targetuser is connected to must actually acknowledge the part for it to occur. Service implementations may ignore this command, as they would only ever receive it if an SAPART was targeted at a service client, in which case it should be ignored...</p>
|
||||
<p>The reason field is optional. If provided the acknowledging PART message should prefix the message with "SAPart:".</p>
|
||||
<h2><a name="S5_9"></a>5.9 SAMODE - Channel Force Mode (TOKEN: o)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> o <i>#channel</i> <i>modechange</i> <i>modeparams</i></tt></p>
|
||||
<p>This has the same parameters as for MODE. The only difference is that servers probably will never receive this (but is best to document just in case), and that absolutely NO permission checking is done on anything.</p>
|
||||
<h2><a name="S5_10"></a>5.10 TOPIC - Channel Topic (TOKEN: ) )</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> ) <i>#channel</i> <i>nick</i> <i>timestamp</i> :<i>topic</i></tt></p>
|
||||
<p>Changes the channel topic information. This format is used when synching, as well as when a topic is changed normally. Nick is the user who changed the topic (depending on compile options, it can be just nick or a full nick!user@host), timestamp is when the change occured, and topic is the new topic text. Normally, only a newer timestamp will actually change the topic, but a U:Lined server can use an older timestamp as well (such as for TOPICLOCK).
|
||||
<hr/>
|
||||
<h1><a name="S6"></a>6 Services Commands</h1>
|
||||
<p>These are commands typically employed by a service implementation, in addition to some of the normal commands. All of the commands listed here require the sender to be correctly U:Lined. This means that the services server name must appear within a ulines {} block in the unrealircd.conf configuration for ALL servers in the network. All servers and clients behind a U:Lined server are themselves U:Lined.</p>
|
||||
<h2><a name="S6_1"></a>6.1 SVSKILL - Force Disconnect by Service (TOKEN: h)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> h <i>target</i> :<i>reason</i></tt></p>
|
||||
<p>This command is similar to KILL but differs in several ways. First of all: there is no mutilation of the reason value. The reason given is the exact reason used to generate QUIT messages sent to users. Second, it is silent; no server notice is generated in response to this command. Third, it can only be used by a U:Lined server or client (such as services).</p>
|
||||
<p>Because this command can be dangerous in the hands of an abusive person, service implementations should avoid granting humans control over the reason parameter. In cases of commands where a person has control over such parameter, either use a regular KILL instead, or otherwise modify the reason so that operators can be held accountable if necessary.</p>
|
||||
<h2><a name="S6_2"></a>6.2 SVSMODE, SVS2MODE - Force User Mode Change (TOKEN: n or v)</h2>
|
||||
<p><b>Syntax (SVSMODE):</b> <tt>:<i>source</i> n <i>target</i> +<i>usermodes</i></tt></p>
|
||||
<p><b>Syntax (SVS2MODE):</b> <tt>:<i>source</i> v <i>target</i> +<i>usermodes</i></tt></p>
|
||||
<p>Judging by these commands alone, you'd think they are identical. Both commands force a usermode change to occur. This is typically used by services to set +r on a user who has successfully identified. They differ in that SVS2MODE also sends the mode change to the user, while SVSMODE does not (hidden mode change).</p>
|
||||
<p>SVSMODE and SVS2MODE also give special treatment to usermode +d. Rather than setting the deaf mode like you might expect, SVS(2)MODE +d allows services to change a user's services stamp (which is given in the NICK message). This could allow services to set the service stamp to an easily identifiable value that could then be used to say "hey, this person identified already". The syntax of this is: +d <i>newservicestamp</i> and can be combined with setting other usermodes as well. The deaf mode <b>can</b> be set by using +d without the service stamp parameter; however, in this case you <b>cannot</b> set the service stamp in the same SVS(2)MODE message.</p>
|
||||
<p><b>Note:</b> Do <b>NOT</b> use SVSMODE to remove IRCop status from a user. Use the SVSO command for that instead.</p>
|
||||
<p>Alternatively, target can name a channel. In this case, the mode change parameter can consist of a - character, followed by any or all of: b, e, I, q, a, o, h, or v. These characters cause the corresponding lists to be cleared of all entries. For example: SVSMODE #channel -b removes ALL bans from #channel, and SVSMODE #channel -qaohv turns ALL users on #channel into normal users (removes all owner, admin, op, halfop, and voice status). In this case, the uplink will acknowledge with a MODE listing the bans, etc that were removed.</p>
|
||||
<p>To completely clear a channel of all modes: MODE #channel -cfijklmnprstzACGMKLNOQRSTVu (plus any added by third-party module) followed by SVSMODE #channel -beIqaohv.</p>
|
||||
<h2><a name="S6_3"></a>6.3 SVSSNO, SVS2SNO - Forced SNomask Change (TOKEN: BV or BW)</h2>
|
||||
<p><b>Syntax (SVSSNO):</b> <tt>:<i>source</i> BV <i>target</i> +<i>snomasks</i></tt></p>
|
||||
<p><b>Syntax (SVS2SNO):</b> <tt>:<i>source</i> BW <i>target</i> +<i>snomask</i></tt></p>
|
||||
<p>Changes a user's snomasks. The difference between SVSSNO and SVS2SNO is the same as with SVSMODE versus SVS2MODE. If the user is not +s, you must add it via SVSMODE +s. For example:</p>
|
||||
<pre>:OperServ v someuser +s
|
||||
:OperServ BW someuser +ks</pre>
|
||||
<h2><a name="S6_4"></a>6.4 SVSNICK - Forced Nick Change (TOKEN: e)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> e <i>target</i> <i>newnick</i> :<i>newtimestamp</i></tt></p>
|
||||
<p>Forces the specified user to change his nick to newnick and also sets the nick timestamp to newtimestamp (so, for example, services could protect identified users from a nick collision by simply setting the nick timestamp to something way less than "now" - though currently this requires actually changing the nick too). SVSNICK requires the server to which the target is connected to acknowledge the nick change. If the user specified by newnick already exists, then target will be disconnected (even if it's something like a case-change).</p>
|
||||
<h2><a name="S6_5"></a>6.5 SVSJOIN - Forced Join (TOKEN: BX)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> BX <i>target</i> <i>#channel</i></tt></p>
|
||||
<p>This is identical to SAJOIN with a few exceptions: 1) It is U:Line-only. 2) No opernotice on use. 3) Bans and restricting modes are respected, a prior INVITE message must be sent to cause bans to be ignored.</p>
|
||||
<h2><a name="S6_6"></a>6.6 SVSPART - Forced Part (TOKEN: BT)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> BT <i>target</i> <i>#channel</i> :<i>reason</i></tt></p>
|
||||
<p>Also identical to SAPART with a few exceptions: no static prefix on the optional part reason, and no global notice, and requires a U:Line. Usage recommendation of SVSPART versus KICK is the same as for SVSKILL versus KILL.</p>
|
||||
<h2><a name="S6_7"></a>6.7 SVSO - Oper Permissions (TOKEN: BB)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> BB <i>target</i> <i>flagchanges</i></tt></p>
|
||||
<p>This allows a service to add or remove IRCop permission flags for a user. Flagchanges is formatted similar to that of MODE with the exception that operflags are used instead of usermodes. If the change string consists only of -, then all oper permissions, usermodes, and snomasks are removed (as if the user had himself typed MODE nick -Oo).</p>
|
||||
<p>If you are granting IRCop permissions to a user who is not currently an IRCop, you should follow up with an SVSMODE +o or SVSMODE +O as appropriate. For example:</p>
|
||||
<pre>:OperServ BB somenick +o
|
||||
:OperServ BW somenick +cefknoqsSv
|
||||
:OperServ AL somenick local.oper.somethinghere.net
|
||||
:OperServ v somenick +Ohs </pre>
|
||||
<h2><a name="S6_8"></a>6.8 SVSNOOP - Oper Lockdown (TOKEN: f)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> f <i>(op)</i><i>server.name</i></tt></p>
|
||||
<p>The (op) parameter is either a + or - indicating if NOOP mode should be activated (+) or deactivated (-). When NOOP mode is activated, all IRCops on the server are deopered (including local operators) and the /oper command is disabled. IRCop privileges can still be granted through use of SVSO. On UnrealIRCd, it is not necessary to masskill all IRCops on the nooped server, as they are deopered automatically.</p>
|
||||
<h2><a name="S6_9"></a>6.9 SVSNLINE - RealName Ban (TOKEN: BR)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> BR <i>op</i> <i>reason</i> :<i>realname mask</i></tt></p>
|
||||
<p>Op is either + (add) or - (remove). In the case of +, reason is a space-escaped string (all space chars are encoded as _). If -, reason is ignored.</p>
|
||||
<h2><a name="S6_10"></a>6.10 SVSFLINE - File Ban (TOKEN: BC)</h2>
|
||||
<p><b>Syntax (add):</b> <tt>:<i>source</i> BC + <i>filemask</i> :<i>reason</i></tt></p>
|
||||
<p><b>Syntax (remove):</b> <tt>:<i>source</i> BC - <i>filemask</i></tt></p>
|
||||
<p><b>Syntax (clear):</b> <tt>:<i>source</i> BC *</tt></p>
|
||||
<p>Adds or removes a DCCDENY item for the specified filemask on all servers. These DCCDENYs are hard dccdenies - the /dccallow command cannot override it. The last form removes all dccdenies added via SVSFLINE.</p>
|
||||
<hr/>
|
||||
<h1><a name="S7"></a>7 Messaging</h1>
|
||||
<p>What good is Internet Relay <b>CHAT</b> if users cannot <b>CHAT</b>? This section addresses the commands through which arbitrary user messages are sent.</p>
|
||||
<h2><a name="S7_1"></a>7.1 PRIVMSG, NOTICE - Simple Message Transmission (Token: ! or B)</h2>
|
||||
<p><b>PRIVMSG Syntax:</b> <tt>:<i>source</i> ! <i>target</i> :<i>message</i></tt></p>
|
||||
<p><b>NOTICE Syntax:</b> <tt>:<i>source</i> B <i>target</i> :<i>message</i></tt></p>
|
||||
<p>Sends a messages to the given target. The target either names a single client, or identifies a list of clients in which the message is to be sent to. The available targets include:</p>
|
||||
<ul>
|
||||
<li><i>nickname</i>: Names a single user to whom the message is delivered.</li>
|
||||
<li><i>nickname</i>@<i>servermask</i>: Also names a single user, but the message will only be delivered if the user is connected to a server matching the specified servermask. This is typically used for sending messages to services. The target must not be changed at any point along the path it must travel for delivery, even up to the final receipt of the message by the target. This allows the target to know it has been sent a message in this way.</li>
|
||||
<li>#<i>channelname</i>: Sends a message to all users on the specified channel (except when channel is a moderated auditorium (+mu), in which case the wierd +mu sending behavior goes off).</li>
|
||||
<li><i>modeprefix</i>#<i>channelname</i>: Sends a message to all users on the given channel having the given status or higher. For example: + means all voices, halfops, etc.</li>
|
||||
<li>$<i>servermask</i>: Sends a message to ALL users on all servers matching the specified servermask (known as a server broadcast message). The RFC requirements of having a TLD with no wildcards is not applied to U:Lined clients.</li>
|
||||
</ul>
|
||||
<p>Unreal does not support the #hostmask format.</p>
|
||||
<h2><a name="S7_2"></a>7.2 SENDUMODE, SMO - Usermode-based Delivery (TOKEN: AP or AU)</h2>
|
||||
<p><b>Syntax:</b> <tt>@<i>servernumeric</i> AU <i>umode</i> :<i>message</i></tt></p>
|
||||
<p>Sends the specified message to all users with the given mode. Only one usermode may be given. This is a server-only command if you can't tell from the sender prefix :) .</p>
|
||||
<p>The message will be displayed as coming from the receiving client's own server. It may be appropriate to add a "*** Notice (or other leader here) -- from blah:" if you wish to clarify where the message is from.</p>
|
||||
<h2><a name="S7_3"></a>7.3 SENDSNO - SNomask-based Delivery (TOKEN: Ss)</h2>
|
||||
<p><b>Syntax:</b> <tt>@<i>servernumeric</i> Ss <i>snomask</i> :<i>message</i></tt></p>
|
||||
<p>Sends the specified message to all users with the given snomask. Only one snomask may be given. This is a server-only command if you can't tell from the sender prefix :) .</p>
|
||||
<p>The message will be displayed as coming from the receiving client's own server. It may be appropriate to add a "*** Notice (or other leader here) -- from blah:" if you wish to clarify where the message is from.</p>
|
||||
<h2><a name="S7_4"></a>7.4 CHATOPS - IRCop Chat (TOKEN: p)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> p :<i>message</i></tt></p>
|
||||
<p>Sends the message to all IRCops on all servers.</p>
|
||||
<h2><a name="S7_5"></a>7.5 WALLOPS - Wallop Chat (TOKEN: =)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> = :<i>message</i></tt></p>
|
||||
<p>Sends the message to all users with usermode +w, whether they are ircops or not.</p>
|
||||
<h2><a name="S7_6"></a>7.6 GLOBOPS - FailOp Chat (TOKEN: ])</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> ] :<i>message</i></tt></p>
|
||||
<p>Send the message to all IRCops with usermode +g.</p>
|
||||
<h2><a name="S7_7"></a>7.7 ADCHAT - Admin Chat (TOKEN: x)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> x :<i>message</i></tt></p>
|
||||
<p>Send the message to all Server and Network Admins (usermode +A).</p>
|
||||
<h2><a name="S7_8"></a>7.8 NACHAT - NetAdmin Chat (TOKEN: AC)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> AC :<i>message</i></tt></p>
|
||||
<p>Send the message to all Network Admins (usermode +N).</p>
|
||||
<hr/>
|
||||
<h1><a name="S8"></a>8 Ban Control</h1>
|
||||
<p>Sometimes, you have the misfortune of encountering a user who has no purpose but to serve as an annoyance to your server or network. These commands transmit network-wide ban information amongst each other.</p>
|
||||
<h2><a name="S8_1"></a>8.1 TKL - Master Ban Control (TOKEN: BD)</h2>
|
||||
<p>The TKL command seems to have one oddity about it: the real ban source is included in the TKL command rather than in the sender prefix. Most likely this is done for synching reasons (so that the *line ban can be credited to the proper person even if he/she is offline). For this reason, the command syntax is given without any sender prefix at all. It is still permissible to use one, however.</p>
|
||||
<h3><a name="S8_1_1"></a>8.1.1 GLINE - Network-wide user@host ban</h3>
|
||||
<p><b>Add Syntax (TKL):</b> <tt>BD + G <i>userpart</i> <i>hostpart</i> <i>source</i> <i>expiretimestamp</i> <i>settimestamp</i> :<i>reason</i></tt></p>
|
||||
<p><b>Remove Syntax (TKL):</b> <tt>BD - G <i>userpart</i> <i>hostpart</i> <i>source</i></tt></p>
|
||||
<p>Adds and Removes Network-wide user@host bans, known as G:Lines. The GLINE command itself must not be used. The userpart and hostpart are the user portion and hostname portion of the ban mask. The expiretimestamp is 0 if the G:Line should not expire, otherwise it will expire at the given time. It is an absolute time, not relative, thus it's imperitive to have reasonably synchrnoized clocks or bans may be removed too early or even immediately!</p>
|
||||
<h3><a name="S8_1_2"></a>8.1.2 GZLINE - Network-wide IP ban</h3>
|
||||
<p><b>Add Syntax (TKL):</b> <tt>BD + Z * <i>ipmask</i> <i>source</i> <i>expiretimestamp</i> <i>settimestamp</i> :<i>reason</i></tt></p>
|
||||
<p><b>Remove Syntax (TKL):</b> <tt>BD - Z * <i>ipmask</i> <i>source</i></tt></p>
|
||||
<p>Adds and Removes Network-wide IP bans, known as Global Z:Lines. The GZLINE command itself must not be used. Ipmask permits CIDR notation as well as wildcard masks.</p>
|
||||
<h3><a name="S8_1_3"></a>8.1.3 SQLINE, UNSQLINE - Network-wide Nickname ban (TOKEN: c or d)</h3>
|
||||
<p><b>Add Syntax (TKL):</b> <tt>BD + Q <i>hold</i> <i>nickmask</i> <i>source</i> <i>expiretimestamp</i> <i>settimestamp</i> :<i>reason</i></tt></p>
|
||||
<p><b>Add Syntax (SQLINE):</b> <tt>:<i>source</i> c <i>nickmask</i> :<i>reason</i></tt></p>
|
||||
<p><b>Remove Syntax (TKL):</b> <tt>BD - Q <i>hold</i> <i>nickmask</i> <i>source</i></tt></p>
|
||||
<p><b>Remove Syntax (UNSQLINE):</b> <tt>:<i>source</i> d <i>nickmask</i></tt></p>
|
||||
<p>In the TKL syntax, the hold parameter is either a * to mark the qline as a nick ban, or an H to mark it as a services hold. A services hold does not trigger qline rejection notice, and is typically used by NickServ to reserve registered nicks until they are released by the owner. The (UN)SQLINE syntax can only be used by a server, but any user can be used as the source for the TKL syntax. Unlike G and GZ lines, Q:Lines do not cause existing matching users to be disconnected or otherwise affected.</p>
|
||||
<p>The TKL syntax is preferred, since it is more flexible, but (UN)SQLINE is permitted for compatibility.</p>
|
||||
<h3><a name="S8_1_4"></a>8.1.4 SPAMFILTER - Message Spam Filtration System</h3>
|
||||
<p>Proper use of spamfilter in TKL commands requires use of PROTOCTL TKLEXT, which increases the number of parameters allowed in TKL.</p>
|
||||
<p><b>Add Syntax (TKL):</b> <tt>BD + F <i>target(s)</i> <i>action</i> <i>source</i> 0 <i>settimestamp</i> <i>tklduration</i> <i>tklreason</i> :<i>regex</i></tt></p>
|
||||
<p><b>Remove Syntax (TKL):</b> <tt>BD - F <i>target(s)</i> <i>action</i> <i>source</i> 0 <i>settimestap</i> :<i>regex</i></tt></p>
|
||||
<p>Adds and Removes network-wide spamfilters. The SPAMFILTER command itself must not be used. See <a href="http://vulnscan.org/UnrealIrcd/unreal32docs.html#feature_spamfilter">http://vulnscan.org/UnrealIrcd/unreal32docs.html#feature_spamfilter</a> for a list of valid targets. For actions, a single character is used to identify the action to be taken:</p>
|
||||
<ul>
|
||||
<li>K (kill) - The user is simply disconnected, with the reason given.</li>
|
||||
<li>S (tempshun) - A temporary shun is placed on the user. This shun is applied only to that user, and disappears if the user reconnects.</li>
|
||||
<li>s (shun) - A regular shun on the user's IP address is added. This causes all users with the same hostname to be shunned, but they will also stay shunned if they reconnect.</li>
|
||||
<li>k (kline) - A K:Line is added on the user's IP address.</li>
|
||||
<li>z (zline) - A Z:Line is added on the user's IP address.</li>
|
||||
<li>g (gline) - A G:Line is added on the user's IP address.</li>
|
||||
<li>Z (gzline) - A Global Z:Line is added on the user's IP address.</li>
|
||||
<li>b (block) - Messages (or users!) matching the filter are simply blocked.</li>
|
||||
<li>d (dccblock) - The user is prevented from sending files using DCC for the remainder of his session (in other words, until he quits).</li>
|
||||
<li>v (viruschan) - User is removed from all channels, joined to the viruschan as defined in conf, and cannot message anything but that channel.</li>
|
||||
<li>w (warn) - No action on the user is taken. Only the Spamfilter notice is sent to opers with snomask +S.</li>
|
||||
</ul>
|
||||
<h1><a name="S9">9 Base64 Tables</a></h1>
|
||||
<p>Unreal uses base64 encoding to allow saving bandwidth by encoding numbers in a more compact format. Unreal uses two different variations of base64, one used for the SJB64 PROTOCTL option (in NICK and SJOIN), and one used for NICKIP.</p>
|
||||
<h2><a name="S9_1">9.1 Table for SJB64 (NICK and SJOIN).</a></h2>
|
||||
<p>In NICK and SJOIN, remember that the timestamp will be prefixed with ! to signal a base64 timestamp.</p>
|
||||
<p>Just like in base10, the least significant "digit" is last.</p>
|
||||
<pre> 0 0 17 H 34 Y 51 p
|
||||
1 1 18 I 35 Z 52 q
|
||||
2 2 19 J 36 a 53 r
|
||||
3 3 20 K 37 b 54 s
|
||||
4 4 21 L 38 c 55 t
|
||||
5 5 22 M 39 d 56 u
|
||||
6 6 23 N 40 e 57 v
|
||||
7 7 24 O 41 f 58 w
|
||||
8 8 25 P 42 g 59 x
|
||||
9 9 26 Q 43 h 60 y
|
||||
10 A 27 R 44 i 61 z
|
||||
11 B 28 S 45 j 62 {
|
||||
12 C 29 T 46 k 63 }
|
||||
13 D 30 U 47 l
|
||||
14 E 31 V 48 m
|
||||
15 F 32 W 49 n
|
||||
16 G 33 X 50 o</pre>
|
||||
<h2><a name="S9_2">9.2 Table for NICKIP.</a></h2>
|
||||
<p>In this table, the IP is encoded in network byte order. In terms of IPs, this means the first byte of the address really is first. Each "digit" in the base64 encoded IP corresponds to 6 bits of the IP address.</p>
|
||||
<p>An IPv4 address is 32 bits, so 6 base64 "digits" are needed. Since base64 requires values to come in multiples of 4 "digits", padding characters (=) need to be added if a value comes up short. In the case of IPv4 addresses, two are needed.</p>
|
||||
<p>IPv6 addresses are 128-bit. They therefore need 22 base64 "digits" plus 2 pad characters.</p>
|
||||
<pre> 0 A 17 R 34 i 51 z
|
||||
1 B 18 S 35 j 52 0
|
||||
2 C 19 T 36 k 53 1
|
||||
3 D 20 U 37 l 54 2
|
||||
4 E 21 V 38 m 55 3
|
||||
5 F 22 W 39 n 56 4
|
||||
6 G 23 X 40 o 57 5
|
||||
7 H 24 Y 41 p 58 6
|
||||
8 I 25 Z 42 q 59 7
|
||||
9 J 26 a 43 r 60 8
|
||||
10 K 27 b 44 s 61 9
|
||||
11 L 28 c 45 t 62 +
|
||||
12 M 29 d 46 u 63 /
|
||||
13 N 30 e 47 v
|
||||
14 O 31 f 48 w (pad) =
|
||||
15 P 32 g 49 x
|
||||
16 Q 33 h 50 y</pre>
|
||||
</body>
|
||||
</html>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<!-- $Id$ -->
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
|
||||
<title>Unreal 3.2 Protocol Documentation</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1 style="text-align: center;">Unreal 3.2 Protocol Documentation</h1>
|
||||
<h3 style="text-align: center;">Last update: 29 November 2006</h3>
|
||||
<h1>Table of Contents</h1>
|
||||
<p><a href="#S1">1 Introduction</a></p>
|
||||
<p><a href="#S2">2 Server Negotiation</a></p>
|
||||
<blockquote><p><a href="#S2_1">2.1 PASS - Connection Password</a></p></blockquote>
|
||||
<blockquote><p><a href="#S2_2">2.2 PROTOCTL - Server Protocol Negotiation</a></p></blockquote>
|
||||
<blockquote><p><a href="#S2_3">2.3 SERVER - Server Negotiation</a></p></blockquote>
|
||||
<blockquote><p><a href="#S2_4">2.4 EOS - End Of Synch</a></p></blockquote>
|
||||
<blockquote><p><a href="#S2_5">2.5 NETINFO - Network Information</a></p></blockquote>
|
||||
<p><a href="#S3">3 User Operations</a></p>
|
||||
<blockquote><p><a href="#S3_1">3.1 NICK - User Introduction and Nick Change</a></p></blockquote>
|
||||
<blockquote><blockquote><p><a href="#S3_1_1">3.1.1 Nick Collisions</a></p></blockquote></blockquote>
|
||||
<blockquote><p><a href="#S3_2">3.2 MODE, UMODE2 - User Mode Change</a></p></blockquote>
|
||||
<blockquote><p><a href="#S3_3">3.3 QUIT - User Disconnect</a></p></blockquote>
|
||||
<blockquote><p><a href="#S3_4">3.4 KILL - Force Disconnect</a></p></blockquote>
|
||||
<blockquote><p><a href="#S3_5">3.5 SETHOST/CHGHOST - Change virtual host</a></p></blockquote>
|
||||
<blockquote><p><a href="#S3_6">3.6 SETIDENT/CHGIDENT - Change a user's username</a></p></blockquote>
|
||||
<blockquote><p><a href="#S3_7">3.7 SETNAME/CHGNAME - Change a user's realname</a></p></blockquote>
|
||||
<blockquote><p><a href="#S3_8">3.8 WHOIS - User Information</a></p></blockquote>
|
||||
<p><a href="#S1">4 Server Operations</a></p>
|
||||
<blockquote><p><a href="#S4_1">4.1 SERVER - Server Introduction</a></p></blockquote>
|
||||
<blockquote><p><a href="#S4_2">4.2 SQUIT - Server Removal</a></p></blockquote>
|
||||
<blockquote><p><a href="#S4_3">4.3 SDESC - Server Description</a></p></blockquote>
|
||||
<blockquote><p><a href="#S4_4">4.4 PING - Live Connection Query</a></p></blockquote>
|
||||
<blockquote><p><a href="#S4_5">4.5 PONG - Live Connection Reply</a></p></blockquote>
|
||||
<blockquote><p><a href="#S4_6">4.6 STATS - Server Stats</a></p></blockquote>
|
||||
<p><a href="#S5">5 Channel Operations</a></p>
|
||||
<blockquote><p><a href="#S5_1">5.1 SJOIN - Channel Burst</a></p></blockquote>
|
||||
<blockquote><p><a href="#S5_2">5.2 JOIN - Channel Join</a></p></blockquote>
|
||||
<blockquote><p><a href="#S5_3">5.3 PART - Channel Part</a></p></blockquote>
|
||||
<blockquote><p><a href="#S5_4">5.4 KICK - Channel Kick</a></p></blockquote>
|
||||
<blockquote><p><a href="#S5_5">5.5 MODE - Channel Mode</a></p></blockquote>
|
||||
<blockquote><p><a href="#S5_6">5.6 INVITE - Invite a user to a channel</a></p></blockquote>
|
||||
<blockquote><p><a href="#S5_7">5.7 SAJOIN - Channel Force Join</a></p></blockquote>
|
||||
<blockquote><p><a href="#S5_8">5.8 SAPART - Channel Force Part</a></p></blockquote>
|
||||
<blockquote><p><a href="#S5_9">5.9 SAMODE - Channel Force Mode</a></p></blockquote>
|
||||
<blockquote><p><a href="#S5_10">5.10 TOPIC - Chanel Topic</a></p></blockquote>
|
||||
<p><a href="#S6">6 Services Commands</a></p>
|
||||
<blockquote><p><a href="#S6_1">6.1 SVSKILL - Force Disconnect by Service</a></p></blockquote>
|
||||
<blockquote><p><a href="#S6_2">6.2 SVSMODE, SVS2MODE - Force User Mode Change</a></p></blockquote>
|
||||
<blockquote><p><a href="#S6_3">6.3 SVSSNO, SVS2SNO - Forced SNomask Change</a></p></blockquote>
|
||||
<blockquote><p><a href="#S6_4">6.4 SVSNICK - Forced Nick Change</a></p></blockquote>
|
||||
<blockquote><p><a href="#S6_5">6.5 SVSJOIN - Forced Join</a></p></blockquote>
|
||||
<blockquote><p><a href="#S6_6">6.6 SVSPART - Forced Part</a></p></blockquote>
|
||||
<blockquote><p><a href="#S6_7">6.7 SVSO - Oper Permissions</a></p></blockquote>
|
||||
<blockquote><p><a href="#S6_8">6.8 SVSNOOP - Oper Lockdown</a></p></blockquote>
|
||||
<blockquote><p><a href="#S6_9">6.9 SVSNLINE - RealName Ban</a></p></blockquote>
|
||||
<blockquote><p><a href="#S6_10">6.10 SVSFLINE - File Ban</a></p></blockquote>
|
||||
<p><a href="#S7">7 Messaging</a></p>
|
||||
<blockquote><p><a href="#S7_1">7.1 PRIVMSG, NOTICE - Simple Message Transmission</a></p></blockquote>
|
||||
<blockquote><p><a href="#S7_2">7.2 SENDUMODE, SMO - Usermode-based Delivery</a></p></blockquote>
|
||||
<blockquote><p><a href="#S7_3">7.3 SENDSNO - SNomask-based Delivery</a></p></blockquote>
|
||||
<blockquote><p><a href="#S7_4">7.4 CHATOPS - IRCop Chat</a></p></blockquote>
|
||||
<blockquote><p><a href="#S7_5">7.5 WALLOPS - Wallop Chat</a></p></blockquote>
|
||||
<blockquote><p><a href="#S7_6">7.6 GLOBOPS - FailOp Chat</a></p></blockquote>
|
||||
<blockquote><p><a href="#S7_7">7.7 ADCHAT - Admin Chat</a></p></blockquote>
|
||||
<blockquote><p><a href="#S7_8">7.8 NACHAT - NetAdmin Chat</a></p></blockquote>
|
||||
<p><a href="#S8">8 Ban Control</a></p>
|
||||
<blockquote><p><a href="#S8_1">8.1 TKL - Master Ban Control</a></p></blockquote>
|
||||
<blockquote><blockquote><p><a href="#S8_1_1">8.1.1 GLINE - Network-wide user@host ban</a></p></blockquote></blockquote>
|
||||
<blockquote><blockquote><p><a href="#S8_1_2">8.1.2 GZLINE - Network-wide IP ban</a></p></blockquote></blockquote>
|
||||
<blockquote><blockquote><p><a href="#S8_1_3">8.1.3 SQLINE, UNSQLINE - Network-wide Nickname ban</a></p></blockquote></blockquote>
|
||||
<blockquote><blockquote><p><a href="#S8_1_4">8.1.4 SPAMFILTER - Message Spam Filtration System</a></p></blockquote></blockquote>
|
||||
<p><a href="#S9">9 Base64 Tables</a></p>
|
||||
<blockquote><p><a href="#S9_1">9.1 Table for SJB64 (NICK and SJOIN).</a></p></blockquote>
|
||||
<blockquote><p><a href="#S9_2">9.2 Table for NICKIP.</a></p></blockquote>
|
||||
<hr/>
|
||||
<h1><a name="S1"></a>1 Introduction</h1>
|
||||
<p>This document describes the UnrealIRCd server-to-server protocol as of protocol 2307 (Unreal 3.2.4).
|
||||
It is currently slightly out of date, as the current protocol is 2310, but that should not matter much.</p>
|
||||
<h2>A word about clocks.</h2>
|
||||
<p>Unreal is very time-dependant. Users and channels, for example, are timestamped, and if server clocks are not synchronized properly, things can go very wrong very fast. See <a href="http://vulnscan.org/UnrealIrcd/faq/#67">http://vulnscan.org/UnrealIrcd/faq/#67</a> for more information on this. Note that there is a slight difference between server time and what is actually reported by the UNIX date command or by the C time() function. Unreal can apply an offset to the real time to create the server time, allowing servers to be virtually synchronized when synchronizing the real clocks is not possible (such as on shell servers).
|
||||
I should make it quite clear that GMT time is used for everything. To be specific, timestamps in unreal are 32-bit integer values (actually, however many bits the time_t type is, which is 32 on 32-bit systems such as x86). This integer value is the number of seconds that have elapsed since Midnight January 1, 1970 GMT (can be referred to as Epoch time in the UNIX world). This means that timezones are no problem, nor is daylight savings time (or whatever your country of choice calls it).</p>
|
||||
<hr/>
|
||||
<h1><a name="S2"></a>2 Server Negotiation</h1>
|
||||
<p>The first step to establish a server-to-server communication is to negotiate the connection as a server. Negotiation is done using standard IRC commands - no PROTOCTL options are in force until the link is established. The first step is to open a TCP/IP connection to the target server. The target port must be one described by a listen {} block in the remote server's configuration, and that listen block must not have the clientsonly option. After the connection is open, you will be treated as any other connection and be greeted with the "Looking up your hostname..." and "Checking identd..." notices as you would for a client. As these are NOTICE messages and your session as a server isn't established, they should simply be ignored. Use the commands below to introduce a server connection.</p>
|
||||
<h2><a name="S2_1"></a>2.1 PASS - Connection Password</h2>
|
||||
<p><b>Syntax:</b> <tt>PASS :<i>link password</i></tt></p>
|
||||
<p>The PASS command is used to transmit the password required for a server link. It must match the password specified in the remote server's link::password-receive (which can be crypted), otherwise the link will be rejected. This should be the first message sent.</p>
|
||||
<h2><a name="S2_2"></a>2.2 PROTOCTL - Server Protocol Negotiation</h2>
|
||||
<p><b>Syntax:</b> <tt>PROTOCTL <i>protocol options</i></tt></p>
|
||||
<p>The PROTOCTL command sets several protocol options. The tokens supported are listed below.</p>
|
||||
<ul>
|
||||
<li>NOQUIT : When a netsplit occurs, only send a SQUIT message for each server lost. This server will assume that clients on these servers were also lost and will send the appropriate QUIT messages to local clients and to any non-NOQUIT servers.</li>
|
||||
<li>TOKEN : Use tokenized commands. Tokens are case-sensitive, shortened versions of command names. Tokens will be usually one or two characters.</li>
|
||||
<li>NICKv2 : Use extended NICK message for introducing users. See the NICK command for information about this.</li>
|
||||
<li>VHP : When introducing a user, send his cloaked host as if it were a vhost. Usually used for services to avoid having duplicate code.</li>
|
||||
<li>SJOIN : Supports SJOIN version 1 which is no longer in use. Use with SJ3.</li>
|
||||
<li>SJOIN2 : Supports SJOIN version 2 which is no longer in use. Use with SJ3.</li>
|
||||
<li>UMODE2 : Supports the UMODE2 command, which is a shortened version of MODE for usermode changes.</li>
|
||||
<li>VL : Supports V:Line information. Extends the SERVER message to include version information used in deny version{} blocks. Note that this is assumed - unreal will always send its own version information.</li>
|
||||
<li>SJ3 : Supports SJOIN version 3.</li>
|
||||
<li>NS : Supports server numerics which provides a shorthand for server names. In any circumstance where a :server.name is permitted (the server is the message's real source), @servernumeric may be used instead. In addition, the server.name parameter in the NICK message may be simply the server's numeric. Requires VL support.</li>
|
||||
<li>SJB64 : Timestamps in NICK and SJOIN are expressed in base64 rather than base10.</li>
|
||||
<li>TKLEXT : Supports exntended TKL messages for spamfilter support.</li>
|
||||
<li>NICKIP : Adds an IP parameter to the NICK message, which is the base64 encoding of the user's ip address (in network byte order). Requires NICKv2.</li>
|
||||
<li>NICKCHARS : Indicates the set of enabled nickchar options (see the regular documention for info about this).</li>
|
||||
<li>CHANMODES : (Not required to be sent) This is the same as the CHANMODES value in the 005 for client connections. Useful for autodetecting things like what modes are valid for ChanServ MLOCK, for example.</li>
|
||||
<li>CLK : Supports an extra field in NICK for sending the cloaked host (not vhost).</li>
|
||||
</ul>
|
||||
<p>The syntax examples here follow the conventions for TOKEN and also NS in cases of server-only messages.</p>
|
||||
<h2><a name="S2_3"></a>2.3 SERVER - Server Negotiation</h2>
|
||||
<p><b>Note:</b> This message is also used for introducing additional servers, the format of this message in those cases is described later.</p>
|
||||
<p><b>Syntax (normal):</b> <tt>SERVER <i>server.name</i> 1 :<i>server description</i></tt></p>
|
||||
<p><b>Syntax (with VL):</b> <tt>SERVER <i>server.name</i> 1 :U<i>protocolversion</i>-<i>protocolflags</i> <i>server description</i></tt></p>
|
||||
<p><b>Syntax (with VL and NS):</b> <tt>SERVER <i>server.name</i> 1 :U<i>protocolversion</i>-<i>protocolflags</i>-<i>servernumeric</i> <i>server description</i></tt></p>
|
||||
<p>The literal 1 in the parameter list is the hopcount parameter. Since you are a direct link, your own hopcount will be 1.</p>
|
||||
<p>The server.name is the same as that in the remote server's link:: block. When received from unreal servers, this will be the value of that server's me::name. The protocol version is the numeric protocol version (2306 for example), and the protocol flags are the server's compilation flags (described below). These two fields are checked against the deny version {} blocks in the remote server's configuration. A value of 0 for either field prevents deny version{} checking for that field. The server description can be anything. When received from unreal servers, it'll be the value of me::description.</p>
|
||||
<p>The following version numbers have been used previously:</p>
|
||||
<ul>
|
||||
<li>2310 - Unreal 3.2.9</li>
|
||||
<li>2309 - Unreal 3.2.6, 3.2.7, 3.2.8</li>
|
||||
<li>2308 - Unreal 3.2.5</li>
|
||||
<li>2307 - Unreal 3.2.4</li>
|
||||
<li>2306 - Unreal 3.2.3</li>
|
||||
<li>2305 - Unreal 3.2.2</li>
|
||||
<li>2304 - Unreal 3.2.1</li>
|
||||
<li>2303 - Unreal 3.2beta* through 3.2 Release</li>
|
||||
<li>2302 - Unreal 3.1.1 through 3.1.4</li>
|
||||
<li>2301 - Unreal 3.1 Release</li>
|
||||
<li>2300 - Unreal 3.0 Release</li>
|
||||
</ul>
|
||||
<p>The compile flags as specified in protocol flags are:</p>
|
||||
<ul>
|
||||
<li>c : Server is chrooted (#define CHROOTDIR).</li>
|
||||
<li>C : Server has command line config (-f option) enabled (#define CMDLINE_CONFIG).</li>
|
||||
<li>D : Server is in debugmode (#define DEBUGMODE).</li>
|
||||
<li>F : Using filedescriptor lists.</li>
|
||||
<li>h : Server is compiled with hub support (#define HUB or answer "Hub" to relevant ./Config prompt).</li>
|
||||
<li>i : Server shows invisible users in /TRACE.</li>
|
||||
<li>n : NOSPOOF (pingcookies) is enabled (#define NOSPOOF or answer "Yes" to relevant ./Config prompt).</li>
|
||||
<li>V : Server is using valloc().</li>
|
||||
<li>W : Windows IRCd.</li>
|
||||
<li>Y : Syslog logging enabled.</li>
|
||||
<li>6 : Server has IPv6 support (#define INET6 or answer "yes" to relevant ./Config prompt).</li>
|
||||
<li>X : Server has badword stripping (user and channel modes +G) (#define STRIPBADWORDS).</li>
|
||||
<li>P : Server is using poll().</li>
|
||||
<li>e : Server has SSL Support (#define USE_SSL or answer "yes" (and have ssl libraries installed) to relevant ./Config prompt).</li>
|
||||
<li>O : Server has OperOverride enabled (#undef NO_OPEROVERRIDE or answer "no" to relevant ./Config prompt).</li>
|
||||
<li>o : Server has disabled Oper verify (#undef OPEROVERRIDE_VERIFY or answer "no" to relevant ./Config prompt).</li>
|
||||
<li>Z : Server has ziplink support (#define ZIP_LINKS or answer "yes" to relevant ./Config prompt AND have the zlib dev libraries).</li>
|
||||
<li>E : Server has extended channel mode support.</li>
|
||||
<li>3 : 3rd party modules are loaded or some system libraries are wonky.</li>
|
||||
<li>m : Private message handling is 'tainted' (one or modules registered a USERMSG hook).</li>
|
||||
<li>M : Channel message handling is 'tainted' (one or modules registered a CHANMSG hook).</li>
|
||||
<li>Additional Version flags can be added by 3rd-party modules.</li>
|
||||
</ul>
|
||||
<h2><a name="S2_4"></a>2.4 EOS - End Of Synch (TOKEN: ES)</h2>
|
||||
<p><b>Syntax:</b> ES</p>
|
||||
<p>Marks the end of the synching process. This is really optional, but it might be a good idea to send it anyway when you really are done synching. Once you send this, unreal will announce "Client connecting" or "Client exiting" notices (to those with snomask +F) for users (unless your server is U:Lined), and joins will be counted toward channel flood controls (chanmode +f).</p>
|
||||
<p>Sending EOS only marks your server as synched, but does not do so for servers behind you. EOS would need to be sent on those servers' behalf as well.</p>
|
||||
<h2><a name="S2_5"></a>2.5 NETINFO - Network Information (TOKEN: AO)</h2>
|
||||
<p><b>Syntax:</b> AO <i>maxglobal</i> <i>currenttime</i> <i>protocolversion</i> <i>cloakhash</i> 0 0 0 :<i>networkname</i></p>
|
||||
<p>This tells the other server your current network configuration. The max global is the highest number of concurrent users network-wide that this server has seen. The current time is a timestamp value. Protocolversion is the same as that in the SERVER command. Cloakhash is a hash representing the configured cloak keys. It may be a * if you are implementing services. The network name is that specified in set::network-name. The cloak-prefix is currently not sent here (and thus unreal won't generate warning for mismatching cloak prefixes, but they should be the same anyway).</p>
|
||||
<p>It is NETINFO, not EOS, that triggers the "Link bla bla bla is now synched" notices, but NETINFO does not imply synching is actually complete (see EOS).</p>
|
||||
<hr/>
|
||||
<h1><a name="S3"></a>3 User Operations</h1>
|
||||
<p>One important function of servers is it must notify all other servers about all of the users behind it. These commands represent the operations that can result in the change of a user's global state.</p>
|
||||
<h2><a name="S3_1"></a>3.1 NICK - User Introduction and Nick Change (TOKEN: &)</h2>
|
||||
<p><b>Syntax (nick change):</b> <tt>:<i>oldnick</i> & <i>newnick</i> :<i>timestamp</i></tt></p>
|
||||
<p>This format of the NICK message indicates an existing user is changing his or her nickname. If a collision occurs, see the section on Nick Collisions below. The timestamp is the new nickname's timestamp.</p>
|
||||
<p><b>Syntax (normal):</b> <tt>& <i>nick</i> <i>hopcount</i> <i>timestamp</i> <i>username</i> <i>hostname</i> <i>server</i> <i>servicestamp</i> :<i>realname</i></tt></p>
|
||||
<p><b>Syntax (NICKv2):</b> <tt>& <i>nick</i> <i>hopcount</i> <i>timestamp</i> <i>username</i> <i>hostname</i> <i>server</i> <i>servicestamp</i> <i>+usermodes</i> <i>virtualhost</i> :<i>realname</i></tt></p>
|
||||
<p><b>Syntax (NICKv2+CLK):</b> <tt>& <i>nick</i> <i>hopcount</i> <i>timestamp</i> <i>username</i> <i>hostname</i> <i>server</i> <i>servicestamp</i> <i>+usermodes</i> <i>virtualhost</i> <i>cloakhost</i> :<i>realname</i></tt>
|
||||
<p><b>Syntax (NICKv2+NICKIP):</b> <tt>& <i>nick</i> <i>hopcount</i> <i>timestamp</i> <i>username</i> <i>hostname</i> <i>server</i> <i>servicestamp</i> <i>+usermodes</i> <i>virtualhost</i> <i>nickipaddr</i> :<i>realname</i></tt></p>
|
||||
<p><b>Syntax (NICKv2+NICKIP+CLK):</b> <tt>& <i>nick</i> <i>hopcount</i> <i>timestamp</i> <i>username</i> <i>hostname</i> <i>server</i> <i>servicestamp</i> <i>+usermodes</i> <i>virtualhost</i> <i>cloakhost</i> <i>nickipaddr</i> :<i>realname</i></tt>
|
||||
<p><b>Note:</b> Because each server normally does its own cloak generation, Unreal does not expect to receive NICK messages with the CLK info, so do not send it. It will send this info to a server it has received a PROTOCTL CLK from however.</p>
|
||||
<p>This format of the NICK message introduces a new user to the network. If PROTOCTL VHP is enabled, the user's cloaked host is put in the virtualhost field, otherwise it'll be * unless the user is +t. With the addition of CLK, VHP is no longer necessary for determining the cloak host.</p>
|
||||
<h3><a name="S3_1_1"></a>3.1.1 Nick Collisions</h3>
|
||||
<p>A nick collision occurs when a server receives a NICK message (or & token) introducing a user that the server already sees on the network. When a collision occurs, one or both of the colliding clients must be disconnected. The timestamp is examined to determine which client loses. The client with the earlier timestamp remains. If both clients have equal timestamps, both are removed. Currently, Unreal handles NICK collisions both passively and agressively:</p>
|
||||
<ul>
|
||||
<li><b>Aggressive Handling:</b> The server actively sends a KILL message back across the link to terminate that end's client.</li>
|
||||
<li><b>Passive Handling:</b> Upon receipt of a NICK message that should "win", the server simply silently exits it's own client.</li>
|
||||
</ul>
|
||||
<h2><a name="S3_2"></a>3.2 MODE, UMODE2 - User Mode Change (TOKEN: G or |)</h2>
|
||||
<p><b>Syntax (MODE):</b> <tt>:<i>user</i> G <i>user</i> <i>modechange</i></tt></p>
|
||||
<p><b>Syntax (UMODE2):</b> <tt>:<i>user</i> | <i>modechange</i></tt></p>
|
||||
<p>This indicates a usermode change. The modechange can consist of zero or more strings of characters, each prefixed with either a + or -; the only delimiter between them being said + or -. If no + or - is at the beginning of the mode string, a + should be implied.</p>
|
||||
<p>Some user modes are never sent between servers. Specifically, usermode +s and +O are not sent between servers. Modules can define additional usermodes that also might not be sent between servers. The UMODE2 saves bandwidth by not including the redundant target field for usermode changes, so use it when possible.</p>
|
||||
<h2><a name="S3_3"></a>3.3 QUIT - User Disconnect (TOKEN: ,)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>user</i> , :<i>reason</i></tt></p>
|
||||
<p>This command indicates that a user has disconnected. The reason field is filled in with the reason the user disconnected, which will be any of: quit message provided by the user in a /quit command, kill message for local operator kills, "Client exited" if the user does a brutal quit (clean (by TCP's definition) disconnect without sending a QUIT message), or a socket error message if present.</p>
|
||||
<p>The QUIT message must NOT be prefixed when passing on to other servers. Only local user quit messages are affected by set::prefix-quit.</p>
|
||||
<h2><a name="S3_4"></a>3.4 KILL - Force Disconnect (TOKEN: .)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> . <i>target</i> :<i>killpath</i>!<i>source</i> (<i>reason</i>)</tt></p>
|
||||
<p>Used to indicate that an operator has used KILL on a user not on the same server. Anything beyond the last ! in the kill path is used as the reason. The source (reason) part is simply a standard used by Unreal. As each server passes on a KILL message, it usually prepends the bottommost part (up to the first .) of it's name followed by a ! character. When unreal receives a KILL from a directly connected irc operator, it will usually add that oper's vhost (or realhost if -x) as the first hop in the kill path, then follow with it's own name as mentioned before if it is passing to another server.</p>
|
||||
<p>A server can also send KILLs on it's own. This is done in cases involving nickname collisions, fake senders, bad direction, and other cases of protocol errors. Usually, in these cases, the server puts it's own name as the source, and also prefixes with <i>bottompart</i>! like for any other ircop on that server. For example: @3 . someone :irc!irc.example.com (Nick collision)</p>
|
||||
<h2><a name="S3_5"></a>3.5 SETHOST/CHGHOST - Change virtual host (TOKEN: AA or AL)</h2>
|
||||
<p><b>Syntax (SETHOST):</b> <tt>:<i>source</i> AA <i>newvhost</i></tt></p>
|
||||
<p><b>Syntax (CHGHOST):</b> <tt>:<i>source</i> AL <i>target</i> <i>newvhost</i></tt></p>
|
||||
<p>Indicates the change of a user's virtual host. Currently, servers are expected to assume UMODE2 +xt on the target user in both commands. (In the case of SETHOST, the target is the sender.) Servers using PROTOCTL VHP will receive the cloaked host in a SETHOST message when a user activates his cloaked host. A server can also send CHGHOST (from one of it's opered clients) to change a user's hostname. This is generally used by HostServ implementations. To disable a cloaked host, use CHGHOST to set the user's virtual host equal to his real host, or use SVSMODE -xt, but the latter requires services.</p>
|
||||
<h2><a name="S3_6"></a>3.6 SETIDENT/CHGIDENT - Change a user's username (TOKEN: AD or AZ)</h2>
|
||||
<p><b>Syntax (SETIDENT):</b> <tt>:<i>source</i> AD <i>newusername</i></tt></p>
|
||||
<p><b>Syntax (CHGIDENT):</b> <tt>:<i>source</i> AZ <i>target</i> <i>newusername</i></tt></p>
|
||||
<p>Indicates the change of a user's username. No usermode change is associated with this. Unreal does not use a distinguished virtual username, so servers should only keep the original username (from the NICK message) if they intend to allow the user to reset the original username. Servers can use CHGIDENT to change a user's username.</p>
|
||||
<h2><a name="S3_7"></a>3.7 SETNAME/CHGNAME - Change a user's realname (TOKEN: AE or BK)</h2>
|
||||
<p><b>Syntax (SETNAME):</b> <tt>:<i>source</i> AE :<i>newrealname</i></tt></p>
|
||||
<p><b>Syntax (CHGNAME):</b> <tt>:<i>source</i> BK <i>target</i> :<i>newrealname</i></tt></p>
|
||||
<p>Indicates the change of a user's realname. No usermode change is associated with this. Unreal does not use a distinguished virtual realname, so servers should only keep the original realname (from the NICK message) if they intend to allow the user to reset the original realname. Servers can use CHGNAME to change a user's username. Note that servers must NOT check that the sender be an IRCop in SETNAME - normal users are permitted to use SETNAME.</p>
|
||||
<h2><a name="#S3_8"></a>3.8 WHOIS - User Information (TOKEN: #)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> # [<i>from-server</i> ]<i>nick</i></tt></p>
|
||||
<p>Requests the information on a user. This works exactly like the user /whois command - in fact, the source parameter must be a user, or the command will do nothing. <i>from-server</i> is the server to request the information from; if a server recives a WHOIS message without this parameter, it should return its own information on the user, otherwise it should pass the message to the given server. Note that <i>from-server</i> may name a user instead of a server (such as when a user uses /whois nick nick), in which case the the nick should be interpreted as naming the server that user is on. <i>nick</i> may be several users seperated by commas, but may not contain wildcards.</p>
|
||||
<p>The reply to a WHOIS message uses the same numeric replies as the user command.</p>
|
||||
<hr/>
|
||||
<h1><a name="S4"></a>4 Server Operations</h1>
|
||||
<p>This is different from server negotiation. Negotiation is when you are first connecting. Server introduction is used for introducing additional servers behind an existing server (aka hubbing). Hubbing is limited as specified by the hub, leaf, and leafdepth parameters in the link block and attempted violation of a hub restriction results in termination of the link. If no hub or leaf directive is given your server is a leaf by default, so any introduction of any server behind you would be an automatic drop. U:Lines don't matter here; services must be configured as a hub in the link block. The reason is U:Line is a permission rule, but hub privilege is a network structure rule.</p>
|
||||
<h2><a name="S4_1"></a>4.1 SERVER - Server Introduction (TOKEN: ')</h2>
|
||||
<p><b>Note: This command is also used for negotiation. Be warned that the token for this command is NOT VALID at that time! See section 2.3 for the syntax for negotiation.</b></p>
|
||||
<p><b>Syntax (without PROTOCTL NS):</b> <tt>:<i>source</i> SERVER <i>new.server</i> <i>hopcount</i> :<i>description</i></tt></p>
|
||||
<p><b>Syntax (with PROTOCTL NS):</b> <tt>@<i>sourcenumeric</i> SERVER <i>new.server</i> <i>hopcount</i> <i>numeric</i> :<i>description</i></tt></p>
|
||||
<p>The command indicates that the server named new.server is being introduced by the source (the source is the server which new.server is directly linked to). The hopcount will be the number of links the receiving server would have to cross to reach new.server. In other words, new.server introduced itself with a hopcount of 1, and as the SERVER message is passed along, hopcount is incremented.</p>
|
||||
<p>As an example, a services server faking a SERVER message for JUPE functionality would use a hopcount of 2.</p>
|
||||
<h2><a name="S4_2"></a>4.2 SQUIT - Server Removal (TOKEN: -)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> SQUIT <i>server.name</i> <i>:reason</i></tt></p>
|
||||
<p>From an IRCop or when server.name is not behind the source, this command requests the removal of the specified server.name. The command in this case is treated very much like KILL in the respect that the message is broadcasted to all servers, except server.name and any servers behind it. When the SQUIT reaches server.name's uplink, that server closes the link to server.name (which would then generate it's own SQUIT on behalf of it's uplink for the servers behind it).</p>
|
||||
<p>A server can also use SQUIT in the same manner as QUIT to note the removal of a server behind it, or that it itself is quitting. In the former case, server.name is behind source, and the message is forward on to all other servers. In the latter case, source and server.name are equal, the receiving server closes the link and forwards the SQUIT message.</p>
|
||||
<p>Unreal closes a direct link by simply sending an ERROR message and then closing the TCP connection. This typically causes the other end to generate an SQUIT bearing the message "Client exited" or similar, however, the ERROR will usually cause the server to send a message to all IRCops.</p>
|
||||
<h2><a name="S4_3"></a>4.3 SDESC - Server Description (TOKEN: AG)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> AG :<i>newdesc</i></tt></p>
|
||||
<p>The server to which source is connected to should have it's description updated to newdesc. This does NOT include the VL inforamtion.</p>
|
||||
<h2><a name="S4_4">4.4 PING - Live Connection Query (TOKEN: 8)</a></h2>
|
||||
<p><b>Syntax:</b> <tt>8 <i>source</i>[ :<i>destination</i>]</tt></p>
|
||||
<p>Used to check if a connection is still live if it has been "quiet" for a certain amount of time. Typically, unreal will send PING requests at intervals determined by the class::pingfreq setting. PINGs originating from the direct uplink will use the token, but it seems PINGs originating from a distant server will not.</p>
|
||||
<p>The response to a PING is sent with the <a href="#S4_5">PONG</a> command.</p>
|
||||
<p>When receiving a two-parameter PING, the second parameter is the target. If the target isn't you, you can either reply on behalf of that target (using its name instead of yours), or if there is a real connection representing the target, forward the PING to the target.</p>
|
||||
<h2><a name="S4_5">4.5 PONG - Live Connection Reply (TOKEN: 9)</a></h2>
|
||||
<p><b>Syntax:</b> <tt>9 <i>source</i>[ :<i>destination</i>]</tt></p>
|
||||
<p>Used to respond to a <a href="#S4_4">PING</a> query.</p>
|
||||
<p><b>Responding to a ping:</b> Once a PING is received, you usually have an amount of time to respond equal to your class::pingfreq. The correct response will always have two parameters. If you received one parameter, then the received parameter becomes the second parameter of your response, and the first parameter is your server name. If you received two parameters, the response returns both parameters in reverse order.</p>
|
||||
<p>For example, the response to <tt>8 uplink.server</tt> is <tt>9 my.name uplink.server</tt>, while the response to <tt>PING distant.server your.server</tt> is <tt>9 your.server distant.server</tt>. Unreal typically includes a : prior to the last parameter. This isn't required if that parameter contains no spaces, but it is especially important to not include the colon when reversing the parameters, or else Unreal mistake it for a single-parameter PONG.
|
||||
<p>If a two-parameter PONG is received, the second parameter names the target. If the target is not you, and a real connection represents that target, you should forward the PONG message via that connection.</p>
|
||||
<h2><a name="#S4_6"></a>4.6 STATS - Server Stats (TOKEN: 2)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> 2 [<i>type</i> [<i>server</i>] [<i>extended-params</i>]]</tt></p>
|
||||
<p>Requests statistics or configuration information from a server. This command is used to transport cross-server STATS requests from users (eg: /stats o other.server), and should only be sent from a user (not a server). With no parameters, this will cause unreal to simply dump its help output. <i>type</i> is the type of stats to request, <i>server</i> names a server (or a user on that server) to request stats from, and <i>extended-params</i> is used to filter output from STATS G, etc. When received, it is up to the receiver to determine what stats to support and how to reply, but generally numeric replies are used. For the list of unreal's stats types, type /stats in a client for the helptext dump.</p>
|
||||
<p><b>Note:</b> Stats set as oper-only (see set::oper-only-stats) will be refused from a server. In this case, it will be necessary to send the stats request from a psuedo-oper (such as a services agent, etc) for services/stats/etc.</p>
|
||||
<hr/>
|
||||
<h1><a name="S5"></a>5 Channel Operations</h1>
|
||||
<p>These commands deal with the state of channels across the network. Unreal only supports Network Channels, where the first character is a # character.</p>
|
||||
<h2><a name="S5_1"></a>5.1 SJOIN - Channel Burst (TOKEN: ~)</h2>
|
||||
<p><b>Syntax:</b> <tt>@<i>servernumeric</i> ~ <i>timestamp</i> <i>channel</i> +<i>modes</i>[ <i>modeparams</i>] :<i>memberlist</i> <i>&ban</i> <i>"exempt</i> <i>'invex</i></tt></p>
|
||||
<p>Timestamp is the channel timestamp and can be !b64 as defined by PROTOCTL SJB64. Modes should only include those in the last three mode sets listed in CHANMODES. Modeparams is one parameter for each mode character that requires one. Memberlist is a series of users (all of which must at least be behind the server sending the SJOIN), each user is prefixed with one or more characters indicating their status. Owners (+q) are prefixed with *, admins (+a) ~, ops (+o) @, halfops (+h) %, voices (+v) +. Normal users are not prefixed with anything. Ban, ban exception, and invite exception masks are also included, with bans prefixed with &, ban exceptions prefixed with ", and invite exceptions with '. Note that when a &, " or ' is encountered as the first character, further processing of ~, *, @, %, or + characters must not continue because ban, exempt, and invite masks can contain any of those characters. (Plus it's just not right for a ban mask to be marked as a channel admin...)</p>
|
||||
<p>If the channel didn't already exist it is created with the information given in the SJOIN. Otherwise the timestamp is used to determine how the SJOIN information is handled. As a given, all members are joined into the channel, regardless. The mode information (modes, modeparams, memberlist prefixes, bans, exempts, and invites) is subject to the timestamp rules:</p>
|
||||
<ul>
|
||||
<li>If the channel's current timestamp is equal to the timestamp in SJOIN, then the mode information is merged.</li>
|
||||
<li>If the channel's current timestamp is less than the SJOIN timestamp, then the mode information is ignored.</li>
|
||||
<li>If the channel's current timestamp is greater than the SJOIN timestamp, then the channel's existing mode information is cleared (for example, deop, etc all local clients), and the SJOIN mode information is added.</li>
|
||||
</ul>
|
||||
<p>When merging modes, conflicting modes (including +p vs +s, differing +l limits or +k keys, etc) are handled as follows:</p>
|
||||
<ul>
|
||||
<li><b>Private (+p) vs. Secret (+s):</b> Secret (+s) is preferred. Private (+p) is removed. (Note: there is a <a href="http://bugs.unrealircd.org/view.php?id=2391">bug</a> in Unreal versions prior to 3.2.3 in which a desynch will occur in which one side is +p and the other is +s. Update to Unreal 3.2.4 if you have problems with this.)</li>
|
||||
<li><b>Strip Color (+S) vs. Block Color (+c):</b> Block (+c) is preferred. Strip (+S) is removed. (Note: Bug for +p vs. +s in prior unreal versions apply here as well.)</li>
|
||||
<li><b>Channel Limit:</b> Numericly larger limit is preferred (for example, +l 30 versus +l 15 : +l 30 wins).</li>
|
||||
<li><b>Channel Key:</b> "Larger" key (as defined by strcmp) is preferred (for example, +k moo versus +k meow : +k moo wins).</li>
|
||||
<li><b>Channel Link:</b> "Larger" link name (as defined by stricmp - not case sensitive) is preferred (for example, +L #moo versus +L #meow : +L #moo wins, but +L #Meow versus +L #meow : values are equal).</li>
|
||||
<li><b>Flood String:</b> Not really sure on this. I think larger value in each component wins.</li>
|
||||
<li><b>Join-Throttle:</b> Highest of time period wins, if equal, highest of join amount wins (so +j 3:40 beats +j 5:20 but +j 5:20 beats +j 3:20).</li>
|
||||
<li>Parameterized modes in third party modules will define their own conflict resolution formula.</li>
|
||||
</ul>
|
||||
<h2><a name="S5_2"></a>5.2 JOIN - Channel Join (TOKEN: C)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> C <i>#channel</i></tt></p>
|
||||
<p>Indicates a user has joined a channel. Only one channel is sent this way, and the key is not sent even if the user gave one one joining. If the channel parameter is the special "0" case, the server must interpret the message as a PART for all channels the user is on.</p>
|
||||
<h2><a name="S5_3"></a>5.3 PART - Channel Part (TOKEN: D)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> D <i>#channel</i>[ :<i>reason</i></tt>]</p>
|
||||
<p>Indicates a user has left a channel. Only one channel is sent this way. The reason parameter may be left out if no reason was given.</p>
|
||||
<h2><a name="S5_4"></a>5.4 KICK - Channel Kick (TOKEN: H)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> H <i>#channel</i> <i>user</i> :<i>reason</i></tt></p>
|
||||
<p>Orders the forced removal of user from #channel with the given reason. When updating state for this command, it should be the same as if :user PART #channel had been received - the user is removed from #channel's memberlist.</p>
|
||||
<h2><a name="S5_5"></a>5.5 MODE - Channel Mode (TOKEN: G)</h2>
|
||||
<p><b>Note:</b> This is the same command as that used for usermode changes.</p>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> G <i>#channel</i> <i>modechange</i> <i>modeparams</i>[ <i>timestamp</i>]</tt></p>
|
||||
<p>Changes the specified modes on the given channel. If the source is a server and the last parameter is numeric, it is interpreted as timestamp (although it can also be consumed as a parameter for modes. For example: :server.name MODE #channel +l 4 <-- 4 will be a timestamp and the +l parameter). When a mode change is timestamped in this way, the mode is treated as it is with SJOIN: the MODE message is ignored if the timestamp is greater than the channel timestamp. (If the timestamp is equal, the mode is simply added replacing any conflicting modes already in place.)</p>
|
||||
<p>A services implementation can easily clear all entries in a list mode such as bans with SVSMODE (see below).</p>
|
||||
<h2><a name="S5_6"></a>5.6 INVITE - Invite a user to a channel (TOKEN: *)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> * <i>target</i> <i>#channel</i></tt></p>
|
||||
<p>Sends to target an invitation to join #channel. If the source is a channel operator on #channel, or a U:Lined server, the invitation grants the user the temporary ability to join the channel regardless of any bans or some restricting channel modes (not +O or +A).</p>
|
||||
<h2><a name="S5_7"></a>5.7 SAJOIN - Channel Force Join (TOKEN: AX)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> AX <i>targetuser</i> <i>#channel</i></tt></p>
|
||||
<p>This requests the forced join of targetuser to #channel. This type of forced join overrides bans, and most modes. The server to which targetuser is connected to must actually acknowledge the join for it to occur. Service implementations may ignore this command, as they would only ever receive it if an SAJOIN was targeted at a service client, in which case it should be ignored...</p>
|
||||
<h2><a name="S5_8"></a>5.8 SAPART - Channel Force Part (TOKEN: AY)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> AY <i>targetuser</i> <i>#channel</i>[ :<i>reason</i>]</tt></p>
|
||||
<p>This requests the forced part of targetuser from #channel. This is slightly different from a KICK in that the user's removal is announced with PART. The server to which targetuser is connected to must actually acknowledge the part for it to occur. Service implementations may ignore this command, as they would only ever receive it if an SAPART was targeted at a service client, in which case it should be ignored...</p>
|
||||
<p>The reason field is optional. If provided the acknowledging PART message should prefix the message with "SAPart:".</p>
|
||||
<h2><a name="S5_9"></a>5.9 SAMODE - Channel Force Mode (TOKEN: o)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> o <i>#channel</i> <i>modechange</i> <i>modeparams</i></tt></p>
|
||||
<p>This has the same parameters as for MODE. The only difference is that servers probably will never receive this (but is best to document just in case), and that absolutely NO permission checking is done on anything.</p>
|
||||
<h2><a name="S5_10"></a>5.10 TOPIC - Channel Topic (TOKEN: ) )</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> ) <i>#channel</i> <i>nick</i> <i>timestamp</i> :<i>topic</i></tt></p>
|
||||
<p>Changes the channel topic information. This format is used when synching, as well as when a topic is changed normally. Nick is the user who changed the topic (depending on compile options, it can be just nick or a full nick!user@host), timestamp is when the change occured, and topic is the new topic text. Normally, only a newer timestamp will actually change the topic, but a U:Lined server can use an older timestamp as well (such as for TOPICLOCK).
|
||||
<hr/>
|
||||
<h1><a name="S6"></a>6 Services Commands</h1>
|
||||
<p>These are commands typically employed by a service implementation, in addition to some of the normal commands. All of the commands listed here require the sender to be correctly U:Lined. This means that the services server name must appear within a ulines {} block in the unrealircd.conf configuration for ALL servers in the network. All servers and clients behind a U:Lined server are themselves U:Lined.</p>
|
||||
<h2><a name="S6_1"></a>6.1 SVSKILL - Force Disconnect by Service (TOKEN: h)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> h <i>target</i> :<i>reason</i></tt></p>
|
||||
<p>This command is similar to KILL but differs in several ways. First of all: there is no mutilation of the reason value. The reason given is the exact reason used to generate QUIT messages sent to users. Second, it is silent; no server notice is generated in response to this command. Third, it can only be used by a U:Lined server or client (such as services).</p>
|
||||
<p>Because this command can be dangerous in the hands of an abusive person, service implementations should avoid granting humans control over the reason parameter. In cases of commands where a person has control over such parameter, either use a regular KILL instead, or otherwise modify the reason so that operators can be held accountable if necessary.</p>
|
||||
<h2><a name="S6_2"></a>6.2 SVSMODE, SVS2MODE - Force User Mode Change (TOKEN: n or v)</h2>
|
||||
<p><b>Syntax (SVSMODE):</b> <tt>:<i>source</i> n <i>target</i> +<i>usermodes</i></tt></p>
|
||||
<p><b>Syntax (SVS2MODE):</b> <tt>:<i>source</i> v <i>target</i> +<i>usermodes</i></tt></p>
|
||||
<p>Judging by these commands alone, you'd think they are identical. Both commands force a usermode change to occur. This is typically used by services to set +r on a user who has successfully identified. They differ in that SVS2MODE also sends the mode change to the user, while SVSMODE does not (hidden mode change).</p>
|
||||
<p>SVSMODE and SVS2MODE also give special treatment to usermode +d. Rather than setting the deaf mode like you might expect, SVS(2)MODE +d allows services to change a user's services stamp (which is given in the NICK message). This could allow services to set the service stamp to an easily identifiable value that could then be used to say "hey, this person identified already". The syntax of this is: +d <i>newservicestamp</i> and can be combined with setting other usermodes as well. The deaf mode <b>can</b> be set by using +d without the service stamp parameter; however, in this case you <b>cannot</b> set the service stamp in the same SVS(2)MODE message.</p>
|
||||
<p><b>Note:</b> Do <b>NOT</b> use SVSMODE to remove IRCop status from a user. Use the SVSO command for that instead.</p>
|
||||
<p>Alternatively, target can name a channel. In this case, the mode change parameter can consist of a - character, followed by any or all of: b, e, I, q, a, o, h, or v. These characters cause the corresponding lists to be cleared of all entries. For example: SVSMODE #channel -b removes ALL bans from #channel, and SVSMODE #channel -qaohv turns ALL users on #channel into normal users (removes all owner, admin, op, halfop, and voice status). In this case, the uplink will acknowledge with a MODE listing the bans, etc that were removed.</p>
|
||||
<p>To completely clear a channel of all modes: MODE #channel -cfijklmnprstzACGMKLNOQRSTVu (plus any added by third-party module) followed by SVSMODE #channel -beIqaohv.</p>
|
||||
<h2><a name="S6_3"></a>6.3 SVSSNO, SVS2SNO - Forced SNomask Change (TOKEN: BV or BW)</h2>
|
||||
<p><b>Syntax (SVSSNO):</b> <tt>:<i>source</i> BV <i>target</i> +<i>snomasks</i></tt></p>
|
||||
<p><b>Syntax (SVS2SNO):</b> <tt>:<i>source</i> BW <i>target</i> +<i>snomask</i></tt></p>
|
||||
<p>Changes a user's snomasks. The difference between SVSSNO and SVS2SNO is the same as with SVSMODE versus SVS2MODE. If the user is not +s, you must add it via SVSMODE +s. For example:</p>
|
||||
<pre>:OperServ v someuser +s
|
||||
:OperServ BW someuser +ks</pre>
|
||||
<h2><a name="S6_4"></a>6.4 SVSNICK - Forced Nick Change (TOKEN: e)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> e <i>target</i> <i>newnick</i> :<i>newtimestamp</i></tt></p>
|
||||
<p>Forces the specified user to change his nick to newnick and also sets the nick timestamp to newtimestamp (so, for example, services could protect identified users from a nick collision by simply setting the nick timestamp to something way less than "now" - though currently this requires actually changing the nick too). SVSNICK requires the server to which the target is connected to acknowledge the nick change. If the user specified by newnick already exists, then target will be disconnected (even if it's something like a case-change).</p>
|
||||
<h2><a name="S6_5"></a>6.5 SVSJOIN - Forced Join (TOKEN: BX)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> BX <i>target</i> <i>#channel</i></tt></p>
|
||||
<p>This is identical to SAJOIN with a few exceptions: 1) It is U:Line-only. 2) No opernotice on use. 3) Bans and restricting modes are respected, a prior INVITE message must be sent to cause bans to be ignored.</p>
|
||||
<h2><a name="S6_6"></a>6.6 SVSPART - Forced Part (TOKEN: BT)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> BT <i>target</i> <i>#channel</i> :<i>reason</i></tt></p>
|
||||
<p>Also identical to SAPART with a few exceptions: no static prefix on the optional part reason, and no global notice, and requires a U:Line. Usage recommendation of SVSPART versus KICK is the same as for SVSKILL versus KILL.</p>
|
||||
<h2><a name="S6_7"></a>6.7 SVSO - Oper Permissions (TOKEN: BB)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> BB <i>target</i> <i>flagchanges</i></tt></p>
|
||||
<p>This allows a service to add or remove IRCop permission flags for a user. Flagchanges is formatted similar to that of MODE with the exception that operflags are used instead of usermodes. If the change string consists only of -, then all oper permissions, usermodes, and snomasks are removed (as if the user had himself typed MODE nick -Oo).</p>
|
||||
<p>If you are granting IRCop permissions to a user who is not currently an IRCop, you should follow up with an SVSMODE +o or SVSMODE +O as appropriate. For example:</p>
|
||||
<pre>:OperServ BB somenick +o
|
||||
:OperServ BW somenick +cefknoqsSv
|
||||
:OperServ AL somenick local.oper.somethinghere.net
|
||||
:OperServ v somenick +Ohs </pre>
|
||||
<h2><a name="S6_8"></a>6.8 SVSNOOP - Oper Lockdown (TOKEN: f)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> f <i>(op)</i><i>server.name</i></tt></p>
|
||||
<p>The (op) parameter is either a + or - indicating if NOOP mode should be activated (+) or deactivated (-). When NOOP mode is activated, all IRCops on the server are deopered (including local operators) and the /oper command is disabled. IRCop privileges can still be granted through use of SVSO. On UnrealIRCd, it is not necessary to masskill all IRCops on the nooped server, as they are deopered automatically.</p>
|
||||
<h2><a name="S6_9"></a>6.9 SVSNLINE - RealName Ban (TOKEN: BR)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> BR <i>op</i> <i>reason</i> :<i>realname mask</i></tt></p>
|
||||
<p>Op is either + (add) or - (remove). In the case of +, reason is a space-escaped string (all space chars are encoded as _). If -, reason is ignored.</p>
|
||||
<h2><a name="S6_10"></a>6.10 SVSFLINE - File Ban (TOKEN: BC)</h2>
|
||||
<p><b>Syntax (add):</b> <tt>:<i>source</i> BC + <i>filemask</i> :<i>reason</i></tt></p>
|
||||
<p><b>Syntax (remove):</b> <tt>:<i>source</i> BC - <i>filemask</i></tt></p>
|
||||
<p><b>Syntax (clear):</b> <tt>:<i>source</i> BC *</tt></p>
|
||||
<p>Adds or removes a DCCDENY item for the specified filemask on all servers. These DCCDENYs are hard dccdenies - the /dccallow command cannot override it. The last form removes all dccdenies added via SVSFLINE.</p>
|
||||
<hr/>
|
||||
<h1><a name="S7"></a>7 Messaging</h1>
|
||||
<p>What good is Internet Relay <b>CHAT</b> if users cannot <b>CHAT</b>? This section addresses the commands through which arbitrary user messages are sent.</p>
|
||||
<h2><a name="S7_1"></a>7.1 PRIVMSG, NOTICE - Simple Message Transmission (Token: ! or B)</h2>
|
||||
<p><b>PRIVMSG Syntax:</b> <tt>:<i>source</i> ! <i>target</i> :<i>message</i></tt></p>
|
||||
<p><b>NOTICE Syntax:</b> <tt>:<i>source</i> B <i>target</i> :<i>message</i></tt></p>
|
||||
<p>Sends a messages to the given target. The target either names a single client, or identifies a list of clients in which the message is to be sent to. The available targets include:</p>
|
||||
<ul>
|
||||
<li><i>nickname</i>: Names a single user to whom the message is delivered.</li>
|
||||
<li><i>nickname</i>@<i>servermask</i>: Also names a single user, but the message will only be delivered if the user is connected to a server matching the specified servermask. This is typically used for sending messages to services. The target must not be changed at any point along the path it must travel for delivery, even up to the final receipt of the message by the target. This allows the target to know it has been sent a message in this way.</li>
|
||||
<li>#<i>channelname</i>: Sends a message to all users on the specified channel (except when channel is a moderated auditorium (+mu), in which case the wierd +mu sending behavior goes off).</li>
|
||||
<li><i>modeprefix</i>#<i>channelname</i>: Sends a message to all users on the given channel having the given status or higher. For example: + means all voices, halfops, etc.</li>
|
||||
<li>$<i>servermask</i>: Sends a message to ALL users on all servers matching the specified servermask (known as a server broadcast message). The RFC requirements of having a TLD with no wildcards is not applied to U:Lined clients.</li>
|
||||
</ul>
|
||||
<p>Unreal does not support the #hostmask format.</p>
|
||||
<h2><a name="S7_2"></a>7.2 SENDUMODE, SMO - Usermode-based Delivery (TOKEN: AP or AU)</h2>
|
||||
<p><b>Syntax:</b> <tt>@<i>servernumeric</i> AU <i>umode</i> :<i>message</i></tt></p>
|
||||
<p>Sends the specified message to all users with the given mode. Only one usermode may be given. This is a server-only command if you can't tell from the sender prefix :) .</p>
|
||||
<p>The message will be displayed as coming from the receiving client's own server. It may be appropriate to add a "*** Notice (or other leader here) -- from blah:" if you wish to clarify where the message is from.</p>
|
||||
<h2><a name="S7_3"></a>7.3 SENDSNO - SNomask-based Delivery (TOKEN: Ss)</h2>
|
||||
<p><b>Syntax:</b> <tt>@<i>servernumeric</i> Ss <i>snomask</i> :<i>message</i></tt></p>
|
||||
<p>Sends the specified message to all users with the given snomask. Only one snomask may be given. This is a server-only command if you can't tell from the sender prefix :) .</p>
|
||||
<p>The message will be displayed as coming from the receiving client's own server. It may be appropriate to add a "*** Notice (or other leader here) -- from blah:" if you wish to clarify where the message is from.</p>
|
||||
<h2><a name="S7_4"></a>7.4 CHATOPS - IRCop Chat (TOKEN: p)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> p :<i>message</i></tt></p>
|
||||
<p>Sends the message to all IRCops on all servers.</p>
|
||||
<h2><a name="S7_5"></a>7.5 WALLOPS - Wallop Chat (TOKEN: =)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> = :<i>message</i></tt></p>
|
||||
<p>Sends the message to all users with usermode +w, whether they are ircops or not.</p>
|
||||
<h2><a name="S7_6"></a>7.6 GLOBOPS - FailOp Chat (TOKEN: ])</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> ] :<i>message</i></tt></p>
|
||||
<p>Send the message to all IRCops with usermode +g.</p>
|
||||
<h2><a name="S7_7"></a>7.7 ADCHAT - Admin Chat (TOKEN: x)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> x :<i>message</i></tt></p>
|
||||
<p>Send the message to all Server and Network Admins (usermode +A).</p>
|
||||
<h2><a name="S7_8"></a>7.8 NACHAT - NetAdmin Chat (TOKEN: AC)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> AC :<i>message</i></tt></p>
|
||||
<p>Send the message to all Network Admins (usermode +N).</p>
|
||||
<hr/>
|
||||
<h1><a name="S8"></a>8 Ban Control</h1>
|
||||
<p>Sometimes, you have the misfortune of encountering a user who has no purpose but to serve as an annoyance to your server or network. These commands transmit network-wide ban information amongst each other.</p>
|
||||
<h2><a name="S8_1"></a>8.1 TKL - Master Ban Control (TOKEN: BD)</h2>
|
||||
<p>The TKL command seems to have one oddity about it: the real ban source is included in the TKL command rather than in the sender prefix. Most likely this is done for synching reasons (so that the *line ban can be credited to the proper person even if he/she is offline). For this reason, the command syntax is given without any sender prefix at all. It is still permissible to use one, however.</p>
|
||||
<h3><a name="S8_1_1"></a>8.1.1 GLINE - Network-wide user@host ban</h3>
|
||||
<p><b>Add Syntax (TKL):</b> <tt>BD + G <i>userpart</i> <i>hostpart</i> <i>source</i> <i>expiretimestamp</i> <i>settimestamp</i> :<i>reason</i></tt></p>
|
||||
<p><b>Remove Syntax (TKL):</b> <tt>BD - G <i>userpart</i> <i>hostpart</i> <i>source</i></tt></p>
|
||||
<p>Adds and Removes Network-wide user@host bans, known as G:Lines. The GLINE command itself must not be used. The userpart and hostpart are the user portion and hostname portion of the ban mask. The expiretimestamp is 0 if the G:Line should not expire, otherwise it will expire at the given time. It is an absolute time, not relative, thus it's imperitive to have reasonably synchrnoized clocks or bans may be removed too early or even immediately!</p>
|
||||
<h3><a name="S8_1_2"></a>8.1.2 GZLINE - Network-wide IP ban</h3>
|
||||
<p><b>Add Syntax (TKL):</b> <tt>BD + Z * <i>ipmask</i> <i>source</i> <i>expiretimestamp</i> <i>settimestamp</i> :<i>reason</i></tt></p>
|
||||
<p><b>Remove Syntax (TKL):</b> <tt>BD - Z * <i>ipmask</i> <i>source</i></tt></p>
|
||||
<p>Adds and Removes Network-wide IP bans, known as Global Z:Lines. The GZLINE command itself must not be used. Ipmask permits CIDR notation as well as wildcard masks.</p>
|
||||
<h3><a name="S8_1_3"></a>8.1.3 SQLINE, UNSQLINE - Network-wide Nickname ban (TOKEN: c or d)</h3>
|
||||
<p><b>Add Syntax (TKL):</b> <tt>BD + Q <i>hold</i> <i>nickmask</i> <i>source</i> <i>expiretimestamp</i> <i>settimestamp</i> :<i>reason</i></tt></p>
|
||||
<p><b>Add Syntax (SQLINE):</b> <tt>:<i>source</i> c <i>nickmask</i> :<i>reason</i></tt></p>
|
||||
<p><b>Remove Syntax (TKL):</b> <tt>BD - Q <i>hold</i> <i>nickmask</i> <i>source</i></tt></p>
|
||||
<p><b>Remove Syntax (UNSQLINE):</b> <tt>:<i>source</i> d <i>nickmask</i></tt></p>
|
||||
<p>In the TKL syntax, the hold parameter is either a * to mark the qline as a nick ban, or an H to mark it as a services hold. A services hold does not trigger qline rejection notice, and is typically used by NickServ to reserve registered nicks until they are released by the owner. The (UN)SQLINE syntax can only be used by a server, but any user can be used as the source for the TKL syntax. Unlike G and GZ lines, Q:Lines do not cause existing matching users to be disconnected or otherwise affected.</p>
|
||||
<p>The TKL syntax is preferred, since it is more flexible, but (UN)SQLINE is permitted for compatibility.</p>
|
||||
<h3><a name="S8_1_4"></a>8.1.4 SPAMFILTER - Message Spam Filtration System</h3>
|
||||
<p>Proper use of spamfilter in TKL commands requires use of PROTOCTL TKLEXT, which increases the number of parameters allowed in TKL.</p>
|
||||
<p><b>Add Syntax (TKL):</b> <tt>BD + F <i>target(s)</i> <i>action</i> <i>source</i> 0 <i>settimestamp</i> <i>tklduration</i> <i>tklreason</i> :<i>regex</i></tt></p>
|
||||
<p><b>Remove Syntax (TKL):</b> <tt>BD - F <i>target(s)</i> <i>action</i> <i>source</i> 0 <i>settimestap</i> :<i>regex</i></tt></p>
|
||||
<p>Adds and Removes network-wide spamfilters. The SPAMFILTER command itself must not be used. See <a href="http://vulnscan.org/UnrealIrcd/unreal32docs.html#feature_spamfilter">http://vulnscan.org/UnrealIrcd/unreal32docs.html#feature_spamfilter</a> for a list of valid targets. For actions, a single character is used to identify the action to be taken:</p>
|
||||
<ul>
|
||||
<li>K (kill) - The user is simply disconnected, with the reason given.</li>
|
||||
<li>S (tempshun) - A temporary shun is placed on the user. This shun is applied only to that user, and disappears if the user reconnects.</li>
|
||||
<li>s (shun) - A regular shun on the user's IP address is added. This causes all users with the same hostname to be shunned, but they will also stay shunned if they reconnect.</li>
|
||||
<li>k (kline) - A K:Line is added on the user's IP address.</li>
|
||||
<li>z (zline) - A Z:Line is added on the user's IP address.</li>
|
||||
<li>g (gline) - A G:Line is added on the user's IP address.</li>
|
||||
<li>Z (gzline) - A Global Z:Line is added on the user's IP address.</li>
|
||||
<li>b (block) - Messages (or users!) matching the filter are simply blocked.</li>
|
||||
<li>d (dccblock) - The user is prevented from sending files using DCC for the remainder of his session (in other words, until he quits).</li>
|
||||
<li>v (viruschan) - User is removed from all channels, joined to the viruschan as defined in conf, and cannot message anything but that channel.</li>
|
||||
<li>w (warn) - No action on the user is taken. Only the Spamfilter notice is sent to opers with snomask +S.</li>
|
||||
</ul>
|
||||
<h1><a name="S9">9 Base64 Tables</a></h1>
|
||||
<p>Unreal uses base64 encoding to allow saving bandwidth by encoding numbers in a more compact format. Unreal uses two different variations of base64, one used for the SJB64 PROTOCTL option (in NICK and SJOIN), and one used for NICKIP.</p>
|
||||
<h2><a name="S9_1">9.1 Table for SJB64 (NICK and SJOIN).</a></h2>
|
||||
<p>In NICK and SJOIN, remember that the timestamp will be prefixed with ! to signal a base64 timestamp.</p>
|
||||
<p>Just like in base10, the least significant "digit" is last.</p>
|
||||
<pre> 0 0 17 H 34 Y 51 p
|
||||
1 1 18 I 35 Z 52 q
|
||||
2 2 19 J 36 a 53 r
|
||||
3 3 20 K 37 b 54 s
|
||||
4 4 21 L 38 c 55 t
|
||||
5 5 22 M 39 d 56 u
|
||||
6 6 23 N 40 e 57 v
|
||||
7 7 24 O 41 f 58 w
|
||||
8 8 25 P 42 g 59 x
|
||||
9 9 26 Q 43 h 60 y
|
||||
10 A 27 R 44 i 61 z
|
||||
11 B 28 S 45 j 62 {
|
||||
12 C 29 T 46 k 63 }
|
||||
13 D 30 U 47 l
|
||||
14 E 31 V 48 m
|
||||
15 F 32 W 49 n
|
||||
16 G 33 X 50 o</pre>
|
||||
<h2><a name="S9_2">9.2 Table for NICKIP.</a></h2>
|
||||
<p>In this table, the IP is encoded in network byte order. In terms of IPs, this means the first byte of the address really is first. Each "digit" in the base64 encoded IP corresponds to 6 bits of the IP address.</p>
|
||||
<p>An IPv4 address is 32 bits, so 6 base64 "digits" are needed. Since base64 requires values to come in multiples of 4 "digits", padding characters (=) need to be added if a value comes up short. In the case of IPv4 addresses, two are needed.</p>
|
||||
<p>IPv6 addresses are 128-bit. They therefore need 22 base64 "digits" plus 2 pad characters.</p>
|
||||
<pre> 0 A 17 R 34 i 51 z
|
||||
1 B 18 S 35 j 52 0
|
||||
2 C 19 T 36 k 53 1
|
||||
3 D 20 U 37 l 54 2
|
||||
4 E 21 V 38 m 55 3
|
||||
5 F 22 W 39 n 56 4
|
||||
6 G 23 X 40 o 57 5
|
||||
7 H 24 Y 41 p 58 6
|
||||
8 I 25 Z 42 q 59 7
|
||||
9 J 26 a 43 r 60 8
|
||||
10 K 27 b 44 s 61 9
|
||||
11 L 28 c 45 t 62 +
|
||||
12 M 29 d 46 u 63 /
|
||||
13 N 30 e 47 v
|
||||
14 O 31 f 48 w (pad) =
|
||||
15 P 32 g 49 x
|
||||
16 Q 33 h 50 y</pre>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -2,6 +2,8 @@ VL Information (c) 2002 codemastr (Dominick Meglio) [codemastr@unrealircd.com]
|
||||
|
||||
Protocol Version
|
||||
------------------------------------------------------------------------------------------------
|
||||
2310 3.2.9
|
||||
2309 3.2.6, 3.2.7, 3.2.8
|
||||
2308 3.2.5
|
||||
2307 3.2.4
|
||||
2306 3.2.3
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
NOTE: For 3.3* we are not maintaining translated documents until reaching alpha or
|
||||
beta1 status.
|
||||
|
||||
==[ Translations ]============================================================
|
||||
==[ Translations ]===========================================================
|
||||
|
||||
Starting with the release of Unreal 3.2 we have begun accepting translated
|
||||
documentation files. For now, only translations of unreal32docs.html and
|
||||
@@ -45,4 +42,4 @@ to translate to.. You will then receive an email back saying you can
|
||||
go ahead (or not). This is mainly to avoid multiple persons working
|
||||
on the same translation.
|
||||
|
||||
==============================================================================
|
||||
=============================================================================
|
||||
|
||||
+155
-48
@@ -24,17 +24,18 @@
|
||||
<a href="unreal32docs.gr.html">Greek</a> |
|
||||
<a href="unreal32docs.nl.html">Dutch</a> |
|
||||
<a href="unreal32docs.ru.html">Russian</a> |
|
||||
<a href="unreal32docs.tk.html">Turkish</a>
|
||||
<a href="unreal32docs.tr.html">Turkish</a>
|
||||
<br><br>
|
||||
|
||||
<div align="center"><b><font size="7">UnrealIRCd</font></b><br>
|
||||
<font size="4"><a href="http://www.unrealircd.com">http://www.unrealircd.com</a></font><br>
|
||||
<font size="4">Version: 3.2.5 </font><br>
|
||||
<b>Letztes Update dieses Handbuchs:</b> 2006-06-15</div>
|
||||
<b>Head Coders:</b> Stskeeps / codemastr / Syzop / Luke<br>
|
||||
<font size="4">Version: 3.2.9-RC2</font><br>
|
||||
<b>Letztes Update dieses Handbuchs:</b> 2009-12-24</div>
|
||||
<b>Head Coders:</b> Stskeeps / codemastr / Syzop / Luke<font face="Helvetica,Arial" size="-1">/
|
||||
aquanight / WolfSage</font><br>
|
||||
<b>Contributors:</b> McSkaf / Zogg / NiQuiL / assyrian / chasm / DrBin / llthangel / Griever / nighthawk<br>
|
||||
<b>Dokumentation</b><b>:</b> CKnight^ / Syzop<br>
|
||||
<b>Deutsche Übersetzung:</b> Stylus740 (irc.smart-irc.net)<br>
|
||||
<b>Deutsche Übersetzung:</b> LowDigit / Orginalübersetzung: stylus740<br>
|
||||
<p>Um diese Dokumentation zu lesen, ist einer der unten aufgeführten
|
||||
kompatiblen Browser erforderlich. Aktuelle Dokumentationen sind erhältlich @
|
||||
<a href="http://www.vulnscan.org/UnrealIRCd/unreal32docs.html">http://www.vulnscan.org/UnrealIRCd/unreal32docs.html</a>
|
||||
@@ -115,6 +116,7 @@ Konfigurationsdatei</a><br>
|
||||
---4.35. <a href="#spamfilter"> Spamfilter Block<br>
|
||||
</a>---4.36. <a href="#cgiirc">Cgiirc Block</a><br>
|
||||
---4.37. <a href="#setblock">Set Block -=- (networks/unrealircd.conf)</a><br>
|
||||
---4.38. <a href="#filesblock">Files Block</a><br>
|
||||
5. <a href="#addtlfiles">Additional Files</a><br>
|
||||
6. <a href="#userchannelmodes">User & Channel Modi</a><br>
|
||||
7. <a href="#useropercommands">User & Oper Befehlsliste<br>
|
||||
@@ -156,11 +158,13 @@ werden. – Copyright UnrealIRCd Development Team 2002-2006</p>
|
||||
<p>Bitte lesen Sie diese Anleitung, bevor Sie um Hilfe bitten und schauen Sie
|
||||
WIRKLICH erst einmal in die <a href="#faq">FAQ</a>, da rund 80% der Fragen dort
|
||||
beantwortet sind. Hilft
|
||||
dies alles nicht, kann bzgl. Support bei irc.ircsystems.net
|
||||
(Port 6667) Channel #unreal-support
|
||||
dies alles nicht, kann bzgl. Support bei irc.unrealircd.org
|
||||
(Port 6667) im Channel #unreal-support
|
||||
nach Unterstützung gefragt werden (Wir erwarten UNBEDINGT, dass zuvor Dokumentation
|
||||
und <a href="#faq">
|
||||
FAQ</a> gelesen wurden und wir helfen nur zu UnrealIRCd, nicht zu Services!). Im Falle eines echten Bugs (z.B. einem Crash) bitte Nachricht an
|
||||
FAQ</a> gelesen wurden und wir helfen nur zu UnrealIRCd, nicht zu Services!).
|
||||
Ebenso können Sie das Forum nutzen, welches über <a href="http://forums.unrealircd.com/" target="_blank">http://forums.unrealircd.com</a>
|
||||
erreichbar ist. Im Falle eines echten Bugs (z.B. einem Crash) bitte Nachricht an
|
||||
<a href="http://bugs.unrealircd.org" TARGET="_blank">http://bugs.unrealircd.org</a>.</p></div>
|
||||
|
||||
<p><font size="+2"><b><a name="notesonolder">1.1 – Anmerkungen zu Upgrade/Mixing 3.1.x -> 3.2</a> </b></font><br>
|
||||
@@ -208,7 +212,7 @@ Bug gemeldet wird!</p></div>
|
||||
<li><b>*NIX Versionen:</b>
|
||||
<ul>
|
||||
<li>Linux (2.2.*, 2.4.*, 2.6.*)
|
||||
<li>FreeBSD (4.*, 5.*)
|
||||
<li>FreeBSD (4.*, 5.*, 6.*)
|
||||
<li>NetBSD (2.*)
|
||||
<li>OpenBSD (3.7, 3.8, 3.9)
|
||||
<li>Solaris (9,10)
|
||||
@@ -285,6 +289,10 @@ example.conf f
|
||||
GEHEIM gehalten werden. Wenn jemand
|
||||
diese drei Keys kennt, kann er den geschützten Host erkennen und den realen
|
||||
Host ermitteln (was dem Usermodus +x sinnlos macht).</p>
|
||||
<p>Tipp: Wenn man auf *NIX Systemen arbeitet und Cloak Keys neu erstellt werden
|
||||
müssen, kann man in der Shell eingeben: '<font face="Courier New">./unreal
|
||||
gencloak</font>' und erhält als Ausgabe 3 zufällig erzeugte Strings, die man
|
||||
verwenden kann.</p>
|
||||
</div>
|
||||
<p><font size="+2"><b><a name="feature_modules">3.2 - Module</a></b></font></p><div class="desc">
|
||||
<p>UnrealIRCd unterstützt Module, was sehr nützlich
|
||||
@@ -990,6 +998,24 @@ die *lines/shuns (Default: 'Spam/advertising'). Mehrere Worte sind durch Undersc
|
||||
Channels, in den bei der Action 'viruschan' gejoined wird (Default: #help)<br>
|
||||
<b>set::spamfilter::virus-help-channel-deny</b> ermöglicht es, normale Joins in
|
||||
den virus-help-channel zu blockieren (Default: no)
|
||||
<p>
|
||||
<font size="+1"><b><a name="feature_spamfilter_slow">Erkennung langsamer
|
||||
Spamfilter</a></b></font><br>
|
||||
Ein Spamfilter Ausdruck (regex) kann einen IRCd beträchtlich verlangsamen. Das
|
||||
hängt davon ab, welcher Ausdruck verwendet wird (und wie dieser Ausdruck
|
||||
ausgewertet wird). Einige Spamfilter Ausdrücke sind sehr schnell und UnrealIRCd
|
||||
kann Tausende von ihnen pro Sekunde verarbeiten. Andere können extrem langsam
|
||||
sein und mehrere Sekunden für die Ausführung benötigen und dadurch den IRCd
|
||||
regelrecht einfrieren..<br>
|
||||
Zur Unterstützung gegen dieses Problem stellt Unreal eine Erkennung langsamer
|
||||
Spamfilter ('Slow Spamfilter Detection' bereit: Für jeden Spamfilter wird bei jeder Ausführung die hierzu benötigte
|
||||
Zeit überprüft. Wird ein
|
||||
bestimmter Grenzwert erreicht, warnt der IRCd oder entfernt einfach diesen Spamfilter.<br>
|
||||
Warnungen werden durch <b>set::spamfilter::slowdetect-warn</b> konfiguriert (Default:
|
||||
250ms) und die automatische Löschung durch <b>set::spamfilter::slowdetect-fatal</b>
|
||||
(Default: 500ms). Man kann beide Werte auf 0 setzen um die Erkennung langsamer
|
||||
Spamfilter zu deaktivieren.<br>
|
||||
Dieses Feature steht unter Windows derzeit noch nicht zur Verfügung.
|
||||
</div>
|
||||
|
||||
<p><font size="+2"><b><a name="feature_cidr">3.15 - CIDR</a></b></font></p><div class="desc">
|
||||
@@ -998,7 +1024,7 @@ erm
|
||||
unter Verwendung von CIDR vergeben. Daher ist es möglich unter Verwendung eines
|
||||
CIDR basierten Banns auf einfache Weise ganze ISPs zu sperren. Unreal
|
||||
unterstützt CIDR sowohl für IPv4 als auch für IPv6. CIDR Masken können
|
||||
benutzt werden bei: allow::ip, ban user::mask, ban ip::mask, except ban::mask, except
|
||||
benutzt werden bei: allow::ip, oper::from::userhost, ban user::mask, ban ip::mask, except ban::mask, except
|
||||
throttle::mask, und except tkl::mask (für gzline, gline, and shun). Zusätzlich
|
||||
kann CIDR bei /kline, /gline, /zline, /gzline, und /shun benutzt werden. Unreal
|
||||
verwendet die Standard Syntax von IP/bits, z.B. 127.0.0.0/8 (passt auf 127.0.0.0 - 127.255.255.255),
|
||||
@@ -1929,7 +1955,7 @@ in verschiedenen Dateien zu loggen.</p>
|
||||
tkl</p>
|
||||
</td>
|
||||
<td width="484">
|
||||
<p>zeichnet Infos auf über *lines, shuns und Spamfilter (setzen, löschen,
|
||||
<p>zeichnet Infos auf über *lines (kline, zline etc), shuns und Spamfilter (setzen, löschen,
|
||||
Ablauf)</p>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -1952,14 +1978,6 @@ Ablauf)</p>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="113">
|
||||
<p>
|
||||
kline</p>
|
||||
</td>
|
||||
<td width="484"><p>Zeichnet Infos /kline auf</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="113">
|
||||
<p>
|
||||
oper</p>
|
||||
</td>
|
||||
@@ -2004,7 +2022,6 @@ spamfilter
|
||||
errors;
|
||||
kills;
|
||||
oper;
|
||||
kline;
|
||||
tkl;
|
||||
};
|
||||
};
|
||||
@@ -2025,7 +2042,7 @@ bekannt als T:Line)</font><div class="desc">
|
||||
channel <channel-name>;
|
||||
options {
|
||||
ssl;
|
||||
}
|
||||
};
|
||||
};</pre>
|
||||
<p>Mit dem TLD Block kann man eine motd (Messageoftheday), rules und channels für
|
||||
User basierend auf deren Host festlegen. Das ist nützlich, falls man
|
||||
@@ -2106,7 +2123,7 @@ bekannt als Z:Line)</font><div class="desc">
|
||||
};</pre>
|
||||
<p>Der Ban IP Block verhindert das Verbinden von bestimmten IP Adressen her zum
|
||||
Server. Das gilt sowohl für Verbindungsversuche von Usern als auch von Servern.<br>
|
||||
<b>ban::mask</b> ist eine IP, die Wildcards enthalten kann<br>
|
||||
<b>ban::mask</b> ist eine IP, die Wildcards enthalten kann.<br>
|
||||
<b>ban::reason</b> ist der Grund, warum der Bann eingetragen wurde.<br>
|
||||
Da dieser Bann auch Server betreffen kann, sollte man beim Eintrag von IP
|
||||
Adressen sehr vorsichtig sein.</p>
|
||||
@@ -2179,7 +2196,7 @@ Maske kann Wildcards enthalten.<br>
|
||||
<b>ban::reason</b> legt den Grund fest, der dem User angezeigt wird.<br>
|
||||
<b>ban::action</b> kann ebenfalls festgelegt werden. Dabei ist der Default auf
|
||||
"kill". <i>tempshun</i> setzt ein shun auf die Verbindung des Users
|
||||
und arbeitet effektiv gegen zombies und/oder Bots mit dynamischer IP, weil sie
|
||||
und arbeitet effektiv gegen Zombies und/oder Bots mit dynamischer IP, weil sie
|
||||
unschuldige User nicht beeinträchtigen. <i>shun/kline/zline/gzline</i> setzen
|
||||
einen Bann auf die IP (*@IPADDR). Die Dauer dieser Banns kann mit 'set::ban-version-tkl-time'
|
||||
konfiguriert werden und beträgt per Default 1 Tag.</p>
|
||||
@@ -2324,7 +2341,7 @@ angegebenen abgelehnt.<br>
|
||||
haben oder nicht haben darf. Die Flags müssen direkt nacheinander ohne
|
||||
Zwischenräume angegeben sein. Wird einem Zeichen ein "!"
|
||||
vorangestellt, darf der Server dieses Flag nicht haben, steht kein "!"
|
||||
davor, so muss der Server dieses Flag haben, um vom Linken ausgeschlossen zu
|
||||
davor, muss der Server dieses Flag haben, um vom Linken ausgeschlossen zu
|
||||
sein.</p>
|
||||
</div>
|
||||
<p><font class="block_section"><a name="denylinkblock">4.24 - </a> </font><a name="denylinkblock"><font class="block_name">Deny Link Block</font>
|
||||
@@ -2608,19 +2625,23 @@ wie bei "password-connect".
|
||||
</p>
|
||||
<p><b>hub oder leaf</b><br>
|
||||
Zu einem hub sind mehrere Server verbunden, ein leaf hat immer nur eine
|
||||
Verbindung. Ein Server ist entweder ein hub oder ein leaf - die beiden Optionen
|
||||
können nicht kombiniert werden.
|
||||
Verbindung. Ein Server ist solange ein leaf, wie es keine hub Anweisung gibt.
|
||||
Ebenso ist er ein leaf, wenn in der Anweisung lediglich * definiert ist oder die
|
||||
leaf Tiefe (Anzahl der hops) 1 ist.
|
||||
</p>
|
||||
<p><b>hub</b> (optional)<br>
|
||||
Der Wert ist eine Maske, auf welche Server dieser hub connecten darf (z.B.: *.my.net).
|
||||
</p>
|
||||
<p><b>leaf</b> (optional)<br>
|
||||
Der Wert ist eine Maske, dass dieser Server wie ein leaf in Richtung zum eigenen
|
||||
Server fungiert.
|
||||
Dieser Wert gibt an, zu welchen Servern dieser Hub <b>nicht</b> verbindet. Hier
|
||||
einen * anzugeben ist das selbe, wie keine hub Anweisung zu haben.
|
||||
</p>
|
||||
<p><b>leaf-depth</b> (optional)<br>
|
||||
Falls dies angegeben ist, sollte auch "leaf" angegeben sein. Angegeben
|
||||
wird die Tiefe (Anzahl der hops) die dieser Server darunter haben darf.
|
||||
Dieser Wert gibt die Tiefe (Anzahl der hops)an, die dieser Server darunter haben darf.
|
||||
Beispielsweise bedeutet 1, dass der Server keine Links hat (ist ein leaf), 2
|
||||
bedeutet, es kann zu Servern gelinkt werden, aber diese können zu keinem
|
||||
anderen linken (dieser Hub kann also nur zu leafs linken). Ein Wert von 0
|
||||
bedeutet, dass es kein Limit gibt und das ist auch Default.
|
||||
</p>
|
||||
<p><b>class</b><br>
|
||||
Die Klasse, in die der Server kommt, oft ist eine eigene Klasse für Server
|
||||
@@ -2693,7 +2714,7 @@ weggelassen werden. <b> alias::type</b> gibt den Typ des Alias an, g
|
||||
Typen sind hier "services" (der User ist auf dem Services Server),
|
||||
"stats" (der User ist auf dem Stats Server) "normal" (der
|
||||
User ist normaler User auf irgendeinem Server) und "channel" (das Ziel
|
||||
ist ein Channel Name). Wenn <b>alias::spampfilter</b> (optional) auf 'yes'
|
||||
ist ein Channel Name). Wenn <b>alias::spamfilter</b> (optional) auf 'yes'
|
||||
eingestellt ist, werden auch Spamfilter geprüft (Default ist 'no'). Der "alias block" hat
|
||||
auch einen weiteren nachfolgend erklärten Zweck.</p>
|
||||
<p>Syntax [Befehl alias]:
|
||||
@@ -2964,6 +2985,10 @@ eingeschr
|
||||
Beispielsweise kann man +G in 'modes-on-connect' setzen und G in 'restrict-usermodes',
|
||||
wodurch erreicht wird, dass sämtliche User +G erhalten, aber kein -G
|
||||
anwenden können.</p>
|
||||
<p><font class="set">set::level-on-join <op|none></font><br>
|
||||
Die Modus, der einem User beim ersten joinen eines Channels gegeben wird. Das
|
||||
ist entweder 'op' (Channel Operator, Default) oder 'none', wenn kein Level
|
||||
gegeben werden soll. Default ist Op.</p>
|
||||
<p><font class="set">set::restrict-channelmodes <modes></font><br>
|
||||
Die Channel-Modi, die User wählen können werden auf die hier angegebenen Modi
|
||||
eingeschränkt. (kein + oder - angeben!).<br>
|
||||
@@ -3089,12 +3114,13 @@ Oper Zugriff geloggt wurde.</p>
|
||||
Ein Wert, der angibt, innerhalb welcher Zeit ein DNS Server zu antworten hat, bevor
|
||||
"timeout" gemeldet wird. Der Zeitwert ist ein numerischer String, in
|
||||
dem 'd' Tage bedeutet, 'h' Sunden, 'm' Minuten und 's' Sekunden. Beispiel: '1d2h3m'
|
||||
bedeutet 1 Tag, 2 Stunden, 3 Minuten.</p>
|
||||
bedeutet 1 Tag, 2 Stunden, 3 Minuten. (NICHT IMPLEMENTIERT)</p>
|
||||
<p><font class="set">set::dns::retries <number-of-retries>;</font><br>
|
||||
Ein Zahlenwert, durch den festgelegt wird, wie oft versucht werden soll, die DNS
|
||||
aufzulösen, bevor ein Fehler gemeldet wird.</p>
|
||||
aufzulösen, bevor ein Fehler gemeldet wird. (NICHT IMPLEMENTIERT)</p>
|
||||
<p><font class="set">set::dns::nameserver <name-of-dns-server>;</font><br>
|
||||
Gibt den Hostnamen des Servers an, der zur DNS Namensauflösungen dient.</p>
|
||||
Gibt den Hostnamen des Servers an, der zur DNS Namensauflösungen dient. (NICHT
|
||||
IMPLEMENTIERT)</p>
|
||||
<p><font class="set">set::network-name <name-of-network>;</font><br>
|
||||
Gibt den Namen des Netzwerks an, in dem der Server läuft (also den Namen des
|
||||
irc Netzes!) Dieser Eintrag sollte auf allen Servern im Netzwerk absolut
|
||||
@@ -3159,6 +3185,17 @@ Gibt den Dateinamen an, wo das SSL Zertifikat des Servers liegt.</p>
|
||||
Gibt den Dateinamen an, wo der private SSL Key des Servers liegt.</p>
|
||||
<p><font class="set">set::ssl::trusted-ca-file <filename>;</font><br>
|
||||
Gibt den Dateinamen der Zertifikate der vertrauten CAs an.</p>
|
||||
<p><font class="set">set::ssl::server-cipher-list <cipherlist>;</font><br>
|
||||
Legt fest, welche Verschlüsselungen erlaubt sind, was per Default für OpenSSL
|
||||
eingestellt ist. Siehe <a href="http://www.openssl.org/docs/apps/ciphers.html#CIPHER_LIST_FORMAT">http://www.openssl.org/docs/apps/ciphers.html</a>
|
||||
wie eine Liste von Verschlüsselungen erstellt wird (englische Seite,
|
||||
nicht übersetzt!).</p>
|
||||
<p><font class="set">set::ssl::renegotiate-bytes <value>;</font><br>
|
||||
Legt fest, wieviele Bytes bei einer SSL Session neu ausgehandelt werden sollen (z.B.:
|
||||
20m für 20 Megabyte).</p>
|
||||
<p><font class="set">set::ssl::renegotiate-timeout <timevalue>;</font><br>
|
||||
Legt fest, nach welcher Zeit eine SSL Session neu ausgehandelt werden soll (z.B.:
|
||||
1h für 1 Stunde).</p>
|
||||
<p><font class="set">set::ssl::options::fail-if-no-clientcert;</font><br>
|
||||
Stellt ein, dass Clients ohne Zertifikat nicht connecten können.</p>
|
||||
<p><font class="set">set::ssl::options::no-self-signed;</font><br>
|
||||
@@ -3166,6 +3203,9 @@ Verbietet Verbindungen von Usern mit selbst erstellten Zertifikaten.</p>
|
||||
<p><font class="set">set::ssl::options::verify-certificate;</font><br>
|
||||
Stellt ein, dass Unreal SSL Zertifikate auf Gültigkeit überprüft, bevor
|
||||
eine Verbindung akzeptiert wird.</p>
|
||||
<p><font class="set">set::ssl::options::no-starttls;</font><br>
|
||||
Deaktiviert STARTTLS. STARTTLS ermöglicht es Clients, über reguläere (nicht
|
||||
SSL) Ports zu verbinden.</p>
|
||||
<p><font class="set">set::throttle::period <timevalue></font><br>
|
||||
Wie lange muss ein User zum erneuten Connecten warten, wenn er häufiger, als
|
||||
unter 'set::throttle::connections' eingestellt, verbunden war.</p>
|
||||
@@ -3221,10 +3261,21 @@ joinen.</p>
|
||||
<b>set::spamfilter::except <target(s)></b><br>
|
||||
Diese Ziele werden vom Spamfilter ausgenommen (es wird also keine Aktion
|
||||
durchgeführt). Es sind einzelne Ziele oder eine durch Kommata getrennte Liste
|
||||
möglich. Beispiel: except "#help,#spamreport"</p> <p><b>set::<font face="Helvetica,Arial" size="-1">check-target-nick-bans</font> <yes|no></b><br>
|
||||
möglich. Beispiel: except "#help,#spamreport"</p>
|
||||
<p><font class="set">set::spamfilter::slowdetect-warn <value></font><br>
|
||||
Wenn ein Spamfilter zur Ausführung länger als der hier festgelegte Wert dauert
|
||||
(in Millisekunden, 1000ms = 1 Sekunde), wird eine Warnung per Notice an
|
||||
alle Opers versandt. (Default: 250). Siehe auch <a href="#feature_spamfilter_slow">Erkennung
|
||||
langsamer Spamfilter</a>.</p>
|
||||
<p><font class="set">set::spamfilter::slowdetect-fatal <value></font><br>
|
||||
Wenn ein Spamfilter zur Ausführung länger als der hier festgelegte Wert dauert
|
||||
(in Millisekunden, 1000ms = 1 Sekunde), wird er gelöscht50o). Siehe auch <a href="#feature_spamfilter_slow">Erkennung
|
||||
langsamer Spamfilter</a>.</p>
|
||||
<p><b>set::check-target-nick-bans <yes|no></b><br>
|
||||
Wann immer ein User seinen Nick ändert, wird überprüft, ob der NEUE Nick zu
|
||||
bannen wäre. Ist das der Fall, wird der Nickwechsel nicht erlaubt. Default ist
|
||||
'yes'.</p> <p><b>set::timesynch::enabled<yes|no></b><br>
|
||||
'yes'.</p>
|
||||
<p><b>set::timesynch::enabled<yes|no></b><br>
|
||||
Aktiviert oder deaktiviert die Zeitsynchronisation beim Start des IRCd. Default
|
||||
ist 'yes'.</p>
|
||||
<p><font class="set">set::timesynch::server <IP></font><br>
|
||||
@@ -3237,15 +3288,66 @@ Antwort gewinnt.</p>
|
||||
Maximale Zeit, die auf eine Zeitserverantwort gewartet wird. Möglich ist ein
|
||||
Wert von 1 bis 5, mehr ist nicht möglich, weil das Ergebnis sonst zu ungenau
|
||||
wäre. Default Einstellung ist hier 3 und normalerweise sollte es keinen Grund
|
||||
geben, dies zu ändern. </div>
|
||||
geben, dies zu ändern.
|
||||
<p><font class="set">set::pingpong-warning<yes|no></font><br>
|
||||
Die Versuche von Name-Servern einen falschen Hostnamen zurückzuliefern, werden
|
||||
Spoofing (Reinlegen) genannt. Um sich davor zu schützen, kann der Resolver so
|
||||
konfiguriert werden, daß er überprüft, ob die gegebene IP-Adresse auch
|
||||
tatsächlich zum erhaltenen Hostnamen gehört. Wenn dies nicht der Fall ist,
|
||||
wird der Name verworfen und ein Fehler zurückgeliefert. Dieses Verhalten wird
|
||||
mit nospoof on eingestellt. Wenn NOSPOOF aktiviert ist (üblicherweise in
|
||||
Windows), wird aene Warnung an jeden User geschickt, '/quote pong ..' zu
|
||||
benutzen, wenn es beim Verbinden Probleme gibt. Voreingestellt ist 'no'.</p>
|
||||
<p><font class="set">set::watch-away-notification <yes|no></font><br>
|
||||
Ermöglicht eine AWAY Meldung in WATCH. Der Default is yes.</p>
|
||||
</div>
|
||||
<p><font class="block_section"><a name="filesblock">4.38 - Files Block</a> </font><font class="block_optional" size="3">OPTIONAL</font>
|
||||
</p>
|
||||
<p>Es ist nicht nötig, für die Default Speicherorte der MOTD und Rules Dateien
|
||||
einen <a href="#tldblock">TLD block</a> zu definieren. Der Files Block steuert
|
||||
die Default Einstellungen für diese Dateien und zusätzlich für die pidfile und
|
||||
irc.tune file. Für alles, was hier nicht angegeben ist, wird der Defaultwert
|
||||
genommen, wie er in <a href="#addtlfiles">Additional Files</a> steht.</p>
|
||||
<p>Relative Pfadnamen werden als relativ zum unrealIRCD Startverzeichnis
|
||||
interpretiert, in dem normalerweise auch die <tt>unrealircd.conf</tt> steht.
|
||||
Dieser Block kan dazu benutzt werden, mehr als einen IRCd im gleichen
|
||||
Verzeichnis laufen zu lassen. In diesem Fall sollten mindestens verschiedene
|
||||
pidfiles und tunefiles definiert werden - eines für jeden Server.</p>
|
||||
<p>Syntax:<br>
|
||||
</p>
|
||||
<pre>files {
|
||||
motd <motd file>;
|
||||
shortmotd <short motd file>;
|
||||
opermotd <oper motd file>;
|
||||
svsmotd <services motd file>;
|
||||
botmotd <bot motd file>;
|
||||
|
||||
rules <rules file>;
|
||||
|
||||
tunefile <tune file>;
|
||||
pidfile <pid file>;
|
||||
};
|
||||
</pre>
|
||||
<p> </p>
|
||||
<p>Beispiel:<br>
|
||||
</p>
|
||||
<pre>files {
|
||||
motd /etc/motd;
|
||||
|
||||
pidfile /var/lib/run/unrealircd.pid;
|
||||
};
|
||||
</pre>
|
||||
<p>
|
||||
</p>
|
||||
<p><b><font size="+2"><a name="addtlfiles">5 – Additional Files</a></font></b></p><div class="desc">
|
||||
Zusätzlich zu den Konfigurationsdateien hat Unreal einige weitere Dateien,
|
||||
wie MOTD, OperMOTD, BotMOTD, und Rules. In der nachfolgenden Liste stehen die
|
||||
Namen dieser dateien und ihr Verwendungszweck.<br>
|
||||
Zu beachten ist, dass die motd Dateien (alle Typen) und die rules Dateien auch
|
||||
in einem speziellen tld Block angegeben sein können. Dies sind nur die
|
||||
in einem speziellen <a href="#tldblock"> tld Block </a>oder einem <a href="#filesblock">files
|
||||
Block</a> angegeben sein können. Dies sind nur die
|
||||
Dateien, die per Default benutzt werden (und für Anforderungen von
|
||||
MOTD/RULES).
|
||||
MOTD/RULES).<br>
|
||||
<table width="83%" border="1">
|
||||
<tr>
|
||||
<td>ircd.motd</td><td>Wird angezeigt, wenn der /motd Befehl ausgeführt wird
|
||||
@@ -3829,13 +3931,13 @@ Befehlsliste</a></b></font></p><div class="desc">
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="33" width="267">globops <message></td>
|
||||
<td width="486" height="33">Schickt eine Nachricht an alle IRCops</td>
|
||||
<td width="486" height="33">Schickt eine Nachricht an alle globalen IRCops</td>
|
||||
<td width="93" height="33">IRCop</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="33" width="267">chatops <message></td>
|
||||
<td width="486" height="33">Schickt eine Nachricht an alle IRCops mit dem
|
||||
Usermode +c</td>
|
||||
<td width="486" height="33">Schickt eine Nachricht an alle IRCops (lokal und
|
||||
global)</td>
|
||||
<td width="93" height="33">IRCop</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -4337,9 +4439,16 @@ Datei</a></b></font></p>
|
||||
Expolits erschweren, zu arbeiten. Das ist schön, allerdings sollte man nicht nur primär
|
||||
hierauf achten, es gibt weit größere Risiken mit Expolits, die andere
|
||||
Punkte, als den Kernel angreifen.... aus verschiedenen Gründen.<br>
|
||||
Eine andere Option ist es chrooting zu aktivieren (gibt es nur in *nix
|
||||
Systemen), was bedeutet, dass bei einem erfolgreichen expolit der User auf auf
|
||||
das UnrealIRCd Verzeichnis begrenzt ist und keinen Zugriff auf andere Dateien
|
||||
hat. Dies erfordert root Rechte und Änderungen in der include/config.h (suche
|
||||
nach CHROOTDIR und setze sowohl IRC_USER als auch IRC_GROUP und compiliere
|
||||
neu.)
|
||||
<p>
|
||||
<br>
|
||||
Eines allerdings sollte man tun: IMMER DIE NEUESTE VERSION BENUTZEN. Wenn man
|
||||
sich in die <a href="http://mail1.sourceforge.net/mailman/listinfo/unreal-notify"> Unreal-notify mailinglist</a> einträgt, erhält man die Ankündigung
|
||||
sich in die <a href="http://lists.sourceforge.net/mailman/listinfo/unreal-notify" target="_blank"> Unreal-notify mailinglist</a> einträgt, erhält man die Ankündigung
|
||||
über neue Versionen (unreal-notify ist nur für Ankündigungen und man
|
||||
erhält nur alle X Monate 1 Mail). Üblicherweise gibt es neue Releases, wenn
|
||||
es (bedeutende) Sicherheits Fixes gibt, aber eigentlich ist es gut, in jedem
|
||||
@@ -4413,16 +4522,14 @@ Datei</a></b></font></p>
|
||||
Übereinstimmung mit 0 oder 1 der vorhergehenden Zeichen. Dieses
|
||||
"vorhergehende Zeichen" ist auch der Punkt, worin sich das '?' in
|
||||
einer regex von einer Wildcard unterscheidet. In Wildcards bedeutet die Angabe
|
||||
von "a?c" eine Übereinstimmung mit einem "a", gefolgt von irgend einem (oder
|
||||
keinem) anderen Zeichen, gefolgt von einem "c." In Regex hat dies eine andere
|
||||
von "a?c" eine Übereinstimmung mit einem "a", gefolgt von irgend einem anderen Zeichen, gefolgt von einem "c." In Regex hat dies eine andere
|
||||
Bedeutung. Es wird auf Übereinstimmung geprüft mit 0 oder einem
|
||||
"a", gefolgt von dem Buchstaben "c". Damit
|
||||
kann durch das ? angegeben werden, wie viele "a" vorhanden
|
||||
sein dürfen. Soll das ? in einer Wildcard emuliert werden, wird der Punkt
|
||||
Operator verwendet. Der Ausdruck "a.?c" ist gleichbedeutend mit der zuvor
|
||||
Operator verwendet. Der Ausdruck "a.c" ist gleichbedeutend mit der zuvor
|
||||
beschrieben Wildcard. Geprüft wird auf Übereinstimmung mit einem
|
||||
"a", gefolgt von irgend einem oder keinen anderen Zeichen (das ?
|
||||
modifiziert den .), gefolgt von einem "c."</p><p>Der nächste
|
||||
"a", gefolgt von irgend einem anderen Zeichen, gefolgt von einem "c."</p><p>Der nächste
|
||||
Wiederholungsoperator ist der *. Auch dieser ist wieder ähnlich zum Wildcard
|
||||
Zeichen. Geprüft wird die Übereinstimmung mit 0 oder mehr der voranstehenden
|
||||
Zeichen. Zu beachten ist, dass dieses "vornstehende Zeichen" das
|
||||
|
||||
+16
-11
@@ -27,12 +27,12 @@ Spanish |
|
||||
<a href="unreal32docs.gr.html">Greek</a> |
|
||||
<a href="unreal32docs.nl.html">Dutch</a> |
|
||||
<a href="unreal32docs.ru.html">Russian</a> |
|
||||
<a href="unreal32docs.tk.html">Turkish</a>
|
||||
<a href="unreal32docs.tr.html">Turkish</a>
|
||||
<br><br>
|
||||
<div align="center"><b><font size="7">UnrealIRCd</font></b><br>
|
||||
<font size="4"><a href="http://www.unrealircd.com">http://www.unrealircd.com</a></font><br>
|
||||
<font size="4">Versión: 3.2.5</font><br>
|
||||
<b>Última actualización del documento:</b> 15-06-2006</div>
|
||||
<font size="4">Versión: 3.2.9-RC2</font><br>
|
||||
<b>Última actualización del documento:</b> 22-12-2006</div>
|
||||
<br>
|
||||
<b>Programadores:</b> Stskeeps / codemastr / Syzop / Luke<br>
|
||||
<b>Contribuciones:</b> McSkaf / Zogg / NiQuiL / assyrian / chasm / DrBin / llthangel / Griever / nighthawk<br>
|
||||
@@ -42,6 +42,7 @@ Spanish |
|
||||
<a href="http://www.vulnscan.org/UnrealIRCd/unreal32docs.html">http://www.vulnscan.org/UnrealIRCd/unreal32docs.html</a>
|
||||
y una FAQ en <a href="http://www.vulnscan.org/UnrealIRCd/faq/" TARGET="_blank">http://www.vulnscan.org/UnrealIRCd/faq/</a>.
|
||||
</p>
|
||||
<p><font color="red">WARNING: The translation of this document is not up to date, the English version is more recent.</font></p>
|
||||
<p><b>Navegadores compatibles: </b><br>
|
||||
<ul>
|
||||
<li>Opera 6.02
|
||||
@@ -148,7 +149,7 @@ Spanish |
|
||||
modificación alguna. – Copyright Equipo de Desarrollo UnrealIRCd 2002-2006</p>
|
||||
<p>Por favor lea este manual antes de solicitar ayuda, el 80% de las dudas más frecuentes están en una
|
||||
<a href="http://www.vulnscan.org/UnrealIRCd/faq/" target="_blank">FAQ</a>. Si todavía requiere ayuda,
|
||||
puede encontrarla en irc.ircsystems.net (puerto 6667) canal #unreal-support (nota:
|
||||
puede encontrarla en irc.unrealircd.org (puerto 6667) canal #unreal-support (nota:
|
||||
le pedimos que sean dudas relacionadas con UnrealIRCd, no con servicios).
|
||||
Si ha encontrado un error (como un bloqueo del programa) notifíquelo en
|
||||
<a href="http://bugs.unrealircd.org" TARGET="_blank">http://bugs.unrealircd.org</a>.</p>
|
||||
@@ -191,7 +192,7 @@ Windows:<br>
|
||||
<li><b>Versiones *NIX:</b>
|
||||
<ul>
|
||||
<li>Linux (2.2.*, 2.4.*, 2.6.*)
|
||||
<li>FreeBSD (4.*, 5.*)
|
||||
<li>FreeBSD (4.*, 5.*, 6.*)
|
||||
<li>NetBSD (2.*)
|
||||
<li>OpenBSD (3.7, 3.8, 3.9)
|
||||
<li>Solaris (9, 10)
|
||||
@@ -1873,14 +1874,16 @@ link <nombre-servidor> {
|
||||
<p><b>password-receive</b><br>
|
||||
Es la contraseña para validar uniones entrantes y puede ser encriptada (métodos crypt, md5, sha1 y ripemd-160). Puede dejarlo como texto plano. Generalmente es el mismo que la contraseña anterior.</p>
|
||||
<p><b>hub vs leaf</b><br>
|
||||
Un hub es un servidor con varios servidores unidos a él. Un leaf sólo tiene una unión, a su servidor. Un servidor o es un hub o un leaf, nunca ambos.</p>
|
||||
Un hub es un servidor con varios servidores unidos a él. Un leaf sólo tiene una unión, a su servidor.
|
||||
Un servidor se considera leaf si no tiene la directriz hub. También es leaf si la directriz leaf es *, o leafdepth es 1.</p>
|
||||
<p><b>hub</b> (opcional)<br>
|
||||
Este valor es la máscara de los servidores a los que puede conectar (ej: *.mi.red).</p>
|
||||
<p><b>leaf</b> (opcional)<br>
|
||||
Este valor es la máscara que este servidor actuará como leaf.towards.
|
||||
Este valor es una máscara de los servidores que este hub <b>no</b> conectará. Usando * es lo mismo que no usar ninguna directriz hub.
|
||||
</p>
|
||||
<p><b>leaf-depth</b> (opcional)<br>
|
||||
Si se especifica, la directriz leaf también debe especificarse. Este valor es la profundidad o número de uniones que puede tener.</p>
|
||||
Este valor especifica la profunidad (número de saltos) que este server puede alojar. Por ejemplo, 1 significa que el servidor no puede tener ningún link por debajo de él (un leaf), 2 significa que puede tener servidores linkados pero estos no pueden tener a su vez más servidores linkados por debajo suyo.
|
||||
Un valor de 0 significa que no hay límite, es el parámetro por defecto.</p>
|
||||
<p><b>class</b><br>
|
||||
Es la clase a la se relacionará este servidor, generalmente la clase server.</p>
|
||||
<p><b>compression-level</b> (opcional)<br>
|
||||
@@ -2228,11 +2231,11 @@ set {
|
||||
<p><font class="set">set::options::fail-oper-warn;</font><br>
|
||||
Si está presente, se notificará al usuario de que su intento de /oper ha fallado y se ha logueado.</p>
|
||||
<p><font class="set">set::dns::timeout <timevalue>;</font><br>
|
||||
Tiempo de espera del servidor DNS si no obtiene respuesta. Si el valor es una cadena alfanumérica, use d para días, h para horas, m para minutos y s para segundos. Por ejemplo 1d2h3m significa 1 día, 2 horas y 3 minutos.</p>
|
||||
Tiempo de espera del servidor DNS si no obtiene respuesta. Si el valor es una cadena alfanumérica, use d para días, h para horas, m para minutos y s para segundos. Por ejemplo 1d2h3m significa 1 día, 2 horas y 3 minutos (NO IMPLEMENTADO).</p>
|
||||
<p><font class="set">set::dns::retries <nº-intentos>;</font><br>
|
||||
Número de intentos si el servidor DNS no obtiene respuesta.</p>
|
||||
Número de intentos si el servidor DNS no obtiene respuesta (NO IMPLEMENTADO).</p>
|
||||
<p><font class="set">set::dns::nameserver <name-of-dns-server>;</font><br>
|
||||
Especifica el host del servidor a usar en las búsquedas DNS. </p>
|
||||
Especifica el host del servidor a usar en las búsquedas DNS (NO IMPLEMENTADO).</p>
|
||||
<p><font class="set">set::dns::bind-ip <ip>;</font><br>
|
||||
Especifica la IP a enlazar para el resolver. Raras veces se usa.</p>
|
||||
<p><font class="set">set::network-name <nombre-de-red>;</font><br>
|
||||
@@ -2323,6 +2326,8 @@ set {
|
||||
<p><font class="set">set::timesynch::timeout <time></font><br>
|
||||
Máximo tiempo a esperar las respuestas de los servidores de hora. Este valor debe estar entre 1 y 5 segundos. No es posible más alto porque puede causar demasiada diferencia de hora.
|
||||
Por defecto es 3 y no hay ninguna razón para cambiarlo.</p>
|
||||
<p><font class="set">set::pingpong-warning <yes|no></font><br>
|
||||
Cuando NOSPOOF está activo (normalmente lo está en Windows), envía un mensaje de advertencia a cada usuario para que use '/quote pong ..' si tiene problemas para conectar. Por defecto está en 'no'.</p>
|
||||
</div>
|
||||
<p><b><font size="+2">5 – Archivos adicionales <a name="addtlfiles"></a>
|
||||
</font></b></p>
|
||||
|
||||
+4714
-3256
File diff suppressed because it is too large
Load Diff
+3793
-3281
File diff suppressed because it is too large
Load Diff
+399
-139
@@ -12,7 +12,8 @@
|
||||
.block_old { font-size: 14; }
|
||||
.set { font-weight: bold; }
|
||||
.desc { margin-left: 15px; }
|
||||
pre { font: "times new roman"; font-style: normal; background-color: #eeeeee;}
|
||||
.inline_pre { font-family: monospace; font-style: normal; background-color: #eeeeee;}
|
||||
pre { font-family: monospace; font-style: normal; background-color: #eeeeee;}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
@@ -27,29 +28,23 @@ English |
|
||||
<a href="unreal32docs.gr.html">Greek</a> |
|
||||
<a href="unreal32docs.nl.html">Dutch</a> |
|
||||
<a href="unreal32docs.ru.html">Russian</a> |
|
||||
<a href="unreal32docs.tk.html">Turkish</a>
|
||||
<a href="unreal32docs.tr.html">Turkish</a>
|
||||
<br><br>
|
||||
<div align="center"><b><font size="7">UnrealIRCd</font></b><br>
|
||||
<font size="4"><a href="http://www.unrealircd.com">http://www.unrealircd.com</a></font><br>
|
||||
<font size="4">Version: 3.2.5</font><br>
|
||||
<b>Last doc update:</b> 2006-06-15</div>
|
||||
<font size="4">Version: 3.2.9-RC2</font><br>
|
||||
<b>Last doc update:</b> 2010-11-15</div>
|
||||
<br>
|
||||
<b>Head Coders:</b> Stskeeps / codemastr / Syzop / Luke<br>
|
||||
<b>Contributors:</b> McSkaf / Zogg / NiQuiL / assyrian / chasm / DrBin / llthangel / Griever / nighthawk<br>
|
||||
<b>Documentation:</b> CKnight^ / Syzop<br>
|
||||
<b>Head coder/maintainer:</b> Syzop<br>
|
||||
<b>Coders:</b> binki<br>
|
||||
<b>Previous coders & contributors:</b> Stskeeps, codemastr, Luke, aquanight,
|
||||
WolfSage, McSkaf, Zogg, NiQuiL, assyrian, chasm, DrBin, llthangel,
|
||||
Griever, nighthawk<br>
|
||||
<b>Documentation:</b> CKnight^ (initial documentation), Syzop (major rewrite), codemastr, and many contributors<br>
|
||||
<p>To view this documentation you must have a compatible browser, which are listed below. Up to date docs are
|
||||
available at <a href="http://www.vulnscan.org/UnrealIRCd/unreal32docs.html">http://www.vulnscan.org/UnrealIRCd/unreal32docs.html</a>
|
||||
and a FAQ at <a href="http://www.vulnscan.org/UnrealIRCd/faq/" TARGET="_blank">http://www.vulnscan.org/UnrealIRCd/faq/</a>.
|
||||
</p>
|
||||
<p><b>Compatible Browsers: </b><br>
|
||||
<ul>
|
||||
<li>Opera 6.02
|
||||
<li>Microsoft Internet Explorer 6.X / 5.5
|
||||
<li>Netscape Navigator 6.X
|
||||
<li>Mozilla 1.2.X
|
||||
<li>Lynx (to a point)
|
||||
</ul>
|
||||
</p>
|
||||
<p><font size="+2"><b>INDEX / TABLE OF CONTENTS</b></font><br>
|
||||
1. <a href="#IntroductionNotes">Introduction & Notes</a><br>
|
||||
---1.1. <a href="#notesonolder">Notes on upgrading/mixing 3.1.x -> 3.2</a><br>
|
||||
@@ -114,6 +109,7 @@ English |
|
||||
---4.35. <a href="#spamfilter">Spamfilter Block</a><br>
|
||||
---4.36. <a href="#cgiirc">Cgiirc Block</a><br>
|
||||
---4.37. <a href="#setblock">Set Block -=- (networks/unrealircd.conf)</a><br>
|
||||
---4.38. <a href="#filesblock">Files Block</a><br />
|
||||
5. <a href="#addtlfiles">Additional Files</a><br>
|
||||
6. <a href="#userchannelmodes">User & Channel Modes</a><br>
|
||||
7. <a href="#useropercommands">User & Oper Commands</a><br>
|
||||
@@ -127,7 +123,9 @@ English |
|
||||
---8.7. <a href="#secinformation">Information disclosure</a><br>
|
||||
---8.8. <a href="#secantiexploit">Protecting against exploits</a><br>
|
||||
---8.9. <a href="#secsummary">Summary</a><br>
|
||||
9. <a href="http://www.vulnscan.org/UnrealIRCd/faq/" target="_blank">Frequently Asked Questions (FAQ)</a><br>
|
||||
9. <a href="http://www.vulnscan.org/UnrealIRCd/faq/" target="_blank">Frequently Asked Questions (FAQ)</a><br />
|
||||
10. <a href="#modules">Modules</a><br />
|
||||
---10.1. <a href="#modules_m_nopost">m_nopost</a><br />
|
||||
A. <a href="#regex">Regular Expressions</a><br>
|
||||
---A.1. <a href="#regexlit">Literals</a><br>
|
||||
---A.2. <a href="#regexdot">Dot Operator</a><br>
|
||||
@@ -149,8 +147,9 @@ English |
|
||||
modified in anyway. – Copyright UnrealIRCd Development Team 2002-2006</p>
|
||||
<p>Please read this manual before asking for help, you also REALLY want to take a look at the
|
||||
<a href="http://www.vulnscan.org/UnrealIRCd/faq/" target="_blank">FAQ</a> since over 80% of your questions/problems are answered in it. If you still
|
||||
need help you can ask for support at irc.ircsystems.net (port 6667) channel #unreal-support (note
|
||||
need help you can ask for support at irc.unrealircd.org (port 6667) channel #unreal-support (note
|
||||
that we REQUIRE you to read the docs and faq and we only help with UnrealIRCd, not with services!).
|
||||
You can also use the forums located at <a href="http://forums.unrealircd.com/" TARGET="_blank">http://forums.unrealircd.com</a>.
|
||||
If you have a real bug (like a crash) then report it at
|
||||
<a href="http://bugs.unrealircd.org" TARGET="_blank">http://bugs.unrealircd.org</a>.</p></div>
|
||||
|
||||
@@ -187,7 +186,7 @@ Windows:<br>
|
||||
<li><b>*NIX versions:</b>
|
||||
<ul>
|
||||
<li>Linux (2.2.*, 2.4.*, 2.6.*)
|
||||
<li>FreeBSD (4.*, 5.*)
|
||||
<li>FreeBSD (4.*, 5.*, 6.*)
|
||||
<li>NetBSD (2.*)
|
||||
<li>OpenBSD (3.7, 3.8, 3.9)
|
||||
<li>Solaris (9, 10)
|
||||
@@ -249,12 +248,14 @@ because otherwise you will not understand concepts such as 'cloaking', 'snomasks
|
||||
uppercase (A-Z) and digit (0-9) charachters [eg: "AopAS6WQH2Os6hfosh4SFJHs"]. See example.conf for an example.<br>
|
||||
<p>Cloak keys MUST be the same on ALL SERVERS in a network. Also cloak keys should be kept SECRET
|
||||
because it's possible to decode the original host if you know the keys (which makes umode +x useless).</p>
|
||||
<p>Hint: If you are on *NIX and have to create new cloak keys, you can run './unreal gencloak'
|
||||
in your shell, which will output 3 random strings that you can use.</p>
|
||||
</div>
|
||||
<p><font size="+2"><b>3.2 - Modules</b></font><a name="feature_modules"></a></p><div class="desc">
|
||||
<p>UnrealIRCd supports modules which is nice because:<br>
|
||||
- You can load/reload/unload them while the ircd is running (by /rehash). This allows some bugs to be fixed or new features to be added without requiring a restart!<br>
|
||||
- Other people can create (3rd party) modules with new commands, usermodes and even channelmodes.<br>
|
||||
UnrealIRCd only comes with a few modules. Take a look at www.unrealircd.com -> modules
|
||||
UnrealIRCd only comes with a few <a href="#modules">modules</a>. Take a look at www.unrealircd.com -> modules
|
||||
or use google to find 3rd party modules.<br>
|
||||
<p>You need to load at least 2 modules or else you won't be able to boot!:<br>
|
||||
- the commands module: commands.so (commands.dll on windows)<br>
|
||||
@@ -301,10 +302,12 @@ because otherwise you will not understand concepts such as 'cloaking', 'snomasks
|
||||
the help block in the configuration file. Additionally, a help.conf is included which contains some basic help for
|
||||
all commands.<br>
|
||||
For example <i>/helpop chmodes</i> gives you a overview of all channel modes UnrealIRCd has.<br>
|
||||
</p></div>
|
||||
Remember that if you are an ircop (helpop) you will have to prefix the keyword with a '?' character,
|
||||
so <i>/helpop</i> becomes <i>/helpop ?</i> and
|
||||
<i>/helpop chmodes</i> becomes <i>/helpop ?chmodes</i> etc..</p></div>
|
||||
|
||||
<p><font size="+2"><b>3.6 - Oper access levels</b></font><a name="feature_operaccesslevels"></a></p><div class="desc">
|
||||
<p>There are several oper levels in UnrealIRCd and you can add additional rights (like to use /gline) to
|
||||
<p id="feature_operaccesslevels"><font size="+2"><b>3.6 - Oper access levels</b></font></p><div class="desc">
|
||||
<p>There are several <a href="#operblock_flags">oper levels</a> in UnrealIRCd and you can add additional rights (like to use /gline) to
|
||||
each of them, that way you can give each oper the privileges they need.</p>
|
||||
<p>This is controlled by the oper flags in the oper block, see the oper block for more information.</p></div>
|
||||
|
||||
@@ -470,14 +473,30 @@ If you ban *!*@*.303AEBC6.IP you ban *!*@1.2.*<br>
|
||||
This information might be helpful to you when deciding how broad a ban should be.<br>
|
||||
<br>
|
||||
<b>Extended bantypes</b><br>
|
||||
Extended bans look like ~[!]<type>:<stuff>. Currently the following types are available:<br>
|
||||
Extended bans look like ~<type>:<parameter>.<br>
|
||||
They let you ban (or exempt) based on things other than the traditional nick!user@host mask.
|
||||
They also provide support for things like 'quieting' users.<br>
|
||||
<br>
|
||||
These bantypes specify which actions are affected by a ban:<br>
|
||||
<br>
|
||||
<table border=1>
|
||||
<tr><td>type:</td><td>name</td><td>explanation:</td></tr>
|
||||
<tr><td>~q</td><td>quiet</td><td>People matching these bans can join but are unable to speak,
|
||||
unless they have +v or higher. <i>Ex: ~q:*!*@blah.blah.com</i></td></tr>
|
||||
<tr><td>~n</td><td>nickchange</td><td>People matching these bans cannot change nicks,
|
||||
unless they have +v or higher. <i>Ex: ~n:*!*@*.aol.com</i></td></tr>
|
||||
<tr><td>~c</td><td>[prefix]channel</td><td>If the user is in this channel then (s)he is unable to join.
|
||||
<tr><td>~j</td><td>join</td><td>If a user matches this, he may not join the channel.
|
||||
He may perform all other activities if he is already on the channel, such as speaking and changing his nick.
|
||||
<i>Ex: ~j:*!*@*.aol.com</i><br>
|
||||
Could be useful to prevent people from one ISP from joining, but still make
|
||||
them able to speak/nickchange freely once in the channel, like after an /INVITE.</td></tr>
|
||||
</table>
|
||||
<br>
|
||||
These bantypes introduce new criteria which can be used:<br>
|
||||
<br>
|
||||
<table border=1>
|
||||
<tr><td>type:</td><td>name</td><td>explanation:</td></tr>
|
||||
<tr><td>~c</td><td>channel</td><td>If the user is in this channel then (s)he is unable to join.
|
||||
A prefix can also be specified (+/%/@/&/~) which means that it will only match if the user has
|
||||
that rights or higher on the specified channel.
|
||||
<i>Ex: +b ~c:#lamers, +e ~c:@#trusted </i></td></tr>
|
||||
@@ -485,9 +504,18 @@ Extended bans look like ~[!]<type>:<stuff>. Currently the following
|
||||
<i>Ex: ~r:*Stupid_bot_script*</i><br>
|
||||
NOTE: an underscore ('_') matches both a space (' ') and an underscore ('_'), so this ban would match
|
||||
'Stupid bot script v1.4'.</td></tr>
|
||||
<tr><td>~R</td><td>registered</td><td>If a user has identified to services (usually NickServ)
|
||||
and matches this nickname, then this ban will match. This means this ban is really only useful for ban
|
||||
exemptions (+e).<br>
|
||||
Ex: <i>+e ~R:Nick</i> will allow Nick in the channel, regardless of other bans, if he identified to
|
||||
NickServ and is using the nickname Nick.<br>
|
||||
</td></tr>
|
||||
</table>
|
||||
These bantypes are also supported in the channel exception list (+e).<br>
|
||||
Modules can also add other extended ban types.<br>
|
||||
<br>
|
||||
You may stack extended bans from the 1st group with the 2nd, such as <i>+b ~q:~c:#lamers</i>, which
|
||||
would quiet all users who have joined #lamers.<br>
|
||||
<br>
|
||||
Modules can add other extended ban types.<br>
|
||||
</p></div>
|
||||
|
||||
<p><font size="+2"><b>3.14 - Spamfilter</b></font><a name="feature_spamfilter"></a></p><div class="desc">
|
||||
@@ -524,6 +552,9 @@ Modules can also add other extended ban types.<br>
|
||||
<tr><td>dccblock</td><td>mark the user so (s)he's unable to send any DCCs</td></tr>
|
||||
<tr valign="top"><td>viruschan</td><td>part all channels, join set::spamfilter::virus-help-channel, disables all commands
|
||||
except PONG, ADMIN, and msg/notices to set::spamfilter::virus-help-channel</td></tr>
|
||||
<tr><td>warn</td><td>send a notice to IRCOps (spamfilter snomask), and
|
||||
inform the user that the message has been intercepted. No further action is
|
||||
taken, the message is not blocked.</td></tr>
|
||||
</table></tr></td>
|
||||
<tr valign="top"><td><b>[tkltime]</b></td><td> The duration of the *line/shun added by the filter, use '-' to use the default or to skip
|
||||
(eg: if action = 'block')</td></tr>
|
||||
@@ -560,7 +591,23 @@ into spaces at runtime. And double underscore ('__') gets an underscore ('_'). A
|
||||
<b>set::spamfilter::ban-reason</b> allows you to specify a default reason (default: 'Spam/advertising')<br>
|
||||
<b>set::spamfilter::virus-help-channel</b> allows you to specify the channel to join for action 'viruschan' (default: #help)<br>
|
||||
<b>set::spamfilter::virus-help-channel-deny</b> allows you to block any normal joins to virus-help-channel (default: no)<br>
|
||||
</p></div>
|
||||
</p>
|
||||
<p>
|
||||
<font size="+1"><B>Slow Spamfilter Detection</B></font><a name="feature_spamfilter_slow"></a><br>
|
||||
A spamfilter regex can slow down the IRCd considerably. This really depends
|
||||
on the regex you use (and how the regex engine handles it), some are very
|
||||
fast and UnrealIRCd can execute thousands of them per second. Others can be
|
||||
extremely slow, take several seconds to execute, and could freeze the IRCd.<br>
|
||||
To help against this, Unreal comes with Slow Spamfilter Detection: For each
|
||||
spamfilter, Unreal checks, each time it executes, how long it takes to
|
||||
execute. Once a certain threshold is reached the IRCd will warn or even remove
|
||||
the spamfilter.<br>
|
||||
Warning is configured through <b>set::spamfilter::slowdetect-warn</b> (default: 250ms)
|
||||
and automatic deletion is configured by <b>set::spamfilter::slowdetect-fatal</b> (default: 500ms).
|
||||
You can set both settings to 0 (zero) to disable slow spamfilter detection.<br>
|
||||
This feature is currently not available on Windows.<br>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<p><font size="+2"><b>3.15 - CIDR</b></font><a name="feature_cidr"></a></p><div class="desc">
|
||||
<p>UnrealIRCd now has support for CIDR (Classless Interdomain Routing). CIDR allows you to ban
|
||||
@@ -590,10 +637,10 @@ A table of all possible choices:<br>
|
||||
<tr><td>swedish</td><td>Swedish characters</td><td>iso8859-1 (latin1)</td></tr>
|
||||
<tr><td><b>latin1</b></td><td>catalan, danish, dutch, french, german, swiss-german, spanish, icelandic, italian, swedish</td><td>iso8859-1 (latin1)</td></tr>
|
||||
<tr><td>hungarian</td><td>Hungarian characters</td><td>iso8859-2 (latin2), windows-1250</td></tr>
|
||||
<tr><td>polish</td><td>Polish characters</td><td>iso8859-2 (latin2)</td></tr>
|
||||
<tr><td>polish-iso</td><td>Polish characters (note that polish-w1250 is more common!)</td><td>iso8859-2 (latin2)</td></tr>
|
||||
<tr><td>romanian</td><td>Romanian characters</td><td>iso8859-2 (latin2), windows-1250, iso8859-16</td></tr>
|
||||
<tr><td><b>latin2</b></td><td>hungarian, polish, romanian</td><td>iso8859-2 (latin2)</td></tr>
|
||||
<tr><td>polish-w1250</td><td>Polish characters, windows variant (unfortunately more common than iso)</td><td>windows-1250</td></tr>
|
||||
<tr><td><b>latin2</b></td><td>hungarian, polish-iso, romanian</td><td>iso8859-2 (latin2)</td></tr>
|
||||
<tr><td>polish-w1250</td><td>Polish characters, windows variant</td><td>windows-1250</td></tr>
|
||||
<tr><td>slovak-w1250</td><td>Slovak characters, windows variant</td><td>windows-1250</td></tr>
|
||||
<tr><td>czech-w1250</td><td>Czech characters, windows variant</td><td>windows-1250</td></tr>
|
||||
<tr><td><b>windows-1250</b></td><td>polish-w1250, slovak-w1250, czech-w1250, hungarian, romanian</td><td>windows-1250</td></tr>
|
||||
@@ -766,11 +813,6 @@ class <name> {
|
||||
maxclients <maximum-clients>;
|
||||
sendq <send-queue>;
|
||||
recvq <recv-queue>;
|
||||
options {
|
||||
<option>;
|
||||
<option>;
|
||||
...
|
||||
};
|
||||
};
|
||||
</pre></p>
|
||||
<p> </p>
|
||||
@@ -784,10 +826,6 @@ class <name> {
|
||||
<p><b>sendq</b> specifies the amount of data which can be in the send queue (very high for servers with low bandwidth, medium for clients)</p>
|
||||
<p><b>recvq</b> specifies the amount of data which can be in the receive queue and is used for flood control
|
||||
(this only applies to normal users, try experimenting with values 3000-8000, 8000 is the default).</p>
|
||||
<p><b>options block</b> (optional)<br>
|
||||
Valid options are:<br>
|
||||
<b>notargetlag</b> users are not artificialy lagged. So, they will not get "Message target change too fast." anymore<br>
|
||||
</p>
|
||||
<p>Examples:<br>
|
||||
<pre>
|
||||
class clients {
|
||||
@@ -816,6 +854,7 @@ allow {
|
||||
class <connection-class>;
|
||||
password <connection-password> { <auth-type>; };
|
||||
maxperip <max-connections-per-ip>;
|
||||
ipv6-clone-mask <number-of-bits>;
|
||||
redirect-server <server-to-forward-to>;
|
||||
redirect-port <port-to-forward-to>;
|
||||
options {
|
||||
@@ -846,6 +885,16 @@ allow {
|
||||
<p><b>maxperip</b> (optional, but recommended)<br>
|
||||
Allows you to specify how many connections per IP are allowed to this server (ex: maxperip 4;).
|
||||
</p>
|
||||
<p id="allowblock_ipv6clonemask"><b>ipv6-clone-mask</b>
|
||||
(optional, defaults to <a href="#set_defaultipv6clonemask">set::default-ipv6-clone-mask</a>)<br />
|
||||
This option controls clone detection. If two clients connect from different IPv6 addresses
|
||||
but only the last few bits are different, there is almost a guarantee that both clients
|
||||
are really one person. This option only affects the enforcement of
|
||||
<a href="#allowblock_maxperip">allow::maxperip</a>. For example, if you set this option to
|
||||
128, then each IPv6 address will be considered unique. Because of current IP allocation
|
||||
policies, it is recommended that your most general <a href="#allowblock">allow block</a>
|
||||
use a value of 64.
|
||||
</p>
|
||||
<p><b>redirect-server</b> (optional)<br>
|
||||
If the class is full, redirect users to this server (if clients supports it [mIRC 6 does]).</p>
|
||||
<p><b>redirect-port</b> (optional)<br>
|
||||
@@ -856,7 +905,7 @@ allow {
|
||||
<b>noident</b> don't use ident but use username specified by client<br>
|
||||
<b>ssl</b> only match if this client is connected via SSL<br>
|
||||
<b>nopasscont</b> continue matching if no password was given (so you can put clients in special classes
|
||||
if they supply a password).</p>
|
||||
if they supply a password).
|
||||
<p>Examples:<br>
|
||||
<pre>
|
||||
allow {
|
||||
@@ -926,8 +975,8 @@ listen *:6601 {
|
||||
<p>listen *:8067;<br>
|
||||
listen 213.12.31.126:6667;<br>
|
||||
listen *:6660-6669;</p></div>
|
||||
<p><font class="block_section">4.7 - </font><font class="block_name">Oper Block</font>
|
||||
<font class="block_recommended">RECOMMENDED</font> <font class="block_old">(Previously known as the O:Line)</font><a name="operblock"></a><div class="desc">
|
||||
<p><font class="block_section">4.7 - </font><font id="operblock" class="block_name">Oper Block</font>
|
||||
<font class="block_recommended">RECOMMENDED</font> <font class="block_old">(Previously known as the O:Line)</font><div class="desc">
|
||||
</p>
|
||||
<p>
|
||||
<pre>oper <name> {
|
||||
@@ -952,18 +1001,47 @@ listen *:6601 {
|
||||
<p>The oper block allows you to assign IRC Operators for your server. The <b>oper::</b>
|
||||
specifies the login name for the /oper. The <b>oper::from::userhost</b> is a user@host
|
||||
mask that the user must match, you can specify more than one hostmask by creating
|
||||
more than one oper::from::userhost. The <b>oper::password</b> is the password the user
|
||||
must specify, oper::password:: allows you to specify an authentication method
|
||||
for this password, valid auth-types are crypt, md5, and sha1, ripemd-160. If
|
||||
you want to use a plain-text password leave this sub-block out.</p>
|
||||
<p>Please note that BOTH the login name and password are case sensitive</p>
|
||||
more than one oper::from::userhost.
|
||||
</p>
|
||||
<p id="operblock_password">The <b>oper::password::</b> is the password the oper must specify.
|
||||
<b>oper::password::auth-type</b> allows you to specify an authentication method
|
||||
for this password. Don't specify <b>oper::password::auth-type</b> for plaintext password.
|
||||
Valid auth-types are <tt>crypt</tt>, <tt>md5</tt>, <tt>sha1</tt>, <tt>ripemd160</tt>,
|
||||
and <tt>sslclientcert</tt>. Specifying any one of these types means that the
|
||||
value of <b>oper::password::</b> is a hash generated with
|
||||
<a href="#cmd_mkpasswd">mkpasswd</a>.
|
||||
</p>
|
||||
<p id="operblock_password_sslclientcert">
|
||||
<tt>sslclientcert</tt> is an exceptional auth-type. When this is
|
||||
chosen as the auth-type, <b>oper::password::</b> should be a file
|
||||
path (relative to UnrealIRCd's installation directory). The file
|
||||
should be a PEM-encoded SSL certificate (the public certificate, not
|
||||
a key). This specifies that only an IRC client that
|
||||
<ol>
|
||||
<li>is connected using SSL</li>
|
||||
<li>presented the matching client certficate when connecting</li>
|
||||
<li>has access to the private key associated with the certficiate file</li>
|
||||
</ol>
|
||||
may connect. Of course, this feature requires that UnrealIRCd be
|
||||
compiled with SSL support. Also, as any SSL certificate's associated
|
||||
key is much longer than a normal human's password and much more
|
||||
random, this is the securest authentication option. To oper
|
||||
up when you have specified a client SSL certificate as the oper's
|
||||
password, just ensure that the client is set up correctly and issue
|
||||
<pre>/oper <name> :</pre>. The <tt>sslclientcert</tt>
|
||||
auth-type may also be used
|
||||
for <a href="#linkblock_passwordreceive">link::password-receive</a>
|
||||
to secure <a href="#linkblock">link block</a>s.
|
||||
</ol>
|
||||
</p>
|
||||
<p>Please note that BOTH the password and login name are case sensitive.</p>
|
||||
<p>The <b>oper::class</b> directive specifies the name of a preexisting (appears before
|
||||
this in the config file) class name that the oper block will use.</p>
|
||||
<p>The <b>oper::flags</b> directive has two formats. If you wish to use the old style
|
||||
oper flags i.e., OAa, you use the flags <flags> method, if you want to
|
||||
use the new style,i.e., services-admin, then you use the flags { <flag>;
|
||||
} method. Below is a list of all the flags (in both formats) and what they do.</p>
|
||||
<table width="75%" border="1">
|
||||
<table width="75%" border="1" id="operblock_flags">
|
||||
<tr>
|
||||
<td width="10%"><div align="center"><b>Old Flag</b></div></td>
|
||||
<td width="16%"><div align="center"><b>New Flag</b></div></td>
|
||||
@@ -1017,7 +1095,7 @@ listen *:6601 {
|
||||
<tr>
|
||||
<td><div align="center">h</div></td>
|
||||
<td><div align="center">helpop</div></td>
|
||||
<td>Oper is marked as "availiable for help" when he/she is not away</td>
|
||||
<td>Oper receives umode +h (helpop)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><div align="center">w</div></td>
|
||||
@@ -1104,6 +1182,11 @@ listen *:6601 {
|
||||
<td><div align="center">can_setq</div></td>
|
||||
<td>Can use usermode +q</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><div align="center">X</div></td>
|
||||
<td><div align="center">can_addline</div></td>
|
||||
<td>Can use /addline</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><div align="center">d</div></td>
|
||||
<td><div align="center">can_dccdeny</div></td>
|
||||
@@ -1269,7 +1352,7 @@ oper bobsmith {
|
||||
global;
|
||||
};
|
||||
swhois "Example of a whois mask";
|
||||
snomask cFfkoSsqNG;
|
||||
snomask frebWqFv;
|
||||
};
|
||||
</pre></p>
|
||||
<a name="operoverride"><b>Some little info about OperOverride:</b><br>
|
||||
@@ -1302,18 +1385,11 @@ drpass {
|
||||
<p><font class="block_section">4.9 - </font><font class="block_name">Include Directive</font><a name="includedirective"></a><div class="desc">
|
||||
</p>
|
||||
<p>Syntax:<br>
|
||||
<pre>
|
||||
include <file-name> {
|
||||
bind-ip <ip-to-bind-to>;
|
||||
};</pre></p>
|
||||
include <file-name>;</p>
|
||||
<p>This directive specifies a filename to be loaded as a separate configuration
|
||||
file. This file may contain any type of config block and can even include other
|
||||
files. Wildcards are supported in the file name to allow you to load multiple
|
||||
files at once.</p>
|
||||
<p><b>bind-ip</b> (optional)<br>
|
||||
Can be used to bind to a specific IP (ex: 192.168.0.1) from where we should
|
||||
connect from to download file-name in case of having LIBCURL defined.
|
||||
</p>
|
||||
<p><b>example 1: a network file</b><br>
|
||||
<pre>include mynetwork.network;</pre></p>
|
||||
<p>That would be the statement to use if you wanted to use a separate network
|
||||
@@ -1340,7 +1416,7 @@ include <file-name> {
|
||||
<font class="block_required">REQUIRED</font><a name="loadmoduledirective"></a><div class="desc">
|
||||
</p>
|
||||
<p>Syntax:<br>
|
||||
<pre>loadmodule <file-name>;</pre></p>
|
||||
loadmodule <file-name>;</p>
|
||||
<p>See <a href="#feature_modules">here</a> why modules are nice/useful.</p>
|
||||
<p>Modules that come standard with Unreal3.2:</p>
|
||||
<p>commands.so / commands.dll - All the / commands (well not all yet, but will eventually be all) <font color="red">REQUIRED</font><br>
|
||||
@@ -1382,10 +1458,9 @@ log <file-name> {
|
||||
<table border=0>
|
||||
<tr><td>errors</td><td>self explanatory</td></tr>
|
||||
<tr><td>kills</td><td>logs /kill notices</td></tr>
|
||||
<tr><td>tkl</td><td>logs info on *lines, shuns and spamfilters (adding/removing/expire)</td></tr>
|
||||
<tr><td>tkl</td><td>logs info on *lines (/kline, /zline, etc), shuns and spamfilters (adding/removing/expire)</td></tr>
|
||||
<tr><td>connects</td><td>logs user connects/disconnects</td></tr>
|
||||
<tr><td>server-connects</td><td>logs server connects/squits</td></tr>
|
||||
<tr><td>kline</td><td>logs /kline usage</td></tr>
|
||||
<tr><td>oper</td><td>logs oper attempts (both failed and successful)</td></tr>
|
||||
<tr><td>sadmin-commands</td><td>logs /sa* (samode, sajoin, sapart, etc.) usage</td></tr>
|
||||
<tr><td>chg-commands</td><td>logs /chg* (chghost, chgname, chgident, etc.) usage</td></tr>
|
||||
@@ -1402,7 +1477,6 @@ log ircd.log {
|
||||
errors;
|
||||
kills;
|
||||
oper;
|
||||
kline;
|
||||
tkl;
|
||||
};
|
||||
};
|
||||
@@ -1591,9 +1665,11 @@ except ban {
|
||||
mask <hostmask>;
|
||||
};</pre></p>
|
||||
<p>The except ban block allows you to specify a user@host that will override a
|
||||
ban placed on a broader host. This is useful when you want an ISP banned, but
|
||||
ban { } and KLINE/ZLINE placed on a broader host. This is useful when you want an ISP banned, but
|
||||
still want specific users to be able to connect. The except::mask directive
|
||||
specifies the user@host mask of the client who will be allowed to connect.</p>
|
||||
<p>NOTE: If you want to exempt a host completely from all possible bans
|
||||
(except spamfilter), then you need both an 'except ban' and an 'except tkl' block</p>
|
||||
<p>Example:<br>
|
||||
<pre>
|
||||
except ban {
|
||||
@@ -1619,9 +1695,11 @@ except tkl {
|
||||
still want specific users to be able to connect. The except::mask directive
|
||||
specifies the user@host mask of the client who will be allowed to connect. The
|
||||
except::type specifies which type of ban this should override. Valid types are
|
||||
gline, gzline, qline, gqline, and shun, which make an exception from Glines,
|
||||
Global Zlines, Qlines, Global Qlines, and shuns. If the type {} format is used,
|
||||
multiple types may be specified.</p>
|
||||
gline, gzline, qline, gqline, shun, and all, which make an exception from Glines,
|
||||
Global Zlines, Qlines, Global Qlines, shuns, and all bans except
|
||||
KLINE/ZLINE. If the type {} format is used, multiple types may be specified.</p>
|
||||
<p>NOTE: If you want to exempt a host completely from all possible bans
|
||||
(except spamfilter), then you need both an 'except ban' and an 'except tkl' block</p>
|
||||
<p>Example:<br>
|
||||
<pre>
|
||||
except tkl {
|
||||
@@ -1858,16 +1936,22 @@ badword <type> {
|
||||
action <replace|block>;
|
||||
};</pre></p>
|
||||
<p>The badword block allows you to manipulate the list used for user and channel
|
||||
mode +G to strip "badwords". The badword:: specifies the type, valid
|
||||
types are channel, message, quit, and all. channel is for the channel +G list, message
|
||||
is for the user +G list, quit is for quit message censoring, and all adds it to all three lists.
|
||||
The badword::word can be a simple word or a regular expression we should search for. The
|
||||
badword::replace is what we should replace this match with. If badword::replace
|
||||
is left out, the word is replaced with <censored>. The badword::action defines
|
||||
mode +G to strip "badwords". The <b>badword::</b> specifies the type, which decides
|
||||
what messages this badword filter applies to. The valid types are:</p>
|
||||
<ul>
|
||||
<li><tt>channel</tt> applies to channels with mode +G.</li>
|
||||
<li><tt>message</tt> applies to private messages (not in-channel messages) sent by a user with the +G usermode.</li>
|
||||
<li><tt>quit</tt> applies to all quit messages.</li>
|
||||
<li><tt>all</tt> applies to all three of the above situations.</li>
|
||||
</ul>
|
||||
<p>
|
||||
The <b>badword::word</b> can be a simple word or a regular expression we should search for. The
|
||||
<b>badword::replace</b> is what we should replace this match with. If <b>badword::replace</b>
|
||||
is left out, the word is replaced with <censored>. The <b>badword::action</b> defines
|
||||
what action should be taken if this badword is found. If you specify replace, then the
|
||||
badword is replaced, if you specify block, then the entire message is blocked. If you do
|
||||
not specify a badword::action, replace is assumed.</p>
|
||||
<p>Example:<br>
|
||||
not specify a <b>badword::action</b>, replace is assumed.</p>
|
||||
<p>Example:<br />
|
||||
<pre>
|
||||
badword channel {
|
||||
word shit;
|
||||
@@ -1895,8 +1979,8 @@ ulines {
|
||||
stats.mynetwork.com;
|
||||
};</pre></p>
|
||||
<p></p></div>
|
||||
<p><font class="block_section">4.31 - </font><font class="block_name">Link Block</font>
|
||||
<font class="block_optional">OPTIONAL</font> <font class="block_old">(Previously known as C/N/H:Lines)</font><a name="linkblock"></a>
|
||||
<p id="linkblock"><font class="block_section">4.31 - </font><font class="block_name">Link Block</font>
|
||||
<font class="block_optional">OPTIONAL</font> <font class="block_old">(Previously known as C/N/H:Lines)</font>
|
||||
</p><div class="desc">
|
||||
<p>Syntax:<br>
|
||||
<pre>
|
||||
@@ -1946,10 +2030,13 @@ link <server-name> {
|
||||
<p><b>password-connect</b><br>
|
||||
The password used for connecting to the remote server, must be plain-text.
|
||||
</p>
|
||||
<p><b>password-receive</b><br>
|
||||
The password used for validating incoming links, can be encrypted (valid methods
|
||||
are crypt, md5, sha1, ripemd-160). You can leave the auth-type parameter out to
|
||||
just use plain-text. Often this password is the same as your password-connect.
|
||||
<p id="linkblock_passwordreceive"><b>password-receive</b><br> The password used for validating
|
||||
incoming links. This may be encrypted in the same manner
|
||||
as <a href="#operblock_password"><b>oper::password</b></a>. It may,
|
||||
notably, be set up to use
|
||||
the <a href="#operblock_password_sslclientcert"><tt>sslclientcert</tt></a>
|
||||
auth-type. In fact, this is strongly recommended as it is infinitely
|
||||
more resilient against brute-force attacks.
|
||||
</p>
|
||||
<p><b>hub vs leaf</b><br>
|
||||
A hub has multiple servers linked to it, a leaf has only one link... to you.
|
||||
@@ -2017,18 +2104,34 @@ alias <name> {
|
||||
type <type-of-alias>;
|
||||
spamfilter <yes|no>;
|
||||
};</pre></p>
|
||||
<p>(Note: also see <a href="#includedirective">here</a> about the standard alias files UnrealIRCd has)</p>
|
||||
<p>(Note that <span class="inline_pre"><name></span> is referred to using "<b>alias::</b>")</p>
|
||||
<p>(Note: see <a href="#includedirective">a description</a> of the standard alias files UnrealIRCd has)</p>
|
||||
<p>The alias block [standard alias] allows you to forward a command to a user,
|
||||
for example /chanserv sends a message to the user chanserv. The alias:: specifies
|
||||
the name of the command that will be the alias (eg: chanserv), alias::target is
|
||||
the nickname or channel it will forward to, if the alias:: is the same as the target, it will
|
||||
forward to, alias::target can be left out. The alias::type specifies the type
|
||||
of alias, valid types are services (the user is on the services server), stats
|
||||
(the user is on the stats server), normal (the user is a normal user on
|
||||
any server), and channel (the target is a channel name). If alias::spamfilter (optional)
|
||||
is set to 'yes', then the spamfilters will be checked (default is 'no').<br>
|
||||
The alias block also has another purpose which is explained below.</p>
|
||||
<p>Syntax [command alias]:<br>
|
||||
for example /chanserv sends a message to the user chanserv.
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
<b>alias::</b> specifies the name of the command that will be the alias (eg: chanserv)
|
||||
</li>
|
||||
<li>
|
||||
<b>alias::target</b> is the nickname or channel it will forward to. If <b>alias::</b>
|
||||
would be the same as the target, <b>alias::target</b> may be left out.
|
||||
</li>
|
||||
<li>
|
||||
<b>alias::type</b> specifies the type of alias, valid types are
|
||||
<ul>
|
||||
<li><span class="inline_pre">services</span> (the user is on the <a href="#set-services-server">services server</a>),</li>
|
||||
<li><span class="inline_pre">stats</span> (the user is on the <a href="#set-stats-server">stats server</a>),</li>
|
||||
<li><span class="inline_pre">normal</span> (the user is a normal user on any server),</li>
|
||||
<li><span class="inline_pre">channel</span> (the target is a channel name), and</li>
|
||||
<li><span class="inline_pre">command</span> (this is not a "standard alias", see <a href="#aliasblock-command">below</a>).</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<b>alias::spamfilter</b> (optional) causes the spamfilters will be checked if set to "yes" (default is 'no').
|
||||
</li>
|
||||
</ul>
|
||||
<p id="aliasblock-command">Syntax [command alias]:<br>
|
||||
<pre>
|
||||
alias <name> {
|
||||
/* For aliases to be sent to users/channels */
|
||||
@@ -2050,25 +2153,49 @@ alias <name> {
|
||||
type command;
|
||||
spamfilter <yes|no>;
|
||||
};</pre></p>
|
||||
<p>When the alias block is used in this format, it allows you a much broader range
|
||||
of usage. For example you can create aliases such as /identify. The alias::
|
||||
is the same as above, the name of the alias command. The <b>alias::format</b> specifies
|
||||
a regular expression that compares against the text sent to the alias command,
|
||||
when matched the sub-entries of that alias::format will be used, you may have
|
||||
multiple alias::format's to make the command do different things depending on
|
||||
the text sent to it. The <b>alias::format::target</b> is the target to forward this
|
||||
alias to, however in case of a "real alias" <b>alias::format::command</b> is used instead.
|
||||
The <b>alias::format::type</b> specifies the type of the alias that the
|
||||
message should be forwarded to, besides the types mentioned previously in
|
||||
"Syntax [standard alias]", we also allow the type "real" here, for "real
|
||||
aliases". The <b>alias::format::parameters</b> is what will
|
||||
<p>
|
||||
When an alias block has <b>alias::type</b> set to <span class="inline_pre">command</span>,
|
||||
as shown <a href="#aliasblock-command">above</a>, it becomes a command alias.
|
||||
When the alias block is used in this format, it is much more flexible.
|
||||
For example, you could create an /identify alias.
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
<b>alias::</b> is the name of the alias command as in standard alias block form
|
||||
(<a href="#aliasblock">above</a>).
|
||||
</li>
|
||||
<li>
|
||||
<b>alias::format</b> specifies a <a href="#regex">regular expression</a> which is matched against the
|
||||
text sent to the alias command. The sub-entries of the first matching <b>alias::format</b>
|
||||
will be used. Thus, you may have multiple <b>alias::format</b>s to make a command
|
||||
do different things depending on the text sent to it.
|
||||
</li>
|
||||
<li>
|
||||
<b>alias::format::target</b> is the target to forward this alias to.
|
||||
This value is not used if <b>alias::format::type</b> is "<span class="inline_pre">real</span>".
|
||||
</li>
|
||||
<li>
|
||||
<b>alias::format::type</b> specifies the type of the alias that the
|
||||
message should be forwarded to. In addition to the types mentioned previously in
|
||||
"<a href="#aliasblock">Syntax [standard alias]</a>", "<span class="inline_pre">real</span>"
|
||||
may be specified here for a "real alias" (a "real alias" is an alias that
|
||||
may be rewritten to something other than a PRIVMSG).
|
||||
</li>
|
||||
<li>
|
||||
<b>alias::format::parameters</b> (for "real aliases") is what will
|
||||
be sent as the parameters to this alias. To specify one of the parameters given
|
||||
to the command alias specify % followed by a number, for example, %1 is the
|
||||
first parameter. To specify all parameters from a given parameter to the end
|
||||
do % followed by the number and a -, for example %2- returns all parameters
|
||||
from the second till the last. Additionally, you may specify %n which will be replaced
|
||||
by the nickname of the user who executed the command.<br><br>
|
||||
For examples of using the alias block in the command format, consult doc/example.conf.</p>
|
||||
to the command alias specify <span class="inline_pre">%</span> followed by a number.
|
||||
For example, <span class="inline_pre">%1</span> is the first parameter. To specify
|
||||
all parameters from a given parameter to the end, use <span class="inline_pre">%</span>
|
||||
followed by the number and a <span class="inline_pre">-</span>. For example,
|
||||
<span class="inline_pre">%2-</span> returns all parameters from the second through the
|
||||
last. Additionally, you may specify <span class="inline_pre">%n</span> which will be
|
||||
replaced by the nickname of the user who executed the command.
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
For examples of using the alias block in the command format, consult doc/example.conf.
|
||||
</p>
|
||||
<p></p></div>
|
||||
<p><font class="block_section">4.33 - </font><font class="block_name">Help Block</font>
|
||||
<font class="block_optional">OPTIONAL</font><a name="helpblock"></a>
|
||||
@@ -2208,8 +2335,8 @@ Then, in your unrealircd.conf you add a cgiirc block:
|
||||
};</pre></p>
|
||||
</div>
|
||||
|
||||
<p><font class="block_section">4.37 - </font><font class="block_name">Set Block</font>
|
||||
<font class="block_required">REQUIRED</font> <font class="block_old">(Previously known as unrealircd.conf/networks file)</font><a name="setblock"></a>
|
||||
<p id="setblock"><font class="block_section">4.37 - </font><font class="block_name">Set Block</font>
|
||||
<font class="block_required">REQUIRED</font> <font class="block_old">(Previously known as unrealircd.conf/networks file)</font>
|
||||
</p><div class="desc">
|
||||
<p>The set file is what use to be our networks/unrealircd.conf and our networks
|
||||
file. On single server networks, rather than having 3 files you can just put all
|
||||
@@ -2252,7 +2379,7 @@ set {
|
||||
<p>Now if you wanted to make the set statements separate, say you wanted to set
|
||||
your options in a single line.<br>
|
||||
Example:<br>
|
||||
set { options { hide-ulines; gline-address "my@gline.address"; }; };<br>
|
||||
set { options { hide-ulines; no-stealth; }; };<br>
|
||||
</p>
|
||||
<p><font class="set">set::kline-address <email-address>;</font><br>
|
||||
The email address that K:line questions should be sent to. This value must be
|
||||
@@ -2269,6 +2396,9 @@ set {
|
||||
The snomask that will be set on a user when they /oper.</p>
|
||||
<p><font class="set">set::modes-on-join <+modes>;</font><br>
|
||||
The modes that will be set on a channel when it is first created. Not all modes can be set using this command. +qaohvbeOAzlLk can NOT be set using this command.</p>
|
||||
<p><font class="set">set::level-on-join <none|voice|halfop|op|protect|owner>;</font><br>
|
||||
The mode that a user will get when he's the first to join a channel. The
|
||||
default is 'op' (channel operator).</p>
|
||||
<p><font class="set">set::restrict-usermodes <modes></font><br>
|
||||
Restrict users to set/unset the modes listed here (don't use + or -).<br>
|
||||
For example you can set +G in modes-on-connect and G in restrict-usermodes,
|
||||
@@ -2290,7 +2420,7 @@ set {
|
||||
The channel(s) a user will be forced to join when they /oper. To specify more
|
||||
than one channel use a comma separated list.<br>
|
||||
[Note: don't forget to add quotes, like: oper-auto-join "#chan";]</p>
|
||||
<p><font class="set">set::anti-spam-quit-message-time <timevalue>;</font><br>
|
||||
<p id="set::anti-spam-quit-message-time"><font class="set">set::anti-spam-quit-message-time <timevalue>;</font><br>
|
||||
A time value specifying the length of time a user must be connected for before
|
||||
a /quit message will be displayed. Used to prevent spam. A time value is a numeric
|
||||
string with d meaning days, h meaning hours, m meaning minutes, and s meaning
|
||||
@@ -2370,6 +2500,25 @@ set {
|
||||
Allow shunned user to use /part.</p>
|
||||
<p><font class="set">set::options::fail-oper-warn;</font><br>
|
||||
If present, a user will be notified that his/her failed /oper attempt has been logged.</p>
|
||||
<p><font class="set">set::options::allow-insane-bans;</font><br>
|
||||
Allow insane broad bans like /GLINE *@*.xx. This makes it very easy to
|
||||
accidentally ban everyone on your network, so use with great care!</p>
|
||||
<p id="set_nopost_ban_action"><font class="set">set::nopost::ban-action</font> (requires <a href="#modules_m_nopost">m_nopost</a>)<br />
|
||||
Action to take on a user if he tries to perform an HTTP POST command.
|
||||
The allowed values are: kill, gline, gzline, kline, zline, shun, and tempshun.
|
||||
The default value is kill. If you use a *line value or shun, then note
|
||||
that if gullible user who is tricked into visiting a website exhibiting
|
||||
the XPS IRC spamming attack will experience the shun or *line on his existing
|
||||
connections. The default value of kill protects against such user accidents,
|
||||
but use of *line and especially gzline may be needed in some situations.</p>
|
||||
<p id="set_nopost_ban_reason"><font class="set">set::nopost::ban-reason</font> (requires <a href="#modules_m_nopost">m_nopost</a>)<br />
|
||||
The ban reason to set when m_nopost kills or bans a user.</p>
|
||||
<p id="set_nopost_ban_time"><font class="set">set::nopost::ban-time</font> (requires <a href="#modules_m_nopost">m_nopost</a>)<br />
|
||||
The duration for shuns, glines, gzlines, klines, and zlines set by m_nopost.
|
||||
Default is 4h.</p>
|
||||
<p id="set_nopost_except_hosts"><font class="set">set::nopost::except-hosts</font> (requires <a href="#modules_m_nopost">m_nopost</a>)<br />
|
||||
A list of hostmasks to exempt from m_nopost's killing or *-lining. You should
|
||||
neve need to place any hostmasks in this option.</p>
|
||||
<p><font class="set">set::dns::timeout <timevalue>;</font><br>
|
||||
A time value specifying the length of time a DNS server has to respond before
|
||||
a timeout. A time value is a numeric string with d meaning days, h meaning hours,
|
||||
@@ -2388,10 +2537,16 @@ set {
|
||||
<p><font class="set">set::default-server <server-name>;</font><br>
|
||||
Defines the name of the default server to tell users to connect to if this server
|
||||
is full.</p>
|
||||
<p><font class="set">set::services-server <server-name>;</font><br>
|
||||
<p id="set_defaultipv6clonemask">
|
||||
<font class="set">set::default-ipv6-clone-mask</font><br />
|
||||
The default IPv6 clone detection mask. See
|
||||
<a href="#allowblock_ipv6clonemask">allow::ipv6-clone-mask</a>. The default value for this
|
||||
setting is 64.
|
||||
</p>
|
||||
<p id="set-services-server"><font class="set">set::services-server <server-name>;</font><br>
|
||||
Specifies the name of the server that the services bots are connected to. Required,
|
||||
set it to something like services.yournet.com if you don't have services.</p>
|
||||
<p><font class="set">set::stats-server <server-name>;</font><br>
|
||||
<p id="set-stats-server"><font class="set">set::stats-server <server-name>;</font><br>
|
||||
Sets the name of the server on which the stats bot is located. If stats are
|
||||
not run this value may be left out.</p>
|
||||
<p><font class="set">set::help-channel <network-help-channel>;</font><br>
|
||||
@@ -2441,12 +2596,22 @@ set {
|
||||
Specifies the filename where the server's SSL private key is located.</p>
|
||||
<p><font class="set">set::ssl::trusted-ca-file <filename>;</font><br>
|
||||
Specifies the filename where the certificates of the trusted CAs are located.</p>
|
||||
<p><font class="set">set::ssl::server-cipher-list <cipherlist>;</font><br>
|
||||
Specifies which ciphers to be allowed, by default we leave this up to OpenSSL.
|
||||
See <a href="http://www.openssl.org/docs/apps/ciphers.html#CIPHER_LIST_FORMAT">http://www.openssl.org/docs/apps/ciphers.html</a>
|
||||
on how to specify the list of ciphers.</p>
|
||||
<p><font class="set">set::ssl::renegotiate-bytes <value>;</font><br>
|
||||
Specifies after how many bytes an SSL session should be renegotiated (eg: 20m for 20 megabytes).</p>
|
||||
<p><font class="set">set::ssl::renegotiate-timeout <timevalue>;</font><br>
|
||||
Specifies after how much time an SSL session should be renegotiated (eg: 1h for 1 hour).</p>
|
||||
<p><font class="set">set::ssl::options::fail-if-no-clientcert;</font><br>
|
||||
Forces clients that do not have a certificate to be denied.</p>
|
||||
<p><font class="set">set::ssl::options::no-self-signed;</font><br>
|
||||
Disallows connections from people with self-signed certificates.</p>
|
||||
<p><font class="set">set::ssl::options::verify-certificate;</font><br>
|
||||
Makes Unreal determine if the SSL certificate is valid before allowing connection.</p>
|
||||
<p><font class="set">set::ssl::options::no-starttls;</font><br>
|
||||
Disable STARTTLS. STARTTLS allows clients to use SSL on regular (non-SSL) ports.</p>
|
||||
<p><font class="set">set::throttle::period <timevalue></font><br>
|
||||
How long a user must wait before reconnecting more than set::throttle::connections
|
||||
times.</p>
|
||||
@@ -2493,6 +2658,14 @@ set {
|
||||
<p><font class="set">set::spamfilter::except <target(s)></font><br>
|
||||
These targets are exempt from spam filtering (no action will be taken),
|
||||
can be single target or comma seperated list.. Ex: except "#help,#spamreport"</p>
|
||||
<p><font class="set">set::spamfilter::slowdetect-warn <value></font><br>
|
||||
If a spamfilter takes longer than this amount of milliseconds to execute
|
||||
(1000ms = 1 second), then a warning notice will be sent to all opers (default: 250).
|
||||
See also <a href="#feature_spamfilter_slow">Slow Spamfilter Detection</a>.</p>
|
||||
<p><font class="set">set::spamfilter::slowdetect-fatal <value></font><br>
|
||||
If a spamfilter takes longer than this amount of milliseconds to execute
|
||||
(1000ms = 1 second), then the spamfilter will be removed (default: 500).
|
||||
See also <a href="#feature_spamfilter_slow">Slow Spamfilter Detection</a>.</p>
|
||||
<p><font class="set">set::check-target-nick-bans <yes|no></font><br>
|
||||
Whenever the user changes his/her nick, check if the NEW nick would be
|
||||
banned. If so, do not allow the nickchange. Default is yes.</p>
|
||||
@@ -2509,12 +2682,47 @@ AU). Requests to these servers are sent in parallel, fastest reply wins.</p>
|
||||
<p><font class="set">set::pingpong-warning <yes|no></font><br>
|
||||
When NOSPOOF is enabled (usually on Windows), send a warning to each user to use
|
||||
'/quote pong ..' if they are having problems connecting? The default is no.</p>
|
||||
<p><font class="set">set::watch-away-notification <yes|no></font><br>
|
||||
Allows you to enable/disable AWAY notification in WATCH. The default is yes.</p>
|
||||
<p></p> </div>
|
||||
<p id="filesblock"><font class="block_section">4.38 - </font><font class="block_name">Files Block</font>
|
||||
<font class="block_optional">OPTIONAL</font><div class="desc">
|
||||
</p>
|
||||
<p>
|
||||
You don't need to use a <a href="#tldblock">TLD block</a> to specify default locations for your MOTDs and rules files. This block controls default settings for those in addition to the pidfile and irc.tune file. Anything not specified here will default to the value documented in <a href="#addtlfiles">Additional Files</a>.
|
||||
</p>
|
||||
<p>
|
||||
Relative pathnames will be interpreted relative to UnrealIRCd's root directory which is normally the directory containing <tt>unrealircd.conf</tt>. This block may be used to facilitate running more than one IRCd out of the same directory/root. In that case, you should at least specify multiple pidfiles and tunefiles—one for each server.
|
||||
</p>
|
||||
<p>Syntax:<br>
|
||||
<pre>
|
||||
files {
|
||||
motd <motd file>;
|
||||
shortmotd <short motd file>;
|
||||
opermotd <oper motd file>;
|
||||
svsmotd <services motd file>;
|
||||
botmotd <bot motd file>;
|
||||
|
||||
rules <rules file>;
|
||||
|
||||
tunefile <tune file>;
|
||||
pidfile <pid file>;
|
||||
};
|
||||
</pre></p>
|
||||
<p>Example:<br />
|
||||
<pre>
|
||||
files {
|
||||
motd /etc/motd;
|
||||
|
||||
pidfile /var/lib/run/unrealircd.pid;
|
||||
};
|
||||
</pre>
|
||||
</p>
|
||||
<p><b><font size="+2">5 – Additional Files<a name="addtlfiles"></a>
|
||||
</font></b></p><div class="desc">
|
||||
In addition to the configuration files, Unreal has a few other files, such as MOTD, OperMOTD,
|
||||
BotMOTD, and Rules. Listed below are the names of these files and their uses.<br>
|
||||
Note that the motd files (all types) and rules files can also be specified in a tld block,
|
||||
Note that the motd files (all types) and rules files can also be specified in a <a href="#tldblock">tld</a> or <a href="#filesblock">files</a> block,
|
||||
these are just the files used by default (and for remote MOTD/RULES's).<p />
|
||||
<table width="83%" border="1">
|
||||
<tr>
|
||||
@@ -2649,6 +2857,10 @@ AU). Requests to these servers are sent in parallel, fastest reply wins.</p>
|
||||
<td><div align="center">Q</div></td>
|
||||
<td>Only U:Lined servers can kick users</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><div align="center">r</div></td>
|
||||
<td>This channel is registered (only settable by services)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><div align="center">R</div></td>
|
||||
<td>Requires a registered nickname to join</td>
|
||||
@@ -2663,7 +2875,7 @@ AU). Requests to these servers are sent in parallel, fastest reply wins.</p>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><div align="center">t</div></td>
|
||||
<td>Only chanops can set topic</td>
|
||||
<td>Only halfops, chanops, or better can set topic</td>
|
||||
</tr>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -2686,6 +2898,15 @@ AU). Requests to these servers are sent in parallel, fastest reply wins.</p>
|
||||
<td><div align="center">z</div></td>
|
||||
<td>Only clients on a Secure (SSL) Connection may join</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><div align="center">Z</div></td>
|
||||
<td>Set by the server to indicate all users on the channel are on a Secure (SSL)
|
||||
Connection. Only active is +z is also set. ULines (eg: BotServ) are
|
||||
ignored when counting 'insecure users'. It's still up to the server
|
||||
admins to make safe server to server links (which could be with the help
|
||||
of SSL, but also VPN, loopback interface, quantum encryption, etc etc),
|
||||
the IRCd does not and cannot detect this.</td>
|
||||
</tr>
|
||||
</table>
|
||||
<p> </p>
|
||||
<table width="75%" border="1">
|
||||
@@ -2808,7 +3029,7 @@ AU). Requests to these servers are sent in parallel, fastest reply wins.</p>
|
||||
</table>
|
||||
<p></p></div>
|
||||
<p><font size="+2"><b>7 – User & Oper Commands Table<a name="useropercommands" id="useropercommands"></a></b></font></p><div class="desc">
|
||||
<p>NOTE: the /helpop documentation is more up to date, use <i>/helpop command</i>
|
||||
<p>NOTE: the /helpop documentation is more up to date, use <i>/helpop command</i> (or <i>/helpop ?command</i> if you are oper)
|
||||
to get more information on a command.</p>
|
||||
|
||||
<table width="90%" border="1">
|
||||
@@ -2948,6 +3169,16 @@ to get more information on a command.</p>
|
||||
to an IRC server.<br></td>
|
||||
<td>All</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="39">helpop ?<topic> or !<topic><br></td>
|
||||
<td>HelpOp is a new system of getting IRC Server help. You type either /HELPOP
|
||||
? <help system topic> or /HELPOP ! <question> The "?"
|
||||
in /HELPOP means query the help system and if you get no response you can
|
||||
choose '!' to send it to the Help Operators online. Using neither ? nor !
|
||||
will mean the command will be first queried within the help system and if
|
||||
no match if found , it will be forwarded to the help operators</td>
|
||||
<td>All</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="39">list <search string></td>
|
||||
<td>
|
||||
@@ -3048,12 +3279,12 @@ to get more information on a command.</p>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="39">globops <message></td>
|
||||
<td>Sends a message to all IRCops</td>
|
||||
<td>Sends a message to all global IRCops</td>
|
||||
<td>IRCop</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="39">chatops <message></td>
|
||||
<td>Send a message to all IRCops with umode +c</td>
|
||||
<td>Sends a message to all IRCops (local and global)</td>
|
||||
<td>IRCop</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -3111,16 +3342,15 @@ to get more information on a command.</p>
|
||||
<td>IRCop</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="39">rehash <server> –<flags></td>
|
||||
<td height="39">rehash <server|-global> <flags></td>
|
||||
<td>Rehashes the servers config file. Including a server name allows you to
|
||||
rehash a remote servers config file. Several flags are also available. They
|
||||
rehash a remote servers config file, and using -global will rehash all
|
||||
servers on the network (both are NetAdmin-only). Several flags are also available. They
|
||||
Include <br>
|
||||
-motd - Only rehash all MOTD and RULES files (including tld {})<br>
|
||||
-opermotd - Only rehash the OPERMOTD file<br>
|
||||
-botmotd - Only rehash the BOTMOTD file<br>
|
||||
-dns - Reinitializes and reloads the resolver<br>
|
||||
-motd - Only re-read all MOTD, BOTMOTD, OPERMOTD and RULES files (including those in tld{} blocks)<br>
|
||||
-garbage - Force garbage collection<br>
|
||||
-ssl - Reload SSL certificate and private key<br>
|
||||
-dns - Reload DNS info from resolv.conf/registry<br>
|
||||
-ssl - Reloads SSL certificates<br>
|
||||
<td>IRCop</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -3242,12 +3472,20 @@ to get more information on a command.</p>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="36">addline <text><br></td>
|
||||
<td>Allows you to add lines to the unrealircd.conf<br></td>
|
||||
<td>Appends the specified text to unrealircd.conf. You must load the m_addline
|
||||
module to use this command since unrealircd-3.2.9.<br></td>
|
||||
<td>IRCop</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="36">mkpasswd <password><br></td>
|
||||
<td>Will encrypt a clear text password to add it to the unrealircd.conf<br></td>
|
||||
<tr id="cmd_mkpasswd">
|
||||
<td height="36">mkpasswd <auth-type> <password><br></td>
|
||||
<td>Will encrypt <password> using the <auth-type> hashing method. Available hash methods:
|
||||
<ul>
|
||||
<li>crypt [<em>Windows support requires SSL</em>]</li>
|
||||
<li>md5</li>
|
||||
<li>sha1 [<em>requires SSL</em>]</li>
|
||||
<li>ripemd160 [<em>requires SSL</em>]</li>
|
||||
</ul>
|
||||
<br></td>
|
||||
<td>IRCop</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -3381,13 +3619,14 @@ kind of shared directory. And for backups, make sure they get the correct permis
|
||||
(it happens quite frequently everything is secured fine but there's a backup.tar.gz lying
|
||||
around readable by everyone).<br>
|
||||
<br>
|
||||
You also want to use encrypted passwords wherever possible, if you compile with OpenSSL
|
||||
You also want to use <a href="#passwords" title="Password Types">encrypted passwords</a> wherever possible, if you compile with OpenSSL
|
||||
support (which you do, since you are concerned with security, right?) then I suggest to
|
||||
use <i>sha1</i> or <i>ripemd160</i> password encryption, else use <i>md5</i>. Also if
|
||||
you still have encrypted (oper) blocks left from Unreal3.2.1 or before I suggest you to
|
||||
re-enrypt these (just re-run /mkpasswd), because 3.2.1 introduced some considerable
|
||||
anti-crack improvements (basically a 14x slowdown of active cracks, and making
|
||||
stored-plain-ciphertext cracks impossible).<br>
|
||||
stored-plain-ciphertext cracks impossible).
|
||||
<br>
|
||||
Still, do note that this is just 'yet another layer of security', since if you have weak
|
||||
passwords they can still be cracked relatively easily and if someone manages to get your
|
||||
configfile there are usually other interesting things in it that may aid an attacker,
|
||||
@@ -3483,9 +3722,14 @@ It will however make it more difficult / increase the effort needed to attack/ha
|
||||
There are kernel patches that make it more difficult for stack- and heap-based exploits to
|
||||
work. This is nice, but should not be your main focus point, you have a far more bigger risk
|
||||
of getting exploited through the other points than this... for various reasons.<br>
|
||||
Another option is enabling chrooting (*NIX only), which means upon a succesfull exploit,
|
||||
the user is confined to the UnrealIRCd directory and cannot touch any other
|
||||
files. This requires root privileges, modifying of include/config.h
|
||||
(search for CHROOTDIR, and also set IRC_USER and IRC_GROUP), and a
|
||||
recompile.<br>
|
||||
<br>
|
||||
There's one thing you should do however, which is to ALWAYS USE THE LATEST VERSION,
|
||||
subscribe to the <a href="http://mail1.sourceforge.net/mailman/listinfo/unreal-notify" target="_blank">unreal-notify mailinglist</a>
|
||||
There's one thing you should definately do, which is to ALWAYS USE THE LATEST VERSION,
|
||||
subscribe to the <a href="http://lists.sourceforge.net/mailman/listinfo/unreal-notify" target="_blank">unreal-notify mailinglist</a>
|
||||
right now so you receive the release announcements (unreal-notify is for release announcements only,
|
||||
so only 1 mail per X months). Usually it's explicitly mentioned in the release announcement if the
|
||||
release contains (high risk) security fixes, but it's good to upgrade anyway.<br>
|
||||
@@ -3499,11 +3743,27 @@ Do take the time to secure your network and educate your opers. A lot of people
|
||||
security until they got hacked, try to avoid that :).
|
||||
</div></p>
|
||||
|
||||
|
||||
<p><font size="+2"><b>9 – Frequently Asked Questions (FAQ)<a name="faq"></a></b></font></p>
|
||||
<div class="desc"><p>The FAQ is available online <a href="http://www.vulnscan.org/UnrealIRCd/faq/" TARGET="_blank">here</a></p></div>
|
||||
<p></p>
|
||||
|
||||
<p id="modules"><font size="+2"><b>10 – Modules</b></font></p>
|
||||
<div class="desc">
|
||||
<p>The following are some descriptions of modules shipped with
|
||||
UnrealIRCd. Unfortunately, only one of the modules shipped with
|
||||
UnrealIRCd is documented at the moment.</p>
|
||||
</div>
|
||||
<p id="modules_m_nopost"><font size="+2"><b>10.1 <a href="#modules_m_nopost">m_nopost</a></b></font><br />
|
||||
This module automatically bans any user who tries to issue an HTTP-style request.
|
||||
This module was written by Syzop in response to the Firefox XPS attack through which
|
||||
AJAX-capable browsers were able to act as IRC spambots. To choose what m_nopost
|
||||
does when it receives such a request, configure the <a href="#set_nopost_ban_action">
|
||||
set::nopost::ban-action</a> and <a href="#set_nopost_ban_time">set::nopost::ban-time</a>
|
||||
settings (and their friends).<br />
|
||||
This module is new as of UnrealIRCd 3.2.9 and is compiled into commands.so. Thus,
|
||||
it is loaded by default in most cases.
|
||||
</p>
|
||||
|
||||
<p><font size="+2"><b>A Regular Expressions<a name="regex"></a></b></font></p>
|
||||
<div class="desc"><p>Regular expressions are used in many places in Unreal, including badwords, spamfilter, and aliases. Regular expressions are a very complex tool used for pattern matching. They are sometimes referred to as "regexp" or "regex." Unreal uses the TRE regular expression library for its regex. This library supports some very complex and advanced expressions that may be confusing. The information below will help you understand how regexps work. If you are interested in more technical and detailed information about the regexp syntax used by Unreal, visit the <a href="http://www.laurikari.net/tre/syntax.html" target="_new">TRE homepage</a>.</p></div>
|
||||
|
||||
@@ -3516,9 +3776,9 @@ security until they got hacked, try to avoid that :).
|
||||
<p><font size="+2"><b>A.3 Repetition Operators<a name="regexrep"></a></b></font></p>
|
||||
<div class="desc"><p>One of the common mistakes people make with regex is assuming that they work just like wildcards. That is, the * and ? characters will match just like in a wildcard. While these characters do have similar meaning in a regex, they are not exactly the same. Additionaly, regular expressions also support other, more advanced methods of repetition.
|
||||
<p>
|
||||
The most basic repetition operator is the ? operator. This operator matches 0 or 1 of the previous character. This, "of the previous character," is where the ? in regex differs from a wildcard. In a wildcard, the expression, "a?c" matches an "a" followed by any character (or no character), followed by a "c." In regex it has a different meaning. It matches 0 or 1 of the letter "a" followed by the letter "c." Basically, the ? is modifying the a by specifying how many a's may be present. To emulate the ? in a wildcard, the . operator is used. The regex "a.?c" is equivilent to the previously mentioned wildcard. It matches the letter "a" followed by 0 or 1 of any character (the ? is modifying the .), followed by a "c."
|
||||
The most basic repetition operator is the ? operator. This operator matches 0 or 1 of the previous character. This, "of the previous character," is where the ? in regex differs from a wildcard. In a wildcard, the expression, "a?c" matches an "a" followed by any character, followed by a "c". In regex it has a different meaning. It matches 0 or 1 of the letter "a" followed by the letter "c". Basically, the ? is modifying the a by specifying how many a's may be present. To emulate the ? in a wildcard, the . operator is used. The regex "a.c" is equivilent to the previously mentioned wildcard. It matches the letter "a" followed by any character, followed by a "c".
|
||||
<p>
|
||||
The next repetition operator is the *. Again, this operator is similar to a wildcard. It matches 0 or more of the previous character. Note that this "of the previous character" is something that is characteristic of all repetition operators. The regex "a*c" matches 0 or more a's followed by a "c." For example, "aaaaaac" matches. Once again, to make this work like a wildcard, you would use "a.*c" which will cause the * to modify the . (any character) rather than the "a."
|
||||
The next repetition operator is the *. Again, this operator is similar to a wildcard. It matches 0 or more of the previous character. Note that this "of the previous character" is something that is characteristic of all repetition operators. The regex "a*c" matches 0 or more a's followed by a "c". For example, "aaaaaac" matches. Once again, to make this work like a wildcard, you would use "a.*c" which will cause the * to modify the . (any character) rather than the "a."
|
||||
<p>
|
||||
The + operator is very similar to the *. However, instead of matching 0 or more, it matches 1 or more. Basically, "a*c" will match "c" (0 a's followed by a c), where as "a+c" would not. The "a+" states that there must be "at least" 1 a. So "c" does not match but "ac" and "aaaaaaaaac" do.
|
||||
<p>
|
||||
|
||||
+420
-162
@@ -11,11 +11,11 @@
|
||||
.block_optional { color: blue; font-weight: bold; }
|
||||
.block_old { font-size: 14; }
|
||||
.set { font-weight: bold; }
|
||||
.desc { margin-left: 15px; }
|
||||
pre { font: "times new roman"; font-style: normal; background-color: #eeeeee;}
|
||||
.inline_pre { font-family: monospace; font-style: normal; background-color: #eeeeee;}
|
||||
pre { font-family: monospace; font-style: normal; background-color: #eeeeee;}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
|
||||
<!-- $Id$ -->
|
||||
|
||||
<body>
|
||||
@@ -27,30 +27,24 @@ Hungarian |
|
||||
<a href="unreal32docs.gr.html">Greek</a> |
|
||||
<a href="unreal32docs.nl.html">Dutch</a> |
|
||||
<a href="unreal32docs.ru.html">Russian</a> |
|
||||
<a href="unreal32docs.tk.html">Turkish</a>
|
||||
<a href="unreal32docs.tr.html">Turkish</a>
|
||||
<br><br>
|
||||
<div align="center"><b><font size="7">UnrealIRCd</font></b><br>
|
||||
<font size="4"><a href="http://www.unrealircd.com/">http://www.unrealircd.com</a></font><br>
|
||||
<font size="4">Verzió: 3.2.5</font><br>
|
||||
<b>Utolsó dokumentáció frissítés:</b> 2006-06-15</div>
|
||||
<font size="4">Verzió: 3.2.9-RC2</font><br>
|
||||
<b>Utolsó dokumentáció frissítés:</b> 2010-11-15</div>
|
||||
<br>
|
||||
<b>Fõ fejlesztõk:</b> Stskeeps / codemastr / Syzop / Luke<br>
|
||||
<b>Munkatársak:</b> McSkaf / Zogg / NiQuiL / assyrian / chasm / DrBin / llthangel / Griever / nighthawk<br>
|
||||
<b>Dokumentáció:</b> CKnight^ / Syzop<br>
|
||||
<b>Magyar fordítás:</b> <a href="mailto:angrywolf@flashmail.com">AngryWolf</a><br>
|
||||
<b>Fõ fejlesztõ/karbantartó:</b> Syzop<br>
|
||||
<b>Fejlesztõk:</b> binki<br>
|
||||
<b>Korábbi fejlesztõk és hozzájárulók:</b> Stskeeps, codemastr, Luke, aquanight,
|
||||
WolfSage, McSkaf, Zogg, NiQuiL, assyrian, chasm, DrBin, llthangel,
|
||||
Griever, nighthawk<br>
|
||||
<b>Dokumentáció:</b> CKnight^ (kezdeti dokumentáció), Syzop (jelentõs újraírás), codemastr, és sok más hozzájáruló<br>
|
||||
<b>Magyar fordítás:</b> <a href="mailto:angrywolf2009@gmail.com">AngryWolf</a><br>
|
||||
<p>E dokumentáció megtekintéséhez az alábbiakban felsorolt kompatibilis böngészõk egyikére van szükséged. Friss dokumentációkat
|
||||
találsz a <a href="http://www.vulnscan.org/UnrealIRCd/unreal32docs.html">http://www.vulnscan.org/UnrealIRCd/unreal32docs.html</a>
|
||||
címen, és egy GYIK-et a <a href="http://www.vulnscan.org/UnrealIRCd/faq/" TARGET="_blank">http://www.vulnscan.org/UnrealIRCd/faq/</a> oldalon.
|
||||
</p>
|
||||
<p><b>Kompatibilis böngészõk: </b><br>
|
||||
<ul>
|
||||
<li>Opera 6.02
|
||||
<li>Microsoft Internet Explorer 6.X / 5.5
|
||||
<li>Netscape Navigator 6.X
|
||||
<li>Mozilla 1.2.X
|
||||
<li>Lynx (valamennyire)
|
||||
</ul>
|
||||
</p>
|
||||
<p><font size="+2"><b>TÁRGYMUTATÓ / TARTALOMJEGYZÉK</b></font><br>
|
||||
1. <a href="#IntroductionNotes">Bevezetés és megjegyzések</a><br>
|
||||
---1.1. <a href="#notesonolder">Megjegyzések a 3.1.x-rõl 3.2-re frissítésrõl és a verziók keverésérõl</a><br>
|
||||
@@ -96,9 +90,9 @@ Hungarian |
|
||||
---4.16. <a href="#banserverblock">Ban server blokk -=-(q:Line)</a><br>
|
||||
---4.17. <a href="#banrealnameblock">Ban realname blokk -=- (n:Line)</a><br>
|
||||
---4.18. <a href="#banversionblock">Ban version blokk</a><br>
|
||||
---4.19. <a href="#banexceptionblock">Ban exception blokk -=- (E:Line)</a><br>
|
||||
---4.20. <a href="#tklexceptionblock">TKL exception blokk</a><br>
|
||||
---4.21. <a href="#throttleexceptionblock">Throttle exception blokk</a><br>
|
||||
---4.19. <a href="#banexceptionblock">Ban kivétel blokk -=- (E:Line)</a><br>
|
||||
---4.20. <a href="#tklexceptionblock">TKL kivétel blokk</a><br>
|
||||
---4.21. <a href="#throttleexceptionblock">Throttle kivétel blokk</a><br>
|
||||
---4.22. <a href="#denydccblock">Deny DCC blokk -=- (dccdeny.conf)</a><br>
|
||||
---4.23. <a href="#denyversionblock">Deny version blokk -=- (V:Line)</a><br>
|
||||
---4.24. <a href="#denylinkblock">Deny link blokk -=- (D:Line / d:Line)</a><br>
|
||||
@@ -115,6 +109,7 @@ Hungarian |
|
||||
---4.35. <a href="#spamfilter">Spamfilter blokk</a><br>
|
||||
---4.36. <a href="#cgiirc">Cgiirc blokk</a><br>
|
||||
---4.37. <a href="#setblock">Set blokk -=- (networks/unrealircd.conf)</a><br>
|
||||
---4.38. <a href="#filesblock">Files blokk</a><br />
|
||||
5. <a href="#addtlfiles">További fájlok</a><br>
|
||||
6. <a href="#userchannelmodes">Felhasználói és csatornamódok</a><br>
|
||||
7. <a href="#useropercommands">Felhasználói és operátori parancsok</a><br>
|
||||
@@ -128,7 +123,9 @@ Hungarian |
|
||||
---8.7. <a href="#secinformation">Információközlés</a><br>
|
||||
---8.8. <a href="#secantiexploit">Sebezhetõségek elleni védelem</a><br>
|
||||
---8.9. <a href="#secsummary">Összegzés</a><br>
|
||||
9. <a href="http://www.vulnscan.org/UnrealIRCd/faq/" target="_blank">Gyakran Ismételt Kérdések (FAQ)</a><br>
|
||||
9. <a href="http://www.vulnscan.org/UnrealIRCd/faq/" target="_blank">Gyakran ismételt kérdések (GYIK)</a><br />
|
||||
10. <a href="#modules">Modulok</a><br />
|
||||
---10.1. <a href="#modules_m_nopost">m_nopost</a><br />
|
||||
A. <a href="#regex">Reguláris kifejezések</a><br>
|
||||
---A.1. <a href="#regexlit">Konstansok</a><br>
|
||||
---A.2. <a href="#regexdot">A pont operátor</a><br>
|
||||
@@ -150,9 +147,10 @@ Hungarian |
|
||||
nem módosítod. – Copyright UnrealIRCd Fejlesztõi Csapat 2002-2006</p>
|
||||
<p>Kérlek, olvasd el ezt a kézikönyvet, mielõtt segítséget kérsz, és BIZTOSAN bele akarsz nézni a
|
||||
<a href="http://www.vulnscan.org/UnrealIRCd/faq/" target="_blank">GYIK</a>-ba is, mivel a kérdéseid/problémáid 80%-a meg van válaszolva benne. Ha az nem
|
||||
oldotta meg a problémádat, segítséget kérhetsz az irc.ircsystems.net-en (6667-es port) az #unreal-support csatornán. (Megjegyzendõ,
|
||||
hogy MEGKÖVETELJÜK a dokumentáció és a GYIK elolvasását, és csak az UnrealIRCd-vel kapcsolatban segítünk, nem a Servicessel!).
|
||||
Ha találsz egy valódi hibát (például egy ütközést), jelentsd a
|
||||
oldotta meg a problémádat, segítséget kérhetsz az irc.unrealircd.org címen (6667-es port) az #unreal-support csatornán. (Megjegyzendõ,
|
||||
hogy MEGKÖVETELJÜK a dokumentáció és a GYIK elolvasását, és csak az UnrealIRCd-vel kapcsolatban segítünk, nem a Services-zel!).
|
||||
A fórumokat is használhatod a <a href="http://forums.unrealircd.com/" TARGET="_blank">http://forums.unrealircd.com</a> címen.
|
||||
Ha találsz egy valódi hibát (például egy összeomlást), jelentsd a
|
||||
<a href="http://bugs.unrealircd.org" TARGET="_blank">http://bugs.unrealircd.org</a>-on!</p></div>
|
||||
|
||||
<p><font size="+2"><b>1.1 – Megjegyzések a 3.1.x-rõl 3.2-re frissítésrõl és a verziók keverésérõl </b></font><a name="notesonolder"></a><br>
|
||||
@@ -188,7 +186,7 @@ Windows:<br>
|
||||
<li><b>*NIX verziók:</b>
|
||||
<ul>
|
||||
<li>Linux (2.2.*, 2.4.*, 2.6.*)
|
||||
<li>FreeBSD (4.*, 5.*)
|
||||
<li>FreeBSD (4.*, 5.*, 6.*)
|
||||
<li>NetBSD (2.*)
|
||||
<li>OpenBSD (3.7, 3.8, 3.9)
|
||||
<li>Solaris (9, 10)
|
||||
@@ -250,13 +248,15 @@ mert m
|
||||
nagybetû (A-Z) valamint szám (0-9) karakterekbõl áll [pl.: "AopAS6WQH2Os6hfosh4SFJHs"]. Az example.conf-ban találsz példát.<br>
|
||||
<p>Az álcázási kulcsoknak egy hálózat MINDEN SZERVERÉN azonosnak KELL lenniük. Továbbá a kulcsokat tartsd TITOKBAN,
|
||||
mert ha valaki ismeri a kulcsokat, visszafejtheti az eredeti gazdanevet (ami a +x felhasználói módot hasznavehetetlenné teszi).</p>
|
||||
<p>Tipp: Ha *NIX alatt vagy, és új álcázási kulcsokat kell készítened, futtathatod az './unreal gencloak' parancsot is
|
||||
a parancsértelmezõdben, ami 3 véletlenszerû sztringet írat ki erre a célra.</p>
|
||||
</div>
|
||||
<p><font size="+2"><b>3.2 - Modulok</b></font><a name="feature_modules"></a></p><div class="desc">
|
||||
<p>Az UnrealIRCd támogatja a modulokat, ami hasznos, mert:<br>
|
||||
- Betölthetsz, újratöltetsz és eltávolíthatsz modulokat, miközben az ircd fut (a /rehash-sel). Így hibákat lehet javítani illetve új dolgokat hozzáadni az újraindítás szükségessége nélkül!<br>
|
||||
- Mások készíthetnek (nem hivatalos, angol nevén: 3rd party) modulokat, amelyek új parancsokat, felhasználói és akár csatornamódokat is tartalmazhatnak.<br>
|
||||
Az UnrealIRCd önmagában csak egy kevés modullal rendelkezik. Vess egy pillantást a www.unrealircd.com -> modules
|
||||
oldalára, vagy használd a google keresõt nemhivatalos modulok keresésére.<br>
|
||||
Az UnrealIRCd önmagában csak kevés <a href="#modules">modult</a> tartalmaz. Vess egy pillantást az www.unrealircd.com -> modules
|
||||
oldalra, vagy használd a google keresõt nemhivatalos modulok keresésére.<br>
|
||||
<p>Legalább 2 modult be kell töltened, különben az ircd nem fog elindulni!<br>
|
||||
- a commands modult: commands.so (commands.dll windows alatt)<br>
|
||||
- egy álcázó modult: rendszerint cloak.so (cloak.dll windows alatt).</p>
|
||||
@@ -306,8 +306,8 @@ mert m
|
||||
tehát a <i>/helpop</i> helyett <i>/helpop ?</i> lesz és
|
||||
a <i>/helpop chmodes</i> helyett <i>/helpop ?chmodes</i> stb..</p></div>
|
||||
|
||||
<p><font size="+2"><b>3.6 - Operátori hozzáférési szintek</b></font><a name="feature_operaccesslevels"></a></p><div class="desc">
|
||||
<p>Számos operátori szint létezik az UnrealIRCd-ben, és további jogokat tehetsz hozzájuk (például a /gline használatához),
|
||||
<p id="feature_operaccesslevels"><font size="+2"><b>3.6 - Operátori hozzáférési szintek</b></font></p><div class="desc">
|
||||
<p>Számos <a href="#operblock_flags">operátori szint</a> létezik az UnrealIRCd-ben, és további jogokat is tehetsz hozzájuk (például a /gline használatához),
|
||||
így minden operátornak megadhatod a szükséges jogokat.</p>
|
||||
<p>Ezeket az oper flagekkel vezérelheted az oper blokkban; további információért lásd az oper blokkot.</p></div>
|
||||
|
||||
@@ -473,14 +473,30 @@ Ha kitiltod a *!*@*.303AEBC6.IP-t, a *!*@1.2.*-ot bannolod.<br>
|
||||
Ez az információ hasznos lehet, amikor elhatározod, milyen széles legyen egy kitiltás.<br>
|
||||
<br>
|
||||
<b>Kiterjesztett ban típusok</b><br>
|
||||
A kiterjesztett ban típusok ~[!]<típus>:<valami> alakúak. Jelenleg a következõ típusok használhatóak:<br>
|
||||
|
||||
A kiterjesztett ban típusok ~<típus>:<paraméter> alakúak.<br>
|
||||
Ezek a típusok a hagyományos nick!user@host maszktól eltérõ kitiltásokat vagy felmentéseket tesznek lehetõvé.
|
||||
Arra is szolgálnak többek között, hogy pl. elnémítsanak felhasználókat.<br>
|
||||
<br>
|
||||
Az alábbiakban felsoroljuk, hogy mely ban típusok milyen mûveletekre vannak hatással:<br>
|
||||
<br>
|
||||
<table border=1>
|
||||
<tr><td>típus:</td><td>név</td><td>magyarázat:</td></tr>
|
||||
<tr><td>~q</td><td>némaság (quiet)</td><td>Az erre a banra illõ emberek beléphetnek, de nem beszélhetnek,
|
||||
hacsak nincs +v módjuk vagy annál magasabb. <i>Pl.: ~q:*!*@blah.blah.com</i></td></tr>
|
||||
<tr><td>~n</td><td>névváltás</td><td>Az erre a banra illõ emberek nem válthatnak nicknevet,
|
||||
hacsak nincs +v módjuk vagy annál magasabb. <i>Pl.: ~n:*!*@*.aol.com</i></td></tr>
|
||||
<tr><td>~c</td><td>[elõtag]csatorna</td><td>Ha a felhasználó ezen a csatornán van, nem léphet be.
|
||||
<tr><td>~j</td><td>join</td><td>Ha illik egy felhasználóra, nem léphet be a csatornára.
|
||||
Minden más megtehet, ha már be volt lépve a csatornára, mint pl. beszélni vagy nevet változtatni.
|
||||
<i>Pl.: ~j:*!*@*.aol.com</i><br>
|
||||
Hasznos lehet, ha meg akarjuk akadályozni egy adott internet-szolgáltatóhoz tartozó felhasználók belépését, miközben megengedjük, hogy a már belépettek szabadon beszélgethessenek/nevet váltsanak, például egy /INVITE után.</td></tr>
|
||||
</table>
|
||||
<br>
|
||||
Az alábbi ban típusok új feltétel használatára adnak lehetõséget:<br>
|
||||
<br>
|
||||
<table border=1>
|
||||
<tr><td>type:</td><td>név</td><td>magyarázat:</td></tr>
|
||||
<tr><td>~c</td><td>csatorna</td><td>A felhasználó nem léphet be a csatornára, ha belépett a megadott csatornára.
|
||||
Megadható egy elõtag is (+/%/@/&/~), ami azt jelenti, hogy csak akkor fog illeszkedni, ha a felhasználónak
|
||||
olyan vagy annál magasabb jogai vannak a megadott csatornán.
|
||||
<i>Pl.: +b ~c:#lamerek, +e ~c:@#megbizhatoak </i></td></tr>
|
||||
@@ -488,9 +504,17 @@ A kiterjesztett ban t
|
||||
<i>Pl.: ~r:*Stupid_bot_script*</i><br>
|
||||
MEGJEGYZÉS: az aláhúzás ('_') mind a szóközre (' ') és az aláhúzásra ('_') is illik, így ez a ban illik a
|
||||
'Stupid bot script v1.4'-re.</td></tr>
|
||||
<tr><td>~R</td><td>regisztrált</td><td>Ha egy felhasználó azonosította magát a services-ben (általában a NickServnél),
|
||||
és illeszkedik erre a nicknévre, akkor erre a banra is illeszkedik. Vagyis ez igazán csak a
|
||||
ban felmentésekre jó (+e).<br>
|
||||
Pl.: az <i>+e ~R:Nick</i> engedélyezi a belépést Nick számára, függetlenül más kitiltásoktól, amennyiben azonosította magát a NickServnél, és a Nick nevet használja.<br>
|
||||
</td></tr>
|
||||
</table>
|
||||
Ezek a ban típusok a csatornabeli kivétellistákon (+e) is támogatottak.<br>
|
||||
A modulok bõvíthetik is más típusokkal a kiterjesztett ban típusokat.<br>
|
||||
<br>
|
||||
Halmozni is lehet az elsõ csoportbeli kiterjesztett banokat a második csoportbeliekkel, pl. a <i>+b ~q:~c:#lamers</i>
|
||||
elnémít minden olyan felhasználót, aki a #lamers csatornára lépett be.<br>
|
||||
<br>
|
||||
Modulokkal további kiterjesztett ban típusok is bevezethetõk.<br>
|
||||
</p></div>
|
||||
|
||||
<p><font size="+2"><b>3.14 - A spamszûrõ</b></font><a name="feature_spamfilter"></a></p><div class="desc">
|
||||
@@ -527,6 +551,9 @@ A modulok b
|
||||
<tr><td>dccblock</td><td>megjelöli a felhasználót DCC blokkolásra (nem küldhet DCC-ket)</td></tr>
|
||||
<tr valign="top"><td>viruschan</td><td>lelépteti a felhasználót minden csatornáról, belépteti a <tt>set::spamfilter::virus-help-channel</tt> csatornára, letilt minden parancsot,
|
||||
kivéve a PONG-ot, az ADMIN-t és a <tt>set::spamfilter::virus-help-channel</tt> csatornára küldött üzeneteket/értesítéseket</td></tr>
|
||||
<tr><td>warn</td><td>értesítést küld az IRCOpoknak (spamszûrõ snomask), és
|
||||
tájékoztatja a felhasználót, hogy az üzenetét lehallgatták. További lépéseket
|
||||
nem tesz, az üzenetet nem blokkolja.</td></tr>
|
||||
</table></td></tr>
|
||||
<tr valign="top"><td><b>[idõtartam]</b></td><td> A szûrõ által felvett *line-ok/shunok idõtartama, használj kötõjelet ('-') az alapértelmezéshez vagy a kihagyáshoz
|
||||
(pl.: ha a tevékenység = 'block')</td></tr>
|
||||
@@ -563,16 +590,32 @@ lesznek alak
|
||||
A <b>set::spamfilter::ban-reason</b>-nel meghatározhatsz egy alapértelmezett indokot (alapértelmezés: 'Spam/advertising')<br>
|
||||
A <b>set::spamfilter::virus-help-channel</b>-lel meghatározhatod, hogy milyen csatornára történjen a belépés a 'viruschan' tevékenység esetén (alapértelmezés: #help)<br>
|
||||
A <b>set::spamfilter::virus-help-channel-deny</b> segítségével pedig letilthatod a normál belépéseket a "virus-help-channel"-ben (alapértelmezés: no)<br>
|
||||
</p></div>
|
||||
</p>
|
||||
<p>
|
||||
<font size="+1"><B>Lassú spamszûrõk érzékelése</B></font><a name="feature_spamfilter_slow"></a><br>
|
||||
A spamszûrõ regexek jelentõsen lelassíthatják az IRCd-t. Ez attól függ,
|
||||
milyen regexet használsz (és a regex motor hogyan kezeli). Némelyek elég
|
||||
gyorsak, és az UnrealIRCd ezret is lefuttat belõlük másodpercenként. Mások
|
||||
túlságosan lassúak lehetnek, több másodperc futtatási idõt is igényelhetnek, és lefagyaszthatják az IRCd-t.<br>
|
||||
Ennek megóvása érdekében az Unreal-nak van lassú spamszûrõ érzékelõje (Slow Spamfilter Detection):
|
||||
valahányszor egy spamszûrõ lefut, az UnrealIRCd ellenõrzi, mennyi idõ kell neki, hogy
|
||||
lefusson. Ha átlép egy bizonyos küszöbszintet, az IRCd figyelmeztetést küld, esetleg le is törli
|
||||
a spamszûrõt.<br>
|
||||
A figyelmeztetést a <b>set::spamfilter::slowdetect-warn</b> direktívával állíthatjuk be (alapértelmezés: 250ms),
|
||||
az automatikus törlést pedig a <b>set::spamfilter::slowdetect-fatal</b> direktívával (alapértelmezés: 500ms).
|
||||
Mindkét direktíva beállítható 0-ra (nullára), ami letiltja a lassú spamszûrõk érzékelését.<br>
|
||||
Jelenleg ez a funkció nem elérhetõ Windows alatt.<br>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<p><font size="+2"><b>3.15 - CIDR</b></font><a name="feature_cidr"></a></p><div class="desc">
|
||||
<p>Az UnrealIRCd-nek most már van támogatása CIDR-re (Classless Interdomain Routing; osztály nélküli, tartományon belüli útvonalválasztás). A CIDR alkalmas
|
||||
IP tartományok kitiltására. Az IP-ket CIDR használatával osztják ki ISP-k (Internet Service Provider, Internetszolgáltató) között, ezért a CIDR alapú kitiltások
|
||||
beállításának képességével egyszerûen kitiltható egy ISP. Az Unreal mind IPv4-re és IPv6-ra is támogatja a CIDR-t. A CIDR maszkok
|
||||
használhatóak az allow::ip, a ban user::mask, a ban ip::mask, az except ban::mask, az except throttle::mask
|
||||
és az except tkl::mask direktívákban (ez utóbbinál gzline-ra, gline-ra és shun-ra). Azonfelül a CIDR használható még a /kline,
|
||||
/gline, /zline, /gzline, and /shun parancsokban. Az Unreal a szabványos IP/bitek szintaktikát használja, pl.
|
||||
127.0.0.0/8 (illeszkedési tartománya 127.0.0.0 - 127.255.255.255) és fe80:0:0:123::/64 (illeszkedési tartománya
|
||||
<p>Az UnrealIRCd most már támogatja a CIDR-t is (Classless Interdomain Routing - osztálynélküli körzetek közti forgalomirányítás). A CIDR alkalmas
|
||||
IP tartományok kitiltására. Az egyes ISP-knek (Internet Service Provider - internet-szolgáltató) CIDR használatával osztanak ki IP-ket, ezért azzal, hogy CIDR alapú kitiltásokat lehet beállítani,
|
||||
egyszerûen kitilthatunk egy ISP-t. Az Unreal IPv4-re és IPv6-ra is támogatja a CIDR-t. CIDR maszkokat
|
||||
a következõ direktívákban használhatunk: allow::ip, oper::from::userhost, ban user::mask, ban ip::mask, except ban::mask,
|
||||
except throttle::mask és except tkl::mask (ez utóbbinál gzline-ra, gline-ra és shun-ra). Ezenkívül a CIDR használható még
|
||||
a /kline, a /gline, a /zline, a /gzline és a /shun parancsokban. Az Unreal a szabványos, IP/bitek alakú szintaktikát használja,
|
||||
pl. 127.0.0.0/8 (illeszkedési tartománya 127.0.0.0 - 127.255.255.255) és fe80:0:0:123::/64 (illeszkedési tartománya
|
||||
fe80:0:0:123:0:0:0:0 - fe80:0:0:123:ffff:ffff:ffff:ffff).</p></div>
|
||||
|
||||
<p><font size="+2"><b>3.16 - Karakterkészletek nicknevekhez</b></font><a name="feature_nickchars"></a></p><div class="desc">
|
||||
@@ -593,10 +636,10 @@ Egy t
|
||||
<tr><td>swedish</td><td>Svéd karakterek</td><td>iso8859-1 (latin1)</td></tr>
|
||||
<tr><td><b>latin1</b></td><td>catalan, danish, dutch, french, german, swiss-german, spanish, icelandic, italian, swedish</td><td>iso8859-1 (latin1)</td></tr>
|
||||
<tr><td>hungarian</td><td>Magyar karakterek</td><td>iso8859-2 (latin2), windows-1250</td></tr>
|
||||
<tr><td>polish</td><td>Lengyel karakterek</td><td>iso8859-2 (latin2)</td></tr>
|
||||
<tr><td>polish-iso</td><td>Lengyel karakterek (megjegyzendõ, hogy a polish-w1250 gyakoribb!)</td><td>iso8859-2 (latin2)</td></tr>
|
||||
<tr><td>romanian</td><td>Román karakterek</td><td>iso8859-2 (latin2), windows-1250, iso8859-16</td></tr>
|
||||
<tr><td><b>latin2</b></td><td>hungarian, polish, romanian</td><td>iso8859-2 (latin2)</td></tr>
|
||||
<tr><td>polish-w1250</td><td>Lengyel karakterek, windowsos változat (sajnos gyakoribb, mint az iso)</td><td>windows-1250</td></tr>
|
||||
<tr><td><b>latin2</b></td><td>hungarian, polish-iso, romanian</td><td>iso8859-2 (latin2)</td></tr>
|
||||
<tr><td>polish-w1250</td><td>Lengyel karakterek, windowsos változat</td><td>windows-1250</td></tr>
|
||||
<tr><td>slovak-w1250</td><td>Szlovák karakterek, windowsos változat</td><td>windows-1250</td></tr>
|
||||
<tr><td>czech-w1250</td><td>Cseh karakterek, windowsos változat</td><td>windows-1250</td></tr>
|
||||
<tr><td><b>windows-1250</b></td><td>polish-w1250, slovak-w1250, czech-w1250, hungarian, romanian</td><td>windows-1250</td></tr>
|
||||
@@ -810,6 +853,7 @@ allow {
|
||||
class <kapcsolati-osztály>;
|
||||
password <kapcsolódási-jelszó> { <hitelesítés-típusa>; };
|
||||
maxperip <ip-nkénti-kapcsolatok-száma>;
|
||||
ipv6-clone-mask <bitek-száma>;
|
||||
redirect-server <szerver-az-átirányításhoz>;
|
||||
redirect-port <port-az-átirányításhoz>;
|
||||
options {
|
||||
@@ -840,6 +884,16 @@ allow {
|
||||
<p><b>maxperip</b> (optional, but recommended)<br>
|
||||
Meghatározza, hogy egy IP címrõl maximum hány kapcsolatot engedélyezzen (például: maxperip 4;).
|
||||
</p>
|
||||
<p id="allowblock_ipv6clonemask"><b>ipv6-clone-mask</b>
|
||||
(nem kötelezõ, alapértelmezés a <a href="#set_defaultipv6clonemask">set::default-ipv6-clone-mask</a>)<br />
|
||||
A klóndetektálást szabályozza. Ha két kliens különbözõ IPv6 címrõl kapcsolódik,
|
||||
de csak az utolsó néhány bit különbözik, majdnem garantált, hogy mindkét kliens
|
||||
valójában egy személy. Ez az opció csak az
|
||||
<a href="#allowblock_maxperip">allow::maxperip</a> kényszerítésére van hatással. Például ha 128-as értékûre állítod,
|
||||
akkor minden IPv6 cím egyedinek minõsül. A jelenlegi IP lefoglalási
|
||||
irányelv miatt javasolt, hogy a legtöbb általános <a href="#allowblock">allow blokk</a>
|
||||
a 64-es értéket használja.
|
||||
</p>
|
||||
<p><b>redirect-server</b> (szabadon választható)<br>
|
||||
Ha a kapcsolati osztály megtelt, továbbítja a felhasználókat erre a szerverre (ha a kliens támogatja [a mIRC 6 igen]).</p>
|
||||
<p><b>redirect-port</b> (szabadon választható)<br>
|
||||
@@ -920,8 +974,8 @@ listen *:6601 {
|
||||
<p>listen *:8067;<br>
|
||||
listen 213.12.31.126:6667;<br>
|
||||
listen *:6660-6669;</p></div>
|
||||
<p><font class="block_section">4.7 - </font><font class="block_name">Oper blokk</font>
|
||||
<font class="block_recommended">AJÁNLOTT</font> <font class="block_old">(Elõzõleg O:Line néven ismert)</font><a name="operblock"></a><div class="desc">
|
||||
<p><font class="block_section">4.7 - </font><font id="operblock" class="block_name">Oper blokk</font>
|
||||
<font class="block_recommended">AJÁNLOTT</font> <font class="block_old">(Elõzõleg O:Line-ként ismert)</font><div class="desc">
|
||||
</p>
|
||||
<p>
|
||||
<pre>oper <name> {
|
||||
@@ -946,10 +1000,38 @@ listen *:6601 {
|
||||
<p>Az oper blokkal IRC operátorokat állíthatsz be a szerveredhez. Az <b>oper::</b>
|
||||
értéke adja meg az /oper-hez a bejelentkezõ nevet. Az <b>oper::from::userhost</b>
|
||||
egy user@host maszk, amelyre a felhasználó kapcsolatának illenie kell. Megadhatsz
|
||||
egynél több hostmaszkot is úgy, hogy több oper::from::userhost-ot használsz. Az <b>oper::password</b>
|
||||
az a jelszó, amit a felhasználónak meg kell adnia, az oper::password:: segítségével kódolhatod
|
||||
a jelszót, érvényes hitelesítési típusok: crypt, md5, sha1, ripemd-160. Ha csak egyszerû szöveg
|
||||
típusú jelszót szeretnél megadni, az alblokkot kihagyhatod.</p>
|
||||
egynél több hostmaszkot is úgy, hogy több oper::from::userhost-ot használsz.
|
||||
</p>
|
||||
<p id="operblock_password">Az <b>oper::password::</b> az a jelszó, amit az operátornak meg kell adnia.
|
||||
Az <b>oper::password::auth-type</b> segítségével megadhatjuk a hitelesítés módját ehhez a jelszóhoz. Ne adjunk meg <b>oper::password::auth-type</b>-ot egyszerû szöveg típusú jelszóhoz!
|
||||
Érvényes hitelesítési típusok: <tt>crypt</tt>, <tt>md5</tt>, <tt>sha1</tt>, <tt>ripemd160</tt>
|
||||
és <tt>sslclientcert</tt>. Bármelyiket is választjuk,
|
||||
az <b>oper::password::</b> értéke egy hash, amit az
|
||||
<a href="#cmd_mkpasswd">mkpasswd</a> segítségével generálunk.
|
||||
</p>
|
||||
<p id="operblock_password_sslclientcert">
|
||||
Az <tt>sslclientcert</tt> egy kivételes hitelesítési típus. Amikor ezt
|
||||
választjuk, az <b>oper::password::</b> értéke legyen egy fájl
|
||||
útvonal (az UnrealIRCd telepítési célkönyvtárához relatívan), mely
|
||||
tartalmaz egy PEM kódolású SSL tanúsítványt (a nyilvános tanúsítványt, nem
|
||||
pedig egy kulcsot). Ezzel biztosíthatjuk, hogy csak olyan IRC kliens kapcsolódhasson, aki:
|
||||
<ol>
|
||||
<li>SSL-lel kapcsolódik,</li>
|
||||
<li>benyújtja az egyezõ kliens tanúsítványt a kapcsolódáskor,</li>
|
||||
<li>hozzáférése van a tanúsítványhoz tartozó privát kulcshoz.</li>
|
||||
</ol>
|
||||
Természetesen ez a funkció igényli, hogy az UnrealIRCd SSL támogatással
|
||||
legyen fordítva. Továbbá, mivel az SSL tanúsítványokhoz tartozó jelszavak
|
||||
mindig sokkal hosszabbak, mint egy normális emberi jelszó, és sokkal
|
||||
véletlenszerûbbek is, ez a legbiztonságosabb hitelesítési lehetõség. Ahhoz,
|
||||
hogy így jelentkezzünk be operátorként, miután a kliens SSL tanúsítványát
|
||||
megadtuk operátori jelszóként, elég meggyõzõdni arról, hogy a kliens helyesen
|
||||
lett beállítva, és adjuk ki az <pre>/oper <név> :</pre> parancsot. Az <tt>sslclientcert</tt>
|
||||
hitelesítési típust felhasználhatjuk
|
||||
a <a href="#linkblock_passwordreceive">link::password-receive</a>
|
||||
direktívában is biztonságos <a href="#linkblock">link blokkokra</a>.
|
||||
</ol>
|
||||
</p>
|
||||
<p>Megjegyzendõ, hogy MIND a bejelentkezõ név és jelszó a kis- és nagybetûkre érzékenyek.</p>
|
||||
<p>Az <b>oper::class</b> direktíva meghatározza azt a már létezõ (a konfigurációban ezen blokk
|
||||
elõtt beállított) osztálynevet, amit az oper blokk használ.</p>
|
||||
@@ -957,7 +1039,7 @@ listen *:6601 {
|
||||
használni, pl. OAa, használd a <i>flags <flagek></i> formát, ha pedig az új stílust,
|
||||
pl. services-admin, akkor a <i>flags { <flag>; }</i> módszert. Az alábbiakban látható
|
||||
a flagek listája (mindkét formában) és amit csinálnak.</p>
|
||||
<table width="75%" border="1">
|
||||
<table width="75%" border="1" id="operblock_flags">
|
||||
<tr>
|
||||
<td width="10%"><div align="center"><b>Régi flag</b></div></td>
|
||||
<td width="16%"><div align="center"><b>Új flag</b></div></td>
|
||||
@@ -1374,10 +1456,9 @@ log <f
|
||||
<table border=0>
|
||||
<tr><td>errors</td><td>nyilvánvaló</td></tr>
|
||||
<tr><td>kills</td><td>naplózza a /kill értesítéseket</td></tr>
|
||||
<tr><td>tkl</td><td>naplózza a *line-okat, a shunokat és a spamszûrõket (hozzáadás/törlés/lejárat)</td></tr>
|
||||
<tr><td>tkl</td><td>naplózza a *line-okat (/kline, /zline, etc), a shunokat és a spamszûrõket (hozzáadás/törlés/lejárat)</td></tr>
|
||||
<tr><td>connects</td><td>naplózza a felhasználói kapcsolódásokat/kilépéseket</td></tr>
|
||||
<tr><td>server-connects</td><td>naplózza a szerverek kapcsolódásait/kilépéseit</td></tr>
|
||||
<tr><td>kline</td><td>naplózza a /kline használatokat</td></tr>
|
||||
<tr><td>oper</td><td>naplózza az operelési kísérleteket (a sikerteleneket és a sikereseket is)</td></tr>
|
||||
<tr><td>sadmin-commands</td><td>naplózza a /sa* (samode, sajoin, sapart stb.) használatokat</td></tr>
|
||||
<tr><td>chg-commands</td><td>naplózza a /chg* (chghost, chgname, chgident stb.) használatokat</td></tr>
|
||||
@@ -1394,7 +1475,6 @@ log ircd.log {
|
||||
errors;
|
||||
kills;
|
||||
oper;
|
||||
kline;
|
||||
tkl;
|
||||
};
|
||||
};
|
||||
@@ -1415,7 +1495,7 @@ tld {
|
||||
channel <csatornanév>;
|
||||
options {
|
||||
ssl;
|
||||
}
|
||||
};
|
||||
};</pre></p>
|
||||
<p>A tld blokkal motd-ket, szabályokat és egy csatornát rendelhetsz felhasználókhoz
|
||||
a hostjaik alapján. Ez hasznos, ha különbözõ motd-t szeretnél különbözõ nyelvekhez.
|
||||
@@ -1574,7 +1654,7 @@ ban version {
|
||||
};</pre>
|
||||
</p>
|
||||
<p></p></div>
|
||||
<p><font class="block_section">4.19 - </font><font class="block_name">Ban exceptions blokk</font>
|
||||
<p><font class="block_section">4.19 - </font><font class="block_name">Ban kivétel blokk</font>
|
||||
<font class="block_optional">SZABADON VÁLASZTHATÓ</font> <font class="block_old">(Elõzõleg E:Line néven ismert)</font><a name="banexceptionblock"></a><div class="desc">
|
||||
</p>
|
||||
<p>Szintaktika:<br>
|
||||
@@ -1582,17 +1662,19 @@ ban version {
|
||||
except ban {
|
||||
mask <hostmaszk>;
|
||||
};</pre></p>
|
||||
<p>Az except ban blokkal határozhatod meg, mely user@host-ok bírálhatnak felül egy szélesebb maszkra
|
||||
beállított kitiltást. Hasznos, ha egy Internet szolgáltató ki van tiltva, de
|
||||
onnan bizonyos felhasználókat még mindig szeretnél kapcsolódni engedni. Az except::mask direktíva
|
||||
<p>Az except ban blokkal határozhatjuk meg, mely user@host-ok bírálhatnak felül egy szélesebb maszkra
|
||||
beállított ban { } blokkot vagy KLINE/ZLINE kitiltást. Hasznos, ha egy internet-szolgáltató ki van tiltva, de
|
||||
bizonyos felhasználók kapcsolódását még mindig szeretnénk onnan engedélyezni. Az except::mask direktíva
|
||||
a kapcsolódásra engedélyezett kliens user@host maszkját határozza meg.</p>
|
||||
<p>MEGJEGYZÉS: Ha egy hosztot teljesen fel akarunk menteni mindenfajta lehetséges ban alól
|
||||
(kivéve a spamszûrõt), akkor szükségünk van 'except ban' és 'except tkl' blokkokra is.</p>
|
||||
<p>Példa:<br>
|
||||
<pre>
|
||||
except ban {
|
||||
mask identnev@sajat.szolgaltatom.com;
|
||||
};</pre></p>
|
||||
<p></p></div>
|
||||
<p><font class="block_section">4.20 - </font><font class="block_name">TKL exceptions blokk</font>
|
||||
<p><font class="block_section">4.20 - </font><font class="block_name">TKL kivétel blokk</font>
|
||||
<font class="block_optional">SZABADON VÁLASZTHATÓ</font><a name="tklexceptionblock"></a><div class="desc">
|
||||
</p>
|
||||
<p>Szintaktika:<br>
|
||||
@@ -1607,13 +1689,15 @@ except tkl {
|
||||
};
|
||||
};</pre></p>
|
||||
<p>Az except tkl blokkal meghatározhatod, mely user@host-ok bírálhatnak felül egy szélesebb
|
||||
maszkra beállított tkl kitiltást. Hasznos, ha egy Internet szolgáltató ki van tiltva,
|
||||
maszkra beállított tkl kitiltást. Hasznos, ha egy internet-szolgáltató ki van tiltva,
|
||||
de még mindig szeretnéd, hogy onnan kapcsolódhassanak bizonyos felhasználók.
|
||||
Az except::mask direktíva a kapcsolódásra engedélyezett felhasználó user@host maszkja.
|
||||
Az except::type meghatározza, hogy milyen letiltást bírálhat felül a kliens. Érvényes típusok:
|
||||
gline, gzline, qline, gqline és shun, amelyek kivételt képeznek a Gline-okra, globális Zline-okra,
|
||||
Qline-okra, globális Qline-okra és shunokra. Ha a type {} formátumot használod,
|
||||
több típust is megadhatsz.</p>
|
||||
gline, gzline, qline, gqline, shun és all, amelyek kivételt képeznek a Gline-okra,
|
||||
globális Zline-okra, Qline-okra, globális Qline-okra, shunokra, valamint minden banra, kivéve
|
||||
a KLINE/ZLINE-okat. Ha a type {} formátumot használjuk, több típust is megadhatunk.</p>
|
||||
<p>MEGJEGYZÉS: Ha egy hosztot fel akarunk menteni mindenfajta lehetséges ban alól
|
||||
(kivéve a spamszûrõt), akkor szükségünk van 'except ban' és 'except tkl' blokkra is.</p>
|
||||
<p>Példa:<br>
|
||||
<pre>
|
||||
except tkl {
|
||||
@@ -1621,7 +1705,7 @@ except tkl {
|
||||
type gline;
|
||||
};</pre></p>
|
||||
<p></p></div>
|
||||
<p><font class="block_section">4.21 - </font><font class="block_name">Throttle Exceptions blokk</font>
|
||||
<p><font class="block_section">4.21 - </font><font class="block_name">Throttle kivétel blokk</font>
|
||||
<font class="block_optional">SZABADON VÁLASZTHATÓ</font> <a name="throttleexceptionblock"></a>
|
||||
</p><div class="desc">
|
||||
<p>Szintaktika:<br>
|
||||
@@ -1849,17 +1933,23 @@ badword <t
|
||||
replace <csereszöveg>;
|
||||
action <replace|block>;
|
||||
};</pre></p>
|
||||
<p>A badword blokkal kezelheted a +G felhasználói és csatornamódhoz használt, "csúnya szavak"
|
||||
szûrésére szolgáló listát. A badword:: meghatározza csúnya szó a típust; érvényes típusok a
|
||||
channel, message, quit és all. A channel a csatornabeli +G listára vonatkozik, a message a
|
||||
felhasználói +G listára, a quit a kilépõ üzeneteket cenzúrázza, végül az all mindhárom listára
|
||||
felveszi a csúnya szót. A badword::word lehet egy egyszerû (rész)szó vagy egy reguláris
|
||||
kifejezés, amire a keresést végzi a szerver. A badword::replace az, amire a találatot
|
||||
cseréljük. Ha a badword::replace-t kihagyod, a szó a <censored>-ra lesz cserélve.
|
||||
A badword::action megmondja, mi legyen a teendõ, ha egy csúnya szóra találat van. Ha replace
|
||||
az értéke, csere történik; ha block, az egész üzenet blokkolva lesz. Ha nem adsz meg
|
||||
badword::action-t, a replace lesz feltételezve.</p>
|
||||
<p>Példa:<br>
|
||||
<p>A badword blokkal szerkesztheted azt a listát, melyet a "csúnya szavak" szûrésére használ
|
||||
a +G felhasználói és csatornamód. A <b>badword::</b> meghatározza a csúnyaszó típusát, ami
|
||||
eldönti, milyen üzenetekre vonatkozik ez a csúnyaszó szûrõ. Az érvényes típusok az alábbiak:</p>
|
||||
<ul>
|
||||
<li>A <tt>channel</tt> a +G módú csatonán szûr.</li>
|
||||
<li>A <tt>message</tt> olyan privát üzenetekben szûr (nem csatornára küldött üzenetekben), melyeket egy +G módú felhasználó küldött.</li>
|
||||
<li>A <tt>quit</tt> minden kilépõ üzenetet cenzúrázza.</li>
|
||||
<li>Az <tt>all</tt> a fenti három helyzet mindegyikére vonatkozik.</li>
|
||||
</ul>
|
||||
<p>
|
||||
A <b>badword::word</b> lehet egy egyszerû szó vagy reguláris kifejezés arra, hogy mire keressünk. A
|
||||
<b>badword::replace</b> az, amire a találatot cseréljük. Ha a <b>badword::replace</b>-t
|
||||
kihagyjuk, a csereszöveg <censored> lesz. A <b>badword::action</b> megmondja,
|
||||
mi legyen a teendõ, ha egy csúnya szóra találat van. Ha az értéke <code>replace</code>
|
||||
csere történik; ha <code>block</code>, az egész üzenet blokkolva lesz. Ha nem adsz meg
|
||||
<b>badword::action</b>-t, a <code>replace</code> lesz feltételezve.</p>
|
||||
<p>Példa:<br />
|
||||
<pre>
|
||||
badword channel {
|
||||
word szar;
|
||||
@@ -1887,8 +1977,8 @@ ulines {
|
||||
stats.sajátnet.com;
|
||||
};</pre></p>
|
||||
<p></p></div>
|
||||
<p><font class="block_section">4.31 - </font><font class="block_name">Link blokk</font>
|
||||
<font class="block_optional">SZABADON VÁLASZTHATÓ</font> <font class="block_old">(Elõzõleg C/N/H:Line-okként ismert)</font><a name="linkblock"></a>
|
||||
<p id="linkblock"><font class="block_section">4.31 - </font><font class="block_name">Link blokk</font>
|
||||
<font class="block_optional">SZABADON VÁLASZTHATÓ</font> <font class="block_old">(Elõzõleg C/N/H:Line-okként ismert)</font>
|
||||
</p><div class="desc">
|
||||
<p>Szintaktika:<br>
|
||||
<pre>
|
||||
@@ -1910,10 +2000,10 @@ link <szervern
|
||||
...
|
||||
};
|
||||
};</pre></p>
|
||||
<p>Erre a blokkra van szükséged szerverek linkeléséhez. Kérlek, szakíts egy kis idõt ennek az egésznek az
|
||||
elolvasására, mert ez egyike azon legnehezebb dolgoknak, amelyeket a felhasználók gyakran elhibáznak ;P</p>
|
||||
<p>Szerverek linkeléséhez erre a blokkra van szükséged. Kérlek, szakíts egy kis idõt ennek az egésznek az
|
||||
elolvasására, mert ez az egyik legnehezebb dolog, amit a felhasználók gyakran elhibáznak ;P</p>
|
||||
<p>Elõször is, a <b>szervernév</b> a távoli szervered neve, az a név, amely a távoli szerver
|
||||
me { } blokkjában van beállítva, mint a hub.blah.com (nem az IP cím, és a gazdanévtõl is eltérõ lehet).</p>
|
||||
me { } blokkjában van beállítva, mint a hub.valami.com (nem az IP cím, és a gazdanévtõl is eltérõ lehet).</p>
|
||||
<p><b>username</b><br>
|
||||
Megadhatod ezt, ha identet használsz a felhasználónevek hitelesítésre, közönséges esetben állítsd "*"-ra.
|
||||
</p>
|
||||
@@ -1929,39 +2019,40 @@ link <szervern
|
||||
</table>
|
||||
</p>
|
||||
<p><b>bind-ip</b> (szabadon választható)<br>
|
||||
Arra használható, hogy a szerver egy megadott IP-re bindeljen (pl. 192.168.0.1-re), ahonnan kellene
|
||||
kapcsolódnia, szinte soha nincs szükség rá.
|
||||
Ezzel megadhatjuk, hogy a helyi szerver milyen IP címrõl kapcsolódjon (pl. 192.168.0.1-rõl), szinte soha nincs szükség rá.
|
||||
</p>
|
||||
<p><b>port</b><br>
|
||||
Azon port száma, ahová kapcsolódjon a szerver (amelyen a távoli szerver figyeli a kapcsolódásokat).
|
||||
</p>
|
||||
<p><b>password-connect</b><br>
|
||||
A távoli szerverre kapcsolódáskor használt jelszó, egyszerû szövegnek kell lennie.
|
||||
A távoli szerverre kapcsolódáskor használt jelszó; egyszerû szövegnek kell lennie.
|
||||
</p>
|
||||
<p><b>password-receive</b><br>
|
||||
A beérkezõ linkek érvényesítéséhez használt jelszó, lehet titkosított (érvényes kódolási típusok
|
||||
a crypt, md5, sha1 és ripemd-160). A kódolás-típusa paramétert kihagyhatod, hogy csak egyszerû szöveget
|
||||
használj. Gyakran megegyezik ez a jelszó a password-connect-tel.
|
||||
<p id="linkblock_passwordreceive"><b>password-receive</b><br> A beérkezõ linkek érvényesítéséhez
|
||||
használt jelszó. Hasonló módon titkosítható, mint
|
||||
az <a href="#operblock_password"><b>oper::password</b></a>.
|
||||
Még az is megtehetõ, hogy
|
||||
a <a href="#operblock_password_sslclientcert"><tt>sslclientcert</tt></a>
|
||||
hitelesítési típust használjuk. Sõt, ez erõsen ajánlott is, mivel fényévekkel
|
||||
jobban ellenáll a brute-force támadásoknak.
|
||||
</p>
|
||||
<p><b>hub vs leaf</b><br>
|
||||
A hub linkelhet egyszerre több szervert is, amíg a leafnek csak egy linkje lehet... hozzád.
|
||||
Egy szerver vagy hub, vagy leaf, ezek együtt nem használhatóak.
|
||||
A hub egyszerre több szervert is linkelhet, míg a leafnek csak egy linkje lehet... hozzád.
|
||||
Egy szerver leaf, ha nincs hub direktívája. Akkor is leaf, ha a leaf direktíva értéke *, vagy a leafdepth értéke 1.
|
||||
</p>
|
||||
<p><b>hub</b> (szabadon választható)<br>
|
||||
Az értéke egy maszk azokra a szerverekre, amelyekre ez a hub kapcsolódhat (pl: *.sajat.net).
|
||||
Értéke egy maszk olyan szerverekre, amelyekre ez a hub kapcsolódhat (pl: *.sajat.net).
|
||||
</p>
|
||||
<p><b>leaf</b> (szabadon választható)<br>
|
||||
Az értéke egy maszk azokra a szerverekre, amelyek felé ez a szerver leafként viselkedik.
|
||||
Értéke egy maszk olyan szerverekre, amelyekre ez a hub <b>nem</b> kapcsolódhat. A *-nak ugyanolyan hatása van, mintha nem lenne hub direktíva.
|
||||
</p>
|
||||
<p><b>leaf-mélység</b> (szabadon választható)<br>
|
||||
Ha ezt megadod, a leaf opciót is célszerû megadnod. Ez az érték azt a mélységet
|
||||
(ugrások számát) határozza meg, amely alá ez a szerver nem léphet.
|
||||
<p><b>leafdepth</b> (szabadon választható)<br>
|
||||
Ez a direktíva meghatározza, hogy mekkora mélység lehet ezen szerver alatt (csomópontok száma). Például az 1 azt jelenti, hogy a szervernek nem lehet egy linkje sem (vagyis egy leaf), a 2 azt jelenti, hogy õ még linkelhet szervereket, de a hozzá kapcsolódók már nem (vagyis csak leaf szervereket linkelhet). A 0 érték azt jelenti, nincs korlátozás, és ez az alapértelmezés is.
|
||||
</p>
|
||||
<p><b>class</b><br>
|
||||
Azon kapcsolati osztály, ahová helyezzük a szervert. Ehhez gyakran egy külön szerver osztályt szokás használni.
|
||||
Megadja, melyik kapcsolati osztályba helyezzük a linkelt szervert. Ehhez gyakran egy külön szerver osztályt szokás használni.
|
||||
</p>
|
||||
<p><b>compression-level</b> (szabadon választható)<br>
|
||||
Megadja ezen link tömörítési szintjét (1-9). Csak akkor szokás használni, ha a link::options::zip be van állítva.
|
||||
Megadja a kapcsolat tömörítési szintjét (1-9). Csak akkor szokás használni, ha a link::options::zip be van állítva.
|
||||
</p>
|
||||
<p><b>ciphers</b> (szabadon választható)<br>
|
||||
Meghatározza, milyen SSL kódoló/visszafejtõ algoritmusok (cipherek) legyenek használatban ehhez a linkhez. A rendelkezésre álló
|
||||
@@ -1971,9 +2062,9 @@ link <szervern
|
||||
Egy vagy több opció használatának beállítására szolgál. Néha nincs szükség rá.<br>
|
||||
<table border="0">
|
||||
<tr><td><b>ssl</b></td><td> ha SSL portra kapcsolódsz.</td></tr>
|
||||
<tr><td><b>autoconnect</b></td><td> a szerver próbálkozni fog az automatikus kapcsolódással, a class::connfreq-ben
|
||||
<tr><td><b>autoconnect</b></td><td> a szerver automatikusan fog próbálkozni a kapcsolódással a class::connfreq-ben
|
||||
beállított idõközönként (a legjobb, ha ezt csak egy oldalról engedélyezed, mint a leaf->hub linkeléseknél)</td></tr>
|
||||
<tr><td><b>zip</b></td><td> ha tömörített (zip) linkeket akarsz; ehhez szükség van a szerverbe belefordítt zip link támogatásra + ezen opció beállítására mindkét oldalon</td></tr>
|
||||
<tr><td><b>zip</b></td><td> ha tömörített (zip) linkeket szeretnél; ehhez szükség van a szerverbe belefordítt zip link támogatásra + ezen opció beállítására mindkét oldalon</td></tr>
|
||||
<tr><td><b>nodnscache</b></td><td> ne használjon gyorsítótárat a kimenõ szerverkapcsolat IP címére; használd ezt gyakran változó
|
||||
gazdanevek (például dyndns.org) esetén.</td></tr>
|
||||
<tr><td><b>nohostcheck</b></td><td> ne érvényesítse a távoli gazdanevet (link::hostname); használd ezt gyakran változó
|
||||
@@ -2010,18 +2101,34 @@ alias <n
|
||||
type <álparancs-típusa>;
|
||||
spamfilter <yes|no>;
|
||||
};</pre></p>
|
||||
<p>(Megjegyzés: lásd még az <a href="#includedirective">include</a> direktívát az UnrealIRCd szabványos álparancsokat tartalmazó fájljairól.)</p>
|
||||
<p>Az alias blokk [szabványos álparancsokra] lehetõvé teszi, hogy parancsokat továbbítsunk egy
|
||||
felhasználóhoz, például hogy a /chanserv üzenetet küldjön a chanserv felhasználónak.
|
||||
Az alias:: megadja azt a parancsnevet, ami lesz az álnév (pl.: chanserv).
|
||||
Az alias::target egy nick- vagy csatornanév, ahová a parancs továbbítva lesz. Ha az alias:: ugyanaz,
|
||||
mint a továbbítási célpont, az alias::target elhagyható. Az alias::type meghatározza
|
||||
az álparancs típusát; érvényes típusok: services (a felhasználó egy szolgáltatás szerveren van), stats
|
||||
(a felhasználó egy statisztikai szerveren van), normal (a felhasználó egy közönséges felhasználó
|
||||
bármilyen szerveren), és channel (a célpont egy csatornanév). Az alias::spamfilter (nem kötelezõ)
|
||||
"yes"-re állításával bekapcsolható a spamszûrés erre az álparancsra (az alapértelmezés "no").<br>
|
||||
Az alias blokknak van egy másik célja is, amit az alábbiakban magyarázunk el.</p>
|
||||
<p>Szintaktika [formázott álparancsokra]:<br>
|
||||
<p>(Megjegyzendõ, hogy a <span class="inline_pre"><name></span> az "<b>alias::</b>" használatára utal.)</p>
|
||||
<p>(Megjegyzés: lásd még az <a href="#includedirective">include</a> direktívát az UnrealIRCd szabványos álparancs fájljairól!)</p>
|
||||
<p>Az alias blokk [szabványos álparancsokra] lehetõvé teszi, hogy parancsokat továbbítsunk egy felhasználóhoz,
|
||||
például a /chanserv üzenetet küld a chanserv felhasználónak.
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
Az <b>alias::</b> megadja az álparancs nevét (pl.: chanserv).
|
||||
</li>
|
||||
<li>
|
||||
Az <b>alias::target</b> a továbbítás célpontjául szolgáló nick- vagy csatornanév. Ha az <b>alias::</b>
|
||||
értéke ugyanannak adódik, mint a továbbítási célpont, az <b>alias::target</b> elhagyható.
|
||||
</li>
|
||||
<li>
|
||||
Az <b>alias::type</b> meghatározza az álparancs típusát; érvényes típusok:
|
||||
<ul>
|
||||
<li><span class="inline_pre">services</span> (a felhasználó a <a href="#set-services-server">szolgáltatás szerveren</a> van),</li>
|
||||
<li><span class="inline_pre">stats</span> (a felhasználó a <a href="#set-stats-server">statisztikai szerveren</a> van),</li>
|
||||
<li><span class="inline_pre">normal</span> (a felhasználó egy közönséges felhasználó bármilyen szerveren),</li>
|
||||
<li><span class="inline_pre">channel</span> (a célpont egy csatornanév), és</li>
|
||||
<li><span class="inline_pre">command</span> (ez nem egy "szabványos álparancs", lásd <a href="#aliasblock-command">lentebb</a>).</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
Az <b>alias::spamfilter</b> (nem kötelezõ) "yes"-re állításával bekapcsolható a spamszûrés erre az álparancsra (az alapértelmezés 'no').
|
||||
</li>
|
||||
</ul>
|
||||
<p id="aliasblock-command">Szintaktika [formázott álparancsokra]:<br>
|
||||
<pre>
|
||||
alias <név> {
|
||||
/* Felhasználóknak/csatornára küldendõ álparancsokra */
|
||||
@@ -2043,25 +2150,49 @@ alias <n
|
||||
type command;
|
||||
spamfilter <yes|no>;
|
||||
};</pre></p>
|
||||
<p>Amikor az alias blokkot ebben a formában használjuk, lehetõséget ad egy sokkal szélesebb körû
|
||||
alkalmazására. Például készíthetünk olyan álparancsokat is, mint az /identify. Az alias::
|
||||
ugyanaz, mint fent, az álparancs neve. Az <b>alias::format</b> blokkok értékei reguláris kifejezések,
|
||||
amelyek az álparancshoz küldött szöveggel lesznek összehasonlítva, és ha az egyik illik rá,
|
||||
annak az alias::format-nak az albejegyzései lesznek használatban. Lehet egyszerre több
|
||||
alias::format-unk is, így a parancs különbözõ dolgokat tehet a neki küldött szövegtõl
|
||||
függõen. Az <b>alias::format::target</b> az álparancs továbbításának célpontja,
|
||||
de "valódi" álparancsok esetében az <b>alias::format::command</b> használandó.
|
||||
Az <b>alias::format::type</b> megadja, hogy az üzenet milyen típusú célponthoz
|
||||
legyen elküldve; a "Szintaktika [szabványos álparancsokra]" részben korábban említett
|
||||
típusok mellett itt megengedett még a "real" is, "valódi" álparancsokra.
|
||||
Az <b>alias::format::parameters</b> mondja meg, milyen paraméterek legyenek elküldve
|
||||
a felhasználóhoz. Ahhoz, hogy az álparancshoz küldött paraméterek egyikére hivatkozzunk,
|
||||
írjunk egy % jelet egy azt követõ számmal, például %1 az elsõ paraméter. Lehetõség van arra is,
|
||||
hogy hivatkozzunk egy adott paramétertõl kezdõdõen az üzenet végéig tartó összes paraméterre,
|
||||
ehhez írjunk be egy % jelet, majd egy számot és egy - jelet, például a %2- visszaadja az összes
|
||||
paramétert a másodiktól kezdõdõen az utolsóig. Hasonló különleges célt szolgál még a %n is,
|
||||
ami helyettesíti annak a felhasználónak a nevét, aki kiadta a parancsot.<br><br>
|
||||
A formázott álparancsokra vonatkozóan példákat találunk a doc/example.conf-ban.</p>
|
||||
<p>
|
||||
Amikor az alias blokk <b>alias::type</b> direktíváját <span class="inline_pre">command</span> értékûre állítjuk
|
||||
a <a href="#aliasblock-command">fent</a> mutatottak szerint, formázott álparancs lesz belõle.
|
||||
Az ebben a formában használt alias blokk sokkal rugalmasabb.
|
||||
Például készíthetünk vele egy /identify nevû álparancsot.
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
Az <b>alias::</b> az álparancs neve, ugyanúgy, mint a szabványos álparancs blokkoknál
|
||||
(lásd <a href="#aliasblock">fentebb</a>).
|
||||
</li>
|
||||
<li>
|
||||
Az <b>alias::format</b> blokkok értékei <a href="#regex">reguláris kifejezések</a>, melyek az álparancs paramétereiként
|
||||
megadott szöveggel való összehasonlítás útján döntik el, hogy mely <b>alias::format</b>
|
||||
blokk albejegyzései legyenek használatban. Eképpen megadhatunk több <b>alias::format</b> blokkot is, hogy a parancs
|
||||
különbözõ dolgokat tegyen a neki küldött szövegtõl függõen.
|
||||
</li>
|
||||
<li>
|
||||
Az <b>alias::format::target</b> az álparancs továbbítási célpontja.
|
||||
Nem használjuk, ha az <b>alias::format::type</b> értéke "<span class="inline_pre">real</span>" (valódi álparancs).
|
||||
</li>
|
||||
<li>
|
||||
Az <b>alias::format::type</b> a továbbítási célpont típusát
|
||||
adja meg.
|
||||
A <a href="#aliasblock">szabványos álparancsok szintaktikájában</a> megadott típusokon kívül megengedett még a "<span class="inline_pre">real</span>"
|
||||
is, ha "valódi álparancsot" szeretnénk ("valódi álparancsok" alatt olyan álparancsot értünk,
|
||||
amely újraírható PRIVMSG-tõl eltérõ parancsra).
|
||||
</li>
|
||||
<li>
|
||||
Az <b>alias::format::parameters</b> ("valódi álparancsokra") megmondja, hogy milyen
|
||||
szöveg legyen elküldve a felhasználóhoz. Ahhoz, hogy az álparancshoz küldött paraméterek
|
||||
egyikére hivatkozzunk, írjunk egy <span class="inline_pre">%</span> jelet egy azt követõ számmal!
|
||||
Például <span class="inline_pre">%1</span> az elsõ paraméter. Lehetõség van arra is,
|
||||
hogy egy adott sorszámú paramétertõl kezdve az üzenet végéig tartó összes paraméterre hivatkozzunk, ehhez írjunk be egy <span class="inline_pre">%</span>
|
||||
jelet, majd azt követõ számot, és egy <span class="inline_pre">-</span> jelet! Például
|
||||
a <span class="inline_pre">%2-</span> visszaadja az összes paramétert a másodiktól kezdve
|
||||
az utolsóig. További különleges célt szolgál még az <span class="inline_pre">%n</span> is, amely
|
||||
helyettesíti annak a felhasználónak a nevét, aki kiadta a parancsot.
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
Példákat a formázott álparancsokra vonatkozóan a doc/example.conf-ban találunk.
|
||||
</p>
|
||||
<p></p></div>
|
||||
<p><font class="block_section">4.33 - </font><font class="block_name">Help blokk</font>
|
||||
<font class="block_optional">SZABADON VÁLASZTHATÓ</font><a name="helpblock"></a>
|
||||
@@ -2201,8 +2332,8 @@ Majd az unrealircd.conf-ba tegy
|
||||
};</pre></p>
|
||||
</div>
|
||||
|
||||
<p><font class="block_section">4.37 - </font><font class="block_name">Set blokk</font>
|
||||
<font class="block_required">KÖTELEZÕ</font> <font class="block_old">(Elõzõleg unrealircd.conf-ként/hálózati fájlként ismert)</font><a name="setblock"></a>
|
||||
<p id="setblock"><font class="block_section">4.37 - </font><font class="block_name">Set blokk</font>
|
||||
<font class="block_required">KÖTELEZÕ</font> <font class="block_old">(Elõzõleg unrealircd.conf-ként ill. hálózati fájlként ismert)</font>
|
||||
</p><div class="desc">
|
||||
<p>A set fájl az, ami régebben a networks/unrealircd.conf-unk és a hálózati
|
||||
fájlunk szokott lenni. Egyszerveres hálózatokon, inkább, mint hogy legyen 3 fájlod,
|
||||
@@ -2273,6 +2404,9 @@ set {
|
||||
MEGJEGYZÉS: lehet, hogy ezek a csatornamódok még mindig használhatóak IRC szolgáltatásokon keresztül
|
||||
az MLOCK alkalmazásával. Sajnos mi nem tudunk sokat tenni ezügyben, a szolgáltatás fejlesztõket
|
||||
kellene megkérned, hogy megvalósítsanak egy restrict-channelmodes funkciót is.</p>
|
||||
<p><font class="set">set::level-on-join <none|voice|halfop|op|protect|owner>;</font><br>
|
||||
Milyen módot kapjon az a felhasználó, aki elsõként lép be egy csatornára. Az
|
||||
alapértelmezés 'op' (csatorna operátor).</p>
|
||||
<p><font class="set">set::restrict-extendedbans <típusok|*></font><br>
|
||||
Nem ad engedélyt a felhasználóknak egyetlen kiterjesztett ban típus használatára sem ("*"), vagy csak bizonyos típusokat utasít vissza (pl.: "qc").</p>
|
||||
<p><font class="set">set::auto-join <csatornák>;</font><br>
|
||||
@@ -2363,16 +2497,35 @@ set {
|
||||
Engedélyezi a shunolt felhasználóknak a /part használatát.</p>
|
||||
<p><font class="set">set::options::fail-oper-warn;</font><br>
|
||||
Ha jelen van, a felhasználók értesülni fognak arról, hogy a sikertelen /oper-elési kísérletük naplózva lett.</p>
|
||||
<p><font class="set">set::options::allow-insane-bans;</font><br>
|
||||
Engedélyt ad az olyan õrülten széles banokra is, mint a /GLINE *@*.xx. Ezzel nagyon könnyen elõfordulhat, hogy
|
||||
véletlenül kitiltunk mindenkit a hálózatról, ezért csak nagyon óvatosan használjuk!</p>
|
||||
<p id="set_nopost_ban_action"><font class="set">set::nopost::ban-action</font> (igényli az <a href="#modules_m_nopost">m_nopost</a> modult)<br />
|
||||
Megmondja, mit tegyen az olyan felhasználókkal, akik HTTP POST parancsot próbálnak kiadni.
|
||||
Az engedélyezett értékek: kill, gline, gzline, kline, zline, shun és tempshun.
|
||||
Az alapértelmezett érték a kill. Ha valamelyik *line értéket vagy shun-t használjuk,
|
||||
fontos tudni, hogy azok a könnyen becsapható felhasználók, akiket egy XPS IRC spammoló támadásra kiállított webhely meglátogatására csaltak rá,
|
||||
a shun vagy *line jellegû tiltást az összes meglévõ kapcsolatukon
|
||||
tapasztalni fogják. Az alapértelmezett "kill" érték kivédi az ilyen jellegû baleseteket,
|
||||
de a *line használata — különösen a gzline-é — szükséges lehet bizonyos szituációkban.</p>
|
||||
<p id="set_nopost_ban_reason"><font class="set">set::nopost::ban-reason</font> (igényli az <a href="#modules_m_nopost">m_nopost</a> modult)<br />
|
||||
A kitiltás indoka, amikor az m_nopost killel vagy bannol egy felhasználót.</p>
|
||||
<p id="set_nopost_ban_time"><font class="set">set::nopost::ban-time</font> (igényli az <a href="#modules_m_nopost">m_nopost</a> modult)<br />
|
||||
Az m_nopost által beállított shunok, gline-ok, gzline-ok, kline-ok és zline-ok idõtartama.
|
||||
Az alapértelmezés 4h.</p>
|
||||
<p id="set_nopost_except_hosts"><font class="set">set::nopost::except-hosts</font> (igényli az <a href="#modules_m_nopost">m_nopost</a> modult)<br />
|
||||
Egy lista az m_nopost killjei és *-line-jai alóli kivételekrõl. Lehetõleg soha ne adjunk meg
|
||||
gazdanév maszkokat ebben az opcióban!</p>
|
||||
<p><font class="set">set::dns::timeout <idõérték>;</font><br>
|
||||
Egy idõérték azon idõhossz meghatározására, ami alatt a DNS szervernek válaszolni kell,
|
||||
mielõtt idõkifutás történik. Az idõérték egy numerikus sztring a napot jelentõ "d",
|
||||
az órát jelentõ "h", a percet jelentõ "m" és a másodpercet jelentõ "s" karakterekkel.
|
||||
Például az 1d2h3m jelentése 1 nap, 2 óra és 3 perc.</p>
|
||||
Például az 1d2h3m jelentése 1 nap, 2 óra és 3 perc. (NINCS IMPLEMENTÁLVA)</p>
|
||||
<p><font class="set">set::dns::retries <próbálkozások-száma>;</font><br>
|
||||
Egy számérték, amely meghatározza, hányszor történjen újrapróbálkozás a DNS lekérdezésben,
|
||||
ha hiba fordul elõ.</p>
|
||||
ha hiba fordul elõ. (NINCS IMPLEMENTÁLVA)</p>
|
||||
<p><font class="set">set::dns::nameserver <dns-szerver-neve>;</font><br>
|
||||
Meghatározza a DNS lekérdezésekhez használt szerver gazdanevét.</p>
|
||||
Meghatározza a DNS lekérdezésekhez használt szerver gazdanevét. (NINCS IMPLEMENTÁLVA)</p>
|
||||
<p><font class="set">set::dns::bind-ip <ip>;</font><br>
|
||||
Meghatározza azt az IP címet, amelyre bindeljen a szerver a lekérdezésekhez; a lehetõ legritkábban van szükség rá.</p>
|
||||
<p><font class="set">set::network-name <hálózat-neve>;</font><br>
|
||||
@@ -2381,10 +2534,16 @@ set {
|
||||
<p><font class="set">set::default-server <szervernév>;</font><br>
|
||||
Meghatározza, hogy mi legyen annak az alapértelmezett szervernek a neve, ahová legyenek utasítva
|
||||
a felhasználók, ha ez a szerver tele van.</p>
|
||||
<p><font class="set">set::services-server <szervernév>;</font><br>
|
||||
<p id="set_defaultipv6clonemask">
|
||||
<font class="set">set::default-ipv6-clone-mask</font><br />
|
||||
Az alapértelmezett IPv6 klóndetektáló maszk. Lásd az
|
||||
<a href="#allowblock_ipv6clonemask">allow::ipv6-clone-mask</a> direktívát. Az alapértelmezett érték
|
||||
ehhez a beállításhoz 64.
|
||||
</p>
|
||||
<p id="set-services-server"><font class="set">set::services-server <szervernév>;</font><br>
|
||||
Meghatározza azon szerver nevét, ahová a services botok kapcsolódtak. Kötelezõ;
|
||||
állíts be valami services.sajátnet.com-hoz hasonlóra, ha nincs servicesed.</p>
|
||||
<p><font class="set">set::stats-server <szervernév>;</font><br>
|
||||
<p id="set-stats-server"><font class="set">set::stats-server <szervernév>;</font><br>
|
||||
Beállítja azon szerver nevét, ahol a statisztikai bot tartozkodik. Ha nem fut statisztikai szerver,
|
||||
ez az érték kihagyható.</p>
|
||||
<p><font class="set">set::help-channel <hálózati-segélycsatorna>;</font><br>
|
||||
@@ -2434,12 +2593,22 @@ set {
|
||||
Meghatározza azt a fájlnevet, ahol a szerver privát SSL kulcsa tartozkodik.</p>
|
||||
<p><font class="set">set::ssl::trusted-ca-file <fájlnév>;</font><br>
|
||||
Meghatározza azt a fájlnevet, ahol a megbízható CA-k tanúsítványai tartózkodnak.</p>
|
||||
<p><font class="set">set::ssl::server-cipher-list <kódoló-algoritmusok>;</font><br>
|
||||
Meghatározza, milyen kódoló algoritmusok legyenek engedélyezve, alapértelmezésben az OpenSSL dönti el.
|
||||
Lásd a <a href="http://www.openssl.org/docs/apps/ciphers.html#CIPHER_LIST_FORMAT">http://www.openssl.org/docs/apps/ciphers.html</a>
|
||||
oldalt a kódoló algoritmusok meghatározásának hogyanjáról.</p>
|
||||
<p><font class="set">set::ssl::renegotiate-bytes <érték>;</font><br>
|
||||
Meghatározza, hogy hány bájt után kelljen az SSL viszonynak új kézfogás (pl.: 20m a 20 megabájthoz).</p>
|
||||
<p><font class="set">set::ssl::renegotiate-timeout <idõérték>;</font><br>
|
||||
Meghatározza, hogy mennyi idõ múlva kelljen az SSL viszonynak új kézfogás (pl.: 1h az 1 órához).</p>
|
||||
<p><font class="set">set::ssl::options::fail-if-no-clientcert;</font><br>
|
||||
Letiltja a tanúsítvány nélküli kliensek kapcsolódását.</p>
|
||||
<p><font class="set">set::ssl::options::no-self-signed;</font><br>
|
||||
Elutasítja az önaláírt tanúsítvánnyal rendelkezõ kliensek kapcsolódásait.</p>
|
||||
<p><font class="set">set::ssl::options::verify-certificate;</font><br>
|
||||
Megállapítja az SSL tanúsítvány érvényességét, mielõtt engedélyezi a kapcsolatot.</p>
|
||||
<p><font class="set">set::ssl::options::no-starttls;</font><br>
|
||||
Letiltja a STARTTLS-t. A STARTTLS megengedi a klienseknek az SSL használatát szokásos (nem SSL) portokon.</p>
|
||||
<p><font class="set">set::throttle::period <idõérték></font><br>
|
||||
Meghatározza, mennyi ideig kelljen egy felhasználónak várnia, mielõtt újrakapcsolódik több mint
|
||||
set::throttle::connections alkalommal.</p>
|
||||
@@ -2486,6 +2655,14 @@ set {
|
||||
<p><font class="set">set::spamfilter::except <célpont(ok)></font><br>
|
||||
Ezek a célpontok kivételek a spamszûrések alól (nem lesz tevékenység végrehajtva),
|
||||
lehet egyetlen célpont vagy egy vesszõvel elválaszott felsorolás. Pl.: except "#help,#spamreport"</p>
|
||||
<p><font class="set">set::spamfilter::slowdetect-warn <érték></font><br>
|
||||
Ha egy spamszûrõ lefutása több ideig tart, mint a megadott ezredmásodpercek száma,
|
||||
(1000ms = 1 másodperc), akkor minden operátor kap egy figyelmeztetõ üzenetet (alapérték: 250).
|
||||
Lásd még: <a href="#feature_spamfilter_slow">Lassú spamszûrõk érzékelése</a>.</p>
|
||||
<p><font class="set">set::spamfilter::slowdetect-fatal <érték></font><br>
|
||||
Ha egy spamszûrõ lefutása több ideig tart, mint a megadott ezredmásodpercek száma,
|
||||
(1000ms = 1 másodperc), akkor a spamszûrõ le lesz törölve (alapérték: 500).
|
||||
Lásd még: <a href="#feature_spamfilter_slow">Lassú spamszûrõk érzékelése</a>.</p>
|
||||
<p><font class="set">set::check-target-nick-bans <yes|no></font><br>
|
||||
Valahányszor a felhasználó nicknevet változtat, ellenõrzi, hogy az ÚJ név le van-e
|
||||
tiltva. Ha igen, nem engedélyezi a nickváltást. Az alapértelmezés "yes".</p>
|
||||
@@ -2499,7 +2676,45 @@ AU). A lek
|
||||
Legfeljebb ennyi ideig vár az idõszerverek válaszára. Ez egy érték 1 és 5 között; több nem lehet,
|
||||
mert túl nagy pontatlanságot okozna. Ez az érték alapértelmezésben 3, és nem valószínû, hogy
|
||||
érdemes megváltoztatni.</p>
|
||||
<p><font class="set">set::pingpong-warning <yes|no></font><br>
|
||||
Ha a NOSPOOF engedélyezett (általában Windowson), küldjön egy figyelmeztetést minden felhasználónak, hogy
|
||||
használják a "/quote pong .." parancsot, ha kapcsolódási problémájuk van. Az alapértelmezés "no".</p>
|
||||
<p><font class="set">set::watch-away-notification <yes|no></font><br>
|
||||
Engedélyezi vagy letiltja az AWAY értesítéseket a WATCH-ban. Az alapértelmezés "yes".</p>
|
||||
<p></p> </div>
|
||||
<p id="filesblock"><font class="block_section">4.38 - </font><font class="block_name">Files blokk</font>
|
||||
<font class="block_optional">SZABADON VÁLASZTHATÓ</font><div class="desc">
|
||||
</p>
|
||||
<p>
|
||||
Nem kell <a href="#tldblock">TLD blokkot</a> használnunk az MOTD-ket és a szabályokat leíró fájlok alapértelmezett helyeinek megadásához. Ez a blokk szabályozza az alapértelmezett beállításokat rájuk vonatkozóan a PID fájl és az irc.tune fájl mellett. Mindenre, ami itt nincs megadva, a <a href="#addtlfiles">További fájlok</a> szekcióban leírt alapértékek érvényesek.
|
||||
</p>
|
||||
<p>
|
||||
A relatív útvonalnevek az UnrealIRCD gyökérkönyvtárából kiindulva értendõek, amely rendszerint az <tt>unrealircd.conf</tt> fájlt tartalmazó könyvtár. Ez a blokk felhasználható arra, hogy több mint egy IRCd-t futtassunk ugyanabból a könyvtárból/gyökérbõl. Ilyen esetben minden egyes szerverhez állítsunk be legalább egy-egy PID fájlt, illetve tune fájlt!
|
||||
</p>
|
||||
<p>Szintaxis:<br>
|
||||
<pre>
|
||||
files {
|
||||
motd <motd fájl>;
|
||||
shortmotd <rövid motd fájl>;
|
||||
opermotd <motd fájl az operátoroknak>;
|
||||
svsmotd <motd fájl a szolgáltatásoknak>;
|
||||
botmotd <motd fájl a botoknak>;
|
||||
|
||||
rules <szabályokat leíró fájl>;
|
||||
|
||||
tunefile <behangoló fájl>;
|
||||
pidfile <PID fájl>;
|
||||
};
|
||||
</pre></p>
|
||||
<p>Példa:<br />
|
||||
<pre>
|
||||
files {
|
||||
motd /etc/motd;
|
||||
|
||||
pidfile /var/lib/run/unrealircd.pid;
|
||||
};
|
||||
</pre>
|
||||
</p>
|
||||
<p><b><font size="+2">5 – További fájlok<a name="addtlfiles"></a>
|
||||
</font></b></p><div class="desc">
|
||||
A konfigurációs fájlok mellett az Unreal néhány egyéb fájllal is rendelkezik, mint pl. az MOTD (a nap üzenete),
|
||||
@@ -2639,6 +2854,10 @@ AU). A lek
|
||||
<td><div align="center">Q</div></td>
|
||||
<td>Csak U:Line-os szerverek rúghatnak ki felhasználókat</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><div align="center">r</div></td>
|
||||
<td>Ez a csatorna regisztrált (csak szolgáltatás szerver állíthatja be)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><div align="center">R</div></td>
|
||||
<td>Egy regisztrált nicknév szükséges a belépéshez</td>
|
||||
@@ -2676,6 +2895,15 @@ AU). A lek
|
||||
<td><div align="center">z</div></td>
|
||||
<td>Csak titkos (SSL) kapcsolatú kliensek léphetnek be</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><div align="center">Z</div></td>
|
||||
<td>A szerver állítja be annak a jelzésére, hogy a csatornán lévõ felhasználók mindegyike titkosított (SSL)
|
||||
kapcsolaton van. Csak akkor aktív, ha a +z is be van állítva. Az ULine-okat (pl.: BotServ) figyelmen kívül
|
||||
hagyja a "nem biztonságos felhasználók" számlálásakor. Az továbbra is a szerver
|
||||
adminokra van bízva, hogy biztonságos, szerverek közötti kapcsolatokat hozzanak létre (amit
|
||||
SSL segítségével tehetnek meg, vagy akár VPN-nel, loopback interfésszel, kvantum-titkosítással stb.),
|
||||
az IRCd maga nem fogja, ill. nem tudja detektálni ezt.</td>
|
||||
</tr>
|
||||
</table>
|
||||
<p> </p>
|
||||
<table width="75%" border="1">
|
||||
@@ -3048,12 +3276,12 @@ tov
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="39">globops <üzenet></td>
|
||||
<td>Üzenetet küld minden IRCopnak.</td>
|
||||
<td>Üzenetet küld minden globális IRCopnak.</td>
|
||||
<td>IRCop</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="39">chatops <üzenet></td>
|
||||
<td>Üzenetet küld minden +c módú IRCopnak</td>
|
||||
<td>Üzenetet küld minden (globális és lokális) IRCopnak</td>
|
||||
<td>IRCop</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -3111,14 +3339,15 @@ tov
|
||||
<td>IRCop</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="39">rehash <szerver> –<flagek></td>
|
||||
<td height="39">rehash <szerver> <flagek></td>
|
||||
<td>Újratölti a szerver beállításfájlját. Szervernév megadásával távoli szerverek
|
||||
beállításait töltheted újra. Néhány flag is rendelkezésre áll. Ezek
|
||||
beállításait tölthetjük újra, ill. a -global flaggel a hálózat minden szerverén
|
||||
elvégezhetjük az újratöltést (mindkettõre csak NetAdminok jogosultak). Néhány további flag is rendelkezésre áll. Ezek
|
||||
a következõk:<br>
|
||||
-motd - Csak az összes MOTD és RULES fájlt töltse újra (a tld {}-ket is beleértve)<br>
|
||||
-opermotd - Csak az OPERMOTD fájlt töltse újra<br>
|
||||
-botmotd - Csak a BOTMOTD fájlt töltse újra<br>
|
||||
-dns - Újrainicializálja és újratölti a névfeloldót<br>
|
||||
-motd - Csak az összes MOTD, BOTMOTD, OPERMOTD és RULES fájlt töltse újra (beleértve a tld{} blokkbelieket is)<br>
|
||||
-garbage - Kikényszeríti a szemétgyûjtést<br>
|
||||
-ssl - Újratölti az SSL tanúsítványokat<br>
|
||||
<td>IRCop</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -3240,12 +3469,20 @@ tov
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="36">addline <szöveg><br></td>
|
||||
<td>Lehetõséget ad arra, hogy sorokat fûzz az unrealircd.conf-hoz.<br></td>
|
||||
<td>A megadott szöveget hozzáfûzi az unrealircd.conf-hoz. Az az unrealircd-3.2.9 óta
|
||||
ennek a parancsnak a használatához be kell töltenünk az m_addline modult.<br></td>
|
||||
<td>IRCop</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="36">mkpasswd <jelszó><br></td>
|
||||
<td>Titkosít egy tiszta szövegû jelszót, hogy betehesd az unrealircd.conf-ba.<br></td>
|
||||
<tr id="cmd_mkpasswd">
|
||||
<td height="36">mkpasswd <hitelesítés-típusa> <jelszó><br></td>
|
||||
<td>Titkosítja a megadott <jelszót> a <hitelesítés-típusa> típusú hasító módszerrel. Lehetséges hasító módszerek:
|
||||
<ul>
|
||||
<li>crypt [<em>Windows alatti támogatáshoz SSL szükséges</em>]</li>
|
||||
<li>md5</li>
|
||||
<li>sha1 [<em>SSL-t igényel</em>]</li>
|
||||
<li>ripemd160 [<em>SSL-t igényel</em>]</li>
|
||||
</ul>
|
||||
<br></td>
|
||||
<td>IRCop</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -3379,13 +3616,14 @@ Tov
|
||||
gondoskodj, hogy a biztonsági mentéseid is megkapják a megfelelõ engedélybeállításokat. (Elég gyakran megesik, hogy minden
|
||||
biztonságos, mégis megbújik valahol egy mindenki számára olvasható mentes.tar.gz.)<br>
|
||||
<br>
|
||||
Erõsen ajánlott az is, hogy használj titkosított jelszavakat, ahol csak lehetséges. Ha OpenSSL támogatással
|
||||
Erõsen ajánlott az is, hogy ahol csak lehetséges, használj <a href="#passwords" title="Password Types">titkosított jelszavakat</a>. Ha OpenSSL támogatással
|
||||
fordítasz (és így is teszel, mivel érdekel téged a biztonság, igaz?), akkor javaslom, hogy
|
||||
titkosítsd a jelszavaidat <i>sha1</i> vagy <i>ripemd160</i> kódolással, különben <i>md5</i>-tel. Továbbá, ha
|
||||
még mindig vannak Unreal3.2.1 vagy késõbbi verziókból megmaradt titkosított (oper) blokkjaid, azt tanácsolom, hogy
|
||||
kódold újra ezeket (csak futtasd újra az /mkpasswd parancsot), mert a 3.2.1 bevezetett néhány számottevõ,
|
||||
feltörés elleni elõrelépést (alapvetõen az aktív feltöréseket 14-szeresen lelassítja, ezáltal lehetetlenné teszi
|
||||
a tárolt/nyílt/titkosított szöveges feltöréseket).
|
||||
<br>
|
||||
Ennek ellenére vedd figyelembe, hogy ez csak "egy újabb szintje a biztonságnak", mivel ha gyenge
|
||||
jelszavaid vannak, még mindig feltörhetõek viszonylag könnyen, és ha valamely támadónak sikerül megszereznie
|
||||
a konfigurációs fájlodat, rendszerint más érdekes dolgokat is talál benne, amelyek segítségére lehetnek,
|
||||
@@ -3481,10 +3719,14 @@ Viszont a t
|
||||
Vannak kernel patchek, amelyek nehezebbé teszik a szegmens és verem alapú sebezhetõségek mûködését.
|
||||
Ez szép és jó, azonban ne ez legyen a figyelmed középpontja, sokkal nagyobb veszély van arra, hogy más módon
|
||||
aknázzák ki a szervere(i)det... különbözõ okok miatt.<br>
|
||||
Egy másik lehetõség, hogy engedélyezed a chroot-olást (csak *NIX esetén), ami biztosíték arra, hogy ha sikerül is a kiaknázás,
|
||||
a támadót bezártad az UnrealIRCd könyvtárba, és nem módosíthat más
|
||||
fájlokat. Ehhez a módszerhez rendszergazdai jogosultságokon kellenek, valamint hogy módosítsd az include/config.h-t
|
||||
(keress rá a CHROOTDIR-re, és állítsd be az IRC_USER és IRC_GROUP makrókat is), aztán fordítsd újra.<br>
|
||||
<br>
|
||||
Van egy dolog viszont, amit meg kellene tenned, ez pedig az, hogy MINDIG HASZNÁLD A LEGFRISSEBB VERZIÓT, és
|
||||
jelentkezz fel az <a href="http://mail1.sourceforge.net/mailman/listinfo/unreal-notify" target="_blank">unreal-notify levelezõlistára</a> most rögtön,
|
||||
hogy megkaphasd a a kiadási közleményeket (az unreal-notify csak kiadási közleményekre
|
||||
Van egy dolog, amit határozottan érdemes megtenned, ez pedig, hogy MINDIG HASZNÁLD A LEGFRISSEBB VERZIÓT, és
|
||||
jelentkezz fel az <a href="http://lists.sourceforge.net/mailman/listinfo/unreal-notify" target="_blank">unreal-notify levelezõlistára</a> most rögtön,
|
||||
hogy megkaphasd a kiadási közleményeket (az unreal-notify csak kiadási közleményekre
|
||||
van, így csak 1 levelet jelent X havonta). A kiadási közleményben rendszerint világosan fel van tüntetve, ha
|
||||
a kiadás (nagyobb veszélyességû) biztonsági hibák javítását tartalmazza, de egyébként is jó, ha frissítesz.<br>
|
||||
</div></p>
|
||||
@@ -3497,11 +3739,27 @@ Minden, amit itt elmagyar
|
||||
Nagyon sokan nem is törõdnek a biztonsággal, egészen addíg, amíg bajba nem kerülnek. Próbáld ezt elkerülni. :)
|
||||
</div></p>
|
||||
|
||||
|
||||
<p><font size="+2"><b>9 – Gyakran Ismételt Kérdések (FAQ)<a name="faq"></a></b></font></p>
|
||||
<div class="desc"><p>A FAQ online elérhetõ <a href="http://www.vulnscan.org/UnrealIRCd/faq/" TARGET="_blank">innen</a>.</p></div>
|
||||
<p></p>
|
||||
|
||||
<p id="modules"><font size="+2"><b>10 – Modulok</b></font></p>
|
||||
<div class="desc">
|
||||
<p>Az alábbiakban bemutatunk néhány modult, melyeket egybecsomagoltunk az
|
||||
UnrealIRCd-vel. Jelen pillanatban sajnos csak egy ilyen modul van
|
||||
dokumentálva.</p>
|
||||
</div>
|
||||
<p id="modules_m_nopost"><font size="+2"><b>10.1 <a href="#modules_m_nopost">m_nopost</a></b></font><br />
|
||||
Ez a modul automatikusan bannol minden olyan felhasználót, aki HTTP-stílusú kéréseket próbál elküldeni.
|
||||
Ezt a modult Syzop írta válaszképpen azokra a Firefox XPS támadásokra, amelyeken keresztül
|
||||
az AJAX-képes böngészõk IRC spambotokként voltak képesek mûködni. Ahhoz, hogy kiválasszuk, mit tegyen az m_nopost,
|
||||
amikor egy ilyen kérést kap, állítsuk be a <a href="#set_nopost_ban_action">
|
||||
set::nopost::ban-action</a> és a <a href="#set_nopost_ban_time">set::nopost::ban-time</a>
|
||||
beállításokat (és barátaikat)!<br />
|
||||
Ez a modul az UnrealIRCd 3.2.9 óta új, és bele van fordítva a commands.so-ba. Ennélfogva
|
||||
a legtöbb esetben alapértelmezésben be van töltve.
|
||||
</p>
|
||||
|
||||
<p><font size="+2"><b>A Reguláris kifejezések<a name="regex"></a></b></font></p>
|
||||
<div class="desc"><p>Reguláris kifejezéseket sok helyen használunk az Unrealben, beleértve a csúnyaszavakat, spamszûrõket és álparancsokat. Ezek segítségével nagyon összetett mintaillesztést tudunk végezni. Néha "regexp"-ként vagy "regex"-ként hivatkozunk rájuk. Az Unreal a TRE reguláris kifejezés könyvtárat használja a regexeihez. Ez a rutinkönyvtár néhány nagyon összetett és haladó kifejezést is támogat, ami zavaró lehet. Az alábbi információk segítenek megérteni, hogyan mûködnek a regexek. Ha szakmaibb és részletesebb információk érdekelnek az Unreal által használt regexp szintaktikával kapcsolatban, látogassunk el a <a href="http://www.laurikari.net/tre/syntax.html" target="_new">TRE honlapjára</a>.</p></div>
|
||||
|
||||
@@ -3509,24 +3767,24 @@ Nagyon sokan nem is t
|
||||
<div class="desc"><p>A konstansok a regexp legegyszerûbb elemei. Alapvetõen ezek olyan karaktek, amelyeket egyszerû szövegként kezelünk. Például a "teszt" minta öt konstansból, a "t", "e", "s", "z" és "t" karakterekbõl áll. Az Unrealben a konstansok a kis- és nagybetûkre nem érzékenyek, ezért az elõzõ regex illeszkedik a "teszt"-re valamint a "TESZT"-re is. Minden karakter, ami nem "metakarakter" (avagy különleges jelentésû karakter; ezeket a következõ szekciókban tárgyaljuk), konstansként lesz kezelve. Egy karaktert határozottan konstanssá is tehetsz a visszaper (\) jellel. Például a pont (.) egy metakarakter. Ha szeretnénk a mintánkba belevenni egy konstans pontot, használjuk a \. jelölést, és az Unreal ezt pontként (írásjelként) fogja kezelni. Az is lehetséges, hogy egy olyan karaktert akarsz vizsgálni, ami nem írható be könnyen, mondjuk az ASCII kódú 3-as karakter (szín). Inkább, mint hogy egy IRC klienst kelljen használnunk ennek a karakternek az elkészítéséhez, használhatunk egy különleges karaktersorozatot, a "\x"-et. Ha beírjuk, hogy \x3, úgy lesz értelmezve, hogy õ 3-as ASCII karakter. A \x utáni szám hexadecimális ábrázolású, és "\x0"-tól "\xFF"-ig terjedhet.</p></div>
|
||||
|
||||
<p><font size="+2"><b>A.2 A pont operátor<a name="regexdot"></a></b></font></p>
|
||||
<div class="desc"><p>A pont (.) operátort "akármilyen karakter" egyeztetésére használjuk. Egyetlen karakterre illeszkedik, aminek bármilyen értéke van. Például az "a.c" regex illeszkedik a "abc"-re, "adc"-re stb. Viszont nem fog illeszkedni az "abd"-re, mert az "a" és "c" konstansok, amelyeknek pontosan kell illeszkedniük.</p></div>
|
||||
<div class="desc"><p>A pont (.) operátort "bármilyen karakter" egyeztetésére használjuk. Egyetlen karakterre illeszkedik, aminek bármilyen értéke van. Például az "a.c" regex illeszkedik a "abc"-re, "adc"-re stb. Viszont nem fog illeszkedni az "abd"-re, mert az "a" és "c" konstansok, amelyeknek pontosan kell illeszkedniük.</p></div>
|
||||
|
||||
<p><font size="+2"><b>A.3 Ismétlõ operátorok<a name="regexrep"></a></b></font></p>
|
||||
<div class="desc"><p>Az egyik gyakori hiba, amit az emberek elkövetnek a regexekkel, hogy feltételezik, úgy mûködnek, mint a joker karakterek, vagyis hogy a * és ? karakterek pontosan úgy illeszkednek, mint egy joker karakterben. Noha ezeknek a karaktereknek valóban hasonló a jelentésük egy regexben, mégsem pontosan ugyanazok. Továbbá a reguláris kifejezések támogatnak más, haladóbb ismétlési módszereket is.
|
||||
<div class="desc"><p>Az egyik gyakran elkövetett hiba a regexeknél az, hogy azt feltételezzük, hogy úgy mûködnek, mint a joker karakterek. Vagyis hogy a * és ? karakterek pontosan úgy illeszkednek, mint a joker karakterek. Noha ezeknek a karaktereknek valóban hasonló a jelentésük egy regexben, mégsem pontosan ugyanazok. Továbbá a reguláris kifejezések támogatnak más, fejlettebb ismétlési módszereket is.
|
||||
<p>
|
||||
A legegyszerûbb ismétlõ operátor a ? operátor. Ez az operátor az elõzõ karakternek 0 vagy 1 elõfordulására illeszkedik. Ez az "elõzõ karakternek" az, amiben a reguláris kifejezésbeli ? különbözik a joker karaktertõl. Egy joker karakterben az "a?c" kifejezés illeszkedik egy "a"-ra, amelyet bármilyen karakter követ (vagy semmilyen), és ezt egy "c" karakter követi. Egy reguláris kifejezésben más jelentése van. Ott illeszkedik 0 vagy 1 egy "a" betûre, amelyet a "c" követ. Alaptvetõen a ? módosítja az "a"-t úgy, hogy megadja, hány "a" fordulhat elõ. Ahhoz, hogy a ?-et joker karakterként emuláljuk, a . operátort használjuk. A "a.?c" regex egyenértékû az elõzõleg említett joker karakterrel. Olyan "a" betûre illeszkedik, amelyet 0 vagy 1 bármilyen karakter követ (a "?" módosítja a "."-ot), és azt követi egy "c".
|
||||
A legegyszerûbb ismétlõ operátor a ? operátor. Ez az operátor az elõzõ karakternek 0 vagy 1 elõfordulására illeszkedik. Ez az "elõzõ karakternek" az, amiben a reguláris kifejezésbeli ? különbözik a joker karaktertõl. Egy joker karakterben az "a?c" kifejezés illeszkedik egy olyan "a"-ra, amely után bármilyen karakter áll, és ezt egy "c" karakter követi. Egy reguláris kifejezésben más jelentése van. Ott illeszkedik 0 vagy 1 "a" betûre, amelyet a "c" követ. Alapvetõen a ? módosítja az "a"-t úgy, hogy megadja, hány "a" fordulhat elõ. Ahhoz, hogy emuláljuk a ?-et mint joker karaktert, a . operátort használjuk. A "a.c" regex egyenértékû az elõzõleg említett joker karakterrel. Olyan "a" betûre illeszkedik, amelyet egy tetszõleges karakter követ, és azt követi egy "c".
|
||||
<p>
|
||||
A következõ ismétlõ operátor a *. Ez az operátor szintén hasonlít egy joker karakterre. Az elõzõ karakternek 0 vagy több elõfordulására illeszkedik. Megjegyzendõ, hogy ez az "elõzõ karakternek" olyasvalami, ami minden ismétlõ operátor jellemzõje. Az "a*c" illeszkedik 0 vagy több "a"-ra, amelyet "c" követ. Például az "aaaaaac"-re illeszkedik. És mégegyszer, ahhoz, hogy ez az operátor joker karakterként mûködjön, használjuk az "a.*c" kifejezést, aminek hatására a "*" a "."-ot (bármilyen karakter) módosítja, inkább mint az "a"-t.
|
||||
A következõ ismétlõ operátor a *. Ez az operátor szintén hasonlít egy joker karakterre. Az elõzõ karakternek 0 vagy több elõfordulására illeszkedik. Megjegyzendõ, hogy ez az "elõzõ karakternek" olyasvalami, ami minden ismétlõ operátor jellemzõje. Az "a*c" illeszkedik 0 vagy több "a"-ra, amelyet "c" követ. Például az "aaaaaac"-re illeszkedik. És mégegyszer: ahhoz, hogy ez az operátor joker karakterként mûködjön, használjuk az "a.*c" kifejezést, aminek hatására a "*" a "."-ot (bármilyen karakter) módosítja, nem pedig az "a"-t.
|
||||
<p>
|
||||
A + operátor nagyon hasonló a *-hoz. Viszont ahelyett, hogy 0 vagy több karakterre illeszkedne, illeszkedik 1 vagy több karakterre. Alapvetõen az "a*c" illeszkedik a "c"-re (0 "a", amelyet c követ), ugyanakkor az "a+c" nem. Az "a+" azt fejezi ki, hogy kell lennie "legalább" 1 "a"-nak. Így a "c"-re nem illeszkedik, de az "ac"-re és "aaaaaaaaac"-re igen.
|
||||
A + operátor nagyon hasonló a *-hoz. Viszont ez 0 vagy több karakter helyett 1 vagy több karakterre illeszkedik. Alapvetõen tehát az "a*c" illeszkedik magára a "c"-re is (0 darab "a"-ra, amelyet egy "c" követ), ugyanakkor az "a+c" már nem. Az "a+" azt fejezi ki, hogy lennie kell "legalább" 1 "a"-nak. Így a "c"-re nem illeszkedik, de az "ac"-re és "aaaaaaaaac"-re igen.
|
||||
<p>
|
||||
A leghaladóbb ismétlõ operátor "intervallum" néven ismert. Egy intervallum operátorral pontos megszorítást tehetünk arra, hogy az elõzõ karakterbõl mennyinek kell lennie. Például lehet, hogy pontosan 8 "a" megkövetelésére van szükségünk, vagy legalább 8 "a"-ra vagy 3 és 5 közötti darabszámú "a"-ra. Egy intervallum operátorral ezek mindegyike megvalósítható. Az alapvetõ szintaktikája az "{M,N}", ahol M az alsó határ, és N a felsõ határ. Például 3 és 5 közötti darabszámú "a" egyeztetésére azt írjuk, hogy "a{3,5}". Mindamellett nem kötelezõ mindkét számot megadni. Ha "a{8}"-at írunk, az azt jelenti, hogy pontosan 8 darab "a"-nak kell lennie. Ezért az "a{8}" megegyezik az "aaaaaaaa"-val. Ahhoz, hogy a "legalább"-os példát valósítsuk meg, alapvetõen egy olyan intervallumot adunk meg, aminek csak alsó határa van. Eképpen a legalább 8 "a"-ra azt írjuk, hogy "a{8,}".
|
||||
A legfejlettebb ismétlõ operátor az "intervallum" néven ismert. Egy intervallum operátorral pontos megszorítást tehetünk arra, hogy az elõzõ karakterbõl mennyinek kell lennie. Például lehet, hogy pontosan 8 darab "a" megkövetelésére van szükségünk, vagy legalább 8 "a"-ra vagy 3 és 5 közötti darabszámú "a"-ra. Egy intervallum operátorral ezek mindegyike megvalósítható. Az alapvetõ szintaktikája az "{M,N}", ahol M az alsó határ, és N a felsõ határ. Például 3 és 5 közötti darabszámú "a" egyeztetésére azt írjuk, hogy "a{3,5}". Mindamellett nem kötelezõ mindkét számot megadni. Ha "a{8}"-at írunk, az azt jelenti, hogy pontosan 8 darab "a"-nak kell lennie. Ezért az "a{8}" megegyezik az "aaaaaaaa"-val. Ahhoz, hogy a "legalább"-os példát valósítsuk meg, alapvetõen egy olyan intervallumot adunk meg, aminek csak alsó határa van. Eképpen a legalább 8 "a"-ra azt írjuk, hogy "a{8,}".
|
||||
<p>
|
||||
Alapértelmezésben mindegyik ismétlõ operátor "mohó". A mohóság egy kissé összetett fogalom. Alapvetõen azt jelenti, hogy az operátor annyi karakterre illeszkedik, amennyire csak tud. Ezt a legkönnyebb elmagyarázni egy példával. <p>Mondjuk, van a következõ szövegünk:<br>
|
||||
HELLO<br>
|
||||
És a következõ regexünk:<br>
|
||||
.+L<p>
|
||||
Ebben a példában, lehet, hogy azt gondoljuk, hogy a .+ a "HE"-re illeszkedik. Azonban ez helytelen. Mivel a + mohó, a "HEL"-re illeszkedik. Az indok az, hogy a beviteli szöveg legnagyobb egyeztethetõ részét választja, miközben mégis megengedi a teljes regexnek, hogy illeszkedjen. Ebben a példában azért választotta a "HEL"-t, mert az egyetlen másik követelmény csak az, hogy a ".+"-ra illeszkedõ szöveg utáni karakternek "L"-nek kell lennie. Mivel a szöveg "HELLO", a "HEL"-t "L" követi, ezért illeszkedik. Néha viszont jól jön, ha egy operátort nem mohóvá tudunk tenni. Ezt úgy tehetjük meg, hogy "?"-et teszünk az ismétlõ operátor után. A fentit módosítva ".+?L"-re, a .+? most már a "HE"-re illeszkedik, mintsem a "HEL"-re, mert nem mohó állapotba helyeztük. A ? bármilyen ismétlõ karakter után helyezhetõ: ??, *?, +?, {M,N}?.</p></div>
|
||||
Ebben a példában, lehet, hogy azt gondoljuk, hogy a .+ a "HE"-re illeszkedik. Azonban ez helytelen. Mivel a + mohó, a "HEL"-re illeszkedik. Az oka az, hogy a beviteli szöveg legnagyobb egyeztethetõ részét választja, miközben továbbra is megengedi a teljes regexnek, hogy illeszkedjen. Ebben a példában azért választotta a "HEL"-t, mert az egyetlen másik követelmény csak az, hogy a ".+"-ra illeszkedõ karaktersorozat után lévõ karakternek "L"-nek kell lennie. Mivel a szöveg "HELLO", a "HEL"-t "L" követi, ezért illeszkedik. Néha viszont jól jön, ha egy operátort nem mohóvá tudunk tenni. Ezt úgy tehetjük meg, hogy egy "?"-et teszünk az ismétlõ operátor után. A fentit módosítva ".+?L"-re, a .+? most már a "HE"-re illeszkedik, mintsem a "HEL"-re, mert nem mohó állapotba helyeztük. A ? bármilyen ismétlõ karakter után helyezhetõ: ??, *?, +?, {M,N}?.</p></div>
|
||||
|
||||
<p><font size="+2"><b>A.4 Zárójeles kifejezések<a name="regexbracket"></a></b></font></p>
|
||||
<div class="desc">A zárójeles kifejezések kényelmes módot nyújtanak ahhoz, hogy "vagy" mûveletet végezzünk. Például ha azt szeretnénk mondani, hogy "illeszkedjen az a-ra vagy a b-re". A zárójeles kifejezés onnan kapja a nevét, hogy zárójelek ([]) közé tesszük. Az alapvetõ szintaktikája az, hogy ez a kifejezés magában foglal egy karaktersorozatot. Ezeket a karaktereket majd úgy kezeli, mintha "vagy" lenne közöttük. Például az "[abc]" kifejezés illeszkedik egy "a", egy "b" vagy egy "c" karakterre. Ezért az "a[bd]c" regex illeszkedik az "abc"-re és az "adc"-re, de az "acc"-re nem.
|
||||
|
||||
+68
-23
@@ -25,23 +25,24 @@
|
||||
<a href="unreal32docs.gr.html">Greek</a> |
|
||||
Dutch |
|
||||
<a href="unreal32docs.ru.html">Russian</a> |
|
||||
<a href="unreal32docs.tk.html">Turkish</a>
|
||||
<a href="unreal32docs.tr.html">Turkish</a>
|
||||
<br><br>
|
||||
<div align="center"><b><font size="7">UnrealIRCd</font></b><br>
|
||||
<font size="4"><a href="http://www.unrealircd.com">http://www.unrealircd.com</a></font><br>
|
||||
<font size="4">Version: 3.2.5</font><br>
|
||||
<b>Laatste documentatie wijziging:</b> 2006-06-15</div>
|
||||
<font size="4">Version: 3.2.9-RC2</font><br>
|
||||
<b>Laatste documentatie wijziging:</b> 2009-01-03</div>
|
||||
|
||||
<br>
|
||||
<b>Hoofd programmeurs:</b> Stskeeps / codemastr / Syzop / Luke<br>
|
||||
<b>Medewerkers:</b> McSkaf / Zogg / NiQuiL / assyrian / chasm / DrBin / llthangel / Griever / nighthawk<br>
|
||||
<b>Documentatie:</b> CKnight^ / Syzop<br>
|
||||
<b>Nederlandse vertaling:</b> Mark (<a href="irc://irc.unrealircd.com/unreal-dutch">#unreal-dutch op irc.unrealircd.com</a>)<br>
|
||||
<b>Nederlandse vertaling:</b> Mark<br>
|
||||
<p>Om dit document te bekijken heb je een geschikte browser nodig, welke hier beneden staan. De meest
|
||||
recente documentatie staat op <a href="http://www.vulnscan.org/UnrealIRCd/unreal32docs.html">
|
||||
http://www.vulnscan.org/UnrealIRCd/unreal32docs.html</a> en een FAQ staat op
|
||||
<a href="http://www.vulnscan.org/UnrealIRCd/faq/" TARGET="_blank">http://www.vulnscan.org/UnrealIRCd/faq/</a>.
|
||||
</p>
|
||||
<p><font color="red">WARNING: The translation of this document is not up to date, the English version is more recent.</font></p>
|
||||
|
||||
<p><b>Geschikte browsers: </b><br>
|
||||
<ul>
|
||||
@@ -151,7 +152,7 @@ Dutch |
|
||||
<p>Lees dit document voordat je om hulp vraagt. We raden je ook ten zeerste aan de
|
||||
<a href="http://www.vulnscan.org/UnrealIRCd/faq/" target="_blank">FAQ</a> te lezen, omdat
|
||||
meer dan 80% van je problemen/vragen hierin behandeld worden. Wanneer je nog steeds hulp
|
||||
nodig hebt, kun je hulp vragen op irc.ircsystems.net (poort 6667), kanaal #unreal-support
|
||||
nodig hebt, kun je hulp vragen op irc.unrealircd.org (poort 6667), kanaal #unreal-support
|
||||
(Opmerking: We achten het nodig dat je de documentatie en de FAQ leest en we helpen alleen
|
||||
met UnrealIRCd, niet met Services!).
|
||||
Wanneer je een echte bug (zoals een crash) hebt gevonden, meldt deze dan op
|
||||
@@ -194,7 +195,7 @@ Windows:<br>
|
||||
<li><b>*NIX versions:</b>
|
||||
<ul>
|
||||
<li>Linux (2.2.*, 2.4.*, 2.6.*)
|
||||
<li>FreeBSD (4.*, 5.*)
|
||||
<li>FreeBSD (4.*, 5.*, 6.*)
|
||||
<li>NetBSD (2.*)
|
||||
<li>OpenBSD (3.7, 3.8, 3.9)
|
||||
<li>Solaris (9, 10)
|
||||
@@ -261,9 +262,11 @@ Windows:<br>
|
||||
gebruikt md5 intern en het eist dat je 3 set::cloak-keys:: gebruikt, bestaande uit een mix van
|
||||
kleine letters (a-z), grote letters (A-Z) en getallen (0-9) [bv: "AopAS6WQH2Os6hfosh4SFJHs"]. Zie
|
||||
Voorbeeld.conf voor een voorbeeld.<br>
|
||||
<p>Cloak keys MOETEN hetzelfde zijn op ALLE servers in een network. Ook moeten cloak keys geheim blijven,
|
||||
<p>Cloak keys MOETEN hetzelfde zijn op ALLE servers in een netwerk. Ook moeten cloak keys geheim blijven,
|
||||
omdat het mogelijk is om de echte hostname te achterhalen wanneer je de keys weet (wat gebruikersmode +x
|
||||
onbruikabar maakt).</p>
|
||||
<p>Tip: Wanneer je met een *NIX systeem werkt, kun je './unreal gencloak' gebruiken in
|
||||
je shell. Dit genereert 3 willekeurige strings die je kunt gebruiken.</p>
|
||||
</div>
|
||||
|
||||
<p><font size="+2"><b>3.2 - Modules</b></font><a name="feature_modules"></a></p><div class="desc">
|
||||
@@ -602,17 +605,34 @@ Modules kunnen ook andere uitgebreide ban types toevoegen.<br>
|
||||
<b>set::spamfilter::ban-reason</b> geeft je de mogelijkheid een standaardreden op te geven (standaard: 'Spam/advertising')<br>
|
||||
<b>set::spamfilter::virus-help-channel</b> geeft je de mogelijkheid een kanaal te specificeren dat gejoined wordt door 'viruschan' (standaard: #help)<br>
|
||||
<b>set::spamfilter::virus-help-channel-deny</b> geeft je de mogelijkheid om normale joins in virus-help-channel te blokkeren (standaard: no)<br>
|
||||
</p></div>
|
||||
</p>
|
||||
<p>
|
||||
<font size="+1"><b>Slow Spamfilter Detection</b><a name="feature_spamfilter_slow"></a><br>
|
||||
Een spamfilter regex kan de IRCd aanzienlijk trager maken. Dit hangt
|
||||
sterk af van de regex die je gebruikt (en hoe de regex engine deze
|
||||
gebruikt). Sommige zijn erg snel en UnrealIRCd kan er duizenden
|
||||
uitvoeren per seconde. Anderen kunnen enorm traag zijn en de IRCd
|
||||
bevriezen.<br>
|
||||
Om dit tegen te gaan, heeft Unreal Slow Spamfilter Detection:
|
||||
voor elke spamfilter checkt Unreal, elke keer wanneer het uitgevoerd
|
||||
wordt, hoelang het uitvoeren duurt. Wanneer een bepaalde grens bereikt
|
||||
wordt, waarschuwt de IRCd of verwijdert de IRCd de complete spamfilter.<br>
|
||||
De waarschuwing wordt ingesteld door <b>set::spamfilter::slowdetect-warn</b>
|
||||
(standaard: 250ms) en het automatisch verwijderen wordt ingesteld door <b>set::spamfilter::slowdetect-fatal</b> (standaard: 500ms).
|
||||
Je kunt ze beiden op 0 (nul) zetten om de functies uit te schakelen.<br>
|
||||
Deze feature is momenteel niet beschikbaar voor Windows.<br>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<p><font size="+2"><b>3.15 - CIDR</b></font><a name="feature_cidr"></a></p><div class="desc">
|
||||
<p>UnrealIRCD geeft je nu ook de mogelijkheid om IP reeksen te bannen, door middel van CIDR
|
||||
(Classess Interdomain Routing). IPs worden door ISPs uitgedeeld door middel van CIRD. Dit geeft
|
||||
je de mogelijkheid om heel makkelijk een ISP te bannen. CIDR wordt ondersteund voor zowel IPv4
|
||||
als IPv6. CIDR masks zijn toegestaan in allow::ip, ban user::mask, ban ip::mask, except ban::mask
|
||||
except throttle::mask, en except tkl::mask (for gzline, gline en shun). Tevens kan CIDR gebruikt
|
||||
worden met /kline, /gline, /zline, /gzline en shun. UnrealIRCd gebruikt de standaard syntax van
|
||||
IP/bits, zoals 127.0.0.0/8 (komt overeen met 127.0.0.0 - 127.255.255.255), en fe80:0:0:123::/64
|
||||
(komt overeen met fe80:0:0:123:0:0:0:0 - fe80:0:0:123:ffff:ffff:ffff:ffff).</p></div>
|
||||
als IPv6. CIDR masks zijn toegestaan in allow::ip, oper::from::userhost, ban user::mask, ban ip::mask,
|
||||
except ban::mask, except throttle::mask, en except tkl::mask (for gzline, gline en shun).
|
||||
Tevens kan CIDR gebruikt worden met /kline, /gline, /zline, /gzline en shun.
|
||||
UnrealIRCd gebruikt de standaard syntax van IP/bits, zoals 127.0.0.0/8 (komt overeen met 127.0.0.0 - 127.255.255.255),
|
||||
en fe80:0:0:123::/64 (komt overeen met fe80:0:0:123:0:0:0:0 - fe80:0:0:123:ffff:ffff:ffff:ffff).</p></div>
|
||||
|
||||
<p><font size="+2"><b>3.16 - Nick Character Sets</b></font><a name="feature_nickchars"></a></p><div class="desc">
|
||||
<p>UnrealIRCd geeft je nu ook de mogelijkheid om te specificeren welke charsets/talen gebruikt morgen
|
||||
@@ -1470,7 +1490,7 @@ tld {
|
||||
channel <channel-name>;
|
||||
options {
|
||||
ssl;
|
||||
}
|
||||
};
|
||||
};</pre></p>
|
||||
<p>Het TLD blok geeft je de mogelijkheid om een MOTD, rules en kanaal op te geven
|
||||
voor een gebruiker op basis van zijn/haar host. Dit is handig wanneer je MOTDs
|
||||
@@ -2014,17 +2034,20 @@ link <server-name> {
|
||||
</p>
|
||||
<p><b>hub vs leaf</b><br>
|
||||
Een hub heeft meerdere servers aan zich gelinkt, een leaf heeft maar 1 server.. naar jou.
|
||||
Een server is of een hub, of een leaf, je kan ze niet mengen.
|
||||
Een server is altijd een leaf, tenzij je hub instelt. Ze is ook een leaf als je leaf * hebt, of leafdepth 1 is.
|
||||
</p>
|
||||
<p><b>hub</b> (optioneel)<br>
|
||||
De waarde is de mask van de servers waarmee deze hub mag verbinden (bijv. *.my.net)
|
||||
</p>
|
||||
<p><b>leaf</b> (optioneel)<br>
|
||||
De waarde is de mask van waartegen deze server zich als een leaf zal gedragen.
|
||||
De waarde is de mask waartegen deze hub <b>niet</b> mag verbinden. Als je * instelt krijg je hetzelfde
|
||||
effect als geen hub directive instellen.
|
||||
</p>
|
||||
<p><b>leaf-depth</b> (optioneel)<br>
|
||||
Wanneer leaf ingesteld is, moet dit ook worden ingesteld. De waarde is het aantal
|
||||
hops (aantal servers) welke deze server onder zich mag hebben.
|
||||
Deze waarde geeft aan hoeveel hops (aantal servers) deze server onder zich mag hebben. Bijvoorbeeld,
|
||||
1 betekent dat deze server geen enkele andere server onder zich mag hebben (een leaf). 2 betekent dat
|
||||
er gelinkt mag worden naar servers die geen servers onder zich hebben (een hub die alleen leafs linkt).
|
||||
De waarde 0 betekent geen limiet en is de standaard waarde.
|
||||
</p>
|
||||
<p><b>class</b><br>
|
||||
De class waarin de server geplaatst wordt. Meestal is er een aparte server-class.
|
||||
@@ -2439,12 +2462,12 @@ gemiddeld 2048:60=34 tekens per ban toe.</p>
|
||||
Een tijdsduur die specificeert hoelang een DNS server erover mag doen voordat
|
||||
er een timeout volgt. De tijd is een numerieke waarde, waarin de d voor dag staat,
|
||||
de h voor uur, m voor minute en s voor seconde. Voorbeeld: 1d2h3m betekent
|
||||
1 dag, 2 uur en 3 minuten.</p>
|
||||
1 dag, 2 uur en 3 minuten (NOG NIET INGEVOERD).</p>
|
||||
<p><font class="set">set::dns::retries <number-of-retries>;</font><br>
|
||||
Een numerieke waarde die instelt hoeveel keer er opnieuw geprobeerd moet worden
|
||||
een DNS lookup te voltooien.</p>
|
||||
een DNS lookup te voltooien (NOG NIET INGEVOERD).</p>
|
||||
<p><font class="set">set::dns::nameserver <name-of-dns-server>;</font><br>
|
||||
De hostnaam die gebruikt moet worden voor een DNS lookup.</p>
|
||||
De hostnaam die gebruikt moet worden voor een DNS lookup (NOG NIET INGEVOERD).</p>
|
||||
<p><font class="set">set::dns::bind-ip <ip>;</font><br>
|
||||
Het IP waaraan gebonden moet worden voor het resolven. Bijna nooit nodig.</p>
|
||||
<p><font class="set">set::network-name <name-of-network>;</font><br>
|
||||
@@ -2504,6 +2527,14 @@ gemiddeld 2048:60=34 tekens per ban toe.</p>
|
||||
Stelt in waar de SSL sleutel van de server staat.</p>
|
||||
<p><font class="set">set::ssl::trusted-ca-file <filename>;</font><br>
|
||||
Stelt in waar de certificaten van de vertrouwde CAs staan.</p>
|
||||
<p><font class="set">set::ssl::server-cipher-list <cipherlist>;</font><br>
|
||||
Stelt in welke ciphers toegestaan worden, standaard laten we dit over aan OpenSSL.
|
||||
Zie <a href="http://www.openssl.org/docs/apps/ciphers.html#CIPHER_LIST_FORMAT">http://www.openssl.org/docs/apps/ciphers.html</a>
|
||||
hoe je een lijst van ciphers instelt.</p>
|
||||
<p><font class="set">set::ssl::renegotiate-bytes <value>;</font><br>
|
||||
Stelt in na hoeveel bytes een SSL sessie opnieuw moet worden ingesteld (bijv: 20m voor 20 megabytes).</p>
|
||||
<p><font class="set">set::ssl::renegotiate-timeout <timevalue>;</font><br>
|
||||
Stelt in na welke periode een SSL sessie opnieuw moet worden ingesteld (bijv: 1h voor 1 uur).</p>
|
||||
<p><font class="set">set::ssl::options::fail-if-no-clientcert;</font><br>
|
||||
Gebruikers zonder certificaat worden geweigerd.</p>
|
||||
<p><font class="set">set::ssl::options::no-self-signed;</font><br>
|
||||
@@ -2560,7 +2591,16 @@ gemiddeld 2048:60=34 tekens per ban toe.</p>
|
||||
<p><font class="set">set::spamfilter::except <target(s)></font><br>
|
||||
Deze kanalen worden niet gecontroleerd door spamfilters. Dit kan 1 kanaal zijn, of
|
||||
een reeks kanalen gescheiden door een komma (bijv: except "#help,#spamreport";).</p>
|
||||
<p><font class="set">set::check-target-nick-bans <yes|no></font><br>
|
||||
<p><font class="set">set::spamfilter::slowdetect-warn <value></font><br>
|
||||
Wanneer het uitvoeren van een spamfilter langer duurt dan de hier opgegeven tijd
|
||||
in milliseconden (1000ms = 1 seconde), wordt er een waarschuwing gestuurd naar alle
|
||||
opers (standaard: 250).
|
||||
Zie ook <a href="#feature_spamfilter_slow">Slow Spamfilter Detection</a>.</p>
|
||||
<p><font class="set">set::spamfilter::slowdetect-fatal <value></font><br>
|
||||
Wanneer het uitvoeren van een spamfilter langer duurt dan de hier opgegeven tijd
|
||||
in milliseconden (1000ms = 1 seconde), wordt de spamfilter verwijderd (standaard: 500).
|
||||
Zie ook <a href="#feature_spamfilter_slow">Slow Spamfilter Detection</a>.</p>
|
||||
<p><font class="set">set::check-target-nick-bans <yes|no></font><br>
|
||||
Wanneer de gebruiker zijn naam verandert, controleer of de NIEUWE nick gebanned zou
|
||||
worden. Zo ja, sta de naamsverandering niet toe. Standaard is dit 'yes'.</p>
|
||||
<p><font class="set">set::timesynch::enabled <yes|no></font><br>
|
||||
@@ -2573,8 +2613,13 @@ gemiddeld 2048:60=34 tekens per ban toe.</p>
|
||||
Maximale wachttijd voor een antwoord. Dit is een waarde tussen 1 en 5, hoger kan niet vanwege
|
||||
een te hoge incorrectheid. Standaard is dit 3, en er is waarschijnlijk geen goede reden
|
||||
om dit aan te passen.</p>
|
||||
<p><font class="set">set::pingpong-warning <yes|no></font><br>
|
||||
Wanneer NOSPOOF aan staat (meestal op Windows), stuur dan een bericht naar de gebruiker
|
||||
om '/quote pong ..' te typen als ze problemen hebben met verbinden? Standaard is no</p>
|
||||
<p><font class="set">set::watch-away-notification <yes|no></font><br>
|
||||
Geeft je de mogelijkheid AWAY notificaties in WATCH aan/uit te zetten. Standaard is yes (ja).</p>
|
||||
|
||||
<p></p> </div>
|
||||
|
||||
<p><b><font size="+2">5 – Aanvullende bestanden<a name="addtlfiles"></a>
|
||||
</font></b></p><div class="desc">
|
||||
Als aanvulling op het configuariebestand heeft Unreal nog een aantal andere bestanden, zoals
|
||||
|
||||
+455
-196
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -56,7 +56,9 @@ help Opercmds {
|
||||
" a specific command.";
|
||||
" -";
|
||||
" ==-------------------------oOo-------------------------==";
|
||||
" ADCHAT GLOBOPS OPERMOTD SPAMFILTER";
|
||||
" ADCHAT DNS NACHAT SETIDENT";
|
||||
" ADDMOTD GLINE OPER SHUN";
|
||||
" ADDOMOTD GLOBOPS OPERMOTD SPAMFILTER";
|
||||
" CHATOPS GZLINE REHASH SQUIT";
|
||||
" CHGHOST HTM RESTART TEMPSHUN";
|
||||
" CHGIDENT KILL RPING TRACE";
|
||||
@@ -65,8 +67,6 @@ help Opercmds {
|
||||
" CONNECT LOCOPS SAPART WALLOPS";
|
||||
" DCCDENY MKPASSWD SDESC ZLINE";
|
||||
" DIE MODULE SETHOST";
|
||||
" DNS NACHAT SETIDENT";
|
||||
" GLINE OPER SHUN";
|
||||
" ==-------------------------oOo-------------------------==";
|
||||
};
|
||||
|
||||
@@ -79,11 +79,11 @@ help Svscmds {
|
||||
" a specific command.";
|
||||
" -";
|
||||
" ==-------------------------oOo-------------------------==";
|
||||
" SQLINE SVSKILL SVSNLINE SVSSNO";
|
||||
" SVS2MODE SVSLUSERS SVSNOOP SVSWATCH";
|
||||
" SVS2SNO SVSMODE SVSO SWHOIS";
|
||||
" SVSFLINE SVSMOTD SVSPART UNSQLINE";
|
||||
" SVSJOIN SVSNICK SVSSILENCE";
|
||||
" SQLINE SVSKILL SVSNLINE SVSSILENCE";
|
||||
" SVS2MODE SVSLUSERS SVSNOLAG SVSSNO";
|
||||
" SVS2SNO SVSMODE SVSNOOP SVSWATCH";
|
||||
" SVSFLINE SVSMOTD SVSO SWHOIS";
|
||||
" SVSJOIN SVSNICK SVSPART UNSQLINE";
|
||||
" ==-------------------------oOo-------------------------==";
|
||||
};
|
||||
|
||||
@@ -159,48 +159,53 @@ help Chmodes {
|
||||
" a <nickname> = Gives Channel Admin to the user";
|
||||
" q <nickname> = Gives Owner status to the user";
|
||||
" -";
|
||||
" b <nick!ident@host> = Bans the nick!ident@host from the channel";
|
||||
" Extended bantypes (for more info see /HELPOP EXTBANS) [h]";
|
||||
" A = Server/Net Admin only channel (settable by Admins)";
|
||||
" b <nick!ident@host> = Bans the nick!ident@host from the channel [h]";
|
||||
" c = Block messages containing mIRC color codes [o]";
|
||||
" C = No CTCPs allowed in the channel [o]";
|
||||
" e <nick!ident@host> = Overrides a ban for matching users [h]";
|
||||
" I <nick!ident@host> = Overrides +i for matching users [h]";
|
||||
" f <floodparams> = Flood protection (for more info see /HELPOP CHMODEF) [o]";
|
||||
" (For more info on extended bantypes, see /HELPOP EXTBANS)";
|
||||
" G = Filters out all Bad words in messages with <censored> [o]";
|
||||
" i = A user must be invited to join the channel [h]";
|
||||
" I <nick!ident@host> = Overrides +i for matching users [h]";
|
||||
" j <joins:sec> = Throttle joins per-user to 'joins' per 'sec' seconds [o]";
|
||||
" k <key> = Users must specify <key> to join [h]";
|
||||
" l <number of max users> = Channel may hold at most <number> of users [o]";
|
||||
" m = Moderated channel (only +vhoaq users may speak) [h]";
|
||||
" n = Users outside the channel can not send PRIVMSGs to the channel [h]";
|
||||
" p = Private channel [o]";
|
||||
" r = The channel is registered (settable by services only)";
|
||||
" s = Secret channel [o]";
|
||||
" t = Only +hoaq may change the topic [h]";
|
||||
" z = Only Clients on a Secure Connection (SSL) can join [o]";
|
||||
" A = Server/Net Admin only channel (settable by Admins)";
|
||||
" C = No CTCPs allowed in the channel [o]";
|
||||
" G = Filters out all Bad words in messages with <censored> [o]";
|
||||
" M = Must be using a registered nick (+r), or have voice access to talk [o]";
|
||||
" K = /KNOCK is not allowed [o]";
|
||||
" L <chan2> = Channel link (If +l is full, the next user will auto-join <chan2>) [q]";
|
||||
" l <number of max users> = Channel may hold at most <number> of users [o]";
|
||||
" m = Moderated channel (only +vhoaq users may speak) [h]";
|
||||
" M = Must be using a registered nick (+r), or have voice access to talk [o]";
|
||||
" N = No Nickname changes are permitted in the channel [o]";
|
||||
" n = Users outside the channel can not send PRIVMSGs to the channel [h]";
|
||||
" O = IRC Operator only channel (settable by IRCops)";
|
||||
" p = Private channel [o]";
|
||||
" Q = No kicks allowed [o]";
|
||||
" R = Only registered (+r) users may join the channel [o]";
|
||||
" r = The channel is registered (settable by services only)";
|
||||
" s = Secret channel [o]";
|
||||
" S = Strips mIRC color codes [o]";
|
||||
" T = No NOTICEs allowed in the channel [o]";
|
||||
" V = /INVITE is not allowed [o]";
|
||||
" t = Only +hoaq may change the topic [h]";
|
||||
" u = Auditorium mode (/names and /who #channel only show channel ops) [q]";
|
||||
" V = /INVITE is not allowed [o]";
|
||||
" z = Only Clients on a Secure Connection (SSL) can join [o]";
|
||||
" Z = All users on the channel are on a Secure connection (SSL) [server]";
|
||||
" (This mode is set/unset by the server. Only if the channel is also +z)";
|
||||
" -";
|
||||
" [h] requires at least halfop, [o] requires at least chanop, [q] requires owner";
|
||||
" ==------------------------------oOo----------------------------==";
|
||||
};
|
||||
|
||||
help ExtBans {
|
||||
" Extended bantypes: ";
|
||||
" These bans let you ban based on things other than the traditional nick!user@host";
|
||||
" mask. They also provide support for things like ``quieting'' users (on other IRCds";
|
||||
" you might do +q <hostmask>, on UnrealIRCd use +b ~q:<hostmask>).";
|
||||
" -";
|
||||
" These bantypes specify which actions are affected by a ban:";
|
||||
" ==-Type--------Name---------------------------Explanation-----------------------==";
|
||||
" | | People matching these bans can join but are unable to ";
|
||||
" ~q | Quiet | speak, unless they have +v or higher. ";
|
||||
" ~q | quiet | speak, unless they have +v or higher. ";
|
||||
" | | Example: ";
|
||||
" | | +bb ~q:*!*@blah.blah.com ~q:nick*!*@* ";
|
||||
"-----------------------------------------------------------------------------------";
|
||||
@@ -209,8 +214,15 @@ help ExtBans {
|
||||
" | | Example: ";
|
||||
" | | +bb ~n:*!*@*.aol.com ~n:nick*!*@* ";
|
||||
"-----------------------------------------------------------------------------------";
|
||||
" | | If a user matches this, he may not join the channel. ";
|
||||
" ~j | join | He may perform all other activities if he is already on ";
|
||||
" | | the channel, such as speaking and changing his nick. ";
|
||||
"-----------------------------------------------------------------------------------";
|
||||
" -";
|
||||
" These bantypes introduce new criteria which can be used:";
|
||||
" ==-Type--------Name---------------------------Explanation-----------------------==";
|
||||
" | | If the user is in this channel then (s)he is unable to ";
|
||||
" | [prefix] | join. A prefix can also be specified (+/%/@/&/~) which ";
|
||||
" | | join. A prefix can also be specified (+/%/@/&/~) which ";
|
||||
" ~c | channel | means that it will only match if the user has that ";
|
||||
" | | rights or higher on the specified channel. ";
|
||||
" | | Example: +b ~c:#lamers, +e ~c:@#trusted ";
|
||||
@@ -221,7 +233,19 @@ help ExtBans {
|
||||
" | | NOTE: an underscore ('_') matches both a space (' ') and";
|
||||
" | | an underscore ('_'), so this ban would ";
|
||||
" | | match 'Stupid bot script v1.4'. ";
|
||||
"-----------------------------------------------------------------------------------";
|
||||
" | | If a user has identified to services (usually NickServ) ";
|
||||
" | | and matches this nickname, then this ban will match. ";
|
||||
" | | This means this ban is really only useful for ban ";
|
||||
" ~R | registered | exemptions (+e). Example: +e ~R:Nick ";
|
||||
" | | Will allow Nick in the channel, regardless of other ";
|
||||
" | | bans, if he identified to NickServ and is using the ";
|
||||
" | | nickname Nick. ";
|
||||
" ==------------------------------------------------------------------------------==";
|
||||
" -";
|
||||
"You may stack extended bans from the 1st group with the 2nd.";
|
||||
"Example: +b ~q:~c:#lamers";
|
||||
"The above would quiet all users who have joined #lamers.";
|
||||
};
|
||||
|
||||
help Chmodef {
|
||||
@@ -264,7 +288,7 @@ help Oflags {
|
||||
" r (can_rehash) Access to /REHASH server";
|
||||
" R (can_restart) Access to /RESTART server";
|
||||
" D (can_die) Access to /DIE server";
|
||||
" h (helpop) Oper is marked as availiable for help is not away";
|
||||
" h (helpop) Oper receives umode +h (helpop)";
|
||||
" g (can_globops) Oper can send /GLOBOPS";
|
||||
" w (can_wallops) Oper can send /WALLOPS";
|
||||
" n (can_localnotice) Oper can send Local Server Notices";
|
||||
@@ -282,6 +306,7 @@ help Oflags {
|
||||
" q (can_setq) Can use +q";
|
||||
" H (get_host) Gets +x on oper up";
|
||||
" W (get_umodew) Gets +W on oper up";
|
||||
" X (can_addline) Can use /ADDLINE";
|
||||
" d (can_dccdeny) Can use /DCCDENY";
|
||||
" ==-------------------------------oOo-----------------------------==";
|
||||
};
|
||||
@@ -888,21 +913,22 @@ help Rehash {
|
||||
" Prompts the server to reread the configuration files.";
|
||||
" IRC Operator only command.";
|
||||
" -";
|
||||
" Syntax: REHASH <servername> -<flags>";
|
||||
" REHASH -<flags>";
|
||||
" Syntax: REHASH <servername> [flag]";
|
||||
" REHASH -global [flag]";
|
||||
" REHASH [flag]";
|
||||
" -";
|
||||
" If servername and flags are not specified this rehashes the";
|
||||
" unrealircd.conf , removing any temporary k:lines.";
|
||||
" If servername is specified, this is used to rehash config files on servername.";
|
||||
" Only NetAdmins may specify a server name.";
|
||||
" If servername and flag are not specified this rehashes the";
|
||||
" unrealircd.conf, and re-reads all MOTD, BOTMOTD, OPERMOTD and RULES files.";
|
||||
" If servername is specified, this is used to rehash the remote server.";
|
||||
" If -global is specified, then all servers on the network are rehashed.";
|
||||
" Only NetAdmins may specify a server name and use -global.";
|
||||
" -";
|
||||
" The flags are used to rehash other config files, valid flags are:";
|
||||
" -motd - Rehashes all MOTD files and RULES files (including tld{})";
|
||||
" -opermotd - Rehashes the OPERMOTD";
|
||||
" -botmotd - Rehashes the BOTMOTD";
|
||||
" -dns - Reinitializes and reloads the resolver";
|
||||
" -garbage - Force garbage collection";
|
||||
" -ssl - Reload SSL certificate and primary key (if SSL enabled)";
|
||||
" -dns - Reload DNS information (from resolv.conf/registry)";
|
||||
" -motd - Only re-read all MOTD, BOTMOTD, OPERMOTD and RULES files";
|
||||
" (including those in tld{} blocks)";
|
||||
" -ssl - Reloads SSL certificates";
|
||||
};
|
||||
|
||||
help Restart {
|
||||
@@ -978,8 +1004,8 @@ help Squit {
|
||||
" Usually used in routing of servers.";
|
||||
" IRC Operator only command.";
|
||||
" -";
|
||||
" Syntax: SQUIT <server> [reason]";
|
||||
" Example: SQUIT leaf.* Goodbye";
|
||||
" Syntax: SQUIT <server>";
|
||||
" Example: SQUIT leaf.*";
|
||||
};
|
||||
|
||||
help Connect {
|
||||
@@ -1257,11 +1283,11 @@ help Svsnline {
|
||||
" Must be sent through an U:Lined server.";
|
||||
" The reason must be a single parameter therefore";
|
||||
" spaces are indicated by _, Unreal will internally";
|
||||
" translate these to spaces";
|
||||
" translate these to spaces.";
|
||||
" -";
|
||||
" Syntax: SVSNLINE + <reason_for_ban> :<realname>";
|
||||
" (adds realname ban for <realname>)";
|
||||
" SVSNLINE - :<realname> (removes ban for <realname>)";
|
||||
" Syntax: SVSNLINE + <reason_for_ban> :<realname> (To add a ban)";
|
||||
" SVSNLINE - :<realname> (To remove a ban)";
|
||||
" SVSNLINE * (To clear all bans)";
|
||||
" Example: SVSNLINE + sub7_drone :*sub7*";
|
||||
};
|
||||
|
||||
@@ -1305,9 +1331,24 @@ help Svs2sno {
|
||||
" Must be sent through an U:Lined server.";
|
||||
" -";
|
||||
" Syntax: SVS2SNO <nickname> <snomasks>";
|
||||
" Example: SVSSNO joe +Gc";
|
||||
" Example: SVS2SNO joe +Gc";
|
||||
};
|
||||
|
||||
help Svsnolag {
|
||||
" Enable 'no fake lag' for a user.";
|
||||
" Must be sent through an U:Lined server.";
|
||||
" -";
|
||||
" Syntax: SVSNOLAG [+|-] <nickname>";
|
||||
" Example: SVSNOLAG + joe";
|
||||
};
|
||||
|
||||
help Svs2nolag {
|
||||
" Enable 'no fake lag' for a user.";
|
||||
" Must be sent through an U:Lined server.";
|
||||
" -";
|
||||
" Syntax: SVS2NOLAG [+|-] <nickname>";
|
||||
" Example: SVS2NOLAG + joe";
|
||||
};
|
||||
|
||||
help Spamfilter {
|
||||
" This command adds/removes global spam filters.";
|
||||
@@ -1322,7 +1363,7 @@ help Spamfilter {
|
||||
" 'kill', 'tempshun' (only shun current session), 'shun',";
|
||||
" 'kline', 'gline', 'zline', 'gzline', 'block' (blocks the msg),";
|
||||
" 'dccblock' (unable to send any dccs), 'viruschan' (part all channels";
|
||||
" and join the virus help chan).";
|
||||
" and join the virus help chan), 'warn' (warn for IRC Operators).";
|
||||
" [regex] this is the actual regex where we should block on";
|
||||
" [tkltime] the duration of the *LINEs placed by action (use '-' to use the default";
|
||||
" set::spamfilter::ban-time, this value is ignored for block/tempshun');";
|
||||
|
||||
@@ -30,14 +30,12 @@ typedef struct {
|
||||
#define AUTHTYPE_SHA1 3
|
||||
#define AUTHTYPE_SSL_CLIENTCERT 4
|
||||
#define AUTHTYPE_RIPEMD160 5
|
||||
#define AUTHTYPE_SSL_CERTFINGERPRINT_SHA1 6
|
||||
|
||||
/* md5 is always available and enabled as of Unreal3.2.1 */
|
||||
#define AUTHENABLE_MD5
|
||||
#ifdef USE_SSL
|
||||
#define AUTHENABLE_SHA1
|
||||
#define AUTHENABLE_SSL_CLIENTCERT
|
||||
#define AUTHENABLE_SSL_CERTFINGERPRINT
|
||||
#define AUTHENABLE_RIPEMD160
|
||||
/* OpenSSL provides a crypt() */
|
||||
#ifndef AUTHENABLE_UNIXCRYPT
|
||||
|
||||
+1
-5
@@ -5,11 +5,7 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#ifndef _WIN32
|
||||
#include "pcreposix.h"
|
||||
#else
|
||||
#include "win32/regex.h"
|
||||
#endif
|
||||
#include "tre/regex.h"
|
||||
|
||||
#define MAX_MATCH 1
|
||||
#define MAX_WORDLEN 64
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
/************************************************************************
|
||||
* Unreal Internet Relay Chat Daemon, include/class.h
|
||||
* Copyright (C) 1990 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$
|
||||
*/
|
||||
|
||||
#ifndef __class_include__
|
||||
#define __class_include__
|
||||
|
||||
typedef struct Class {
|
||||
int class;
|
||||
int conFreq;
|
||||
int pingFreq;
|
||||
int maxLinks;
|
||||
long maxSendq;
|
||||
int links;
|
||||
struct Class *next;
|
||||
} aClass;
|
||||
|
||||
#define Class(x) ((x)->class)
|
||||
#define ConFreq(x) ((x)->conFreq)
|
||||
#define PingFreq(x) ((x)->pingFreq)
|
||||
#define MaxLinks(x) ((x)->maxLinks)
|
||||
#define MaxSendq(x) ((x)->maxSendq)
|
||||
#define Links(x) ((x)->links)
|
||||
|
||||
#define ConfLinks(x) (Class(x)->links)
|
||||
#define ConfMaxLinks(x) (Class(x)->maxLinks)
|
||||
#define ConfClass(x) (Class(x)->class)
|
||||
#define ConfConFreq(x) (Class(x)->conFreq)
|
||||
#define ConfPingFreq(x) (Class(x)->pingFreq)
|
||||
#define ConfSendq(x) (Class(x)->maxSendq)
|
||||
|
||||
#define FirstClass() classes
|
||||
#define NextClass(x) ((x)->next)
|
||||
|
||||
extern aClass *classes;
|
||||
|
||||
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__ */
|
||||
@@ -230,6 +230,8 @@ static char *StsMalloc(size_t size, char *file, long line)
|
||||
|
||||
#endif
|
||||
|
||||
extern struct SLink *find_user_link( /* struct SLink *, struct Client * */ );
|
||||
|
||||
/*
|
||||
* Protocol support text. DO NO CHANGE THIS unless you know what
|
||||
* you are doing.
|
||||
|
||||
+66
-11
@@ -70,11 +70,6 @@
|
||||
|
||||
#undef NO_FDLIST
|
||||
|
||||
/*
|
||||
* system have sockaddr_storage struct.
|
||||
*/
|
||||
#define HAVE_STRUCT_SOCKADDR_STORAGE 1
|
||||
|
||||
/*
|
||||
* Defining this will allow all ircops to see people in +s channels
|
||||
* By default, only net/tech admins can see this
|
||||
@@ -104,6 +99,24 @@
|
||||
*/
|
||||
#define REMOTE_REHASH
|
||||
|
||||
/*
|
||||
* Special remote include caching, see this Changelog item:
|
||||
* - Added special caching of remote includes. When a remote include fails to
|
||||
* load (for example when the webserver is down), then the most recent
|
||||
* version of that remote include will be used, and the ircd will still boot
|
||||
* and be able to rehash. Even though this is quite a simple feature, it
|
||||
* can make a key difference when deciding to roll out remote includes on
|
||||
* your network. Previously, servers would be unable to boot or rehash when
|
||||
* the webserver was down, which would be a big problem (often unacceptable).
|
||||
* The latest version of fetched urls are cached in the cache/ directory as
|
||||
* cache/<md5 hash of url>.
|
||||
* Obviously, if there's no 'latest version' and an url fails, the ircd will
|
||||
* still not be able to boot. This would be the case if you added or changed
|
||||
* the path of a remote include and it's trying to fetch it for the first time.
|
||||
* There usually is no reason to disable this.
|
||||
*/
|
||||
#define REMOTEINC_SPECIALCACHE
|
||||
|
||||
/*
|
||||
Stripbadwords patch
|
||||
*/
|
||||
@@ -114,6 +127,14 @@
|
||||
*/
|
||||
#undef STRIPBADWORDS_CHAN_ALWAYS
|
||||
|
||||
/*
|
||||
* THROTTLING
|
||||
* This will only allow 1 connection per ip in set::throttle::period time
|
||||
* NOTE: There's no reason to disable this (anymore) since it can be fully
|
||||
* configured in the unrealircd.conf. Keep the define...
|
||||
*/
|
||||
#define THROTTLING
|
||||
|
||||
/*
|
||||
* No spoof code
|
||||
*
|
||||
@@ -138,6 +159,13 @@
|
||||
*/
|
||||
#undef JOIN_INSTEAD_OF_SJOIN_ON_REMOTEJOIN
|
||||
|
||||
/*
|
||||
* So called 'smart' banning: if this is enabled and a ban on like *!*@*h.com is present,
|
||||
* then you cannot add a ban like *!*@*blah.com. In other words.. the ircd tries to be "smart".
|
||||
* In general this is considered quite annoying. This was on by default until Unreal 3.2.8.
|
||||
*/
|
||||
#undef SOCALLEDSMARTBANNING
|
||||
|
||||
/*
|
||||
** Freelinks garbage collector -Stskeeps
|
||||
**
|
||||
@@ -197,14 +225,14 @@
|
||||
|
||||
/*
|
||||
* Full pathnames and defaults of irc system's support files. Please note that
|
||||
* these are only the recommened names and paths. Change as needed.
|
||||
* You must define these to something, even if you don't really want them.
|
||||
* these are only the recommened names and paths. You must define PPATH if you
|
||||
* want a pidfile written. Also, IRCDTUNE should be defined because it is needed for
|
||||
* operation. All of these options are runtime-configurable (except for CPATH and LPATH)
|
||||
* in the files block of unrealircd.conf. CPATH is runtime-configurable as a command-
|
||||
* line argument. These used as the default values for options absent from the user's
|
||||
* unrealircd.conf.
|
||||
*/
|
||||
#ifndef _WIN32
|
||||
#define CPATH "unrealircd.conf" /* server configuration file */
|
||||
#else
|
||||
extern char CPATH[262];
|
||||
#endif
|
||||
#define MPATH "ircd.motd" /* server MOTD file */
|
||||
#define SMPATH "ircd.smotd" /* short MOTD file */
|
||||
#define RPATH "ircd.rules" /* server rules file */
|
||||
@@ -382,6 +410,7 @@ extern char CPATH[262];
|
||||
* users this value is completely irrelevant.
|
||||
* The original value here was 60 (which was [hopefuly] never reached and was
|
||||
* stupid anyway), changed to 2.
|
||||
* DO NOT SET THIS TO ANYTHING MORE THAN 5. BETTER YET, JUST LEAVE IT AT 2!
|
||||
*/
|
||||
#define TIMESEC 2
|
||||
|
||||
@@ -425,6 +454,12 @@ extern char CPATH[262];
|
||||
*/
|
||||
#define KILLCHASETIMELIMIT 90 /* Recommended value: 90 */
|
||||
|
||||
/*
|
||||
* Use much faster badwords replace routine (>100 times faster).
|
||||
* Disabling this is not supported.
|
||||
*/
|
||||
#define FAST_BADWORD_REPLACE
|
||||
|
||||
/*
|
||||
* Forces Unreal to use compressed IPv6 addresses rather than expanding them
|
||||
*/
|
||||
@@ -450,6 +485,16 @@ extern char CPATH[262];
|
||||
*/
|
||||
#define JOINTHROTTLE
|
||||
|
||||
/* Detect slow spamfilters? This requires a little more cpu time when processing
|
||||
* any spamfilter (like on text/connect/..) but will save you from slowing down
|
||||
* your IRCd to a near-halt (well, in most cases.. there are still cases like when
|
||||
* it goes into a loop that it will still stall completely... forever..).
|
||||
* This is kinda experimental, and requires getrusage.
|
||||
*/
|
||||
#ifndef _WIN32
|
||||
#define SPAMFILTER_DETECTSLOW
|
||||
#endif
|
||||
|
||||
/* ------------------------- END CONFIGURATION SECTION -------------------- */
|
||||
#define MOTD MPATH
|
||||
#define RULES RPATH
|
||||
@@ -540,6 +585,16 @@ error You stuffed up config.h signals
|
||||
* whatever else. -4 allows "safety" margin of 1 and space reserved.
|
||||
*/
|
||||
#define MAXCLIENTS (MAXCONNECTIONS-4)
|
||||
#ifdef HAVECURSES
|
||||
# define DOCURSES
|
||||
#else
|
||||
# undef DOCURSES
|
||||
#endif
|
||||
#ifdef HAVETERMCAP
|
||||
# define DOTERMCAP
|
||||
#else
|
||||
# undef DOTERMCAP
|
||||
#endif
|
||||
# define stricmp strcasecmp
|
||||
# define strnicmp strncasecmp
|
||||
#if defined(CLIENT_FLOOD)
|
||||
|
||||
+43
-8
@@ -19,7 +19,7 @@
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef DYNCONF_H
|
||||
|
||||
#define DYNCONF_H
|
||||
/* config level */
|
||||
#define DYNCONF_CONF_VERSION "1.5"
|
||||
@@ -52,6 +52,13 @@ struct ChMode {
|
||||
long extmodes;
|
||||
char *extparams[EXTCMODETABLESZ];
|
||||
#endif
|
||||
#ifdef NEWCHFLOODPROT
|
||||
ChanFloodProt floodprot;
|
||||
#else
|
||||
unsigned short msgs;
|
||||
unsigned short per;
|
||||
unsigned char kmode;
|
||||
#endif
|
||||
};
|
||||
|
||||
typedef struct _OperStat {
|
||||
@@ -66,12 +73,14 @@ struct zConfiguration {
|
||||
unsigned flat_map:1;
|
||||
unsigned allow_chatops:1;
|
||||
unsigned webtv_support:1;
|
||||
unsigned no_oper_hiding:1;
|
||||
unsigned ident_check:1;
|
||||
unsigned fail_oper_warn:1;
|
||||
unsigned show_connect_info:1;
|
||||
unsigned dont_resolve:1;
|
||||
unsigned use_ban_version:1;
|
||||
unsigned mkpasswd_for_everyone:1;
|
||||
unsigned allow_insane_bans;
|
||||
unsigned allow_part_if_shunned:1;
|
||||
unsigned check_target_nick_bans:1;
|
||||
unsigned use_egd : 1;
|
||||
@@ -79,8 +88,10 @@ struct zConfiguration {
|
||||
int host_retries;
|
||||
char *name_server;
|
||||
char *dns_bindip;
|
||||
#ifdef THROTTLING
|
||||
long throttle_period;
|
||||
char throttle_count;
|
||||
#endif
|
||||
char *kline_address;
|
||||
char *gline_address;
|
||||
long conn_modes;
|
||||
@@ -101,14 +112,13 @@ struct zConfiguration {
|
||||
char *x_server_cert_pem;
|
||||
char *x_server_key_pem;
|
||||
char *x_server_cipher_list;
|
||||
char *x_dh_pem;
|
||||
char *trusted_ca_file;
|
||||
long ssl_options;
|
||||
int ssl_renegotiate_bytes;
|
||||
int ssl_renegotiate_timeout;
|
||||
|
||||
#elif defined(_WIN32)
|
||||
void *bogus1, *bogus2, *bogus3, *bogus5, *bogus8;
|
||||
void *bogus1, *bogus2, *bogus3, *bogus5;
|
||||
long bogus4;
|
||||
int bogus6, bogus7;
|
||||
#endif
|
||||
@@ -116,10 +126,12 @@ struct zConfiguration {
|
||||
char *restrict_usermodes;
|
||||
char *restrict_channelmodes;
|
||||
char *restrict_extendedbans;
|
||||
int new_linking_protocol;
|
||||
char *channel_command_prefix;
|
||||
long unknown_flood_bantime;
|
||||
long unknown_flood_amount;
|
||||
struct ChMode modes_on_join;
|
||||
int level_on_join;
|
||||
#ifdef NO_FLOOD_AWAY
|
||||
unsigned char away_count;
|
||||
long away_period;
|
||||
@@ -142,14 +154,20 @@ struct zConfiguration {
|
||||
char spamfilter_vchan_deny;
|
||||
SpamExcept *spamexcept;
|
||||
char *spamexcept_line;
|
||||
long spamfilter_detectslow_warn;
|
||||
long spamfilter_detectslow_fatal;
|
||||
int maxbans;
|
||||
int maxbanlength;
|
||||
int timesynch_enabled;
|
||||
int timesynch_timeout;
|
||||
char *timesynch_server;
|
||||
int pingpong_warning;
|
||||
int watch_away_notification;
|
||||
int uhnames;
|
||||
aNetwork network;
|
||||
int nicklen;
|
||||
#ifdef INET6
|
||||
unsigned short default_ipv6_clone_mask;
|
||||
#endif /* INET6 */
|
||||
};
|
||||
|
||||
#ifndef DYNCONF_C
|
||||
@@ -169,6 +187,7 @@ extern MODVAR aConfiguration iConf;
|
||||
#define MAXCHANNELSPERUSER iConf.maxchannelsperuser
|
||||
#define MAXDCCALLOW iConf.maxdccallow
|
||||
#define WEBTV_SUPPORT iConf.webtv_support
|
||||
#define NO_OPER_HIDING iConf.no_oper_hiding
|
||||
#define DONT_RESOLVE iConf.dont_resolve
|
||||
#define AUTO_JOIN_CHANS iConf.auto_join_chans
|
||||
#define OPER_AUTO_JOIN_CHANS iConf.oper_auto_join_chans
|
||||
@@ -209,12 +228,16 @@ extern MODVAR aConfiguration iConf;
|
||||
#define RESTRICT_USERMODES iConf.restrict_usermodes
|
||||
#define RESTRICT_CHANNELMODES iConf.restrict_channelmodes
|
||||
#define RESTRICT_EXTENDEDBANS iConf.restrict_extendedbans
|
||||
#define NEW_LINKING_PROTOCOL iConf.new_linking_protocol
|
||||
#ifdef THROTTLING
|
||||
#define THROTTLING_PERIOD iConf.throttle_period
|
||||
#define THROTTLING_COUNT iConf.throttle_count
|
||||
#endif
|
||||
#define USE_BAN_VERSION iConf.use_ban_version
|
||||
#define UNKNOWN_FLOOD_BANTIME iConf.unknown_flood_bantime
|
||||
#define UNKNOWN_FLOOD_AMOUNT iConf.unknown_flood_amount
|
||||
#define MODES_ON_JOIN iConf.modes_on_join.mode
|
||||
#define LEVEL_ON_JOIN iConf.level_on_join
|
||||
|
||||
#ifdef NO_FLOOD_AWAY
|
||||
#define AWAY_PERIOD iConf.away_period
|
||||
@@ -227,6 +250,7 @@ extern MODVAR aConfiguration iConf;
|
||||
#define IDENT_READ_TIMEOUT iConf.ident_read_timeout
|
||||
|
||||
#define MKPASSWD_FOR_EVERYONE iConf.mkpasswd_for_everyone
|
||||
#define ALLOW_INSANE_BANS iConf.allow_insane_bans
|
||||
#define CHANCMDPFX iConf.channel_command_prefix
|
||||
|
||||
#define DEFAULT_BANTIME iConf.default_bantime
|
||||
@@ -247,6 +271,9 @@ extern MODVAR aConfiguration iConf;
|
||||
#define SPAMFILTER_VIRUSCHAN iConf.spamfilter_virus_help_channel
|
||||
#define SPAMFILTER_VIRUSCHANDENY iConf.spamfilter_vchan_deny
|
||||
#define SPAMFILTER_EXCEPT iConf.spamexcept_line
|
||||
#define SPAMFILTER_DETECTSLOW_WARN iConf.spamfilter_detectslow_warn
|
||||
#define SPAMFILTER_DETECTSLOW_FATAL iConf.spamfilter_detectslow_fatal
|
||||
|
||||
#define CHECK_TARGET_NICK_BANS iConf.check_target_nick_bans
|
||||
|
||||
#define MAXBANS iConf.maxbans
|
||||
@@ -258,6 +285,10 @@ extern MODVAR aConfiguration iConf;
|
||||
|
||||
#define PINGPONG_WARNING iConf.pingpong_warning
|
||||
|
||||
#define WATCH_AWAY_NOTIFICATION iConf.watch_away_notification
|
||||
|
||||
#define UHNAMES_ENABLED iConf.uhnames
|
||||
|
||||
/* Used for "is present?" and duplicate checking */
|
||||
struct SetCheck {
|
||||
unsigned has_show_opermotd:1;
|
||||
@@ -265,6 +296,7 @@ struct SetCheck {
|
||||
unsigned has_flat_map:1;
|
||||
unsigned has_allow_chatops:1;
|
||||
unsigned has_webtv_support:1;
|
||||
unsigned has_no_oper_hiding:1;
|
||||
unsigned has_ident_check:1;
|
||||
unsigned has_fail_oper_warn:1;
|
||||
unsigned has_show_connect_info:1;
|
||||
@@ -277,8 +309,10 @@ struct SetCheck {
|
||||
unsigned has_dns_retries:1;
|
||||
unsigned has_dns_nameserver:1;
|
||||
unsigned has_dns_bind_ip:1;
|
||||
#ifdef THROTTLING
|
||||
unsigned has_throttle_period:1;
|
||||
unsigned has_throttle_connections:1;
|
||||
#endif
|
||||
unsigned has_kline_address:1;
|
||||
unsigned has_gline_address:1;
|
||||
unsigned has_modes_on_connect:1;
|
||||
@@ -289,6 +323,8 @@ struct SetCheck {
|
||||
unsigned has_oper_auto_join:1;
|
||||
unsigned has_check_target_nick_bans:1;
|
||||
unsigned has_pingpong_warning:1;
|
||||
unsigned has_watch_away_notification:1;
|
||||
unsigned has_uhnames:1;
|
||||
unsigned has_oper_only_stats:1;
|
||||
unsigned has_maxchannelsperuser:1;
|
||||
unsigned has_maxdccallow:1;
|
||||
@@ -301,7 +337,6 @@ struct SetCheck {
|
||||
unsigned has_ssl_key:1;
|
||||
unsigned has_ssl_trusted_ca_file:1;
|
||||
unsigned has_ssl_options:1;
|
||||
unsigned has_ssl_dh:1;
|
||||
unsigned has_renegotiate_timeout : 1;
|
||||
unsigned has_renegotiate_bytes : 1;
|
||||
#endif
|
||||
@@ -309,10 +344,12 @@ struct SetCheck {
|
||||
unsigned has_restrict_usermodes:1;
|
||||
unsigned has_restrict_channelmodes:1;
|
||||
unsigned has_restrict_extendedbans:1;
|
||||
unsigned has_new_linking_protocol:1;
|
||||
unsigned has_channel_command_prefix:1;
|
||||
unsigned has_anti_flood_unknown_flood_bantime:1;
|
||||
unsigned has_anti_flood_unknown_flood_amount:1;
|
||||
unsigned has_modes_on_join:1;
|
||||
unsigned has_level_on_join:1;
|
||||
#ifdef NO_FLOOD_AWAY
|
||||
unsigned has_anti_flood_away_count:1;
|
||||
unsigned has_anti_flood_away_period:1;
|
||||
@@ -359,13 +396,11 @@ struct SetCheck {
|
||||
unsigned has_options_dont_resolve:1;
|
||||
unsigned has_options_show_connect_info:1;
|
||||
unsigned has_options_mkpasswd_for_everyone:1;
|
||||
unsigned has_options_allow_insane_bans:1;
|
||||
unsigned has_options_allow_part_if_shunned:1;
|
||||
int cgiirc_type; /* cheat :( */
|
||||
unsigned has_cgiirc_hosts:1;
|
||||
unsigned has_cgiirc_webpass:1;
|
||||
unsigned has_nicklen:1;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
#define _IRCD_DOG3_FDLIST
|
||||
|
||||
/* $Id$ */
|
||||
#ifndef NEW_IO
|
||||
|
||||
typedef struct fdstruct {
|
||||
int entry[MAXCONNECTIONS + 2];
|
||||
@@ -17,425 +16,6 @@ void init_fdlist(fdlist * b);
|
||||
extern MODVAR fdlist oper_fdlist;
|
||||
#endif
|
||||
|
||||
#else /* ifndef NEW_IO */
|
||||
|
||||
/* Hybrid Support Headers Begin */
|
||||
#include <sys/resource.h>
|
||||
|
||||
#ifdef RLIMIT_FDMAX
|
||||
# define RLIMIT_FD_MAX RLIMIT_FDMAX
|
||||
#else
|
||||
# ifdef RLIMIT_NOFILE
|
||||
# define RLIMIT_FD_MAX RLIMIT_NOFILE
|
||||
# else
|
||||
# ifdef RLIMIT_OPEN_MAX
|
||||
# define RLIMIT_FD_MAX RLIMIT_OPEN_MAX
|
||||
# else
|
||||
# warning No file descriptor limit was found
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#define COMM_SELECT_READ 1
|
||||
#define COMM_SELECT_WRITE 2
|
||||
|
||||
/* How long can comm_select() wait for network events [milliseconds] */
|
||||
#define SELECT_DELAY 500
|
||||
|
||||
#define LOWEST_SAFE_FD 4 /* skip stdin, stdout, stderr, and profiler */
|
||||
|
||||
/* Path to /dev/null */
|
||||
#define PATH_DEVNULL "/dev/null"
|
||||
|
||||
extern const unsigned char ToUpperTab[];
|
||||
#define ToUpper(c) (ToUpperTab[(unsigned char)(c)])
|
||||
|
||||
|
||||
/*
|
||||
* NOTE: The following functions are NOT the same as strcasecmp
|
||||
* and strncasecmp! These functions use the Finnish (RFC1459)
|
||||
* character set. Do not replace!
|
||||
*
|
||||
* irccmp - case insensitive comparison of s1 and s2
|
||||
*/
|
||||
extern int irccmp(const char *, const char *);
|
||||
|
||||
|
||||
|
||||
|
||||
typedef struct _dlink_node dlink_node;
|
||||
typedef struct _dlink_list dlink_list;
|
||||
|
||||
struct _dlink_node
|
||||
{
|
||||
void *data;
|
||||
dlink_node *prev;
|
||||
dlink_node *next;
|
||||
};
|
||||
|
||||
struct _dlink_list
|
||||
{
|
||||
dlink_node *head;
|
||||
dlink_node *tail;
|
||||
unsigned long length;
|
||||
};
|
||||
|
||||
extern void dlinkAdd(void *data, dlink_node * m, dlink_list * list);
|
||||
extern void dlinkAddBefore(dlink_node *b, void *data, dlink_node *m, dlink_list *list);
|
||||
extern void dlinkAddTail(void *data, dlink_node *m, dlink_list *list);
|
||||
extern void dlinkDelete(dlink_node *m, dlink_list *list);
|
||||
extern void dlinkMoveList(dlink_list *from, dlink_list *to);
|
||||
extern dlink_node *dlinkFind(dlink_list *m, void *data);
|
||||
extern dlink_node *dlinkFindDelete(dlink_list *m, void *data);
|
||||
|
||||
#ifndef NDEBUG
|
||||
void mem_frob(void *data, int len);
|
||||
#else
|
||||
#define mem_frob(x, y)
|
||||
#endif
|
||||
|
||||
/* These macros are basically swiped from the linux kernel
|
||||
* they are simple yet effective
|
||||
*/
|
||||
|
||||
/*
|
||||
* Walks forward of a list.
|
||||
* pos is your node
|
||||
* head is your list head
|
||||
*/
|
||||
#define DLINK_FOREACH(pos, head) for (pos = (head); pos != NULL; pos = pos->next)
|
||||
|
||||
/*
|
||||
* Walks forward of a list safely while removing nodes
|
||||
* pos is your node
|
||||
* n is another list head for temporary storage
|
||||
* head is your list head
|
||||
*/
|
||||
#define DLINK_FOREACH_SAFE(pos, n, head) for (pos = (head), n = pos ? pos->next : NULL; pos != NULL; pos = n, n = pos ? pos->next : NULL)
|
||||
#define DLINK_FOREACH_PREV(pos, head) for (pos = (head); pos != NULL; pos = pos->prev)
|
||||
|
||||
/* Returns the list length */
|
||||
#define dlink_list_length(list) (list)->length
|
||||
|
||||
/*
|
||||
* The functions below are included for the sake of inlining
|
||||
* hopefully this will speed up things just a bit
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* dlink_ routines are stolen from squid, except for dlinkAddBefore,
|
||||
* which is mine.
|
||||
* -- adrian
|
||||
*/
|
||||
extern inline void dlinkAdd(void *data, dlink_node * m, dlink_list * list)
|
||||
{
|
||||
m->data = data;
|
||||
m->prev = NULL;
|
||||
m->next = list->head;
|
||||
/* Assumption: If list->tail != NULL, list->head != NULL */
|
||||
if (list->head != NULL)
|
||||
list->head->prev = m;
|
||||
else if (list->tail == NULL)
|
||||
list->tail = m;
|
||||
list->head = m;
|
||||
list->length++;
|
||||
}
|
||||
|
||||
extern inline void dlinkAddBefore(dlink_node *b, void *data, dlink_node *m, dlink_list *list)
|
||||
{
|
||||
/* Shortcut - if its the first one, call dlinkAdd only */
|
||||
if (b == list->head)
|
||||
dlinkAdd(data, m, list);
|
||||
else {
|
||||
m->data = data;
|
||||
b->prev->next = m;
|
||||
m->prev = b->prev;
|
||||
b->prev = m;
|
||||
m->next = b;
|
||||
list->length++;
|
||||
}
|
||||
}
|
||||
|
||||
extern inline void dlinkAddTail(void *data, dlink_node *m, dlink_list *list)
|
||||
{
|
||||
m->data = data;
|
||||
m->next = NULL;
|
||||
m->prev = list->tail;
|
||||
/* Assumption: If list->tail != NULL, list->head != NULL */
|
||||
if (list->tail != NULL)
|
||||
list->tail->next = m;
|
||||
else if (list->head == NULL)
|
||||
list->head = m;
|
||||
list->tail = m;
|
||||
list->length++;
|
||||
}
|
||||
|
||||
/* Execution profiles show that this function is called the most
|
||||
* often of all non-spontaneous functions. So it had better be
|
||||
* efficient. */
|
||||
extern inline void dlinkDelete(dlink_node *m, dlink_list *list)
|
||||
{
|
||||
/* Assumption: If m->next == NULL, then list->tail == m
|
||||
* and: If m->prev == NULL, then list->head == m
|
||||
*/
|
||||
if (m->next)
|
||||
m->next->prev = m->prev;
|
||||
else {
|
||||
assert(list->tail == m);
|
||||
list->tail = m->prev;
|
||||
}
|
||||
if (m->prev)
|
||||
m->prev->next = m->next;
|
||||
else {
|
||||
assert(list->head == m);
|
||||
list->head = m->next;
|
||||
}
|
||||
/* Set this to NULL does matter */
|
||||
m->next = m->prev = NULL;
|
||||
list->length--;
|
||||
}
|
||||
|
||||
/*
|
||||
* dlinkFind
|
||||
* inputs - list to search
|
||||
* - data
|
||||
* output - pointer to link or NULL if not found
|
||||
* side effects - Look for ptr in the linked listed pointed to by link.
|
||||
*/
|
||||
extern inline dlink_node *dlinkFind(dlink_list *list, void *data)
|
||||
{
|
||||
dlink_node *ptr;
|
||||
|
||||
DLINK_FOREACH(ptr, list->head)
|
||||
{
|
||||
if (ptr->data == data)
|
||||
return(ptr);
|
||||
}
|
||||
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
extern inline void dlinkMoveList(dlink_list *from, dlink_list *to)
|
||||
{
|
||||
/* There are three cases */
|
||||
/* case one, nothing in from list */
|
||||
|
||||
if (from->head == NULL)
|
||||
return;
|
||||
|
||||
/* case two, nothing in to list */
|
||||
/* actually if to->head is NULL and to->tail isn't, thats a bug */
|
||||
|
||||
if (to->head == NULL)
|
||||
{
|
||||
to->head = from->head;
|
||||
to->tail = from->tail;
|
||||
from->head = from->tail = NULL;
|
||||
to->length = from->length;
|
||||
from->length = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
/* third case play with the links */
|
||||
|
||||
from->tail->next = to->head;
|
||||
from->head->prev = to->head->prev;
|
||||
to->head->prev = from->tail;
|
||||
to->head = from->head;
|
||||
from->head = from->tail = NULL;
|
||||
to->length += from->length;
|
||||
from->length = 0;
|
||||
|
||||
/* I think I got that right */
|
||||
}
|
||||
|
||||
extern inline dlink_node *dlinkFindDelete(dlink_list *list, void *data)
|
||||
{
|
||||
dlink_node *m;
|
||||
|
||||
DLINK_FOREACH(m, list->head)
|
||||
{
|
||||
if (m->data == data)
|
||||
{
|
||||
if (m->next)
|
||||
m->next->prev = m->prev;
|
||||
else
|
||||
{
|
||||
assert(list->tail == m);
|
||||
list->tail = m->prev;
|
||||
}
|
||||
if (m->prev)
|
||||
m->prev->next = m->next;
|
||||
else
|
||||
{
|
||||
assert(list->head == m);
|
||||
list->head = m->next;
|
||||
}
|
||||
/* Set this to NULL does matter */
|
||||
m->next = m->prev = NULL;
|
||||
list->length--;
|
||||
|
||||
return(m);
|
||||
}
|
||||
}
|
||||
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
extern dlink_list callback_list; /* listing/debugging purposes */
|
||||
|
||||
typedef void *CBFUNC(va_list);
|
||||
|
||||
struct Callback
|
||||
{
|
||||
char *name;
|
||||
dlink_list chain;
|
||||
dlink_node node;
|
||||
unsigned int called;
|
||||
time_t last;
|
||||
};
|
||||
|
||||
extern struct Callback *register_callback(const char *, CBFUNC *);
|
||||
extern void *execute_callback(struct Callback *, ...);
|
||||
extern struct Callback *find_callback(const char *);
|
||||
extern dlink_node *install_hook(struct Callback *, CBFUNC *);
|
||||
extern void uninstall_hook(struct Callback *, CBFUNC *);
|
||||
extern void *pass_callback(dlink_node *, ...);
|
||||
extern void stats_hooks(struct Client *);
|
||||
|
||||
#define is_callback_present(c) (!!dlink_list_length(&c->chain))
|
||||
|
||||
/* Hybrid Support Headers End */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* tests show that about 7 fds are not registered by fdlist.c, these
|
||||
* include std* descriptors + some others (by OpenSSL etc.). Note this is
|
||||
* intentionally too high, we don't want to eat fds up to the last one */
|
||||
#define LEAKED_FDS 10
|
||||
|
||||
/* how many (privileged) clients can exceed max_clients */
|
||||
#define MAX_BUFFER 60
|
||||
|
||||
#define MAXCLIENTS_MAX (hard_fdlimit - LEAKED_FDS - MAX_BUFFER)
|
||||
#define MAXCLIENTS_MIN 32
|
||||
|
||||
#define FD_DESC_SZ 128 /* hostlen + comment */
|
||||
|
||||
/* enums better then defines for debugging issue */
|
||||
enum {
|
||||
COMM_OK,
|
||||
COMM_ERR_BIND,
|
||||
COMM_ERR_DNS,
|
||||
COMM_ERR_TIMEOUT,
|
||||
COMM_ERR_CONNECT,
|
||||
COMM_ERROR,
|
||||
COMM_ERR_MAX
|
||||
};
|
||||
|
||||
/* This is to get around the fact that some implementations have ss_len and
|
||||
* others do not
|
||||
*/
|
||||
struct irc_ssaddr
|
||||
{
|
||||
struct sockaddr_storage ss;
|
||||
unsigned char ss_len;
|
||||
in_port_t ss_port;
|
||||
};
|
||||
|
||||
|
||||
/* For Callback functions arguments */
|
||||
struct _fde;
|
||||
|
||||
/* Callback for completed IO events */
|
||||
typedef void PF(struct _fde *, void *);
|
||||
|
||||
/* Callback for completed connections */
|
||||
/* int fd, int status, void * */
|
||||
typedef void CNCB(struct _fde *, int, void *);
|
||||
|
||||
typedef struct _fde {
|
||||
/* New-school stuff, again pretty much ripped from squid */
|
||||
/*
|
||||
* Yes, this gives us only one pending read and one pending write per
|
||||
* filedescriptor. Think though: when do you think we'll need more?
|
||||
*/
|
||||
int fd; /* So we can use the fde_t as a callback ptr */
|
||||
int comm_index; /* where in the poll list we live */
|
||||
int evcache; /* current fd events as set up by the underlying I/O */
|
||||
char desc[FD_DESC_SZ];
|
||||
PF *read_handler;
|
||||
void *read_data;
|
||||
PF *write_handler;
|
||||
void *write_data;
|
||||
PF *timeout_handler;
|
||||
void *timeout_data;
|
||||
time_t timeout;
|
||||
PF *flush_handler;
|
||||
void *flush_data;
|
||||
time_t flush_timeout;
|
||||
/* struct DNSQuery *dns_query; at hybrid 7.2.2 */
|
||||
struct DNSReq *dns_query;
|
||||
struct {
|
||||
unsigned int open:1;
|
||||
unsigned int is_socket:1;
|
||||
#ifdef USE_SSL
|
||||
unsigned int pending_read:1;
|
||||
#endif
|
||||
} flags;
|
||||
|
||||
struct {
|
||||
/* We don't need the host here ? */
|
||||
struct irc_ssaddr S;
|
||||
struct irc_ssaddr hostaddr;
|
||||
CNCB *callback;
|
||||
void *data;
|
||||
/* We'd also add the retry count here when we get to that -- adrian */
|
||||
} connect;
|
||||
#ifdef USE_SSL
|
||||
SSL *ssl;
|
||||
#endif
|
||||
struct _fde *hnext;
|
||||
} fde_t;
|
||||
|
||||
#define CLIENT_HEAP_SIZE 1024
|
||||
#define FD_HASH_SIZE CLIENT_HEAP_SIZE
|
||||
|
||||
extern int number_fd;
|
||||
extern int hard_fdlimit;
|
||||
extern fde_t *fd_hash[];
|
||||
extern fde_t *fd_next_in_loop;
|
||||
extern struct Callback *fdlimit_cb;
|
||||
|
||||
extern void fdlist_init(void);
|
||||
extern fde_t *lookup_fd(int);
|
||||
extern void fd_open(fde_t *, int, int, const char *);
|
||||
extern void fd_close(fde_t *);
|
||||
extern void fd_dump(struct Client *);
|
||||
#ifndef __GNUC__
|
||||
extern void fd_note(fde_t *, const char *format, ...);
|
||||
#else
|
||||
extern void fd_note(fde_t *, const char *format, ...)
|
||||
__attribute__((format (printf, 2, 3)));
|
||||
#endif
|
||||
extern void close_standard_fds(void);
|
||||
extern void close_fds(fde_t *);
|
||||
extern void recalc_fdlimit(void *);
|
||||
|
||||
#endif /* ifndef NEW_IO */
|
||||
|
||||
#ifndef TRUE
|
||||
#define TRUE 1
|
||||
|
||||
+67
-45
@@ -49,9 +49,9 @@ extern TS check_pings(TS now);
|
||||
extern TS TS2ts(char *s);
|
||||
extern MODVAR time_t timeofday;
|
||||
/* newconf */
|
||||
#define get_sendq(x) ((x)->cclass ? (x)->cclass->sendq : MAXSENDQLENGTH)
|
||||
#define get_sendq(x) ((x)->class ? (x)->class->sendq : MAXSENDQLENGTH)
|
||||
/* get_recvq is only called in send.c for local connections */
|
||||
#define get_recvq(x) ((x)->cclass->recvq ? (x)->cclass->recvq : CLIENT_FLOOD)
|
||||
#define get_recvq(x) ((x)->class->recvq ? (x)->class->recvq : CLIENT_FLOOD)
|
||||
|
||||
#define CMD_FUNC(x) int (x) (aClient *cptr, aClient *sptr, int parc, char *parv[])
|
||||
|
||||
@@ -73,6 +73,7 @@ extern MODVAR long lastsendK, lastrecvK;
|
||||
* Configuration linked lists
|
||||
*/
|
||||
extern MODVAR ConfigItem_me *conf_me;
|
||||
extern MODVAR ConfigItem_files *conf_files;
|
||||
extern MODVAR ConfigItem_class *conf_class;
|
||||
extern MODVAR ConfigItem_class *default_class;
|
||||
extern MODVAR ConfigItem_admin *conf_admin;
|
||||
@@ -104,12 +105,16 @@ extern MODVAR ConfigItem_offchans *conf_offchans;
|
||||
extern int completed_connection(aClient *);
|
||||
extern void clear_unknown();
|
||||
extern EVENT(e_unload_module_delayed);
|
||||
#ifdef THROTTLING
|
||||
extern EVENT(e_clean_out_throttling_buckets);
|
||||
#endif
|
||||
|
||||
extern void module_loadall(int module_load);
|
||||
extern long set_usermode(char *umode);
|
||||
extern char *get_modestr(long umodes);
|
||||
extern void config_error(char *format, ...) __attribute__((format(printf,1,2)));
|
||||
extern void config_warn(char *format, ...) __attribute__((format(printf,1,2)));
|
||||
|
||||
extern MODVAR int config_verbose;
|
||||
extern void config_progress(char *format, ...) __attribute__((format(printf,1,2)));
|
||||
extern void ipport_seperate(char *string, char **ip, char **port);
|
||||
@@ -131,8 +136,10 @@ ConfigItem_help *Find_Help(char *command);
|
||||
int AllowClient(aClient *cptr, struct hostent *hp, char *sockhost, char *username);
|
||||
int parse_netmask(const char *text, struct irc_netmask *netmask);
|
||||
int match_ip(struct IN_ADDR addr, char *uhost, char *mask, struct irc_netmask *netmask);
|
||||
#ifdef INET6
|
||||
int match_ipv6(struct IN_ADDR *addr, struct IN_ADDR *mask, int bits);
|
||||
#endif
|
||||
ConfigItem_ban *Find_ban_ip(aClient *sptr);
|
||||
extern MODVAR struct tm motd_tm, smotd_tm;
|
||||
extern MODVAR Link *Servers;
|
||||
void add_ListItem(ListStruct *, ListStruct **);
|
||||
ListStruct *del_ListItem(ListStruct *, ListStruct **);
|
||||
@@ -189,7 +196,7 @@ extern int is_chanowner(aClient *, aChannel *);
|
||||
#ifndef DISABLE_EXTBAN_STACKING
|
||||
extern int ban_check_mask(aClient *, aChannel *, char *, int, int);
|
||||
extern int extban_is_ok_nuh_extban(aClient *, aChannel *, char *, int, int, int);
|
||||
extern char* extban_conv_param_nuh_extban(char *);
|
||||
extern char* extban_conv_param_nuh_or_extban(char *);
|
||||
#endif
|
||||
extern Ban *is_banned(aClient *, aChannel *, int);
|
||||
extern Ban *is_banned_with_nick(aClient *, aChannel *, int, char *);
|
||||
@@ -212,7 +219,9 @@ extern void reset_help();
|
||||
extern MODVAR char *debugmode, *configfile, *sbrk0;
|
||||
extern char *getfield(char *);
|
||||
extern void get_sockhost(aClient *, char *);
|
||||
#ifdef _WIN32
|
||||
#ifndef _WIN32
|
||||
extern char *strerror(int);
|
||||
#else
|
||||
extern MODFUNC char *sock_strerror(int);
|
||||
#endif
|
||||
extern int dgets(int, char *, int);
|
||||
@@ -228,17 +237,15 @@ extern int vsnprintf (char *str, size_t count, const char *fmt, va_list arg);
|
||||
#ifdef _WIN32
|
||||
extern MODVAR int dbufalloc, dbufblocks, debuglevel;
|
||||
#else
|
||||
extern int dbufalloc, dbufblocks, debuglevel;
|
||||
extern int dbufalloc, dbufblocks, debuglevel, errno, h_errno;
|
||||
#endif
|
||||
|
||||
extern MODVAR short LastSlot; /* last used index in local client array */
|
||||
extern MODVAR int OpenFiles; /* number of files currently open */
|
||||
extern MODVAR int debuglevel, debugtty, maxusersperchannel;
|
||||
extern MODVAR int debuglevel, portnum, debugtty, maxusersperchannel;
|
||||
extern MODVAR int readcalls, udpfd, resfd;
|
||||
|
||||
#ifndef NEW_IO
|
||||
extern aClient *add_connection(aClient *, int);
|
||||
extern int add_listener(aConfItem *);
|
||||
extern void add_local_domain(char *, int);
|
||||
extern int check_client(aClient *, char *);
|
||||
extern int check_server(aClient *, struct hostent *, aConfItem *,
|
||||
aConfItem *, int);
|
||||
@@ -250,16 +257,17 @@ extern void get_my_name(aClient *, char *, int);
|
||||
extern int get_sockerr(aClient *);
|
||||
extern int inetport(aClient *, char *, int);
|
||||
extern void init_sys();
|
||||
extern void init_modef();
|
||||
extern int verify_hostname(char *name);
|
||||
|
||||
#ifdef NO_FDLIST
|
||||
extern int read_message(time_t);
|
||||
#else
|
||||
extern int read_message(time_t, fdlist *);
|
||||
#endif
|
||||
|
||||
extern void report_error(char *, aClient *);
|
||||
extern void set_non_blocking(int, aClient *);
|
||||
#else /* ifndef NEW_IO */
|
||||
#endif /* ifndef NEW_IO */
|
||||
extern int setup_ping();
|
||||
|
||||
extern void start_auth(aClient *);
|
||||
@@ -321,10 +329,13 @@ extern void sendto_snomask_normal_global(int snomask, char *pattern, ...) __attr
|
||||
extern void sendnotice(aClient *to, char *pattern, ...) __attribute__((format(printf,2,3)));
|
||||
extern MODVAR int writecalls, writeb[];
|
||||
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 *canonize(char *buffer);
|
||||
extern ConfigItem_deny_dcc *dcc_isforbidden(aClient *sptr, char *filename);
|
||||
extern ConfigItem_deny_dcc *dcc_isdiscouraged(aClient *sptr, 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);
|
||||
@@ -356,12 +367,14 @@ extern void send_umode_out(aClient *, aClient *, long);
|
||||
extern void free_client(aClient *);
|
||||
extern void free_link(Link *);
|
||||
extern void free_ban(Ban *);
|
||||
extern void free_class(aClass *);
|
||||
extern void free_user(anUser *, aClient *);
|
||||
extern int find_str_match_link(Link *, char *);
|
||||
extern void free_str_list(Link *);
|
||||
extern Link *make_link();
|
||||
extern Ban *make_ban();
|
||||
extern anUser *make_user(aClient *);
|
||||
extern aClass *make_class();
|
||||
extern aServer *make_server();
|
||||
extern aClient *make_client(aClient *, aClient *);
|
||||
extern Link *find_user_link(Link *, aClient *);
|
||||
@@ -537,9 +550,10 @@ extern int Auth_CheckError(ConfigEntry *ce);
|
||||
extern long xbase64dec(char *b64);
|
||||
extern aClient *find_server_b64_or_real(char *name);
|
||||
extern aClient *find_server_by_base64(char *b64);
|
||||
extern aClient *find_server_by_numeric(long value);
|
||||
extern int is_chanownprotop(aClient *cptr, aChannel *chptr);
|
||||
extern int is_skochanop(aClient *cptr, aChannel *chptr);
|
||||
extern char *make_virthost(aClient *sptr, char *curr, char *newhost, int mode);
|
||||
extern char *make_virthost(aClient *sptr, char *curr, char *new, int mode);
|
||||
extern int channel_canjoin(aClient *sptr, char *name);
|
||||
extern char *collapse(char *pattern);
|
||||
extern void dcc_sync(aClient *sptr);
|
||||
@@ -553,7 +567,6 @@ 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 our_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();
|
||||
@@ -564,20 +577,16 @@ extern void flag_del(char ch);
|
||||
extern void init_dynconf(void);
|
||||
extern char *pretty_time_val(long);
|
||||
extern int init_conf(char *filename, int rehash);
|
||||
extern int global_test();
|
||||
extern void validate_configuration(void);
|
||||
extern void run_configuration(void);
|
||||
extern void rehash_motdrules();
|
||||
extern aMotd *read_file(char *filename, aMotd **list);
|
||||
extern aMotd *read_file_ex(char *filename, aMotd **list, struct tm *);
|
||||
extern void read_motd(const char *filename, aMotdFile *motd); /* s_serv.c */
|
||||
extern CMD_FUNC(m_server_remote);
|
||||
extern void send_proto(aClient *, ConfigItem_link *);
|
||||
extern char *xbase64enc(long i);
|
||||
extern void unload_all_modules(void);
|
||||
#ifndef NEW_IO
|
||||
extern void flush_fdlist_connections(fdlist * listp);
|
||||
#else /* ifndef NEW_IO */
|
||||
#endif /* ifndef NEW_IO */
|
||||
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);
|
||||
@@ -605,19 +614,22 @@ extern int extcmode_default_requirechop(aClient *, aChannel *, char *, int, int)
|
||||
extern int extcmode_default_requirehalfop(aClient *, aChannel *, char *, int, int);
|
||||
extern Cmode_t extcmode_get(Cmode *);
|
||||
extern void extcmode_init(void);
|
||||
extern void *extcmode_get_struct(aChannel *, char);
|
||||
extern CmodeParam *extcmode_get_struct(CmodeParam *, char);
|
||||
extern void make_extcmodestr();
|
||||
extern void extcmode_duplicate_paramlist(void **xi, void **xo);
|
||||
extern void extcmode_free_paramlist(void **ar);
|
||||
extern CmodeParam *extcmode_duplicate_paramlist(CmodeParam *);
|
||||
extern void extcmode_free_paramlist(CmodeParam *);
|
||||
#endif
|
||||
extern int do_chanflood(ChanFloodProt *, int);
|
||||
extern void do_chanflood_action(aChannel *, int, char *);
|
||||
extern char *channel_modef_string(ChanFloodProt *);
|
||||
extern void chmode_str(struct ChMode, char *, char *);
|
||||
extern char *get_cptr_status(aClient *);
|
||||
extern char *get_snostr(long);
|
||||
#ifdef _WIN32
|
||||
extern void InitDebug(void);
|
||||
extern int InitwIRCD(int argc, char **);
|
||||
#endif
|
||||
extern void SocketLoop(void *);
|
||||
#endif
|
||||
#ifdef STATIC_LINKING
|
||||
extern int l_commands_Init(ModuleInfo *);
|
||||
extern int l_commands_Test(ModuleInfo *);
|
||||
@@ -627,14 +639,15 @@ extern void sendto_chmodemucrap(aClient *, aChannel *, char *);
|
||||
extern void verify_opercount(aClient *, char *);
|
||||
extern int valid_host(char *host);
|
||||
extern int count_oper_sessions(char *);
|
||||
extern int file_exists(char* file);
|
||||
extern char *unreal_mktemp(char *dir, char *suffix);
|
||||
extern char *unreal_mktemp(const char *dir, const char *suffix);
|
||||
extern char *unreal_getpathname(char *filepath, char *path);
|
||||
extern char *unreal_getfilename(char *path);
|
||||
extern int unreal_copyfile(char *src, char *dest);
|
||||
extern int unreal_copyfileex(char *src, char *dest, int tryhardlink);
|
||||
extern time_t unreal_getfilemodtime(char *filename);
|
||||
extern void unreal_setfilemodtime(char *filename, time_t mtime);
|
||||
extern char *unreal_mkcache(const char *url);
|
||||
extern int has_cached_version(const char *url);
|
||||
extern int unreal_copyfile(const char *src, const char *dest);
|
||||
extern int unreal_copyfileex(const char *src, const char *dest, int tryhardlink);
|
||||
extern time_t unreal_getfilemodtime(const char *filename);
|
||||
extern void unreal_setfilemodtime(const char *filename, time_t mtime);
|
||||
extern void DeleteTempModules(void);
|
||||
extern MODVAR Extban *extbaninfo;
|
||||
extern Extban *findmod_by_bantype(char c);
|
||||
@@ -655,6 +668,7 @@ extern char *our_strcasestr(char *haystack, char *needle);
|
||||
extern int spamfilter_getconftargets(char *s);
|
||||
extern void remove_oper_snomasks(aClient *sptr);
|
||||
extern char *spamfilter_inttostring_long(int v);
|
||||
extern int check_channelmask(aClient *, aClient *, char *);
|
||||
extern aChannel *get_channel(aClient *cptr, char *chname, int flag);
|
||||
extern MODVAR char backupbuf[];
|
||||
extern void add_invite(aClient *, aChannel *);
|
||||
@@ -671,11 +685,7 @@ extern MODVAR aCtab cFlagTab[];
|
||||
extern char *unreal_encodespace(char *s);
|
||||
extern char *unreal_decodespace(char *s);
|
||||
extern MODVAR Link *helpign;
|
||||
extern MODVAR aMotd *rules;
|
||||
#ifndef NEW_IO
|
||||
extern MODVAR fdlist default_fdlist, busycli_fdlist, serv_fdlist, oper_fdlist;
|
||||
#else /* ifndef NEW_IO */
|
||||
#endif /* ifndef NEW_IO */
|
||||
extern void DCCdeny_add(char *filename, char *reason, int type, int type2);
|
||||
extern void DCCdeny_del(ConfigItem_deny_dcc *deny);
|
||||
extern void dcc_wipe_services(void);
|
||||
@@ -731,20 +741,29 @@ extern MODVAR int (*place_host_ban)(aClient *sptr, int action, char *reason, lon
|
||||
extern MODVAR int (*dospamfilter)(aClient *sptr, char *str_in, int type, char *target, int flags, aTKline **rettk);
|
||||
extern MODVAR int (*dospamfilter_viruschan)(aClient *sptr, aTKline *tk, int type);
|
||||
extern MODVAR void (*send_list)(aClient *cptr, int numsend);
|
||||
extern MODVAR char *(*stripbadwords)(char *str, ConfigItem_badword *start_bw, int *blocked);
|
||||
extern MODVAR char *(*stripbadwords_channel)(char *str, int *blocked);
|
||||
extern MODVAR char *(*stripbadwords_message)(char *str, int *blocked);
|
||||
extern MODVAR char *(*stripbadwords_quit)(char *str, int *blocked);
|
||||
extern MODVAR unsigned char *(*StripColors)(unsigned char *text);
|
||||
extern MODVAR const char *(*StripControlCodes)(unsigned char *text);
|
||||
extern MODVAR void (*spamfilter_build_user_string)(char *buf, char *nick, aClient *acptr);
|
||||
extern MODVAR int (*is_silenced)(aClient *sptr, aClient *acptr);
|
||||
extern MODVAR void (*send_protoctl_servers)(aClient *sptr, int response);
|
||||
extern MODVAR int (*verify_link)(aClient *cptr, aClient *sptr, char *servername, ConfigItem_link **link_out);
|
||||
extern MODVAR void (*send_server_message)(aClient *sptr);
|
||||
/* /Efuncs */
|
||||
extern MODVAR aMotd *opermotd, *svsmotd, *motd, *botmotd, *smotd;
|
||||
extern MODVAR aMotdFile opermotd, svsmotd, motd, botmotd, smotd, rules;
|
||||
extern MODVAR int max_connection_count;
|
||||
extern int add_listmode(Ban **list, aClient *cptr, aChannel *chptr, char *banid);
|
||||
extern int del_listmode(Ban **list, aChannel *chptr, char *banid);
|
||||
extern int Halfop_mode(long mode);
|
||||
extern void chanfloodtimer_add(aChannel *chptr, char mflag, long mbit, time_t when);
|
||||
extern void chanfloodtimer_del(aChannel *chptr, char mflag, long mbit);
|
||||
extern char *clean_ban_mask(char *, int, aClient *);
|
||||
extern void chanfloodtimer_stopchantimers(aChannel *chptr);
|
||||
extern int find_invex(aChannel *chptr, aClient *sptr);
|
||||
extern void DoMD5(unsigned char *mdout, unsigned char *src, unsigned long n);
|
||||
extern void DoMD5(unsigned char *mdout, const unsigned char *src, unsigned long n);
|
||||
extern char *md5hash(unsigned char *dst, const unsigned char *src, unsigned long n);
|
||||
#ifdef JOINTHROTTLE
|
||||
aJFlood *cmodej_addentry(aClient *cptr, aChannel *chptr);
|
||||
void cmodej_delentry(aJFlood *e);
|
||||
@@ -756,6 +775,7 @@ extern void charsys_addmultibyterange(char s1, char e1, char s2, char e2);
|
||||
extern void charsys_addallowed(char *s);
|
||||
extern void charsys_reset(void);
|
||||
extern MODVAR char langsinuse[4096];
|
||||
extern MODVAR char *casemapping[2];
|
||||
extern MODVAR aTKline *tklines[TKLISTLEN];
|
||||
extern char *cmdname_by_spamftarget(int target);
|
||||
extern int isipv6(struct IN_ADDR *addr);
|
||||
@@ -774,12 +794,14 @@ extern char *unreal_time_synch_error(void);
|
||||
extern int unreal_time_synch(int timeout);
|
||||
extern int extban_is_banned_helper(char *buf);
|
||||
extern char *getcloak(aClient *sptr);
|
||||
extern unsigned char param_to_slot_mapping[256];
|
||||
extern char *cm_getparameter(aChannel *chptr, char mode);
|
||||
extern void cm_putparameter(aChannel *chptr, char mode, char *str);
|
||||
extern void cm_freeparameter(aChannel *chptr, char mode);
|
||||
extern char *cm_getparameter_ex(void **p, char mode);
|
||||
extern void cm_putparameter_ex(void **p, char mode, char *str);
|
||||
extern void cm_freeparameter_ex(void **p, char mode, char *str);
|
||||
extern void kick_insecure_users(aChannel *);
|
||||
extern void free_motd(aMotd *m);
|
||||
extern int file_exists(char* file);
|
||||
extern void free_motd(aMotdFile *motd); /* s_serv.c */
|
||||
extern void fix_timers(void);
|
||||
extern char *chfl_to_sjoin_symbol(int s);
|
||||
extern char chfl_to_chanmode(int s);
|
||||
extern void add_pending_net(aClient *sptr, char *str);
|
||||
extern void free_pending_net(aClient *sptr);
|
||||
extern aPendingNet *find_pending_net_by_numeric_butone(int numeric, aClient *exempt);
|
||||
extern aClient *find_pending_net_duplicates(aClient *cptr, aClient **srv, int *numeric);
|
||||
extern aClient *find_non_pending_net_duplicates(aClient *cptr);
|
||||
|
||||
@@ -63,7 +63,9 @@ typedef struct hashentry {
|
||||
/*
|
||||
* Throttling
|
||||
*/
|
||||
#ifdef THROTTLING
|
||||
#define THROTTLING_HASH_SIZE 1019 /* prime number */
|
||||
#endif
|
||||
|
||||
|
||||
#define NullChn ((aChannel *)0)
|
||||
|
||||
@@ -58,29 +58,6 @@ extern __u_l inet_lnaof();
|
||||
#endif
|
||||
#undef __u_l
|
||||
|
||||
#ifndef HAVE_STRUCT_SOCKADDR_STORAGE
|
||||
#ifdef SOCKADDR_IN_HAS_LEN /* BSD style sockaddr_storage for BSD style
|
||||
sockaddr_in */
|
||||
struct sockaddr_storage {
|
||||
unsigned char ss_len;
|
||||
sa_family_t ss_family;
|
||||
char __ss_pad1[((sizeof(int64_t)) - sizeof(unsigned char) -
|
||||
sizeof(sa_family_t) )];
|
||||
int64_t __ss_align;
|
||||
char __ss_pad2[(128 - sizeof(unsigned char) - sizeof(sa_family_t) -
|
||||
((sizeof(int64_t)) - sizeof(unsigned char) -
|
||||
sizeof(sa_family_t)) - (sizeof(int64_t)))];
|
||||
};
|
||||
#else /* Linux style for everything else (for now) */
|
||||
struct sockaddr_storage
|
||||
{
|
||||
sa_family_t ss_family;
|
||||
u_int32_t __ss_align;
|
||||
char __ss_padding[(128 - (2 * sizeof (u_int32_t)))];
|
||||
};
|
||||
#endif /* SOCKADDR_IN_HAS_LEN */
|
||||
#endif /* HAVE_STRUCT_SOCKADDR_STORAGE */
|
||||
|
||||
#ifndef INADDR_NONE
|
||||
#define INADDR_NONE 0xffffffff
|
||||
#endif
|
||||
|
||||
+1
-1
@@ -22,7 +22,7 @@ typedef struct {
|
||||
} MD5_CTX;
|
||||
|
||||
extern void MD5_Init(MD5_CTX *ctx);
|
||||
extern void MD5_Update(MD5_CTX *ctx, void *data, unsigned long size);
|
||||
extern void MD5_Update(MD5_CTX *ctx, const void *data, unsigned long size);
|
||||
extern void MD5_Final(unsigned char *result, MD5_CTX *ctx);
|
||||
|
||||
#endif
|
||||
|
||||
+57
-61
@@ -22,9 +22,9 @@
|
||||
#define MODULES_H
|
||||
#include "types.h"
|
||||
#define MAXCUSTOMHOOKS 30
|
||||
#define MAXHOOKTYPES 150
|
||||
#define MAXHOOKTYPES 100
|
||||
#define MAXCALLBACKS 30
|
||||
#define MAXEFUNCTIONS 100
|
||||
#define MAXEFUNCTIONS 60
|
||||
#if defined(_WIN32)
|
||||
#define MOD_EXTENSION "dll"
|
||||
#define DLLFUNC _declspec(dllexport)
|
||||
@@ -110,6 +110,7 @@ typedef struct {
|
||||
#define MOBJ_CALLBACK 0x0200
|
||||
#define MOBJ_ISUPPORT 0x0400
|
||||
#define MOBJ_EFUNCTION 0x0800
|
||||
#define MOBJ_CMODE 0x1000
|
||||
|
||||
typedef struct {
|
||||
long mode;
|
||||
@@ -135,7 +136,6 @@ typedef struct {
|
||||
#define EXSJ_SAME 0 /* Parameters are the same */
|
||||
#define EXSJ_WEWON 1 /* We won! w00t */
|
||||
#define EXSJ_THEYWON 2 /* They won :( */
|
||||
#define EXSJ_MERGE 3 /* Merging of modes.. neither won nor lost (merged params are in 'our' on return) */
|
||||
|
||||
/* return values for EXCHK_ACCESS*: */
|
||||
#define EX_DENY 0 /* Disallowed, except in case of operoverride */
|
||||
@@ -150,6 +150,13 @@ typedef struct {
|
||||
*/
|
||||
typedef unsigned long Cmode_t;
|
||||
|
||||
#define EXTCM_PAR_HEADER struct _CmodeParam *prev, *next; char flag;
|
||||
|
||||
typedef struct _CmodeParam {
|
||||
EXTCM_PAR_HEADER
|
||||
/** other fields are placed after this header in your own paramstruct */
|
||||
} CmodeParam;
|
||||
|
||||
typedef struct {
|
||||
/** mode character (like 'Z') */
|
||||
char flag;
|
||||
@@ -175,40 +182,36 @@ typedef struct {
|
||||
/** Store parameter in memory for channel.
|
||||
* aExtCMtableParam *: the list (usually chptr->mode.extmodeparams).
|
||||
* char *: the parameter.
|
||||
* RETURNS: nothing! ;p
|
||||
* return value: the head of the list, RTFS if you wonder why.
|
||||
* design notes: only alloc a new paramstruct if you need to, search for
|
||||
* any current one first (like in case of mode +y 5 and then +y 6 later without -y).
|
||||
*/
|
||||
void *(*put_param)(void *, char *);
|
||||
CmodeParam * (*put_param)(CmodeParam *, char *);
|
||||
|
||||
/** Get readable string version" of the stored parameter.
|
||||
* void *: the param data
|
||||
* aExtCMtableParam *: the list (usually chptr->mode.extmodeparams).
|
||||
* return value: a pointer to the string (temp. storage)
|
||||
*/
|
||||
char * (*get_param)(void *);
|
||||
char * (*get_param)(CmodeParam *);
|
||||
|
||||
/** Convert input parameter to output.
|
||||
* Like +l "1aaa" becomes "1".
|
||||
* char *: the input parameter.
|
||||
* aClient *: the client that the mode request came from:
|
||||
* 1. Can be NULL (eg: if called for set::modes-on-join
|
||||
* 2. Probably only used in rare cases, see also next remark
|
||||
* 3. ERRORS SHOULD NOT BE SENT BY conv_param BUT BY is_ok!
|
||||
* return value: pointer to output string (temp. storage)
|
||||
*/
|
||||
char * (*conv_param)(char *, aClient *);
|
||||
char * (*conv_param)(char *);
|
||||
|
||||
/** free and remove parameter from list.
|
||||
* aExtCMtableParam *: the list (usually chptr->mode.extmodeparams).
|
||||
*/
|
||||
void (*free_param)(void *);
|
||||
void (*free_param)(CmodeParam *);
|
||||
|
||||
/** duplicate a struct and return a pointer to duplicate.
|
||||
* This is usually just a malloc + memcpy.
|
||||
* aExtCMtableParam *: source struct itself (no list).
|
||||
* return value: pointer to newly allocated struct.
|
||||
*/
|
||||
void * (*dup_struct)(void *);
|
||||
CmodeParam * (*dup_struct)(CmodeParam *);
|
||||
|
||||
/** Compares 2 parameters and decides who wins the sjoin fight.
|
||||
* When syncing channel modes (m_sjoin) a parameter conflict may occur, things like
|
||||
@@ -219,43 +222,35 @@ typedef struct {
|
||||
* aExtCMtableParam *: our parameter
|
||||
* aExtCMtableParam *: their parameter
|
||||
*/
|
||||
int (*sjoin_check)(aChannel *, void *, void *);
|
||||
int (*sjoin_check)(aChannel *, CmodeParam *, CmodeParam *);
|
||||
|
||||
/* Slot#.. Can be used instead of GETPARAMSLOT() */
|
||||
int slot;
|
||||
/** Local channel mode? Prevents remote servers from setting/unsetting this */
|
||||
char local;
|
||||
|
||||
/** Is this mode being unloaded?
|
||||
* This is set to 1 if the chanmode module providing this mode is unloaded
|
||||
* and we are waiting to see if in our new round of loads a "new" chanmode
|
||||
* module will popup to take this mode. This only happens during a rehash,
|
||||
* should never be 0 outside an internal rehash.
|
||||
*/
|
||||
char unloaded;
|
||||
|
||||
/** Module owner */
|
||||
Module *owner;
|
||||
} Cmode;
|
||||
|
||||
typedef struct {
|
||||
char flag;
|
||||
int paracount;
|
||||
int (*is_ok)(aClient *,aChannel *, char *para, int, int);
|
||||
void * (*put_param)(void *, char *);
|
||||
char * (*get_param)(void *);
|
||||
char * (*conv_param)(char *, aClient *);
|
||||
void (*free_param)(void *);
|
||||
void * (*dup_struct)(void *);
|
||||
int (*sjoin_check)(aChannel *, void *, void *);
|
||||
CmodeParam * (*put_param)(CmodeParam *, char *);
|
||||
char * (*get_param)(CmodeParam *);
|
||||
char * (*conv_param)(char *);
|
||||
void (*free_param)(CmodeParam *);
|
||||
CmodeParam * (*dup_struct)(CmodeParam *);
|
||||
int (*sjoin_check)(aChannel *, CmodeParam *, CmodeParam *);
|
||||
char local;
|
||||
} CmodeInfo;
|
||||
|
||||
/* Get a slot# for a param.. eg... GETPARAMSLOT('k') ;p */
|
||||
#define GETPARAMSLOT(x) param_to_slot_mapping[x]
|
||||
|
||||
/* Get a cmode handler by slot.. for example for [dont use this]: GETPARAMHANDLERBYSLOT(5)->get_param(chptr) */
|
||||
#define GETPARAMHANDLERBYSLOT(slotid) ParamTable[slotid]
|
||||
|
||||
/* Same as GETPARAMHANDLERBYSLOT but then by letter.. like [dont use this]: GETPARAMHANDLERBYSLOT('k')->get_param(chptr) */
|
||||
#define GETPARAMHANDLERBYLETTER(x) ParamTable[GETPARAMSLOT(x)]
|
||||
|
||||
/* Get paramter data struct.. for like: ((aModejEntry *)GETPARASTRUCT(chptr, 'j'))->t */
|
||||
#define GETPARASTRUCT(mychptr, mychar) chptr->mode.extmodeparams[GETPARAMSLOT(mychar)]
|
||||
|
||||
#define GETPARASTRUCTEX(v, mychar) v[GETPARAMSLOT(mychar)]
|
||||
|
||||
#define CMP_GETSLOT(x) GETPARAMSLOT(x)
|
||||
#define CMP_GETHANDLERBYSLOT(x) GETPARAMHANDLERBYSLOT(x)
|
||||
#define CMP_GETHANDLERBYLETTER(x) GETPARAMHANDLERBYLETTER(x)
|
||||
#define CMP_GETSTRUCT(x,y) GETPARASTRUCT(x,y)
|
||||
|
||||
#endif
|
||||
|
||||
/*** Extended bans ***/
|
||||
@@ -266,10 +261,11 @@ typedef struct {
|
||||
|
||||
#define EXBTYPE_BAN 0 /* a ban */
|
||||
#define EXBTYPE_EXCEPT 1 /* an except */
|
||||
#define EXBTYPE_INVEX 2 /* an invite exception */
|
||||
|
||||
#define EXTBANTABLESZ 32
|
||||
|
||||
typedef enum ExtbanOptions { EXTBOPT_CHSVSMODE=0x1 } ExtbanOptions;
|
||||
typedef enum ExtbanOptions { EXTBOPT_CHSVSMODE=0x1, EXTBOPT_ACTMODIFIER=0x2, EXTBOPT_NOSTACKCHILD=0x4, EXTBOPT_INVEX=0x8 } ExtbanOptions;
|
||||
|
||||
typedef struct {
|
||||
/** extbans module */
|
||||
@@ -355,6 +351,7 @@ typedef struct _ModuleObject {
|
||||
Callback *callback;
|
||||
Efunction *efunction;
|
||||
Isupport *isupport;
|
||||
Cmode *cmode;
|
||||
} object;
|
||||
} ModuleObject;
|
||||
|
||||
@@ -547,7 +544,6 @@ Isupport *IsupportFind(const char *token);
|
||||
#define add_HookX(hooktype, func1, func2, func3) HookAddMain(NULL, hooktype, func1, func2, func3)
|
||||
|
||||
Hook *HookAddMain(Module *module, int hooktype, int (*intfunc)(), void (*voidfunc)(), char *(*pcharfunc)());
|
||||
Hook *HookAddCfg(Module *module, int hooktype, int (*intfunc)(ConfigFile *cf, ConfigEntry *ce, int type, int *errs));
|
||||
Hook *HookDel(Hook *hook);
|
||||
|
||||
Hooktype *HooktypeAdd(Module *module, char *string, int *type);
|
||||
@@ -603,8 +599,7 @@ extern Callback *CallbackDel(Callback *cb);
|
||||
extern Efunction *EfunctionAddMain(Module *module, int eftype, int (*intfunc)(), void (*voidfunc)(), void *(*pvoidfunc)(), char *(*pcharfunc)());
|
||||
extern Efunction *EfunctionDel(Efunction *cb);
|
||||
|
||||
Command *CommandAdd(Module *module, char *cmd, char *tok, int (*func)(aClient*, aClient*, int, char**), unsigned char params, int flags);
|
||||
Command *CommandAdd_Alias(Module *module, char *cmd, char *tok, int (*func)(aClient*, aClient*, int, char**, char *sentcmd), unsigned char params, int flags);
|
||||
Command *CommandAdd(Module *module, char *cmd, char *tok, int (*func)(), unsigned char params, int flags);
|
||||
void CommandDel(Command *command);
|
||||
int CommandExists(char *name);
|
||||
Cmdoverride *CmdoverrideAdd(Module *module, char *cmd, iFP function);
|
||||
@@ -660,15 +655,11 @@ int CallCmdoverride(Cmdoverride *ovr, aClient *cptr, aClient *sptr, int parc, ch
|
||||
#define HOOKTYPE_REMOTE_KICK 45
|
||||
#define HOOKTYPE_LOCAL_SPAMFILTER 46
|
||||
#define HOOKTYPE_SILENCED 47
|
||||
#define HOOKTYPE_CAN_JOIN 48
|
||||
#define HOOKTYPE_CAN_SEND 49
|
||||
#define HOOKTYPE_CLEANUP_CLIENT 50
|
||||
#define HOOKTYPE_CLEANUP_USER 51
|
||||
#define HOOKTYPE_CLEANUP_USER2 52
|
||||
#define HOOKTYPE_PRE_CHANMSG 53
|
||||
#define HOOKTYPE_KNOCK 54
|
||||
#define HOOKTYPE_MODECHAR_FIXME 55
|
||||
#define HOOKTYPE_CAN_KICK 56
|
||||
#define HOOKTYPE_POST_SERVER_CONNECT 48
|
||||
#define HOOKTYPE_RAWPACKET_IN 49
|
||||
#define HOOKTYPE_LOCAL_NICKPASS 50
|
||||
#define HOOKTYPE_PACKET 51
|
||||
#define HOOKTYPE_HANDSHAKE 52
|
||||
|
||||
/* Hook return values */
|
||||
#define HOOK_CONTINUE 0
|
||||
@@ -708,11 +699,16 @@ int CallCmdoverride(Cmdoverride *ovr, aClient *cptr, aClient *sptr, int parc, ch
|
||||
#define EFUNC_DOSPAMFILTER_VIRUSCHAN 25
|
||||
#define EFUNC_FIND_TKLINE_MATCH_ZAP_EX 26
|
||||
#define EFUNC_SEND_LIST 27
|
||||
#define EFUNC_STRIPBADWORDS 28
|
||||
#define EFUNC_STRIPCOLORS 29
|
||||
#define EFUNC_STRIPCONTROLCODES 30
|
||||
#define EFUNC_SPAMFILTER_BUILD_USER_STRING 31
|
||||
#define EFUNC_IS_SILENCED 32
|
||||
#define EFUNC_STRIPBADWORDS_CHANNEL 28
|
||||
#define EFUNC_STRIPBADWORDS_MESSAGE 29
|
||||
#define EFUNC_STRIPBADWORDS_QUIT 30
|
||||
#define EFUNC_STRIPCOLORS 31
|
||||
#define EFUNC_STRIPCONTROLCODES 32
|
||||
#define EFUNC_SPAMFILTER_BUILD_USER_STRING 33
|
||||
#define EFUNC_IS_SILENCED 34
|
||||
#define EFUNC_SEND_PROTOCTL_SERVERS 35
|
||||
#define EFUNC_VERIFY_LINK 36
|
||||
#define EFUNC_SEND_SERVER_MESSAGE 37
|
||||
|
||||
/* Module flags */
|
||||
#define MODFLAG_NONE 0x0000
|
||||
|
||||
@@ -1,388 +0,0 @@
|
||||
/*
|
||||
* ++Copyright++ 1983, 1989, 1993
|
||||
* -
|
||||
* Copyright (c) 1983, 1989, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS `AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
* -
|
||||
* Portions Copyright (c) 1993 by Digital Equipment Corporation.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies, and that
|
||||
* the name of Digital Equipment Corporation not be used in advertising or
|
||||
* publicity pertaining to distribution of the document or software without
|
||||
* specific, written prior permission.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
|
||||
* WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT
|
||||
* CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
|
||||
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
|
||||
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
|
||||
* ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
|
||||
* SOFTWARE.
|
||||
* -
|
||||
* Portions Copyright (c) 1995 by International Business Machines, Inc.
|
||||
*
|
||||
* International Business Machines, Inc. (hereinafter called IBM) grants
|
||||
* permission under its copyrights to use, copy, modify, and distribute this
|
||||
* Software with or without fee, provided that the above copyright notice and
|
||||
* all paragraphs of this notice appear in all copies, and that the name of IBM
|
||||
* not be used in connection with the marketing of any product incorporating
|
||||
* the Software or modifications thereof, without specific, written prior
|
||||
* permission.
|
||||
*
|
||||
* To the extent it has a right to do so, IBM grants an immunity from suit
|
||||
* under its patents, if any, for the use, sale or manufacture of products to
|
||||
* the extent that such products are used for performing Domain Name System
|
||||
* dynamic updates in TCP/IP networks by means of the Software. No immunity is
|
||||
* granted for any product per se or for any other function of any product.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", AND IBM DISCLAIMS ALL WARRANTIES,
|
||||
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. IN NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL,
|
||||
* DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER ARISING
|
||||
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE, EVEN
|
||||
* IF IBM IS APPRISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* --Copyright--
|
||||
*/
|
||||
|
||||
/*
|
||||
* @(#)nameser.h 8.1 (Berkeley) 6/2/93
|
||||
* $NetBSD: nameser.h,v 1.14 2000/08/09 14:41:00 itojun Exp $
|
||||
*/
|
||||
|
||||
#ifndef _ARPA_NAMESER_H_
|
||||
#define _ARPA_NAMESER_H_
|
||||
|
||||
#ifdef PARAMH
|
||||
#include <sys/param.h>
|
||||
#endif
|
||||
|
||||
#ifdef _AUX_SOURCE
|
||||
# include <sys/types.h>
|
||||
#endif
|
||||
|
||||
/*
|
||||
* revision information. this is the release date in YYYYMMDD format.
|
||||
* it can change every day so the right thing to do with it is use it
|
||||
* in preprocessor commands such as "#if (__BIND > 19931104)". do not
|
||||
* compare for equality; rather, use it to determine whether your resolver
|
||||
* is new enough to contain a certain feature.
|
||||
*/
|
||||
|
||||
#define __BIND 19960801 /* interface version stamp */
|
||||
|
||||
/*
|
||||
* Define constants based on rfc883
|
||||
*/
|
||||
#define PACKETSZ 512 /* maximum packet size */
|
||||
#define MAXDNAME 1025 /* maximum presentation domain name */
|
||||
#define MAXCDNAME 255 /* maximum compressed domain name */
|
||||
#define MAXLABEL 63 /* maximum length of domain label */
|
||||
#define HFIXEDSZ 12 /* #/bytes of fixed data in header */
|
||||
#define QFIXEDSZ 4 /* #/bytes of fixed data in query */
|
||||
#define RRFIXEDSZ 10 /* #/bytes of fixed data in r record */
|
||||
#define INT32SZ 4 /* for systems without 32-bit ints */
|
||||
#define INT16SZ 2 /* for systems without 16-bit ints */
|
||||
#define INADDRSZ 4 /* IPv4 T_A */
|
||||
#define IN6ADDRSZ 16 /* IPv6 T_AAAA */
|
||||
|
||||
/*
|
||||
* Internet nameserver port number
|
||||
*/
|
||||
#define NAMESERVER_PORT 53
|
||||
|
||||
/*
|
||||
* Currently defined opcodes
|
||||
*/
|
||||
#define QUERY 0x0 /* standard query */
|
||||
#define IQUERY 0x1 /* inverse query */
|
||||
#define STATUS 0x2 /* nameserver status query */
|
||||
/*#define xxx 0x3*/ /* 0x3 reserved */
|
||||
#define NS_NOTIFY_OP 0x4 /* notify secondary of SOA change */
|
||||
/*
|
||||
* Currently defined response codes
|
||||
*/
|
||||
#define NOERROR 0 /* no error */
|
||||
#define FORMERR 1 /* format error */
|
||||
#define SERVFAIL 2 /* server failure */
|
||||
#define NXDOMAIN 3 /* non existent domain */
|
||||
#define NOTIMP 4 /* not implemented */
|
||||
#define REFUSED 5 /* query refused */
|
||||
|
||||
/*
|
||||
* Type values for resources and queries
|
||||
*/
|
||||
#define T_A 1 /* host address */
|
||||
#define T_NS 2 /* authoritative server */
|
||||
#define T_MD 3 /* mail destination */
|
||||
#define T_MF 4 /* mail forwarder */
|
||||
#define T_CNAME 5 /* canonical name */
|
||||
#define T_SOA 6 /* start of authority zone */
|
||||
#define T_MB 7 /* mailbox domain name */
|
||||
#define T_MG 8 /* mail group member */
|
||||
#define T_MR 9 /* mail rename name */
|
||||
#define T_NULL 10 /* null resource record */
|
||||
#define T_WKS 11 /* well known service */
|
||||
#define T_PTR 12 /* domain name pointer */
|
||||
#define T_HINFO 13 /* host information */
|
||||
#define T_MINFO 14 /* mailbox information */
|
||||
#define T_MX 15 /* mail routing information */
|
||||
#define T_TXT 16 /* text strings */
|
||||
#define T_RP 17 /* responsible person */
|
||||
#define T_AFSDB 18 /* AFS cell database */
|
||||
#define T_X25 19 /* X_25 calling address */
|
||||
#define T_ISDN 20 /* ISDN calling address */
|
||||
#define T_RT 21 /* router */
|
||||
#define T_NSAP 22 /* NSAP address */
|
||||
#define T_NSAP_PTR 23 /* reverse NSAP lookup (deprecated) */
|
||||
#define T_SIG 24 /* security signature */
|
||||
#define T_KEY 25 /* security key */
|
||||
#define T_PX 26 /* X.400 mail mapping */
|
||||
#define T_GPOS 27 /* geographical position (withdrawn) */
|
||||
#define T_AAAA 28 /* IP6 Address */
|
||||
#define T_LOC 29 /* Location Information */
|
||||
#define T_NXT 30 /* Next Valid Name in Zone */
|
||||
#define T_EID 31 /* Endpoint identifier */
|
||||
#define T_NIMLOC 32 /* Nimrod locator */
|
||||
#define T_SRV 33 /* Server selection */
|
||||
#define T_ATMA 34 /* ATM Address */
|
||||
#define T_NAPTR 35 /* Naming Authority PoinTeR */
|
||||
#define T_OPT 41 /* OPT pseudo-RR, RFC2761 */
|
||||
/* non standard */
|
||||
#define T_UINFO 100 /* user (finger) information */
|
||||
#define T_UID 101 /* user ID */
|
||||
#define T_GID 102 /* group ID */
|
||||
#define T_UNSPEC 103 /* Unspecified format (binary data) */
|
||||
/* Query type values which do not appear in resource records */
|
||||
#define T_IXFR 251 /* incremental zone transfer */
|
||||
#define T_AXFR 252 /* transfer zone of authority */
|
||||
#define T_MAILB 253 /* transfer mailbox records */
|
||||
#define T_MAILA 254 /* transfer mail agent records */
|
||||
#define T_ANY 255 /* wildcard match */
|
||||
|
||||
/*
|
||||
* Values for class field
|
||||
*/
|
||||
|
||||
#define C_IN 1 /* the arpa internet */
|
||||
#define C_CHAOS 3 /* for chaos net (MIT) */
|
||||
#define C_HS 4 /* for Hesiod name server (MIT) (XXX) */
|
||||
/* Query class values which do not appear in resource records */
|
||||
#define C_ANY 255 /* wildcard match */
|
||||
|
||||
/*
|
||||
* Flags field of the KEY RR rdata
|
||||
*/
|
||||
#define KEYFLAG_TYPEMASK 0xC000 /* Mask for "type" bits */
|
||||
#define KEYFLAG_TYPE_AUTH_CONF 0x0000 /* Key usable for both */
|
||||
#define KEYFLAG_TYPE_CONF_ONLY 0x8000 /* Key usable for confidentiality */
|
||||
#define KEYFLAG_TYPE_AUTH_ONLY 0x4000 /* Key usable for authentication */
|
||||
#define KEYFLAG_TYPE_NO_KEY 0xC000 /* No key usable for either; no key */
|
||||
/* The type bits can also be interpreted independently, as single bits: */
|
||||
#define KEYFLAG_NO_AUTH 0x8000 /* Key not usable for authentication */
|
||||
#define KEYFLAG_NO_CONF 0x4000 /* Key not usable for confidentiality */
|
||||
|
||||
#define KEYFLAG_EXPERIMENTAL 0x2000 /* Security is *mandatory* if bit=0 */
|
||||
#define KEYFLAG_RESERVED3 0x1000 /* reserved - must be zero */
|
||||
#define KEYFLAG_RESERVED4 0x0800 /* reserved - must be zero */
|
||||
#define KEYFLAG_USERACCOUNT 0x0400 /* key is assoc. with a user acct */
|
||||
#define KEYFLAG_ENTITY 0x0200 /* key is assoc. with entity eg host */
|
||||
#define KEYFLAG_ZONEKEY 0x0100 /* key is zone key for the zone named */
|
||||
#define KEYFLAG_IPSEC 0x0080 /* key is for IPSEC use (host or user)*/
|
||||
#define KEYFLAG_EMAIL 0x0040 /* key is for email (MIME security) */
|
||||
#define KEYFLAG_RESERVED10 0x0020 /* reserved - must be zero */
|
||||
#define KEYFLAG_RESERVED11 0x0010 /* reserved - must be zero */
|
||||
#define KEYFLAG_SIGNATORYMASK 0x000F /* key can sign DNS RR's of same name */
|
||||
|
||||
#define KEYFLAG_RESERVED_BITMASK ( KEYFLAG_RESERVED3 | \
|
||||
KEYFLAG_RESERVED4 | \
|
||||
KEYFLAG_RESERVED10| KEYFLAG_RESERVED11)
|
||||
|
||||
/* The Algorithm field of the KEY and SIG RR's is an integer, {1..254} */
|
||||
#define ALGORITHM_MD5RSA 1 /* MD5 with RSA */
|
||||
#define ALGORITHM_EXPIRE_ONLY 253 /* No alg, no security */
|
||||
#define ALGORITHM_PRIVATE_OID 254 /* Key begins with OID indicating alg */
|
||||
|
||||
/* Signatures */
|
||||
/* Size of a mod or exp in bits */
|
||||
#define MIN_MD5RSA_KEY_PART_BITS 512
|
||||
#define MAX_MD5RSA_KEY_PART_BITS 2552
|
||||
/* Total of binary mod and exp, bytes */
|
||||
#define MAX_MD5RSA_KEY_BYTES ((MAX_MD5RSA_KEY_PART_BITS+7/8)*2+3)
|
||||
/* Max length of text sig block */
|
||||
#define MAX_KEY_BASE64 (((MAX_MD5RSA_KEY_BYTES+2)/3)*4)
|
||||
|
||||
/*
|
||||
* Status return codes for T_UNSPEC conversion routines
|
||||
*/
|
||||
#define CONV_SUCCESS 0
|
||||
#define CONV_OVERFLOW (-1)
|
||||
#define CONV_BADFMT (-2)
|
||||
#define CONV_BADCKSUM (-3)
|
||||
#define CONV_BADBUFLEN (-4)
|
||||
|
||||
#ifndef BYTE_ORDER
|
||||
#if (BSD >= 199103)
|
||||
# include <machine/endian.h>
|
||||
#else
|
||||
#ifdef linux
|
||||
# include <endian.h>
|
||||
#else
|
||||
#define LITTLE_ENDIAN 1234 /* least-significant byte first (vax, pc) */
|
||||
#define BIG_ENDIAN 4321 /* most-significant byte first (IBM, net) */
|
||||
#define PDP_ENDIAN 3412 /* LSB first in word, MSW first in long (pdp)*/
|
||||
|
||||
#if defined(vax) || defined(ns32000) || defined(sun386) || defined(i386) || \
|
||||
defined(MIPSEL) || defined(_MIPSEL) || defined(BIT_ZERO_ON_RIGHT) || \
|
||||
defined(__alpha__) || defined(__alpha) || defined(__vax__) || defined(_WIN32)
|
||||
#define BYTE_ORDER LITTLE_ENDIAN
|
||||
#endif
|
||||
|
||||
#if defined(sel) || defined(pyr) || defined(mc68000) || defined(sparc) || \
|
||||
defined(is68k) || defined(tahoe) || defined(ibm032) || defined(ibm370) || \
|
||||
defined(MIPSEB) || defined(_MIPSEB) || defined(_IBMR2) || defined(DGUX) ||\
|
||||
defined(apollo) || defined(__convex__) || defined(_CRAY) || \
|
||||
defined(__hppa) || defined(__hp9000) || \
|
||||
defined(__hp9000s300) || defined(__hp9000s700) || \
|
||||
defined (BIT_ZERO_ON_LEFT) || defined(m68k)
|
||||
#define BYTE_ORDER BIG_ENDIAN
|
||||
#endif
|
||||
#endif /* linux */
|
||||
#endif /* BSD */
|
||||
#endif /* BYTE_ORDER */
|
||||
|
||||
#if !defined(BYTE_ORDER) || \
|
||||
(BYTE_ORDER != BIG_ENDIAN && BYTE_ORDER != LITTLE_ENDIAN && \
|
||||
BYTE_ORDER != PDP_ENDIAN)
|
||||
/* you must determine what the correct bit order is for
|
||||
* your compiler - the next line is an intentional error
|
||||
* which will force your compiles to bomb until you fix
|
||||
* the above macros.
|
||||
*/
|
||||
#error "Undefined or invalid BYTE_ORDER";
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Structure for query header. The order of the fields is machine- and
|
||||
* compiler-dependent, depending on the byte/bit order and the layout
|
||||
* of bit fields. We use bit fields only in int variables, as this
|
||||
* is all ANSI requires. This requires a somewhat confusing rearrangement.
|
||||
*/
|
||||
|
||||
typedef struct {
|
||||
unsigned id :16; /* query identification number */
|
||||
#if BYTE_ORDER == BIG_ENDIAN
|
||||
/* fields in third byte */
|
||||
unsigned qr: 1; /* response flag */
|
||||
unsigned opcode: 4; /* purpose of message */
|
||||
unsigned aa: 1; /* authoritive answer */
|
||||
unsigned tc: 1; /* truncated message */
|
||||
unsigned rd: 1; /* recursion desired */
|
||||
/* fields in fourth byte */
|
||||
unsigned ra: 1; /* recursion available */
|
||||
unsigned unused :1; /* unused bits (MBZ as of 4.9.3a3) */
|
||||
unsigned ad: 1; /* authentic data from named */
|
||||
unsigned cd: 1; /* checking disabled by resolver */
|
||||
unsigned rcode :4; /* response code */
|
||||
#endif
|
||||
#if BYTE_ORDER == LITTLE_ENDIAN || BYTE_ORDER == PDP_ENDIAN
|
||||
/* fields in third byte */
|
||||
unsigned rd :1; /* recursion desired */
|
||||
unsigned tc :1; /* truncated message */
|
||||
unsigned aa :1; /* authoritive answer */
|
||||
unsigned opcode :4; /* purpose of message */
|
||||
unsigned qr :1; /* response flag */
|
||||
/* fields in fourth byte */
|
||||
unsigned rcode :4; /* response code */
|
||||
unsigned cd: 1; /* checking disabled by resolver */
|
||||
unsigned ad: 1; /* authentic data from named */
|
||||
unsigned unused :1; /* unused bits (MBZ as of 4.9.3a3) */
|
||||
unsigned ra :1; /* recursion available */
|
||||
#endif
|
||||
/* remaining bytes */
|
||||
unsigned qdcount :16; /* number of question entries */
|
||||
unsigned ancount :16; /* number of answer entries */
|
||||
unsigned nscount :16; /* number of authority entries */
|
||||
unsigned arcount :16; /* number of resource entries */
|
||||
} HEADER;
|
||||
|
||||
/*
|
||||
* Defines for handling compressed domain names
|
||||
*/
|
||||
#define INDIR_MASK 0xc0
|
||||
|
||||
|
||||
/*
|
||||
* Inline versions of get/put short/long. Pointer is advanced.
|
||||
*
|
||||
* These macros demonstrate the property of C whereby it can be
|
||||
* portable or it can be elegant but rarely both.
|
||||
*/
|
||||
#define GETSHORT(s, cp) { \
|
||||
register const u_char *t_cp = (const u_char *)(cp); \
|
||||
(s) = ((const u_int16_t)t_cp[0] << 8) \
|
||||
| ((const u_int16_t)t_cp[1]) \
|
||||
; \
|
||||
(cp) += INT16SZ; \
|
||||
}
|
||||
|
||||
#define GETLONG(l, cp) { \
|
||||
register const u_char *t_cp = (const u_char *)(cp); \
|
||||
(l) = ((const u_int32_t)t_cp[0] << 24) \
|
||||
| ((const u_int32_t)t_cp[1] << 16) \
|
||||
| ((const u_int32_t)t_cp[2] << 8) \
|
||||
| ((const u_int32_t)t_cp[3]) \
|
||||
; \
|
||||
(cp) += INT32SZ; \
|
||||
}
|
||||
|
||||
#define PUTSHORT(s, cp) { \
|
||||
register u_int16_t t_s = (u_int16_t)(s); \
|
||||
register u_char *t_cp = (u_char *)(cp); \
|
||||
*t_cp++ = (u_int32_t)t_s >> 8; \
|
||||
*t_cp = t_s; \
|
||||
(cp) += INT16SZ; \
|
||||
}
|
||||
|
||||
#define PUTLONG(l, cp) { \
|
||||
register u_int32_t t_l = (u_int32_t)(l); \
|
||||
register u_char *t_cp = (u_char *)(cp); \
|
||||
*t_cp++ = t_l >> 24; \
|
||||
*t_cp++ = t_l >> 16; \
|
||||
*t_cp++ = t_l >> 8; \
|
||||
*t_cp = t_l; \
|
||||
(cp) += INT32SZ; \
|
||||
}
|
||||
|
||||
#endif /* _ARPA_NAMESER_H_ */
|
||||
|
||||
+6
-1
@@ -84,7 +84,6 @@
|
||||
#define ERR_SUMMONDISABLED 445
|
||||
#define ERR_USERSDISABLED 446
|
||||
#define ERR_NONICKCHANGE 447
|
||||
#define ERR_FORBIDDENCHANNEL 448
|
||||
|
||||
|
||||
#define ERR_NOTREGISTERED 451
|
||||
@@ -337,6 +336,7 @@
|
||||
* These are also in the range 600-799.
|
||||
*/
|
||||
|
||||
#define RPL_REAWAY 597
|
||||
#define RPL_GONEAWAY 598
|
||||
#define RPL_NOTAWAY 599
|
||||
#define RPL_LOGON 600
|
||||
@@ -361,8 +361,13 @@
|
||||
|
||||
#define RPL_SPAMCMDFWD 659
|
||||
|
||||
#define RPL_STARTTLS 670
|
||||
|
||||
#define RPL_WHOISSECURE 671
|
||||
|
||||
#define ERR_CANNOTDOCOMMAND 972
|
||||
#define ERR_CANNOTCHANGECHANMODE 974
|
||||
|
||||
#define ERR_STARTTLS 691
|
||||
|
||||
#define ERR_NUMERICERR 999
|
||||
|
||||
+4
-2
@@ -26,6 +26,9 @@
|
||||
int sendmodeto_one(aClient *cptr, char *from, char *name, char *mode, char *param, TS creationtime);
|
||||
void make_cmodestr(void);
|
||||
|
||||
/* lusers.c */
|
||||
void init_ircstats(void);
|
||||
|
||||
/* match.c */
|
||||
char *collapse(char *pattern);
|
||||
|
||||
@@ -55,8 +58,7 @@ char *my_itoa(int i);
|
||||
/* s_serv.c */
|
||||
void load_tunefile(void);
|
||||
extern EVENT(save_tunefile);
|
||||
aMotd *read_rules(char *filename);
|
||||
aMotd *read_motd(char *filename);
|
||||
extern void read_motd(const char *filename, aMotdFile *motd);
|
||||
|
||||
/* s_user.c */
|
||||
int check_for_target_limit(aClient *sptr, void *target, const char *name);
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
/* OMG... OMG! WHAT AN INCLUDE HORROR !!! */
|
||||
#undef strcasecmp
|
||||
#undef strncasecmp
|
||||
#ifdef WIN32
|
||||
#include <win32/ares/setup.h>
|
||||
#endif
|
||||
#include <ares.h>
|
||||
#include <ares_version.h>
|
||||
#undef strcasecmp
|
||||
|
||||
+330
-204
@@ -1,178 +1,107 @@
|
||||
/* config.h.in. Generated automatically from configure.in by autoheader. */
|
||||
/* include/setup.h.in. Generated from configure.ac by autoheader. */
|
||||
|
||||
/* Define if using alloca.c. */
|
||||
#undef C_ALLOCA
|
||||
/* Define if you have BSD signals */
|
||||
#undef BSD_RELIABLE_SIGNALS
|
||||
|
||||
/* Define to empty if the keyword does not work. */
|
||||
#undef const
|
||||
/* Set to the bufferpool size you want */
|
||||
#undef BUFFERPOOL
|
||||
|
||||
/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems.
|
||||
This function is required for alloca.c support on those systems. */
|
||||
/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
|
||||
systems. This function is required for `alloca.c' support on those systems.
|
||||
*/
|
||||
#undef CRAY_STACKSEG_END
|
||||
|
||||
/* Define to `int' if <sys/types.h> doesn't define. */
|
||||
#undef gid_t
|
||||
/* Define to 1 if using `alloca.c'. */
|
||||
#undef C_ALLOCA
|
||||
|
||||
/* Define if you have <sys/wait.h> that is POSIX.1 compatible. */
|
||||
#undef HAVE_SYS_WAIT_H
|
||||
/* The default permissions for configuration files. Set to 0 to prevent
|
||||
unrealircd from calling chmod() on the files. */
|
||||
#undef DEFAULT_PERMISSIONS
|
||||
|
||||
/* Define if you have the vprintf function. */
|
||||
#undef HAVE_VPRINTF
|
||||
/* Define to disable extended ban stacking (~q:~c:\#chan, etc) */
|
||||
#undef DISABLE_STACKED_EXTBANS
|
||||
|
||||
/* Define as __inline if that's what the C compiler calls it. */
|
||||
#undef inline
|
||||
/* Define if you want to disable /set* and /chg* */
|
||||
#undef DISABLE_USERMOD
|
||||
|
||||
/* Define if the `setpgrp' function takes no argument. */
|
||||
#undef SETPGRP_VOID
|
||||
|
||||
/* Define if the setvbuf function takes the buffering type as its second
|
||||
argument and the buffer pointer as the third, as on System V
|
||||
before release 3. */
|
||||
#undef SETVBUF_REVERSED
|
||||
|
||||
/* Define to `unsigned' if <sys/types.h> doesn't define. */
|
||||
#undef size_t
|
||||
|
||||
/* If using the C implementation of alloca, define if you know the
|
||||
direction of stack growth for your system; otherwise it will be
|
||||
automatically deduced at run-time.
|
||||
STACK_DIRECTION > 0 => grows toward higher addresses
|
||||
STACK_DIRECTION < 0 => grows toward lower addresses
|
||||
STACK_DIRECTION = 0 => direction of growth unknown
|
||||
*/
|
||||
#undef STACK_DIRECTION
|
||||
|
||||
/* Define if you have the ANSI C header files. */
|
||||
#undef STDC_HEADERS
|
||||
|
||||
/* Define if you can safely include both <sys/time.h> and <time.h>. */
|
||||
#undef TIME_WITH_SYS_TIME
|
||||
|
||||
/* Define if your <sys/time.h> declares struct tm. */
|
||||
#undef TM_IN_SYS_TIME
|
||||
|
||||
/* Define to `int' if <sys/types.h> doesn't define. */
|
||||
#undef uid_t
|
||||
|
||||
/* Define if you do not have the index function. */
|
||||
#undef NOINDEX
|
||||
|
||||
/* Define if you need the strtok function. */
|
||||
#undef NEED_STRTOK
|
||||
|
||||
/* Define if you need the strtoken function. */
|
||||
#undef NEED_STRTOKEN
|
||||
|
||||
/* Define if you have the times function. */
|
||||
#undef HAVE_TIMES
|
||||
|
||||
/* Define if you have the <stddef.h> header file. */
|
||||
#undef STDDEFH
|
||||
|
||||
/* Define if you have the <stdlib.h> header file. */
|
||||
#undef STDLIBH
|
||||
|
||||
/* Define if you have the <string.h> header file. */
|
||||
#undef STRINGH
|
||||
|
||||
/* Define if you have the <strings.h> header file. */
|
||||
#undef STRINGSH
|
||||
|
||||
/* Define if you have the <sys/param.h> header file. */
|
||||
#undef PARAMH
|
||||
|
||||
/* Define if you have the <sys/rusage.h> header file. */
|
||||
#undef HAVE_SYS_RUSAGE_H
|
||||
|
||||
/* Define if you have the <sys/syslog.h> header file. */
|
||||
#undef SYSSYSLOGH
|
||||
|
||||
/* Define if you have the <unistd.h> header file. */
|
||||
#undef UNISTDH
|
||||
|
||||
/* Define to <malloc.h> you need malloc.h. */
|
||||
#undef MALLOCH
|
||||
|
||||
/* Define if you have the <sys/rusage.h> header file. */
|
||||
#undef RUSAGEH
|
||||
|
||||
/* Define if you have the <glob.h> header file. */
|
||||
#undef GLOBH
|
||||
|
||||
/* Define if you have regex */
|
||||
#undef HAVE_REGEX
|
||||
|
||||
/* Define if you don't have bcopy */
|
||||
#undef NEED_BCOPY
|
||||
|
||||
/* Define if you don't have bcmp */
|
||||
#undef NEED_BCMP
|
||||
|
||||
/* Define if you need bzero */
|
||||
#undef NEED_BZERO
|
||||
|
||||
/* Define if you have syslog */
|
||||
#undef HAVE_SYSLOG
|
||||
|
||||
/* Define if you have vsyslog */
|
||||
#undef HAVE_VSYSLOG
|
||||
|
||||
/* Define if you want to allow SSL connections */
|
||||
#undef USE_SSL
|
||||
/* Define the location of the configuration files */
|
||||
#undef DPATH
|
||||
|
||||
/* Define if you can set the core size to unlimited */
|
||||
#undef FORCE_CORE
|
||||
|
||||
/* Define if you have strcasecmp */
|
||||
#undef GOT_STRCASECMP
|
||||
|
||||
/* Define if you need inet_addr */
|
||||
#undef NEED_INET_ADDR
|
||||
|
||||
/* Define if you need inet_ntoa */
|
||||
#undef NEED_INET_NTOA
|
||||
|
||||
/* Define if you need inet_netof */
|
||||
#undef NEED_INET_NETOF
|
||||
/* Define if you have getrusage */
|
||||
#undef GETRUSAGE_2
|
||||
|
||||
/* Define if you have gettimeofday */
|
||||
#undef GETTIMEOFDAY
|
||||
|
||||
/* Define if you have lrand48 */
|
||||
#undef LRAND48
|
||||
/* Define if you have the <glob.h> header file. */
|
||||
#undef GLOBH
|
||||
|
||||
/* Define if you have getrusage */
|
||||
#undef GETRUSAGE_2
|
||||
/* Define if you have strcasecmp */
|
||||
#undef GOT_STRCASECMP
|
||||
|
||||
/* Define if you have times */
|
||||
#undef TIMES_2
|
||||
/* Define to 1 if you have `alloca', as a function or macro. */
|
||||
#undef HAVE_ALLOCA
|
||||
|
||||
/* Define if you have O_NONBLOCK */
|
||||
#undef NBLOCK_POSIX
|
||||
/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
|
||||
*/
|
||||
#undef HAVE_ALLOCA_H
|
||||
|
||||
/* Define if you have O_NDELAY */
|
||||
#undef NBLOCK_BSD
|
||||
/* Define to 1 if you have the `bcmp' function. */
|
||||
#undef HAVE_BCMP
|
||||
|
||||
/* Define if you have FIONBIO */
|
||||
#undef NBLOCK_SYSV
|
||||
/* Define to 1 if you have the `bcopy' function. */
|
||||
#undef HAVE_BCOPY
|
||||
|
||||
/* Define if you have POSIX signals */
|
||||
#undef POSIX_SIGNALS
|
||||
/* Define to 1 if you have the `bzero' function. */
|
||||
#undef HAVE_BZERO
|
||||
|
||||
/* Define if you have BSD signals */
|
||||
#undef RELIABLE_BSD_SIGNALS
|
||||
/* Define if you have a compiler with C99 variable length array support */
|
||||
#undef HAVE_C99_VARLEN_ARRAY
|
||||
|
||||
/* Define if you have SYSV signals */
|
||||
#undef UNRELIABLE_SYSV_SIGNALS
|
||||
/* Define if you have crypt */
|
||||
#undef HAVE_CRYPT
|
||||
|
||||
/* Define these to be unsigned integral internal types,
|
||||
* of respecitvely 2 and 4 bytes in size, when not already
|
||||
* defined in <sys/types.h>, <stdlib.h> or <stddef.h> */
|
||||
#undef u_int16_t
|
||||
#undef u_int32_t
|
||||
/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
|
||||
#undef HAVE_DOPRNT
|
||||
|
||||
/* Define if you have setproctitle */
|
||||
#undef HAVE_SETPROCTITLE
|
||||
/* Define to 1 if you have the `getrusage' function. */
|
||||
#undef HAVE_GETRUSAGE
|
||||
|
||||
/* Define to 1 if you have the `gettimeofday' function. */
|
||||
#undef HAVE_GETTIMEOFDAY
|
||||
|
||||
/* Define to 1 if you have the `index' function. */
|
||||
#undef HAVE_INDEX
|
||||
|
||||
/* Define to 1 if you have the `inet_addr' function. */
|
||||
#undef HAVE_INET_ADDR
|
||||
|
||||
/* Define to 1 if you have the `inet_netof' function. */
|
||||
#undef HAVE_INET_NETOF
|
||||
|
||||
/* Define to 1 if you have the `inet_ntoa' function. */
|
||||
#undef HAVE_INET_NTOA
|
||||
|
||||
/* Define to 1 if you have the `inet_ntop' function. */
|
||||
#undef HAVE_INET_NTOP
|
||||
|
||||
/* Define to 1 if you have the `inet_pton' function. */
|
||||
#undef HAVE_INET_PTON
|
||||
|
||||
/* Define to 1 if the system has the type `intptr_t'. */
|
||||
#undef HAVE_INTPTR_T
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#undef HAVE_INTTYPES_H
|
||||
|
||||
/* Define to 1 if you have the `lrand48' function. */
|
||||
#undef HAVE_LRAND48
|
||||
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#undef HAVE_MEMORY_H
|
||||
|
||||
/* Define if you have PS_STRINGS */
|
||||
#undef HAVE_PSSTRINGS
|
||||
@@ -180,53 +109,143 @@
|
||||
/* Define if you have pstat */
|
||||
#undef HAVE_PSTAT
|
||||
|
||||
/* Define if you have crypt */
|
||||
#undef HAVE_CRYPT
|
||||
/* Define if you have setproctitle */
|
||||
#undef HAVE_SETPROCTITLE
|
||||
|
||||
/* The default permissions for configuration files */
|
||||
#undef DEFAULT_PERMISSIONS
|
||||
/* Define to 1 if you have the `snprintf' function. */
|
||||
#undef HAVE_SNPRINTF
|
||||
|
||||
/* Define if you want spoof protection */
|
||||
#undef NOSPOOF
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#undef HAVE_STDINT_H
|
||||
|
||||
/* Define if you want +a/+q prefixes */
|
||||
#undef PREFIX_AQ
|
||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||
#undef HAVE_STDLIB_H
|
||||
|
||||
/* Define if you want to compile as a hub */
|
||||
#undef HUB
|
||||
/* Define to 1 if you have the `strcasecmp' function. */
|
||||
#undef HAVE_STRCASECMP
|
||||
|
||||
/* Define the location of the configuration files */
|
||||
#undef DPATH
|
||||
/* Define to 1 if you have the `strerror' function. */
|
||||
#undef HAVE_STRERROR
|
||||
|
||||
/* Define the location of the executable */
|
||||
#undef SPATH
|
||||
/* Define to 1 if you have the <strings.h> header file. */
|
||||
#undef HAVE_STRINGS_H
|
||||
|
||||
/* Set to the listen backlog size you want */
|
||||
#undef LISTEN_SIZE
|
||||
/* Define to 1 if you have the <string.h> header file. */
|
||||
#undef HAVE_STRING_H
|
||||
|
||||
/* Set to the max sendq you want */
|
||||
#undef MAXSENDQLENGTH
|
||||
/* Define to 1 if you have the `strlcat' function. */
|
||||
#undef HAVE_STRLCAT
|
||||
|
||||
/* Set to the nickname history length you want */
|
||||
#undef NICKNAMEHISTORYLENGTH
|
||||
/* Define to 1 if you have the `strlcpy' function. */
|
||||
#undef HAVE_STRLCPY
|
||||
|
||||
/* Set to the bufferpool size you want */
|
||||
#undef BUFFERPOOL
|
||||
/* Define to 1 if you have the `strlncat' function. */
|
||||
#undef HAVE_STRLNCAT
|
||||
|
||||
/* Set to the max connections you want */
|
||||
#undef MAXCONNECTIONS
|
||||
/* Define to 1 if you have the `strtok' function. */
|
||||
#undef HAVE_STRTOK
|
||||
|
||||
/* Define to 1 if you have the `strtoken' function. */
|
||||
#undef HAVE_STRTOKEN
|
||||
|
||||
/* Define to 1 if you have the `strtoul' function. */
|
||||
#undef HAVE_STRTOUL
|
||||
|
||||
/* Define to 1 if you have the `syslog' function. */
|
||||
#undef HAVE_SYSLOG
|
||||
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
#undef HAVE_SYS_STAT_H
|
||||
|
||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||
#undef HAVE_SYS_TYPES_H
|
||||
|
||||
/* Define to 1 if you have the `times' function. */
|
||||
#undef HAVE_TIMES
|
||||
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#undef HAVE_UNISTD_H
|
||||
|
||||
/* Define to 1 if you have the `vprintf' function. */
|
||||
#undef HAVE_VPRINTF
|
||||
|
||||
/* Define to 1 if you have the `vsnprintf' function. */
|
||||
#undef HAVE_VSNPRINTF
|
||||
|
||||
/* Define to 1 if you have the `vsyslog' function. */
|
||||
#undef HAVE_VSYSLOG
|
||||
|
||||
/* Define if you want IPv6 enabled */
|
||||
#undef INET6
|
||||
|
||||
/* Set to the listen backlog size you want */
|
||||
#undef LISTEN_SIZE
|
||||
|
||||
/* Define if you want modes shown in /list */
|
||||
#undef LIST_SHOW_MODES
|
||||
|
||||
/* Define if you want nick!user@host shown for the topic setter */
|
||||
#undef TOPIC_NICK_IS_NUHOST
|
||||
/* Define if rlim_t is long long */
|
||||
#undef LONG_LONG_RLIM_T
|
||||
|
||||
/* Define if you want users to be notified when their shun is removed */
|
||||
#undef SHUN_NOTICES
|
||||
/* Define if you have lrand48 */
|
||||
#undef LRADN48
|
||||
|
||||
/* Define to <malloc.h> you need malloc.h. */
|
||||
#undef MALLOCH
|
||||
|
||||
/* Set to the max connections you want */
|
||||
#undef MAXCONNECTIONS
|
||||
|
||||
/* Set to the max sendq you want */
|
||||
#undef MAXSENDQLENGTH
|
||||
|
||||
/* Define if you have O_NDELAY */
|
||||
#undef NBLOCK_BSD
|
||||
|
||||
/* Define if you have O_NONBLOCK */
|
||||
#undef NBLOCK_POSIX
|
||||
|
||||
/* Define if you have FIONBIO */
|
||||
#undef NBLOCK_SYSV
|
||||
|
||||
/* Define if you don't have bcmp */
|
||||
#undef NEED_BCMP
|
||||
|
||||
/* Define if you don't have bcopy */
|
||||
#undef NEED_BCOPY
|
||||
|
||||
/* Define if you need bzero */
|
||||
#undef NEED_BZERO
|
||||
|
||||
/* Define if you need inet_addr */
|
||||
#undef NEED_INET_ADDR
|
||||
|
||||
/* Define if you need inet_netof */
|
||||
#undef NEED_INET_NETOF
|
||||
|
||||
/* Define if you need inet_ntoa */
|
||||
#undef NEED_INET_NTOA
|
||||
|
||||
/* Define if you need the strerror function. */
|
||||
#undef NEED_STRERROR
|
||||
|
||||
/* Define if you need the strtok function. */
|
||||
#undef NEED_STRTOK
|
||||
|
||||
/* Define if you need the strtoken function. */
|
||||
#undef NEED_STRTOKEN
|
||||
|
||||
/* Set to the nickname history length you want */
|
||||
#undef NICKNAMEHISTORYLENGTH
|
||||
|
||||
/* Define if you do not have the index function. */
|
||||
#undef NOINDEX
|
||||
|
||||
/* Define if you want spoof protection */
|
||||
#undef NOSPOOF
|
||||
|
||||
/* Define to 1 if your system has no in6addr_any. */
|
||||
#undef NO_IN6ADDR_ANY
|
||||
|
||||
/* Define if you want OperOverride disabled */
|
||||
#undef NO_OPEROVERRIDE
|
||||
@@ -234,47 +253,154 @@
|
||||
/* Define if you want opers to have to use /invite to join +s/+p channels */
|
||||
#undef OPEROVERRIDE_VERIFY
|
||||
|
||||
/* Define if you want to disable /set* and /chg* */
|
||||
#undef DISABLE_USERMOD
|
||||
/* Define to the address where bug reports for this package should be sent. */
|
||||
#undef PACKAGE_BUGREPORT
|
||||
|
||||
/* Define to disable extended ban stacking (~q:~c:#chan, etc) */
|
||||
#undef DISABLE_STACKED_EXTBANS
|
||||
/* Define to the full name of this package. */
|
||||
#undef PACKAGE_NAME
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#undef PACKAGE_STRING
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#undef PACKAGE_TARNAME
|
||||
|
||||
/* Define to the home page for this package. */
|
||||
#undef PACKAGE_URL
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#undef PACKAGE_VERSION
|
||||
|
||||
/* Define if you have the <sys/param.h> header file. */
|
||||
#undef PARAMH
|
||||
|
||||
/* Define if you have POSIX signals */
|
||||
#undef POSIX_SIGNALS
|
||||
|
||||
/* Define if you want +a/+q prefixes */
|
||||
#undef PREFIX_AQ
|
||||
|
||||
/* Define if you have the <sys/rusage.h> header file. */
|
||||
#undef RUSAGEH
|
||||
|
||||
/* Define to 1 if the `setpgrp' function takes no argument. */
|
||||
#undef SETPGRP_VOID
|
||||
|
||||
/* Define if you want users to be notified when their shun is removed */
|
||||
#undef SHUN_NOTICES
|
||||
|
||||
/* The size of `int', as computed by sizeof. */
|
||||
#undef SIZEOF_INT
|
||||
|
||||
/* The size of `long', as computed by sizeof. */
|
||||
#undef SIZEOF_LONG
|
||||
|
||||
/* The size of `rlim_t', as computed by sizeof. */
|
||||
#undef SIZEOF_RLIM_T
|
||||
|
||||
/* The size of `short', as computed by sizeof. */
|
||||
#undef SIZEOF_SHORT
|
||||
|
||||
/* Define the location of the executable */
|
||||
#undef SPATH
|
||||
|
||||
/* If using the C implementation of alloca, define if you know the
|
||||
direction of stack growth for your system; otherwise it will be
|
||||
automatically deduced at runtime.
|
||||
STACK_DIRECTION > 0 => grows toward higher addresses
|
||||
STACK_DIRECTION < 0 => grows toward lower addresses
|
||||
STACK_DIRECTION = 0 => direction of growth unknown */
|
||||
#undef STACK_DIRECTION
|
||||
|
||||
/* Link... statically(?) (defining this macro will probably cause the build
|
||||
tofail) */
|
||||
#undef STATIC_LINKING
|
||||
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
#undef STDC_HEADERS
|
||||
|
||||
/* Define if you have the <stddef.h> header file. */
|
||||
#undef STDDEFH
|
||||
|
||||
/* Define if you have the <stdlib.h> header file. */
|
||||
#undef STDLIBH
|
||||
|
||||
/* Define if you have the <string.h> header file. */
|
||||
#undef STRINGH
|
||||
|
||||
/* Define if you have the <strings.h> header file. */
|
||||
#undef STRINGSH
|
||||
|
||||
/* Define if you have the <sys/syslog.h> header file. */
|
||||
#undef SYSSYSLOGH
|
||||
|
||||
/* Define if you have SYSV signals */
|
||||
#undef SYSV_UNRELIABLE_SIGNALS
|
||||
|
||||
/* Define if you have times */
|
||||
#undef TIMES_2
|
||||
|
||||
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
|
||||
#undef TIME_WITH_SYS_TIME
|
||||
|
||||
/* Define to 1 if your <sys/time.h> declares `struct tm'. */
|
||||
#undef TM_IN_SYS_TIME
|
||||
|
||||
/* Define if you want nick!user@host shown for the topic setter */
|
||||
#undef TOPIC_NICK_IS_NUHOST
|
||||
|
||||
/* Define if your system prepends an underscore to symbols */
|
||||
#undef UNDERSCORE
|
||||
|
||||
/* Define if rlim_t is long long */
|
||||
#undef LONG_LONG_RLIM_T
|
||||
/* Define if you have the <unistd.h> header file. */
|
||||
#undef UNISTDH
|
||||
|
||||
/* Define if you have snprintf */
|
||||
#undef HAVE_SNPRINTF
|
||||
/* Define if you have libcurl installed to get remote includes and MOTD
|
||||
support */
|
||||
#undef USE_LIBCURL
|
||||
|
||||
/* Define if you have vsnprintf */
|
||||
#undef HAVE_VSNPRINTF
|
||||
/* Define if you want to allow SSL connections */
|
||||
#undef USE_SSL
|
||||
|
||||
/* Define if you have strlcpy */
|
||||
#undef HAVE_STRLCPY
|
||||
/* Define if you have zlib and want zip links support. */
|
||||
#undef ZIP_LINKS
|
||||
|
||||
/* Define if you have strlcat */
|
||||
#undef HAVE_STRLCAT
|
||||
/* Define if you are compiling unrealircd on Sun's (or Oracle's?) Solaris */
|
||||
#undef _SOLARIS
|
||||
|
||||
/* Define if you have strlncat */
|
||||
#undef HAVE_STRLNCAT
|
||||
/* Define to empty if `const' does not conform to ANSI C. */
|
||||
#undef const
|
||||
|
||||
/* Define if you have inet_pton */
|
||||
#undef HAVE_INET_PTON
|
||||
/* Define to `int' if <sys/types.h> doesn't define. */
|
||||
#undef gid_t
|
||||
|
||||
/* Define if you have inet_ntop */
|
||||
#undef HAVE_INET_NTOP
|
||||
/* Define to `__inline__' or `__inline' if that's what the C compiler
|
||||
calls it, or to nothing if 'inline' is not supported under any name. */
|
||||
#ifndef __cplusplus
|
||||
#undef inline
|
||||
#endif
|
||||
|
||||
/* Define if you have a compiler with C99 variable length array support */
|
||||
#undef HAVE_C99_VARLEN_ARRAY
|
||||
/* Define to `short' if <sys/types.h> does not define. */
|
||||
#undef int16_t
|
||||
|
||||
/* Define if you have alloca.h */
|
||||
#undef HAVE_ALLOCA_H
|
||||
/* Define to `long' if <sys/types.h> does not define. */
|
||||
#undef int32_t
|
||||
|
||||
/* Define if you have alloca */
|
||||
#undef HAVE_ALLOCA
|
||||
/* Define to the type of a signed integer type wide enough to hold a pointer,
|
||||
if such a type exists, and if the system does not define it. */
|
||||
#undef intptr_t
|
||||
|
||||
/* Define to 1 if your system has no in6addr_any. */
|
||||
#undef NO_IN6ADDR_ANY
|
||||
/* Define to `int' if <sys/types.h> does not define. */
|
||||
#undef mode_t
|
||||
|
||||
/* Define to `unsigned int' if <sys/types.h> does not define. */
|
||||
#undef size_t
|
||||
|
||||
/* Define to `unsigned short' if <sys/types.h> does not define. */
|
||||
#undef u_int16_t
|
||||
|
||||
/* Define to `unsigned long' if <sys/types.h> does not define. */
|
||||
#undef u_int32_t
|
||||
|
||||
/* Define to `int' if <sys/types.h> doesn't define. */
|
||||
#undef uid_t
|
||||
|
||||
+138
-38
@@ -24,6 +24,7 @@
|
||||
#define __struct_include__
|
||||
|
||||
#include "config.h"
|
||||
#include "sys.h"
|
||||
/* need to include ssl stuff here coz otherwise you get
|
||||
* conflicting types with isalnum/isalpha/etc @ redhat. -- Syzop
|
||||
*/
|
||||
@@ -64,17 +65,10 @@
|
||||
#include "zip.h"
|
||||
#endif
|
||||
#include "auth.h"
|
||||
#ifndef _WIN32
|
||||
#include "pcreposix.h"
|
||||
#else
|
||||
#include "win32/regex.h"
|
||||
#endif
|
||||
#include "tre/regex.h"
|
||||
|
||||
#include "channel.h"
|
||||
|
||||
#if defined(_WIN32) && !defined(NOSPOOF)
|
||||
#error "Compiling win32 without nospoof is VERY insecure and NOT supported"
|
||||
#endif
|
||||
|
||||
|
||||
extern MODVAR int sendanyways;
|
||||
@@ -94,6 +88,7 @@ typedef struct _configflag_ban ConfigFlag_ban;
|
||||
typedef struct _configflag_tld ConfigFlag_tld;
|
||||
typedef struct _configitem ConfigItem;
|
||||
typedef struct _configitem_me ConfigItem_me;
|
||||
typedef struct _configitem_files ConfigItem_files;
|
||||
typedef struct _configitem_admin ConfigItem_admin;
|
||||
typedef struct _configitem_class ConfigItem_class;
|
||||
typedef struct _configitem_oper ConfigItem_oper;
|
||||
@@ -138,16 +133,24 @@ typedef struct Server aServer;
|
||||
typedef struct SLink Link;
|
||||
typedef struct SBan Ban;
|
||||
typedef struct SMode Mode;
|
||||
typedef struct SChanFloodProt ChanFloodProt;
|
||||
typedef struct SRemoveFld RemoveFld;
|
||||
typedef struct ListOptions LOpts;
|
||||
typedef struct FloodOpt aFloodOpt;
|
||||
typedef struct MotdItem aMotd;
|
||||
typedef struct Motd aMotdFile; /* represents a whole MOTD, including remote MOTD support info */
|
||||
typedef struct MotdItem aMotdLine; /* one line of a MOTD stored as a linked list */
|
||||
#ifdef USE_LIBCURL
|
||||
typedef struct MotdDownload aMotdDownload; /* used to coordinate download of a remote MOTD */
|
||||
#endif
|
||||
|
||||
typedef struct trecord aTrecord;
|
||||
typedef struct IRCCommand aCommand;
|
||||
typedef struct Command aCommand;
|
||||
typedef struct _cmdoverride Cmdoverride;
|
||||
typedef struct SMember Member;
|
||||
typedef struct SMembership Membership;
|
||||
typedef struct SMembershipL MembershipL;
|
||||
typedef struct JFlood aJFlood;
|
||||
typedef struct PendingNet aPendingNet;
|
||||
|
||||
#ifdef ZIP_LINKS
|
||||
typedef struct Zdata aZdata;
|
||||
@@ -158,6 +161,7 @@ typedef unsigned int u_int32_t; /* XXX Hope this works! */
|
||||
#endif
|
||||
|
||||
#ifndef VMSP
|
||||
#include "class.h"
|
||||
#include "dbuf.h" /* THIS REALLY SHOULDN'T BE HERE!!! --msa */
|
||||
#endif
|
||||
|
||||
@@ -228,6 +232,7 @@ typedef unsigned int u_int32_t; /* XXX Hope this works! */
|
||||
|
||||
#define STAT_LOG -7 /* logfile for -x */
|
||||
#define STAT_CONNECTING -6
|
||||
#define STAT_SSL_STARTTLS_HANDSHAKE -8
|
||||
#define STAT_SSL_CONNECT_HANDSHAKE -5
|
||||
#define STAT_SSL_ACCEPT_HANDSHAKE -4
|
||||
#define STAT_HANDSHAKE -3
|
||||
@@ -250,9 +255,11 @@ typedef unsigned int u_int32_t; /* XXX Hope this works! */
|
||||
#define IsLog(x) ((x)->status == STAT_LOG)
|
||||
|
||||
#ifdef USE_SSL
|
||||
#define IsSSLStartTLSHandshake(x) ((x)->status == STAT_SSL_STARTTLS_HANDSHAKE)
|
||||
#define IsSSLAcceptHandshake(x) ((x)->status == STAT_SSL_ACCEPT_HANDSHAKE)
|
||||
#define IsSSLConnectHandshake(x) ((x)->status == STAT_SSL_CONNECT_HANDSHAKE)
|
||||
#define IsSSLHandshake(x) (IsSSLAcceptHandshake(x) || IsSSLConnectHandshake(x))
|
||||
#define IsSSLHandshake(x) (IsSSLAcceptHandshake(x) || IsSSLConnectHandshake(x) | IsSSLStartTLSHandshake(x))
|
||||
#define SetSSLStartTLSHandshake(x) ((x)->status = STAT_SSL_STARTTLS_HANDSHAKE)
|
||||
#define SetSSLAcceptHandshake(x) ((x)->status = STAT_SSL_ACCEPT_HANDSHAKE)
|
||||
#define SetSSLConnectHandshake(x) ((x)->status = STAT_SSL_CONNECT_HANDSHAKE)
|
||||
#endif
|
||||
@@ -266,6 +273,7 @@ typedef unsigned int u_int32_t; /* XXX Hope this works! */
|
||||
#define SetLog(x) ((x)->status = STAT_LOG)
|
||||
|
||||
#define IsSynched(x) (x->serv->flags.synced)
|
||||
#define IsServerSent(x) (x->serv && x->serv->flags.server_sent)
|
||||
|
||||
/* opt.. */
|
||||
#define OPT_SJOIN 0x0001
|
||||
@@ -310,7 +318,7 @@ typedef unsigned int u_int32_t; /* XXX Hope this works! */
|
||||
#define FLAGS_SQUIT 0x20000 /* Server has been /squit by an oper */
|
||||
#define FLAGS_PROTOCTL 0x40000 /* Received a PROTOCTL message */
|
||||
#define FLAGS_PING 0x80000
|
||||
#define FLAGS_ASKEDPING 0x100000
|
||||
#define FLAGS_EAUTH 0x100000
|
||||
#define FLAGS_NETINFO 0x200000
|
||||
#define FLAGS_HYBNOTICE 0x400000
|
||||
#define FLAGS_QUARANTINE 0x800000
|
||||
@@ -405,7 +413,8 @@ typedef unsigned int u_int32_t; /* XXX Hope this works! */
|
||||
#define GotNetInfo(x) ((x)->flags & FLAGS_NETINFO)
|
||||
#define SetNetInfo(x) ((x)->flags |= FLAGS_NETINFO)
|
||||
#define IsCGIIRC(x) ((x)->flags & FLAGS_CGIIRC)
|
||||
|
||||
#define SetEAuth(x) ((x)->flags |= FLAGS_EAUTH)
|
||||
#define IsEAuth(x) ((x)->flags & FLAGS_EAUTH)
|
||||
#define IsShunned(x) ((x)->flags & FLAGS_SHUNNED)
|
||||
#define SetShunned(x) ((x)->flags |= FLAGS_SHUNNED)
|
||||
#define ClearShunned(x) ((x)->flags &= ~FLAGS_SHUNNED)
|
||||
@@ -572,7 +581,7 @@ typedef unsigned int u_int32_t; /* XXX Hope this works! */
|
||||
#define OFLAG_LNOTICE 0x00004000 /* Oper can send local serv notices */
|
||||
#define OFLAG_GNOTICE 0x00008000 /* Oper can send global notices */
|
||||
#define OFLAG_ADMIN 0x00010000 /* Admin */
|
||||
/* 0x00020000 is free, previously addline */
|
||||
#define OFLAG_ADDLINE 0x00020000 /* Oper can use /addline */
|
||||
#define OFLAG_ZLINE 0x00080000 /* Oper can use /zline and /unzline */
|
||||
#define OFLAG_NETADMIN 0x00200000 /* netadmin gets +N */
|
||||
#define OFLAG_COADMIN 0x00800000 /* co admin gets +C */
|
||||
@@ -596,6 +605,7 @@ typedef unsigned int u_int32_t; /* XXX Hope this works! */
|
||||
#define OPCanDCCDeny(x) ((x)->oflag & OFLAG_DCCDENY)
|
||||
#define OPCanTKL(x) ((x)->oflag & OFLAG_TKL)
|
||||
#define OPCanGZL(x) ((x)->oflag & OFLAG_GZL)
|
||||
#define OPCanAddline(x) ((x)->oflag & OFLAG_ADDLINE)
|
||||
#define OPCanZline(x) ((x)->oflag & OFLAG_ZLINE)
|
||||
#define OPCanRehash(x) ((x)->oflag & OFLAG_REHASH)
|
||||
#define OPCanDie(x) ((x)->oflag & OFLAG_DIE)
|
||||
@@ -682,6 +692,13 @@ typedef unsigned int u_int32_t; /* XXX Hope this works! */
|
||||
/* blah */
|
||||
#define IsSkoAdmin(sptr) (IsAdmin(sptr) || IsNetAdmin(sptr) || IsSAdmin(sptr))
|
||||
|
||||
/*
|
||||
* defines for curses in client
|
||||
*/
|
||||
#define DUMMY_TERM 0
|
||||
#define CURSES_TERM 1
|
||||
#define TERMCAP_TERM 2
|
||||
|
||||
/* Dcc deny types (see src/s_extra.c) */
|
||||
#define DCCDENY_HARD 0
|
||||
#define DCCDENY_SOFT 1
|
||||
@@ -702,6 +719,46 @@ struct FloodOpt {
|
||||
TS firstmsg;
|
||||
};
|
||||
|
||||
#ifdef USE_LIBCURL
|
||||
struct Motd;
|
||||
struct MotdDownload
|
||||
{
|
||||
struct Motd *themotd;
|
||||
};
|
||||
#endif /* USE_LIBCURL */
|
||||
|
||||
struct Motd
|
||||
{
|
||||
struct MotdItem *lines;
|
||||
struct tm last_modified; /* store the last modification time */
|
||||
|
||||
#ifdef USE_LIBCURL
|
||||
/*
|
||||
This pointer is used to communicate with an asynchronous MOTD
|
||||
download. The problem is that a download may take 10 seconds or
|
||||
more to complete and, in that time, the IRCd could be rehashed.
|
||||
This would mean that TLD blocks are reallocated and thus the
|
||||
aMotd structs would be free()d in the meantime.
|
||||
|
||||
To prevent such a situation from leading to a segfault, we
|
||||
introduce this remote control pointer. It works like this:
|
||||
1. read_motd() is called with a URL. A new MotdDownload is
|
||||
allocated and the pointer is placed here. This pointer is
|
||||
also passed to the asynchrnous download handler.
|
||||
2.a. The download is completed and read_motd_asynch_downloaded()
|
||||
is called with the same pointer. From this function, this pointer
|
||||
if free()d. No other code may free() the pointer. Not even free_motd().
|
||||
OR
|
||||
2.b. The user rehashes the IRCd before the download is completed.
|
||||
free_motd() is called, which sets motd_download->themotd to NULL
|
||||
to signal to read_motd_asynch_downloaded() that it should ignore
|
||||
the download. read_motd_asynch_downloaded() is eventually called
|
||||
and frees motd_download.
|
||||
*/
|
||||
struct MotdDownload *motd_download;
|
||||
#endif /* USE_LIBCURL */
|
||||
};
|
||||
|
||||
struct MotdItem {
|
||||
char *line;
|
||||
struct MotdItem *next;
|
||||
@@ -790,6 +847,7 @@ struct Server {
|
||||
#endif
|
||||
struct {
|
||||
unsigned synced:1; /* Server linked? (3.2beta18+) */
|
||||
unsigned server_sent:1; /* SERVER message sent to this link? (for outgoing links) */
|
||||
} flags;
|
||||
};
|
||||
|
||||
@@ -897,6 +955,7 @@ extern void CmodeDel(Cmode *cmode);
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
EXTCM_PAR_HEADER
|
||||
unsigned short num;
|
||||
unsigned short t;
|
||||
} aModejEntry;
|
||||
@@ -904,10 +963,14 @@ typedef struct {
|
||||
#define LISTENER_NORMAL 0x000001
|
||||
#define LISTENER_CLIENTSONLY 0x000002
|
||||
#define LISTENER_SERVERSONLY 0x000004
|
||||
#define LISTENER_REMOTEADMIN 0x000008
|
||||
#define LISTENER_JAVACLIENT 0x000010
|
||||
#define LISTENER_MASK 0x000020
|
||||
#define LISTENER_SSL 0x000040
|
||||
#define LISTENER_BOUND 0x000080
|
||||
|
||||
#define IsServersOnlyListener(x) ((x) && ((x)->umodes & LISTENER_SERVERSONLY))
|
||||
|
||||
#define CONNECT_SSL 0x000001
|
||||
#define CONNECT_ZIP 0x000002
|
||||
#define CONNECT_AUTO 0x000004
|
||||
@@ -918,6 +981,8 @@ typedef struct {
|
||||
#define SSLFLAG_FAILIFNOCERT 0x1
|
||||
#define SSLFLAG_VERIFYCERT 0x2
|
||||
#define SSLFLAG_DONOTACCEPTSELFSIGNED 0x4
|
||||
#define SSLFLAG_NOSTARTTLS 0x8
|
||||
|
||||
struct Client {
|
||||
struct Client *next, *prev, *hnext;
|
||||
anUser *user; /* ...defined, if this is a User */
|
||||
@@ -980,7 +1045,7 @@ struct Client {
|
||||
u_short sendB; /* counters to count upto 1-k lots of bytes */
|
||||
u_short receiveB; /* sent and received. */
|
||||
aClient *listener;
|
||||
ConfigItem_class *cclass; /* Configuration record associated */
|
||||
ConfigItem_class *class; /* Configuration record associated */
|
||||
int authfd; /* fd for rfc931 authentication */
|
||||
short slot; /* my offset in the local fd table */
|
||||
struct IN_ADDR ip; /* keep real ip# too */
|
||||
@@ -1095,15 +1160,19 @@ struct _configitem_me {
|
||||
unsigned short numeric;
|
||||
};
|
||||
|
||||
struct _configitem_files {
|
||||
char *motd_file, *rules_file, *smotd_file;
|
||||
char *botmotd_file, *opermotd_file, *svsmotd_file;
|
||||
char *pid_file, *tune_file;
|
||||
};
|
||||
|
||||
struct _configitem_admin {
|
||||
ConfigItem *prev, *next;
|
||||
ConfigFlag flag;
|
||||
char *line;
|
||||
};
|
||||
#ifdef FAKELAG_CONFIGURABLE
|
||||
|
||||
#define CLASS_OPT_NOFAKELAG 0x1
|
||||
#endif
|
||||
#define CLASS_OPT_NOTARGETLAG 0x2
|
||||
|
||||
struct _configitem_class {
|
||||
ConfigItem *prev, *next;
|
||||
@@ -1121,7 +1190,6 @@ struct _configflag_allow {
|
||||
unsigned useip :1;
|
||||
unsigned ssl :1;
|
||||
unsigned nopasscont :1;
|
||||
unsigned wrongpasscont :1;
|
||||
};
|
||||
|
||||
struct _configitem_allow {
|
||||
@@ -1131,9 +1199,12 @@ struct _configitem_allow {
|
||||
anAuthStruct *auth;
|
||||
unsigned short maxperip;
|
||||
int port;
|
||||
ConfigItem_class *cclass;
|
||||
ConfigItem_class *class;
|
||||
struct irc_netmask *netmask;
|
||||
ConfigFlag_allow flags;
|
||||
#ifdef INET6
|
||||
unsigned short ipv6_clone_mask;
|
||||
#endif /* INET6 */
|
||||
};
|
||||
|
||||
struct _configitem_oper {
|
||||
@@ -1141,7 +1212,7 @@ struct _configitem_oper {
|
||||
ConfigFlag flag;
|
||||
char *name, *swhois, *snomask;
|
||||
anAuthStruct *auth;
|
||||
ConfigItem_class *cclass;
|
||||
ConfigItem_class *class;
|
||||
ConfigItem *from;
|
||||
unsigned long modes;
|
||||
long oflags;
|
||||
@@ -1172,10 +1243,10 @@ struct _configitem_ulines {
|
||||
struct _configitem_tld {
|
||||
ConfigItem *prev, *next;
|
||||
ConfigFlag_tld flag;
|
||||
char *mask, *motd_file, *rules_file, *smotd_file;
|
||||
char *botmotd_file, *opermotd_file, *channel;
|
||||
struct tm motd_tm, smotd_tm;
|
||||
aMotd *rules, *motd, *smotd, *botmotd, *opermotd;
|
||||
char *mask, *channel;
|
||||
char *motd_file, *rules_file, *smotd_file;
|
||||
char *botmotd_file, *opermotd_file;
|
||||
aMotdFile rules, motd, smotd, botmotd, opermotd;
|
||||
u_short options;
|
||||
};
|
||||
|
||||
@@ -1204,7 +1275,7 @@ struct _configitem_link {
|
||||
u_short port, options;
|
||||
unsigned char leafdepth;
|
||||
int refcount;
|
||||
ConfigItem_class *cclass;
|
||||
ConfigItem_class *class;
|
||||
struct IN_ADDR ipnum;
|
||||
time_t hold;
|
||||
#ifdef USE_SSL
|
||||
@@ -1253,11 +1324,13 @@ struct _iplist {
|
||||
/* struct irc_netmask *netmask; */
|
||||
};
|
||||
|
||||
#ifdef FAST_BADWORD_REPLACE
|
||||
#define BADW_TYPE_INVALID 0x0
|
||||
#define BADW_TYPE_FAST 0x1
|
||||
#define BADW_TYPE_FAST_L 0x2
|
||||
#define BADW_TYPE_FAST_R 0x4
|
||||
#define BADW_TYPE_REGEX 0x8
|
||||
#endif
|
||||
|
||||
#define BADWORD_REPLACE 1
|
||||
#define BADWORD_BLOCK 2
|
||||
@@ -1266,7 +1339,9 @@ struct _configitem_badword {
|
||||
ConfigItem *prev, *next;
|
||||
ConfigFlag flag;
|
||||
char *word, *replace;
|
||||
#ifdef FAST_BADWORD_REPLACE
|
||||
unsigned short type;
|
||||
#endif
|
||||
char action;
|
||||
regex_t expr;
|
||||
};
|
||||
@@ -1314,7 +1389,6 @@ struct _configitem_log {
|
||||
char *file;
|
||||
long maxsize;
|
||||
int flags;
|
||||
int logfd;
|
||||
};
|
||||
|
||||
struct _configitem_unknown {
|
||||
@@ -1367,7 +1441,6 @@ struct _configitem_include {
|
||||
#ifdef USE_LIBCURL
|
||||
char *url;
|
||||
char *errorbuf;
|
||||
char *bind_ip;
|
||||
#endif
|
||||
};
|
||||
|
||||
@@ -1375,7 +1448,7 @@ struct _configitem_help {
|
||||
ConfigItem *prev, *next;
|
||||
ConfigFlag flag;
|
||||
char *command;
|
||||
aMotd *text;
|
||||
aMotdLine *text;
|
||||
};
|
||||
|
||||
struct _configitem_offchans {
|
||||
@@ -1453,22 +1526,36 @@ struct ListOptions {
|
||||
|
||||
#define NUMFLD 6 /* 6 flood types */
|
||||
|
||||
/* Number of maximum paramter modes to allow.
|
||||
* Don't set it unnecessarily high.. we only use k, l, L, j and f at the moment. (FIXME)
|
||||
*/
|
||||
#define MAXPARAMMODES 12
|
||||
struct SRemoveFld {
|
||||
struct SRemoveFld *prev, *next;
|
||||
aChannel *chptr;
|
||||
char m; /* mode to be removed */
|
||||
time_t when; /* scheduled at */
|
||||
};
|
||||
|
||||
struct SChanFloodProt {
|
||||
unsigned short per; /* setting: per <XX> seconds */
|
||||
time_t t[NUMFLD]; /* runtime: timers */
|
||||
unsigned short c[NUMFLD]; /* runtime: counters */
|
||||
unsigned short l[NUMFLD]; /* setting: limit */
|
||||
unsigned char a[NUMFLD]; /* setting: action */
|
||||
unsigned char r[NUMFLD]; /* setting: remove-after <this> minutes */
|
||||
unsigned long timer_flags; /* if a "-m timer" is running this is & MODE_MODERATED etc.. */
|
||||
};
|
||||
|
||||
/* mode structure for channels */
|
||||
struct SMode {
|
||||
long mode;
|
||||
#ifdef EXTCMODE
|
||||
Cmode_t extmode;
|
||||
void *extmodeparams[MAXPARAMMODES+1];
|
||||
CmodeParam *extmodeparam;
|
||||
#endif
|
||||
int limit;
|
||||
char key[KEYLEN + 1];
|
||||
char link[LINKLEN + 1];
|
||||
#if 0
|
||||
#ifdef NEWCHFLOODPROT
|
||||
ChanFloodProt *floodprot;
|
||||
#else
|
||||
/* x:y */
|
||||
unsigned short msgs; /* x */
|
||||
unsigned short per; /* y */
|
||||
@@ -1621,9 +1708,11 @@ struct liststruct {
|
||||
#define MODE_NOCOLOR 0x40000
|
||||
#define MODE_OPERONLY 0x80000
|
||||
#define MODE_ADMONLY 0x100000
|
||||
#define MODE_NOKICKS 0x200000
|
||||
#define MODE_STRIP 0x400000
|
||||
#define MODE_NOKNOCK 0x800000
|
||||
#define MODE_NOINVITE 0x1000000
|
||||
#define MODE_FLOODLIMIT 0x2000000
|
||||
#define MODE_MODREG 0x4000000
|
||||
#define MODE_INVEX 0x8000000
|
||||
#define MODE_NOCTCP 0x10000000
|
||||
@@ -1718,7 +1807,7 @@ struct liststruct {
|
||||
|
||||
/* misc variable externs */
|
||||
|
||||
extern MODVAR char *version, *infotext[], *dalinfotext[], *unrealcredits[];
|
||||
extern MODVAR char *version, *infotext[], *dalinfotext[], *unrealcredits[], *unrealinfo[];
|
||||
extern MODVAR char *generation, *creation;
|
||||
extern MODVAR char *gnulicense[];
|
||||
/* misc defines */
|
||||
@@ -1734,7 +1823,7 @@ extern MODVAR char *gnulicense[];
|
||||
#endif
|
||||
#define EVENT_HASHES EVENT_DRUGS
|
||||
#include "events.h"
|
||||
struct IRCCommand {
|
||||
struct Command {
|
||||
aCommand *prev, *next;
|
||||
char *cmd;
|
||||
int (*func) ();
|
||||
@@ -1743,7 +1832,7 @@ struct IRCCommand {
|
||||
unsigned parameters : 5;
|
||||
unsigned long bytes;
|
||||
Module *owner;
|
||||
aCommand *partner; /* cmd if token, token if cmd */
|
||||
aCommand *friend; /* cmd if token, token if cmd */
|
||||
Cmdoverride *overriders;
|
||||
Cmdoverride *overridetail;
|
||||
#ifdef DEBUGMODE
|
||||
@@ -1759,6 +1848,8 @@ struct _cmdoverride {
|
||||
int (*func)();
|
||||
};
|
||||
|
||||
#ifdef THROTTLING
|
||||
|
||||
struct ThrottlingBucket
|
||||
{
|
||||
struct ThrottlingBucket *prev, *next;
|
||||
@@ -1810,6 +1901,13 @@ struct JFlood {
|
||||
};
|
||||
#endif
|
||||
|
||||
struct PendingNet {
|
||||
aPendingNet *prev, *next; /* Previous and next in list */
|
||||
aClient *sptr; /**< Client to which these servers belong */
|
||||
int numservers; /**< Amount of servers in list */
|
||||
int servers[1]; /** The list of servers (array of integer server numerics) */
|
||||
};
|
||||
|
||||
void init_throttling_hash();
|
||||
int hash_throttling(struct IN_ADDR *in);
|
||||
struct ThrottlingBucket *find_throttling_bucket(struct IN_ADDR *in);
|
||||
@@ -1817,6 +1915,8 @@ void add_throttling_bucket(struct IN_ADDR *in);
|
||||
void del_throttling_bucket(struct ThrottlingBucket *bucket);
|
||||
int throttle_can_connect(aClient *, struct IN_ADDR *in);
|
||||
|
||||
#endif
|
||||
|
||||
#define VERIFY_OPERCOUNT(clnt,tag) { if (IRCstats.operators < 0) verify_opercount(clnt,tag); } while(0)
|
||||
|
||||
#define MARK_AS_OFFICIAL_MODULE(modinf) do { if (modinf && modinf->handle) ModuleSetOptions(modinfo->handle, MOD_OPT_OFFICIAL); } while(0)
|
||||
|
||||
+26
-8
@@ -22,6 +22,9 @@
|
||||
#ifndef __sys_include__
|
||||
#define __sys_include__
|
||||
|
||||
/* PATH_MAX */
|
||||
#include <limits.h>
|
||||
|
||||
/* alloca stuff */
|
||||
#ifdef _WIN32
|
||||
# include <malloc.h>
|
||||
@@ -43,11 +46,7 @@
|
||||
#ifdef ISC202
|
||||
#include <net/errno.h>
|
||||
#else
|
||||
# ifndef _WIN32
|
||||
#include <sys/errno.h>
|
||||
# else
|
||||
#include <errno.h>
|
||||
# endif
|
||||
#endif
|
||||
#include "setup.h"
|
||||
#include <stdio.h>
|
||||
@@ -71,18 +70,28 @@
|
||||
# include <string.h>
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* get intptr_t if the system provides it -- otherwise, ./configure will define it for us */
|
||||
#ifdef HAVE_STDINT_H
|
||||
#include <stdint.h>
|
||||
#else
|
||||
#ifdef HAVE_INTTYPES_H
|
||||
#include <inttypes.h>
|
||||
#endif /* HAVE_INTTYPES_H */
|
||||
#endif /* HAVE_STDINT_H */
|
||||
|
||||
#ifdef SSL
|
||||
#include <openssl/ssl.h>
|
||||
#endif
|
||||
#ifdef INET6
|
||||
#ifndef _WIN32
|
||||
#include <netinet/in.h>
|
||||
#include <sys/socket.h>
|
||||
#else
|
||||
#endif
|
||||
#ifdef _WIN32
|
||||
#define _WIN32_WINNT 0x0501
|
||||
#include <winsock2.h>
|
||||
#include <ws2tcpip.h>
|
||||
#endif
|
||||
#endif
|
||||
#ifndef GOT_STRCASECMP
|
||||
#define strcasecmp mycmp
|
||||
#define strncasecmp myncmp
|
||||
@@ -132,6 +141,13 @@ extern char *rindex(char *, char);
|
||||
#define dn_skipname __dn_skipname
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Mac OS X Tiger Support (Intel Only)
|
||||
*/
|
||||
#if defined(macosx) || (defined(__APPLE__) && defined(__MACH__))
|
||||
#define OSXTIGER
|
||||
#endif
|
||||
|
||||
#ifndef _WIN32
|
||||
extern VOIDSIG dummy();
|
||||
#endif
|
||||
@@ -143,10 +159,12 @@ typedef unsigned long u_long;
|
||||
typedef unsigned int u_int;
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
#define MYOSNAME OSName
|
||||
extern char OSName[256];
|
||||
#ifdef _WIN32
|
||||
#define PATH_MAX MAX_PATH
|
||||
#else
|
||||
#define MYOSNAME getosname()
|
||||
#endif
|
||||
#ifdef DEBUGMODE
|
||||
// #define ircsprintf sprintf
|
||||
|
||||
+4
-4
@@ -2,10 +2,10 @@
|
||||
#define URL_H
|
||||
#include "types.h"
|
||||
|
||||
int MODFUNC url_is_valid(char *);
|
||||
char MODFUNC *url_getfilename(char *);
|
||||
char MODFUNC *download_file(char *, char **, char *);
|
||||
void MODFUNC download_file_async(char *, time_t, vFP, char *);
|
||||
int MODFUNC url_is_valid(const char *);
|
||||
char MODFUNC *url_getfilename(const char *url);
|
||||
char MODFUNC *download_file(const char *, char **);
|
||||
void MODFUNC download_file_async(const char *, time_t, vFP, void *callback_data);
|
||||
void MODFUNC url_do_transfers_async(void);
|
||||
void MODFUNC url_init(void);
|
||||
|
||||
|
||||
+10
-10
@@ -24,7 +24,7 @@
|
||||
/**/
|
||||
#define COMPILEINFO DEBUGMODESET DEBUGSET
|
||||
|
||||
/* Version info follows, current: Unreal3.2.3
|
||||
/* Version info follows
|
||||
* Please be sure to update ALL fields when changing the version.
|
||||
* Also don't forget to bump the protocol version every release.
|
||||
*/
|
||||
@@ -36,23 +36,23 @@
|
||||
/** The generation version number (eg: 3 for Unreal3*) */
|
||||
#define UNREAL_VERSION_GENERATION 3
|
||||
|
||||
/** The major version number (eg: 3 for Unreal3.2*) */
|
||||
#define UNREAL_VERSION_MAJOR 3
|
||||
/** The major version number (eg: 2 for Unreal3.2*) */
|
||||
#define UNREAL_VERSION_MAJOR 2
|
||||
|
||||
/** The minor version number (eg: 1 for Unreal3.2.1), negative numbers for unstable/alpha/beta */
|
||||
#define UNREAL_VERSION_MINOR -99
|
||||
#define UNREAL_VERSION_MINOR 9
|
||||
|
||||
/** Year + week of the year (with Monday as first day of the week).
|
||||
/** Year + week of the year (ISO week number, with Monday as first day of week)
|
||||
* Can be useful if the above 3 versionids are insufficient for you (eg: you want to support CVS).
|
||||
* This is updated automatically on the CVS server every Monday. so don't touch it.
|
||||
*/
|
||||
#define UNREAL_VERSION_TIME 200631
|
||||
#define UNREAL_VERSION_TIME 201120
|
||||
|
||||
#define UnrealProtocol 2308
|
||||
#define UnrealProtocol 2310
|
||||
#define PATCH1 "3"
|
||||
#define PATCH2 ".3"
|
||||
#define PATCH3 "-willneverbereleased"
|
||||
#define PATCH4 ""
|
||||
#define PATCH2 ".2"
|
||||
#define PATCH3 ".9"
|
||||
#define PATCH4 "-rc2"
|
||||
#define PATCH5 ""
|
||||
#define PATCH6 ""
|
||||
#define PATCH7 ""
|
||||
|
||||
@@ -1,189 +0,0 @@
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright 1998 by the Massachusetts Institute of Technology.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software and its documentation for any purpose and without
|
||||
* fee is hereby granted, provided that the above copyright
|
||||
* notice appear in all copies and that both that copyright
|
||||
* notice and this permission notice appear in supporting
|
||||
* documentation, and that the name of M.I.T. not be used in
|
||||
* advertising or publicity pertaining to distribution of the
|
||||
* software without specific, written prior permission.
|
||||
* M.I.T. makes no representations about the suitability of
|
||||
* this software for any purpose. It is provided "as is"
|
||||
* without express or implied warranty.
|
||||
*/
|
||||
|
||||
#ifndef ARES__H
|
||||
#define ARES__H
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
|
||||
#if defined(_AIX) || defined(NETWARE)
|
||||
/* HP-UX systems version 9, 10 and 11 lack sys/select.h and so does oldish
|
||||
libc5-based Linux systems. Only include it on system that are known to
|
||||
require it! */
|
||||
#include <sys/select.h>
|
||||
#endif
|
||||
|
||||
#if defined(WATT32)
|
||||
#include <netinet/in.h>
|
||||
#include <sys/socket.h>
|
||||
#include <tcp.h>
|
||||
#elif defined(WIN32)
|
||||
#include <winsock.h>
|
||||
#include <windows.h>
|
||||
#else
|
||||
#include <netinet/in.h>
|
||||
#include <sys/socket.h>
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define ARES_SUCCESS 0
|
||||
|
||||
/* Server error codes (ARES_ENODATA indicates no relevant answer) */
|
||||
#define ARES_ENODATA 1
|
||||
#define ARES_EFORMERR 2
|
||||
#define ARES_ESERVFAIL 3
|
||||
#define ARES_ENOTFOUND 4
|
||||
#define ARES_ENOTIMP 5
|
||||
#define ARES_EREFUSED 6
|
||||
|
||||
/* Locally generated error codes */
|
||||
#define ARES_EBADQUERY 7
|
||||
#define ARES_EBADNAME 8
|
||||
#define ARES_EBADFAMILY 9
|
||||
#define ARES_EBADRESP 10
|
||||
#define ARES_ECONNREFUSED 11
|
||||
#define ARES_ETIMEOUT 12
|
||||
#define ARES_EOF 13
|
||||
#define ARES_EFILE 14
|
||||
#define ARES_ENOMEM 15
|
||||
#define ARES_EDESTRUCTION 16
|
||||
#define ARES_EBADSTR 17
|
||||
|
||||
/* ares_getnameinfo error codes */
|
||||
#define ARES_EBADFLAGS 18
|
||||
|
||||
/* Flag values */
|
||||
#define ARES_FLAG_USEVC (1 << 0)
|
||||
#define ARES_FLAG_PRIMARY (1 << 1)
|
||||
#define ARES_FLAG_IGNTC (1 << 2)
|
||||
#define ARES_FLAG_NORECURSE (1 << 3)
|
||||
#define ARES_FLAG_STAYOPEN (1 << 4)
|
||||
#define ARES_FLAG_NOSEARCH (1 << 5)
|
||||
#define ARES_FLAG_NOALIASES (1 << 6)
|
||||
#define ARES_FLAG_NOCHECKRESP (1 << 7)
|
||||
|
||||
/* Option mask values */
|
||||
#define ARES_OPT_FLAGS (1 << 0)
|
||||
#define ARES_OPT_TIMEOUT (1 << 1)
|
||||
#define ARES_OPT_TRIES (1 << 2)
|
||||
#define ARES_OPT_NDOTS (1 << 3)
|
||||
#define ARES_OPT_UDP_PORT (1 << 4)
|
||||
#define ARES_OPT_TCP_PORT (1 << 5)
|
||||
#define ARES_OPT_SERVERS (1 << 6)
|
||||
#define ARES_OPT_DOMAINS (1 << 7)
|
||||
#define ARES_OPT_LOOKUPS (1 << 8)
|
||||
|
||||
/* Nameinfo flag values */
|
||||
#define ARES_NI_NOFQDN (1 << 0)
|
||||
#define ARES_NI_NUMERICHOST (1 << 1)
|
||||
#define ARES_NI_NAMEREQD (1 << 2)
|
||||
#define ARES_NI_NUMERICSERV (1 << 3)
|
||||
#define ARES_NI_DGRAM (1 << 4)
|
||||
#define ARES_NI_TCP 0
|
||||
#define ARES_NI_UDP ARES_NI_DGRAM
|
||||
#define ARES_NI_SCTP (1 << 5)
|
||||
#define ARES_NI_DCCP (1 << 6)
|
||||
#define ARES_NI_NUMERICSCOPE (1 << 7)
|
||||
#define ARES_NI_LOOKUPHOST (1 << 8)
|
||||
#define ARES_NI_LOOKUPSERVICE (1 << 9)
|
||||
/* Reserved for future use */
|
||||
#define ARES_NI_IDN (1 << 10)
|
||||
#define ARES_NI_ALLOW_UNASSIGNED (1 << 11)
|
||||
#define ARES_NI_USE_STD3_ASCII_RULES (1 << 12)
|
||||
|
||||
struct ares_options {
|
||||
int flags;
|
||||
int timeout;
|
||||
int tries;
|
||||
int ndots;
|
||||
unsigned short udp_port;
|
||||
unsigned short tcp_port;
|
||||
struct in_addr *servers;
|
||||
int nservers;
|
||||
char **domains;
|
||||
int ndomains;
|
||||
char *lookups;
|
||||
};
|
||||
|
||||
/** Public available config (readonly) interface for ares_get_config(). */
|
||||
struct ares_config_info {
|
||||
int timeout;
|
||||
int tries;
|
||||
int numservers;
|
||||
char **servers;
|
||||
};
|
||||
|
||||
struct hostent;
|
||||
struct timeval;
|
||||
struct sockaddr;
|
||||
struct ares_channeldata;
|
||||
typedef struct ares_channeldata *ares_channel;
|
||||
typedef void (*ares_callback)(void *arg, int status, unsigned char *abuf,
|
||||
int alen);
|
||||
typedef void (*ares_host_callback)(void *arg, int status,
|
||||
struct hostent *hostent);
|
||||
typedef void (*ares_nameinfo_callback)(void *arg, int status,
|
||||
char *node, char *service);
|
||||
|
||||
int ares_init(ares_channel *channelptr);
|
||||
int ares_init_options(ares_channel *channelptr, struct ares_options *options,
|
||||
int optmask);
|
||||
void ares_destroy(ares_channel channel);
|
||||
void ares_cancel(ares_channel channel);
|
||||
void ares_send(ares_channel channel, const unsigned char *qbuf, int qlen,
|
||||
ares_callback callback, void *arg);
|
||||
void ares_query(ares_channel channel, const char *name, int dnsclass,
|
||||
int type, ares_callback callback, void *arg);
|
||||
void ares_search(ares_channel channel, const char *name, int dnsclass,
|
||||
int type, ares_callback callback, void *arg);
|
||||
void ares_gethostbyname(ares_channel channel, const char *name, int family,
|
||||
ares_host_callback callback, void *arg);
|
||||
void ares_gethostbyaddr(ares_channel channel, const void *addr, int addrlen,
|
||||
int family, ares_host_callback callback, void *arg);
|
||||
void ares_getnameinfo(ares_channel channel, const struct sockaddr *sa,
|
||||
socklen_t salen, int flags, ares_nameinfo_callback callback,
|
||||
void *arg);
|
||||
int ares_fds(ares_channel channel, fd_set *read_fds, fd_set *write_fds);
|
||||
struct timeval *ares_timeout(ares_channel channel, struct timeval *maxtv,
|
||||
struct timeval *tv);
|
||||
void ares_process(ares_channel channel, fd_set *read_fds, fd_set *write_fds);
|
||||
|
||||
int ares_mkquery(const char *name, int dnsclass, int type, unsigned short id,
|
||||
int rd, unsigned char **buf, int *buflen);
|
||||
int ares_expand_name(const unsigned char *encoded, const unsigned char *abuf,
|
||||
int alen, char **s, long *enclen);
|
||||
int ares_expand_string(const unsigned char *encoded, const unsigned char *abuf,
|
||||
int alen, unsigned char **s, long *enclen);
|
||||
int ares_parse_a_reply(const unsigned char *abuf, int alen,
|
||||
struct hostent **host);
|
||||
int ares_parse_aaaa_reply(const unsigned char *abuf, int alen,
|
||||
struct hostent **host);
|
||||
int ares_parse_ptr_reply(const unsigned char *abuf, int alen, const void *addr,
|
||||
int addrlen, int family, struct hostent **host);
|
||||
void ares_free_string(void *str);
|
||||
void ares_free_hostent(struct hostent *host);
|
||||
const char *ares_strerror(int code);
|
||||
int ares_get_config(struct ares_config_info *d, ares_channel c);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* ARES__H */
|
||||
@@ -1,17 +0,0 @@
|
||||
/* $Id$ */
|
||||
|
||||
#ifndef ARES__VERSION_H
|
||||
#define ARES__VERSION_H
|
||||
|
||||
#define ARES_VERSION_MAJOR 1
|
||||
#define ARES_VERSION_MINOR 3
|
||||
#define ARES_VERSION_PATCH 0
|
||||
#define ARES_VERSION ((ARES_VERSION_MAJOR<<16)|\
|
||||
(ARES_VERSION_MINOR<<8)|\
|
||||
(ARES_VERSION_PATCH))
|
||||
#define ARES_VERSION_STR "1.3.0"
|
||||
|
||||
const char *ares_version(int *version);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,82 +0,0 @@
|
||||
#ifndef ARES_SETUP_H
|
||||
#define ARES_SETUP_H
|
||||
|
||||
/* Copyright (C) 2004 - 2005 by Daniel Stenberg et al
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software and its
|
||||
* documentation for any purpose and without fee is hereby granted, provided
|
||||
* that the above copyright notice appear in all copies and that both that
|
||||
* copyright notice and this permission notice appear in supporting
|
||||
* documentation, and that the name of M.I.T. not be used in advertising or
|
||||
* publicity pertaining to distribution of the software without specific,
|
||||
* written prior permission. M.I.T. makes no representations about the
|
||||
* suitability of this software for any purpose. It is provided "as is"
|
||||
* without express or implied warranty.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#else
|
||||
/* simple work-around for now, for systems without configure support */
|
||||
#define ssize_t int
|
||||
#define socklen_t int
|
||||
#endif
|
||||
|
||||
/* Recent autoconf versions define these symbols in config.h. We don't want
|
||||
them (since they collide with the libcurl ones when we build
|
||||
--enable-debug) so we undef them again here. */
|
||||
#undef PACKAGE_STRING
|
||||
#undef PACKAGE_TARNAME
|
||||
#undef PACKAGE_VERSION
|
||||
#undef PACKAGE_BUGREPORT
|
||||
#undef PACKAGE_NAME
|
||||
#undef VERSION
|
||||
#undef PACKAGE
|
||||
|
||||
/* now typedef our socket type */
|
||||
#if defined(WIN32) && !defined(WATT32)
|
||||
#include <winsock.h>
|
||||
typedef SOCKET ares_socket_t;
|
||||
#define ARES_SOCKET_BAD INVALID_SOCKET
|
||||
#else
|
||||
typedef int ares_socket_t;
|
||||
#define ARES_SOCKET_BAD -1
|
||||
#endif
|
||||
|
||||
/* Assume a few thing unless they're set by configure
|
||||
*/
|
||||
#if !defined(HAVE_SYS_TIME_H) && !defined(_MSC_VER)
|
||||
#define HAVE_SYS_TIME_H
|
||||
#endif
|
||||
|
||||
#if !defined(HAVE_UNISTD_H) && !defined(_MSC_VER)
|
||||
#define HAVE_UNISTD_H 1
|
||||
#endif
|
||||
|
||||
#if !defined(HAVE_SYS_UIO_H) && !defined(WIN32) && !defined(MSDOS)
|
||||
#define HAVE_SYS_UIO_H
|
||||
#endif
|
||||
|
||||
#if (defined(WIN32) || defined(WATT32)) && \
|
||||
!(defined(__MINGW32__) || defined(NETWARE))
|
||||
/* protos for the functions we provide in windows_port.c */
|
||||
int ares_strncasecmp(const char *s1, const char *s2, int n);
|
||||
int ares_strcasecmp(const char *s1, const char *s2);
|
||||
|
||||
/* use this define magic to prevent us from adding symbol names to the library
|
||||
that is a high-risk to collide with another libraries' attempts to do the
|
||||
same */
|
||||
#define strncasecmp(a,b,c) ares_strncasecmp(a,b,c)
|
||||
#define strcasecmp(a,b) ares_strcasecmp(a,b)
|
||||
#endif
|
||||
|
||||
/* IPv6 compatibility */
|
||||
#if !defined(HAVE_AF_INET6)
|
||||
#if defined(HAVE_PF_INET6)
|
||||
#define AF_INET6 PF_INET6
|
||||
#else
|
||||
#define AF_INET6 AF_MAX+1
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif /* ARES_SETUP_H */
|
||||
@@ -1,250 +0,0 @@
|
||||
/*
|
||||
regex.h - POSIX.2 compatible regexp interface and TRE extensions
|
||||
|
||||
Copyright (C) 2001-2004 Ville Laurikari <vl@iki.fi>.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License version 2 (June
|
||||
1991) as published by the Free Software Foundation.
|
||||
|
||||
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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
*/
|
||||
|
||||
#ifndef TRE_REGEX_H
|
||||
#define TRE_REGEX_H 1
|
||||
|
||||
#include "tre-config.h"
|
||||
|
||||
#ifdef HAVE_SYS_TYPES_H
|
||||
#include <sys/types.h>
|
||||
#endif /* HAVE_SYS_TYPES_H */
|
||||
|
||||
#ifdef HAVE_LIBUTF8_H
|
||||
#include <libutf8.h>
|
||||
#endif /* HAVE_LIBUTF8_H */
|
||||
|
||||
#ifdef TRE_USE_SYSTEM_REGEX_H
|
||||
/* Include the system regex.h to make TRE ABI compatible with the
|
||||
system regex. */
|
||||
#include TRE_SYSTEM_REGEX_H_PATH
|
||||
#endif /* TRE_USE_SYSTEM_REGEX_H */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifdef TRE_USE_SYSTEM_REGEX_H
|
||||
|
||||
#ifndef REG_OK
|
||||
#define REG_OK 0
|
||||
#endif /* !REG_OK */
|
||||
|
||||
#ifndef HAVE_REG_ERRCODE_T
|
||||
typedef int reg_errcode_t;
|
||||
#endif /* !HAVE_REG_ERRCODE_T */
|
||||
|
||||
#if !defined(REG_NOSPEC) && !defined(REG_LITERAL)
|
||||
#define REG_LITERAL 0x1000
|
||||
#endif
|
||||
|
||||
/* Extra regcomp() flags. */
|
||||
#define REG_RIGHT_ASSOC (REG_LITERAL << 1)
|
||||
|
||||
/* Extra regexec() flags. */
|
||||
#define REG_APPROX_MATCHER 0x1000
|
||||
#define REG_BACKTRACKING_MATCHER (REG_APPROX_MATCHER << 1)
|
||||
|
||||
#else /* !TRE_USE_SYSTEM_REGEX_H */
|
||||
|
||||
/* If the we're not using system regex.h, we need to define the
|
||||
structs and enums ourselves. */
|
||||
|
||||
typedef int regoff_t;
|
||||
typedef struct {
|
||||
size_t re_nsub; /* Number of parenthesized subexpressions. */
|
||||
void *value; /* For internal use only. */
|
||||
} regex_t;
|
||||
|
||||
typedef struct {
|
||||
regoff_t rm_so;
|
||||
regoff_t rm_eo;
|
||||
} regmatch_t;
|
||||
|
||||
|
||||
typedef enum {
|
||||
REG_OK = 0, /* No error. */
|
||||
/* POSIX regcomp() return error codes. (In the order listed in the
|
||||
standard.) */
|
||||
REG_NOMATCH, /* No match. */
|
||||
REG_BADPAT, /* Invalid regexp. */
|
||||
REG_ECOLLATE, /* Unknown collating element. */
|
||||
REG_ECTYPE, /* Unknown character class name. */
|
||||
REG_EESCAPE, /* Trailing backslash. */
|
||||
REG_ESUBREG, /* Invalid back reference. */
|
||||
REG_EBRACK, /* "[]" imbalance */
|
||||
REG_EPAREN, /* "\(\)" or "()" imbalance */
|
||||
REG_EBRACE, /* "\{\}" or "{}" imbalance */
|
||||
REG_BADBR, /* Invalid content of {} */
|
||||
REG_ERANGE, /* Invalid use of range operator */
|
||||
REG_ESPACE, /* Out of memory. */
|
||||
REG_BADRPT
|
||||
} reg_errcode_t;
|
||||
|
||||
/* POSIX regcomp() flags. */
|
||||
#define REG_EXTENDED 1
|
||||
#define REG_ICASE (REG_EXTENDED << 1)
|
||||
#define REG_NEWLINE (REG_ICASE << 1)
|
||||
#define REG_NOSUB (REG_NEWLINE << 1)
|
||||
|
||||
/* Extra regcomp() flags. */
|
||||
#define REG_BASIC 0
|
||||
#define REG_LITERAL (REG_NOSUB << 1)
|
||||
#define REG_RIGHT_ASSOC (REG_LITERAL << 1)
|
||||
|
||||
/* POSIX regexec() flags. */
|
||||
#define REG_NOTBOL 1
|
||||
#define REG_NOTEOL (REG_NOTBOL << 1)
|
||||
|
||||
/* Extra regexec() flags. */
|
||||
#define REG_APPROX_MATCHER (REG_NOTEOL << 1)
|
||||
#define REG_BACKTRACKING_MATCHER (REG_APPROX_MATCHER << 1)
|
||||
|
||||
#endif /* !TRE_USE_SYSTEM_REGEX_H */
|
||||
|
||||
/* REG_NOSPEC and REG_LITERAL mean the same thing. */
|
||||
#ifdef REG_LITERAL
|
||||
#define REG_NOSPEC REG_LITERAL
|
||||
#elif defined(REG_NOSPEC)
|
||||
#define REG_LITERAL REG_NOSPEC
|
||||
#endif /* defined(REG_NOSPEC) */
|
||||
|
||||
/* The maximum number of iterations in a bound expression. */
|
||||
#undef RE_DUP_MAX
|
||||
#define RE_DUP_MAX 255
|
||||
|
||||
/* The POSIX.2 regexp functions */
|
||||
int regcomp(regex_t *preg, const char *regex, int cflags);
|
||||
int regexec(const regex_t *preg, const char *string, size_t nmatch,
|
||||
regmatch_t pmatch[], int eflags);
|
||||
size_t regerror(int errcode, const regex_t *preg, char *errbuf,
|
||||
size_t errbuf_size);
|
||||
void regfree(regex_t *preg);
|
||||
|
||||
#ifdef TRE_WCHAR
|
||||
#ifdef HAVE_WCHAR_H
|
||||
#include <wchar.h>
|
||||
#endif /* HAVE_WCHAR_H */
|
||||
|
||||
/* Wide character versions (not in POSIX.2). */
|
||||
int regwcomp(regex_t *preg, const wchar_t *regex, int cflags);
|
||||
int regwexec(const regex_t *preg, const wchar_t *string, size_t nmatch,
|
||||
regmatch_t pmatch[], int eflags);
|
||||
#endif /* TRE_WCHAR */
|
||||
|
||||
/* Versions with a maximum length argument and therefore the capability to
|
||||
handle null characters in the middle of the strings (not in POSIX.2). */
|
||||
int regncomp(regex_t *preg, const char *regex, size_t len, int cflags);
|
||||
int regnexec(const regex_t *preg, const char *string, size_t len,
|
||||
size_t nmatch, regmatch_t pmatch[], int eflags);
|
||||
#ifdef TRE_WCHAR
|
||||
int regwncomp(regex_t *preg, const wchar_t *regex, size_t len, int cflags);
|
||||
int regwnexec(const regex_t *preg, const wchar_t *string, size_t len,
|
||||
size_t nmatch, regmatch_t pmatch[], int eflags);
|
||||
#endif /* TRE_WCHAR */
|
||||
|
||||
#ifdef TRE_APPROX
|
||||
|
||||
/* Approximate matching parameter struct. */
|
||||
typedef struct {
|
||||
int cost_ins; /* Default cost of an inserted character. */
|
||||
int cost_del; /* Default cost of a deleted character. */
|
||||
int cost_subst; /* Default cost of a substituted character. */
|
||||
int max_cost; /* Maximum allowed cost of a match. */
|
||||
|
||||
int max_ins; /* Maximum allowed number of inserts. */
|
||||
int max_del; /* Maximum allowed number of deletes. */
|
||||
int max_subst; /* Maximum allowed number of substitutes. */
|
||||
int max_err; /* Maximum allowed number of errors total. */
|
||||
} regaparams_t;
|
||||
|
||||
/* Approximate matching result struct. */
|
||||
typedef struct {
|
||||
size_t nmatch; /* Length of pmatch[] array. */
|
||||
regmatch_t *pmatch; /* Submatch data. */
|
||||
int cost; /* Cost of the match. */
|
||||
int num_ins; /* Number of inserts in the match. */
|
||||
int num_del; /* Number of deletes in the match. */
|
||||
int num_subst; /* Number of substitutes in the match. */
|
||||
} regamatch_t;
|
||||
|
||||
|
||||
/* Approximate matching functions. */
|
||||
int regaexec(const regex_t *preg, const char *string,
|
||||
regamatch_t *match, regaparams_t params, int eflags);
|
||||
int reganexec(const regex_t *preg, const char *string, size_t len,
|
||||
regamatch_t *match, regaparams_t params, int eflags);
|
||||
#ifdef TRE_WCHAR
|
||||
/* Wide character approximate matching. */
|
||||
int regawexec(const regex_t *preg, const wchar_t *string,
|
||||
regamatch_t *match, regaparams_t params, int eflags);
|
||||
int regawnexec(const regex_t *preg, const wchar_t *string, size_t len,
|
||||
regamatch_t *match, regaparams_t params, int eflags);
|
||||
#endif /* TRE_WCHAR */
|
||||
|
||||
/* Sets the parameters to default values. */
|
||||
void regaparams_default(regaparams_t *params);
|
||||
#endif /* TRE_APPROX */
|
||||
|
||||
#ifdef TRE_WCHAR
|
||||
typedef wchar_t tre_char_t;
|
||||
#else /* !TRE_WCHAR */
|
||||
typedef unsigned char tre_char_t;
|
||||
#endif /* !TRE_WCHAR */
|
||||
|
||||
typedef struct {
|
||||
int (*get_next_char)(tre_char_t *c, unsigned int *pos_add, void *context);
|
||||
void (*rewind)(size_t pos, void *context);
|
||||
int (*compare)(size_t pos1, size_t pos2, size_t len, void *context);
|
||||
void *context;
|
||||
} tre_str_source;
|
||||
|
||||
int reguexec(const regex_t *preg, const tre_str_source *string,
|
||||
size_t nmatch, regmatch_t pmatch[], int eflags);
|
||||
|
||||
/* Returns the version string. The returned string is static. */
|
||||
char *tre_version(void);
|
||||
|
||||
/* Returns the value for a config parameter. The type to which `result'
|
||||
must point to depends of the value of `query', see documentation for
|
||||
more details. */
|
||||
int tre_config(int query, void *result);
|
||||
|
||||
enum {
|
||||
TRE_CONFIG_APPROX,
|
||||
TRE_CONFIG_WCHAR,
|
||||
TRE_CONFIG_MULTIBYTE,
|
||||
TRE_CONFIG_SYSTEM_ABI,
|
||||
TRE_CONFIG_VERSION
|
||||
};
|
||||
|
||||
/* Returns 1 if the compiled pattern has back references, 0 if not. */
|
||||
int tre_have_backrefs(const regex_t *preg);
|
||||
|
||||
/* Returns 1 if the compiled pattern uses approximate matching features,
|
||||
0 if not. */
|
||||
int tre_have_approx(const regex_t *preg);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* TRE_REGEX_H */
|
||||
|
||||
/* EOF */
|
||||
@@ -21,6 +21,7 @@
|
||||
|
||||
#ifndef __setup_include__
|
||||
#define __setup_include__
|
||||
|
||||
#undef PARAMH
|
||||
#undef UNISTDH
|
||||
#define STRINGH
|
||||
@@ -55,4 +56,21 @@
|
||||
#define NEED_U_INT32_T
|
||||
#define PREFIX_AQ
|
||||
#define LIST_SHOW_MODES
|
||||
|
||||
#ifndef mode_t
|
||||
/*
|
||||
Needed in s_conf.c for the third argument of open(3p).
|
||||
|
||||
Should be an int because of http://msdn.microsoft.com/en-us/library/z0kc8e3z(VS.71).aspx
|
||||
*/
|
||||
#define mode_t int
|
||||
#endif
|
||||
|
||||
/*
|
||||
make up for win32 (and win64?) users not being able to run ./configure.
|
||||
*/
|
||||
#ifndef intptr_t
|
||||
#define intptr_t long
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
/* tre-config.h. This file defines all compile time definitions
|
||||
that are needed in `regex.h' for Win32. */
|
||||
#ifndef HAVE_ALLOCA
|
||||
/* Define to 1 if you have `alloca', as a function or macro. */
|
||||
#define HAVE_ALLOCA 1
|
||||
#endif
|
||||
/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
|
||||
*/
|
||||
#define HAVE_ALLOCA_H 1
|
||||
|
||||
/* Define to 1 if you have the <libutf8.h> header file. */
|
||||
/* #undef HAVE_LIBUTF8_H */
|
||||
|
||||
/* Define to 1 if the system has the type `reg_errcode_t'. */
|
||||
/* #undef HAVE_REG_ERRCODE_T */
|
||||
|
||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||
#define HAVE_SYS_TYPES_H 1
|
||||
|
||||
/* Define to 1 if you have the <wchar.h> header file. */
|
||||
#define HAVE_WCHAR_H 1
|
||||
|
||||
/* Define if you want to enable approximate matching functionality. */
|
||||
#define TRE_APPROX 1
|
||||
|
||||
/* Define to enable multibyte character set support. */
|
||||
#undef TRE_MULTIBYTE
|
||||
|
||||
/* Define to the absolute path to the system regex.h */
|
||||
/* #undef TRE_SYSTEM_REGEX_H_PATH */
|
||||
|
||||
/* Define if you want TRE to use alloca() instead of malloc() when allocating
|
||||
memory needed for regexec operations. */
|
||||
#define TRE_USE_ALLOCA 1
|
||||
|
||||
/* Define to include the system regex.h from TRE regex.h */
|
||||
/* #undef TRE_USE_SYSTEM_REGEX_H */
|
||||
|
||||
/* Define to enable wide character (wchar_t) support. */
|
||||
#undef TRE_WCHAR
|
||||
|
||||
/* TRE version string. */
|
||||
#define TRE_VERSION "0.7.2"
|
||||
|
||||
/* TRE version level 1. */
|
||||
#define TRE_VERSION_1 0
|
||||
|
||||
/* TRE version level 2. */
|
||||
#define TRE_VERSION_2 7
|
||||
|
||||
/* TRE version level 3. */
|
||||
#define TRE_VERSION_3 2
|
||||
@@ -1 +0,0 @@
|
||||
0,10,20,30,40,50 * * * * /home/mydir-to/ircdcron/ircdchk >/dev/null 2>&1
|
||||
Executable
+1
@@ -0,0 +1 @@
|
||||
0,10,20,30,40,50 * * * * @IRCDDIR@/ircdcron/ircdchk >/dev/null 2>&1
|
||||
+1
-1
@@ -22,7 +22,7 @@
|
||||
# These values shouldn't need to be changed
|
||||
|
||||
# The path to the ircd binary
|
||||
ircdexe="@BINDIR@/ircd"
|
||||
ircdexe="@BINDIR@"
|
||||
|
||||
# The path to the ircd pid file
|
||||
ircdname="@IRCDDIR@/ircd.pid"
|
||||
|
||||
+74
-17
@@ -4,9 +4,26 @@
|
||||
CC=cl
|
||||
LINK=link
|
||||
RC=rc
|
||||
MT=mt
|
||||
|
||||
############################ USER CONFIGURATION ############################
|
||||
|
||||
# You are encouraged NOT to set these values here, but instead make a batch file
|
||||
# which passes all these arguments to nmake, like:
|
||||
# nmake -f makefile.win32 USE_ZIPLINKS=1 ZLIB_INC_DIR="c:\dev\zlib" etc etc...
|
||||
# Both ways will work, but if you use a batch file it's easier with
|
||||
# upgrading Unreal as you won't have to edit this makefile again.
|
||||
|
||||
### TRE ###
|
||||
#TRE_LIB_DIR="C:\dev\tre\win32\release"
|
||||
#TRE_INC_DIR="C:\dev\tre"
|
||||
#TRELIB="tre.lib"
|
||||
|
||||
### C-ARES ####
|
||||
#CARES_LIB_DIR="C:\dev\c-ares\vc\cares\dll-release"
|
||||
#CARES_INC_DIR="C:\dev\c-ares"
|
||||
#CARESLIB="cares.lib"
|
||||
|
||||
##### REMOTE INCLUDES ####
|
||||
#To enable remote include support you must have libcurl installed on your
|
||||
#system and it must have ares support enabled.
|
||||
@@ -73,10 +90,24 @@ RC=rc
|
||||
|
||||
############################# END CONFIGURATION ############################
|
||||
|
||||
!IFDEF CARES_INC_DIR
|
||||
CARES_INC=/I "$(CARES_INC_DIR)"
|
||||
!ENDIF
|
||||
!IFDEF CARES_LIB_DIR
|
||||
CARES_LIB=/LIBPATH:"$(CARES_LIB_DIR)"
|
||||
!ENDIF
|
||||
|
||||
!IFDEF TRE_INC_DIR
|
||||
TRE_INC=/I "$(TRE_INC_DIR)"
|
||||
!ENDIF
|
||||
!IFDEF TRE_LIB_DIR
|
||||
TRE_LIB=/LIBPATH:"$(TRE_LIB_DIR)"
|
||||
!ENDIF
|
||||
|
||||
!IFDEF USE_REMOTEINC
|
||||
CURLCFLAGS=/D USE_LIBCURL
|
||||
CURLOBJ=SRC/URL.OBJ
|
||||
CURLLIB=libcurl.lib
|
||||
CURLLIB=libcurl_imp.lib
|
||||
!IFDEF LIBCURL_INC_DIR
|
||||
LIBCURL_INC=/I "$(LIBCURL_INC_DIR)"
|
||||
!ENDIF
|
||||
@@ -110,25 +141,29 @@ OPENSSL_LIB=/LIBPATH:"$(OPENSSL_LIB_DIR)"
|
||||
|
||||
!IFDEF DEBUGEXTRA
|
||||
DBGCFLAG=/MDd /Zi /Od
|
||||
DBGCFLAGST=/MTd /Zi /Od
|
||||
DBGLFLAG=/debug
|
||||
MODDBGCFLAG=/LDd /MDd /Zi
|
||||
!ELSE
|
||||
DBGCFLAG=/MD /Zi
|
||||
DBGCFLAGST=/MT /Zi
|
||||
DBGLFLAG=/debug
|
||||
MODDBGCFLAG=/LDd /MD /Zi
|
||||
!ENDIF
|
||||
|
||||
FD_SETSIZE=/D FD_SETSIZE=16384
|
||||
CFLAGS=$(DBGCFLAG) $(LIBCURL_INC) $(ZLIB_INC) $(OPENSSL_INC) /J /I ./INCLUDE /I ./INCLUDE/WIN32/ARES /Fosrc/ /nologo \
|
||||
CFLAGS=$(DBGCFLAG) $(TRE_INC) $(CARES_INC) $(LIBCURL_INC) $(ZLIB_INC) $(OPENSSL_INC) /J /I ./INCLUDE /I ./INCLUDE/WIN32/ARES /Fosrc/ /nologo \
|
||||
$(ZIPCFLAGS) $(CURLCFLAGS) $(FD_SETSIZE) $(SSLCFLAGS) $(NS_ADDRESS) /D NOSPOOF=1 /c /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _USE_32BIT_TIME_T
|
||||
CFLAGSST=$(DBGCFLAGST) $(TRE_INC) $(CARES_INC) $(LIBCURL_INC) $(ZLIB_INC) $(OPENSSL_INC) /J /I ./INCLUDE /I ./INCLUDE/WIN32/ARES /Fosrc/ /nologo \
|
||||
$(ZIPCFLAGS) $(CURLCFLAGS) $(FD_SETSIZE) $(SSLCFLAGS) $(NS_ADDRESS) /D NOSPOOF=1 /c /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _USE_32BIT_TIME_T
|
||||
LFLAGS=kernel32.lib user32.lib gdi32.lib shell32.lib ws2_32.lib advapi32.lib \
|
||||
dbghelp.lib oldnames.lib comctl32.lib comdlg32.lib $(ZLIB_LIB) $(ZIPLIB) \
|
||||
dbghelp.lib oldnames.lib comctl32.lib comdlg32.lib $(CARES_LIB) $(CARESLIB) $(TRE_LIB) $(TRELIB) $(ZLIB_LIB) $(ZIPLIB) \
|
||||
$(OPENSSL_LIB) $(SSLLIBS) $(LIBCURL_LIB) $(CURLLIB) /def:wircd.def /implib:wircd.lib \
|
||||
/nologo $(DBGLFLAG) /out:WIRCD.EXE
|
||||
MODCFLAGS=$(MODDBGCFLAG) $(SSLCFLAGS) $(ZIPCFLAGS) $(CURLCFLAGS) /J /Fesrc/modules/ \
|
||||
/Fosrc/modules/ /nologo $(LIBCURL_INC) $(ZLIB_INC) $(OPENSSL_INC) /I ./INCLUDE /D \
|
||||
/Fosrc/modules/ /nologo $(TRE_INC) $(CARES_INC) $(LIBCURL_INC) $(ZLIB_INC) $(OPENSSL_INC) /I ./INCLUDE /D \
|
||||
DYNAMIC_LINKING /D NOSPOOF /D MODULE_COMPILE /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _USE_32BIT_TIME_T
|
||||
MODLFLAGS=/link /def:src/modules/module.def wircd.lib $(OPENSSL_LIB) $(SSLLIBS) \
|
||||
MODLFLAGS=/link /def:src/modules/module.def wircd.lib ws2_32.lib $(TRE_LIB) $(TRELIB) $(CARES_LIB) $(OPENSSL_LIB) $(SSLLIBS) \
|
||||
$(ZLIB_LIB) $(ZIPLIB) $(LIBCURL_LIB) $(CURLLIB)
|
||||
|
||||
INCLUDES=./include/struct.h ./include/config.h ./include/sys.h \
|
||||
@@ -143,7 +178,7 @@ EXP_OBJ_FILES=SRC/CHANNEL.OBJ SRC/SEND.OBJ SRC/SOCKET.OBJ \
|
||||
SRC/S_DEBUG.OBJ SRC/SUPPORT.OBJ SRC/LIST.OBJ \
|
||||
SRC/S_ERR.OBJ SRC/PACKET.OBJ SRC/S_BSD.OBJ \
|
||||
SRC/S_SERV.OBJ SRC/S_USER.OBJ SRC/CHARSYS.OBJ \
|
||||
SRC/VERSION.OBJ SRC/S_KLINE.OBJ SRC/S_EXTRA.OBJ SRC/IRCSPRINTF.OBJ \
|
||||
SRC/VERSION.OBJ SRC/S_KLINE.OBJ SRC/S_EXTRA.OBJ SRC/IRCSPRINTF.OBJ SRC/LUSERS.OBJ \
|
||||
SRC/SCACHE.OBJ SRC/ALN.OBJ SRC/RES.OBJ SRC/MODULES.OBJ \
|
||||
SRC/S_SVS.OBJ SRC/EVENTS.OBJ SRC/UMODES.OBJ SRC/AUTH.OBJ SRC/CIDR.OBJ SRC/SSL.OBJ \
|
||||
SRC/RANDOM.OBJ SRC/EXTCMODES.OBJ SRC/MD5.OBJ SRC/API-ISUPPORT.OBJ SRC/API-COMMAND.OBJ \
|
||||
@@ -172,7 +207,7 @@ MOD_FILES=SRC/MODULES/L_COMMANDS.C SRC/MODULES/M_CHGHOST.C SRC/MODULES/M_SDESC.C
|
||||
SRC/MODULES/M_KNOCK.C SRC/MODULES/M_UMODE2.C SRC/MODULES/M_SQUIT.C \
|
||||
SRC/MODULES/M_PROTOCTL.C SRC/MODULES/M_SJOIN.C SRC/MODULES/M_PASS.C \
|
||||
SRC/MODULES/M_USERHOST.C SRC/MODULES/M_ISON.C SRC/MODULES/M_SILENCE.C \
|
||||
SRC/MODULES/M_ADDMOTD.C SRC/MODULES/M_ADDOMOTD.C \
|
||||
SRC/MODULES/M_ADDLINE.C SRC/MODULES/M_ADDMOTD.C SRC/MODULES/M_ADDOMOTD.C \
|
||||
SRC/MODULES/M_WALLOPS.C SRC/MODULES/M_GLOBOPS.C SRC/MODULES/M_LOCOPS.C \
|
||||
SRC/MODULES/M_CHATOPS.C SRC/MODULES/M_ADMIN.C SRC/MODULES/M_TRACE.C \
|
||||
SRC/MODULES/M_NETINFO.C SRC/MODULES/M_LINKS.C SRC/MODULES/M_HELP.C \
|
||||
@@ -183,7 +218,8 @@ MOD_FILES=SRC/MODULES/L_COMMANDS.C SRC/MODULES/M_CHGHOST.C SRC/MODULES/M_SDESC.C
|
||||
SRC/MODULES/M_NICK.C SRC/MODULES/M_USER.C SRC/MODULES/M_MODE.C \
|
||||
SRC/MODULES/M_WATCH.C SRC/MODULES/M_PART.C SRC/MODULES/M_JOIN.C \
|
||||
SRC/MODULES/M_MOTD.C SRC/MODULES/M_OPERMOTD.C SRC/MODULES/M_BOTMOTD.C \
|
||||
SRC/MODULES/M_LUSERS.C SRC/MODULES/M_NAMES.C SRC/MODULES/M_SVSNOLAG.C
|
||||
SRC/MODULES/M_LUSERS.C SRC/MODULES/M_NAMES.C SRC/MODULES/M_SVSNOLAG.C \
|
||||
SRC/MODULES/M_STARTTLS.C SRC/MODULES/M_NOPOST.C SRC/MODULES/M_ISSECURE.C
|
||||
|
||||
DLL_FILES=SRC/MODULES/M_CHGHOST.DLL SRC/MODULES/M_SDESC.DLL SRC/MODULES/M_SETIDENT.DLL \
|
||||
SRC/MODULES/M_SETNAME.DLL SRC/MODULES/M_SETHOST.DLL SRC/MODULES/M_CHGIDENT.DLL \
|
||||
@@ -206,7 +242,7 @@ DLL_FILES=SRC/MODULES/M_CHGHOST.DLL SRC/MODULES/M_SDESC.DLL SRC/MODULES/M_SETIDE
|
||||
SRC/MODULES/M_TIME.DLL SRC/MODULES/M_SVSKILL.DLL SRC/MODULES/M_KNOCK.DLL \
|
||||
SRC/MODULES/M_UMODE2.DLL SRC/MODULES/M_SQUIT.DLL SRC/MODULES/M_PROTOCTL.DLL \
|
||||
SRC/MODULES/M_SJOIN.DLL SRC/MODULES/M_PASS.DLL SRC/MODULES/M_USERHOST.DLL \
|
||||
SRC/MODULES/M_ISON.DLL SRC/MODULES/M_SILENCE.DLL \
|
||||
SRC/MODULES/M_ISON.DLL SRC/MODULES/M_SILENCE.DLL SRC/MODULES/M_ADDLINE.DLL \
|
||||
SRC/MODULES/M_ADDMOTD.DLL SRC/MODULES/M_ADDOMOTD.DLL SRC/MODULES/M_WALLOPS.DLL \
|
||||
SRC/MODULES/M_GLOBOPS.DLL SRC/MODULES/M_LOCOPS.DLL SRC/MODULES/M_CHATOPS.DLL \
|
||||
SRC/MODULES/M_ADMIN.DLL SRC/MODULES/M_TRACE.DLL SRC/MODULES/M_NETINFO.DLL \
|
||||
@@ -219,6 +255,8 @@ DLL_FILES=SRC/MODULES/M_CHGHOST.DLL SRC/MODULES/M_SDESC.DLL SRC/MODULES/M_SETIDE
|
||||
SRC/MODULES/M_WATCH.DLL SRC/MODULES/M_PART.DLL SRC/MODULES/M_JOIN.DLL \
|
||||
SRC/MODULES/M_MOTD.DLL SRC/MODULES/M_OPERMOTD.DLL SRC/MODULES/M_BOTMOTD.DLL \
|
||||
SRC/MODULES/M_LUSERS.DLL SRC/MODULES/M_NAMES.DLL SRC/MODULES/M_SVSNOLAG.DLL \
|
||||
SRC/MODULES/M_STARTTLS.DLL \
|
||||
SRC/MODULES/M_NOPOST.DLL SRC/MODULES/M_ISSECURE.DLL \
|
||||
SRC/MODULES/CLOAK.DLL
|
||||
|
||||
|
||||
@@ -239,18 +277,19 @@ CLEAN:
|
||||
-@erase src\modules\*.ilk >NUL
|
||||
|
||||
./UNREAL.EXE: SRC/UNREAL.OBJ SRC/WIN32/UNREAL.RES
|
||||
$(LINK) $(DBGLFLAG) advapi32.lib src/unreal.obj src/win32/unreal.res
|
||||
$(LINK) $(DBGLFLAGST) advapi32.lib src/unreal.obj src/win32/unreal.res
|
||||
|
||||
CONF:
|
||||
-@copy include\win32\setup.h include\setup.h >NUL
|
||||
$(CC) src/win32/config.c
|
||||
-@config.exe
|
||||
|
||||
|
||||
|
||||
|
||||
./WIRCD.EXE: $(OBJ_FILES) SRC/win32/WIN32.RES
|
||||
$(LINK) $(LFLAGS) $(OBJ_FILES) SRC/win32/WIN32.RES SRC/WIN32/TRE.LIB SRC/WIN32/ARESLIB.LIB /MAPINFO:LINES /MAP
|
||||
$(LINK) $(LFLAGS) $(OBJ_FILES) SRC/win32/WIN32.RES /MAP
|
||||
-@erase src\win32\win32.res
|
||||
$(MT) -manifest WIRCD.EXE.manifest -outputresource:WIRCD.EXE;1
|
||||
!IFNDEF DEBUGEXTRA
|
||||
@echo Standard version built
|
||||
!ELSE
|
||||
@@ -296,6 +335,12 @@ src/support.obj: src/support.c $(INCLUDES)
|
||||
src/channel.obj: src/channel.c $(INCLUDES) ./include/channel.h
|
||||
$(CC) $(CFLAGS) src/channel.c
|
||||
|
||||
src/class.obj: src/class.c $(INCLUDES) ./include/class.h
|
||||
$(CC) $(CFLAGS) src/class.c
|
||||
|
||||
src/lusers.obj: src/lusers.c $(INCLUDES)
|
||||
$(CC) $(CFLAGS) src/lusers.c
|
||||
|
||||
src/aln.obj: src/aln.c $(INCLUDES)
|
||||
$(CC) $(CFLAGS) src/aln.c
|
||||
|
||||
@@ -387,7 +432,7 @@ src/win32.obj: src/win32/win32.c $(INCLUDES)
|
||||
$(CC) $(CFLAGS) src/win32/win32.c
|
||||
|
||||
src/unreal.obj: src/win32/unreal.c $(INCLUDES)
|
||||
$(CC) $(CFLAGS) src/win32/unreal.c
|
||||
$(CC) $(CFLAGSST) src/win32/unreal.c
|
||||
|
||||
src/help.obj: src/help.c $(INCLUDES)
|
||||
$(CC) $(CFLAGS) src/help.c
|
||||
@@ -457,10 +502,10 @@ MODULES: $(DLL_FILES)
|
||||
|
||||
src/modules/commands.dll: $(MOD_FILES) $(INCLUDES)
|
||||
$(CC) $(MODDBGCFLAG) $(LIBCURL_INC) $(ZLIB_INC) $(OPENSSL_INC) /nologo \
|
||||
$(SSLCFLAGS) $(ZIPCFLAGS) $(CURLCFLAGS) /Fosrc/modules/ \
|
||||
$(SSLCFLAGS) $(ZIPCFLAGS) $(CURLCFLAGS) $(TRE_INC) /Fosrc/modules/ \
|
||||
/I ./INCLUDE /D NOSPOOF /D MODULE_COMPILE /D _CRT_SECURE_NO_DEPRECATE \
|
||||
/D _USE_32BIT_TIME_T $(MOD_FILES) \
|
||||
$(MODLFLAGS) src/win32/tre.lib /OUT:src/modules/commands.dll
|
||||
$(MODLFLAGS) /OUT:src/modules/commands.dll
|
||||
|
||||
src/modules/m_chghost.dll: src/modules/m_chghost.c $(INCLUDES)
|
||||
$(CC) $(MODCFLAGS) src/modules/m_chghost.c $(MODLFLAGS)
|
||||
@@ -487,7 +532,7 @@ src/modules/m_svsmode.dll: src/modules/m_svsmode.c $(INCLUDES)
|
||||
$(CC) $(MODCFLAGS) src/modules/m_svsmode.c $(MODLFLAGS)
|
||||
|
||||
src/modules/m_tkl.dll: src/modules/m_tkl.c $(INCLUDES)
|
||||
$(CC) $(MODCFLAGS) src/modules/m_tkl.c $(MODLFLAGS) src/win32/tre.lib
|
||||
$(CC) $(MODCFLAGS) src/modules/m_tkl.c $(MODLFLAGS)
|
||||
|
||||
src/modules/m_swhois.dll: src/modules/m_swhois.c $(INCLUDES)
|
||||
$(CC) $(MODCFLAGS) src/modules/m_swhois.c $(MODLFLAGS)
|
||||
@@ -535,7 +580,7 @@ src/modules/m_lag.dll: src/modules/m_lag.c $(INCLUDES)
|
||||
$(CC) $(MODCFLAGS) src/modules/m_lag.c $(MODLFLAGS)
|
||||
|
||||
src/modules/m_message.dll: src/modules/m_message.c $(INCLUDES)
|
||||
$(CC) $(MODCFLAGS) src/modules/m_message.c src/modules/webtv.c $(MODLFLAGS) src/win32/tre.lib
|
||||
$(CC) $(MODCFLAGS) src/modules/m_message.c src/modules/webtv.c $(MODLFLAGS)
|
||||
|
||||
src/modules/m_nachat.dll: src/modules/m_nachat.c $(INCLUDES)
|
||||
$(CC) $(MODCFLAGS) src/modules/m_nachat.c $(MODLFLAGS)
|
||||
@@ -657,6 +702,9 @@ src/modules/m_squit.dll: src/modules/m_squit.c $(INCLUDES)
|
||||
src/modules/m_protoctl.dll: src/modules/m_protoctl.c $(INCLUDES)
|
||||
$(CC) $(MODCFLAGS) src/modules/m_protoctl.c $(MODLFLAGS)
|
||||
|
||||
src/modules/m_addline.dll: src/modules/m_addline.c $(INCLUDES)
|
||||
$(CC) $(MODCFLAGS) src/modules/m_addline.c $(MODLFLAGS)
|
||||
|
||||
src/modules/m_addmotd.dll: src/modules/m_addmotd.c $(INCLUDES)
|
||||
$(CC) $(MODCFLAGS) src/modules/m_addmotd.c $(MODLFLAGS)
|
||||
|
||||
@@ -768,6 +816,15 @@ src/modules/cloak.dll: src/modules/cloak.c $(INCLUDES)
|
||||
src/modules/m_svsnolag.dll: src/modules/m_svsnolag.c $(INCLUDES)
|
||||
$(CC) $(MODCFLAGS) src/modules/m_svsnolag.c $(MODLFLAGS)
|
||||
|
||||
src/modules/m_starttls.dll: src/modules/m_starttls.c $(INCLUDES)
|
||||
$(CC) $(MODCFLAGS) src/modules/m_starttls.c $(MODLFLAGS)
|
||||
|
||||
src/modules/m_nopost.dll: src/modules/m_nopost.c $(INCLUDES)
|
||||
$(CC) $(MODCFLAGS) src/modules/m_nopost.c $(MODLFLAGS)
|
||||
|
||||
src/modules/m_issecure.dll: src/modules/m_issecure.c $(INCLUDES)
|
||||
$(CC) $(MODCFLAGS) src/modules/m_issecure.c $(MODLFLAGS)
|
||||
|
||||
dummy:
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
/*
|
||||
* AwesomeChristians Chat Network (irc.awesomechristians.com) Network Configuration File
|
||||
* --------------------------------------------------
|
||||
* Added-at: 31 December 2001 15:25
|
||||
* Author: ChildLikeFaith
|
||||
* Email: childlikefaith@awesomechristians.com
|
||||
* -----------------------------------------
|
||||
*/
|
||||
|
||||
set {
|
||||
network-name "AwesomeChristians Chat Network";
|
||||
default-server "irc.awesomechristians.com";
|
||||
services-server "services.awesomechristians.com";
|
||||
stats-server "services.awesomechristians.com";
|
||||
help-channel "#operhelp";
|
||||
hiddenhost-prefix "awesome";
|
||||
prefix-quit "Quit:";
|
||||
hosts {
|
||||
local "ircop.awesomechristians.net";
|
||||
global "ircop.awesomechristians.net";
|
||||
coadmin "co.admin.awesomechristians.net";
|
||||
admin "admin.awesomechristians.net";
|
||||
servicesadmin "services.admin.awesomechristians.net";
|
||||
netadmin "network.admin.awesomechristians.net";
|
||||
host-on-oper-up "on";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
* AXEnet (irc.axenet.org) Network Configuration File
|
||||
* --------------------------------------------------
|
||||
*/
|
||||
|
||||
set {
|
||||
network-name "Axenet";
|
||||
default-server "irc.axenet.org";
|
||||
services-server "services.axenet.org";
|
||||
stats-server "stats.axenet.org";
|
||||
help-channel "#axenethelp";
|
||||
hiddenhost-prefix "axe";
|
||||
prefix-quit "Quit:";
|
||||
hosts {
|
||||
local "locop.axenet.org";
|
||||
global "ircop.axenet.org";
|
||||
coadmin "coadmin.axenet.org";
|
||||
admin "admin.axenet.org";
|
||||
servicesadmin "csop.axenet.org";
|
||||
netadmin "netadmin.axenet.org";
|
||||
host-on-oper-up "on";
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,28 @@
|
||||
/*
|
||||
* Bunker7.net Network Configuration File
|
||||
* -----------------------------------------
|
||||
* Added-at: 17 August 1999 12:34 CT
|
||||
* Author: Rogue
|
||||
* E-Mail: rogue@bunker7.net
|
||||
* $Id$
|
||||
*-----------------------------------------
|
||||
*/
|
||||
|
||||
set {
|
||||
network-name "bunker7";
|
||||
default-server "irc.bunker7.net";
|
||||
services-server "services.bunker7.net";
|
||||
stats-server "stats.bunker7.net";
|
||||
help-channel "#bunker7";
|
||||
hiddenhost-prefix "bunker7";
|
||||
prefix-quit "Quit:";
|
||||
hosts {
|
||||
local "local.bunker7.net";
|
||||
global "global.bunker7.net";
|
||||
coadmin "coadmin.bunker7.net";
|
||||
admin "admin.bunker7.net";
|
||||
servicesadmin "sadm.bunker7.net";
|
||||
netadmin "netadmin.bunker7.net";
|
||||
host-on-oper-up "off";
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
* BuRnNET (irc.burncycl.net) Network Configuration File
|
||||
* --------------------------------------------------
|
||||
* Added-at: 03 April 2001 03:31
|
||||
* Author: BuRnCycL
|
||||
* Email: burncycl@burncycl.net
|
||||
* -----------------------------------------
|
||||
*/
|
||||
|
||||
set {
|
||||
network-name "BuRnNET";
|
||||
default-server "irc.burncycl.net";
|
||||
services-server "services.burncycl.net";
|
||||
stats-server "stats.burncycl.net";
|
||||
help-channel "#help";
|
||||
hiddenhost-prefix "hide";
|
||||
prefix-quit "Quit:";
|
||||
hosts {
|
||||
local "locop.burncycl.net";
|
||||
global "oper.burncycl.net";
|
||||
coadmin "coadmin.burncycl.net";
|
||||
admin "admin.burncycl.net";
|
||||
servicesadmin "csop.burncycl.net";
|
||||
netadmin "netadmin.burncycl.net";
|
||||
host-on-oper-up "on";
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
* CaboNet (irc.cabonet.org) Network Configuration File
|
||||
* --------------------------------------------------
|
||||
* Added-at: 03 February 2001 15:38
|
||||
* Author: Nandin
|
||||
* Email: nandin@cabonet.org
|
||||
* -----------------------------------------
|
||||
*/
|
||||
|
||||
set {
|
||||
network-name "CaboNet";
|
||||
default-server "irc.cabonet.org";
|
||||
services-server "services.cabonet.org";
|
||||
stats-server "stats.cabonet.org";
|
||||
help-channel "#cabonet";
|
||||
hiddenhost-prefix "cnet";
|
||||
prefix-quit "Quit:";
|
||||
hosts {
|
||||
local "local.cabonet.org";
|
||||
global "oper.cabonet.org";
|
||||
coadmin "coadmin.cabonet.org";
|
||||
admin "admin.cabonet.org";
|
||||
servicesadmin "csop.cabonet.org";
|
||||
netadmin "netadmin.cabonet.org";
|
||||
host-on-oper-up "on";
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,25 @@
|
||||
/*
|
||||
* Added-at: 25 november 2000 17:35 GMT
|
||||
* Author: Highlander (J.S. Morrison)
|
||||
* E-Mail: highlander@chatcrap.com
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
set {
|
||||
network-name "ChatCrap";
|
||||
default-server "irc.chatcrap.com";
|
||||
services-server "services.cabonet.org";
|
||||
stats-server "stats.chatcrap.com";
|
||||
help-channel "#operhelp";
|
||||
hiddenhost-prefix "chatcrap";
|
||||
prefix-quit "Quit:";
|
||||
hosts {
|
||||
local "locop.chatcrap.com";
|
||||
global "ircop.chatcrap.com";
|
||||
coadmin "coadmin.chatcrap.com";
|
||||
admin "admin.chatcrap.com";
|
||||
servicesadmin "serviceop.chatcrap.com";
|
||||
netadmin "netadmin.chatcrap.com";
|
||||
host-on-oper-up "on";
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
* ChatUniverse (irc.chatuniverse.net) Network Configuration File
|
||||
* --------------------------------------------------
|
||||
* Added-at: 16 March 2001 13:02
|
||||
* Author: PeTrArChY
|
||||
* Email: bradbury@rebeldev.net
|
||||
* -----------------------------------------
|
||||
*/
|
||||
|
||||
set {
|
||||
network-name "ChatUniverse";
|
||||
default-server "irc.chatuniverse.net";
|
||||
services-server "services.chatuniverse.net";
|
||||
stats-server "stats.chatuniverse.net";
|
||||
help-channel "#chatuniverse";
|
||||
hiddenhost-prefix "CU";
|
||||
prefix-quit "Quit:";
|
||||
hosts {
|
||||
local "locop.chatuniverse.net";
|
||||
global "oper.chatuniverse.net";
|
||||
coadmin "coadmin.chatuniverse.net";
|
||||
admin "admin.chatuniverse.net";
|
||||
servicesadmin "csop.chatuniverse.net";
|
||||
netadmin "netadmin.chatuniverse.net";
|
||||
host-on-oper-up "on";
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
* CTCP Networks (irc.ctcp.net) Network Configuration File
|
||||
*
|
||||
* Added-at: 12 February 2002 19:54
|
||||
* Author: Mark
|
||||
* Email: mark@ctcp.net
|
||||
*/
|
||||
|
||||
set {
|
||||
network-name "CTCP Networks";
|
||||
default-server "irc.ctcp.net";
|
||||
services-server "services.ctcp.net";
|
||||
stats-server "stats.ctcp.net";
|
||||
help-channel "#opers";
|
||||
hiddenhost-prefix "ctcp";
|
||||
hosts {
|
||||
local "locop.ctcp.net";
|
||||
global "oper.ctcp.net";
|
||||
coadmin "coadmin.ctcp.net";
|
||||
admin "admin.ctcp.net";
|
||||
servicesadmin "csop.ctcp.net";
|
||||
netadmin "netadmin.ctcp.net";
|
||||
host-on-oper-up yes;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
* Dark Kaos Network (irc.darkkaos.net) Network Configuration File
|
||||
*
|
||||
* Added-at: 04 February 2002 03:15
|
||||
* Author: ka0t1c_m4n
|
||||
* Email: drk_kaos@yahoo.com
|
||||
*/
|
||||
|
||||
set {
|
||||
network-name "Dark Kaos Network";
|
||||
default-server "irc.darkkaos.net";
|
||||
services-server "services.darkkaos.net";
|
||||
stats-server "stats.darkkaos.net";
|
||||
help-channel "#help";
|
||||
hiddenhost-prefix "hide";
|
||||
hosts {
|
||||
local "localop.darkkaos.net";
|
||||
global "would.u.like.to.be.me.com";
|
||||
coadmin "ircop.darkkaos.net";
|
||||
admin "i.hate.terr.oists.net";
|
||||
servicesadmin "Csop.darkkaos.net";
|
||||
netadmin "netadmin.darkkaos.net";
|
||||
host-on-oper-up yes;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
set {
|
||||
network-name "DigitalIRC.Net";
|
||||
default-server "irc.digitalirc.net";
|
||||
services-server "Services.DigitalIRC.Net";
|
||||
stats-server "Statistics.DigitalIRC.com";
|
||||
help-channel "#Digitalirc";
|
||||
hiddenhost-prefix "NN";
|
||||
prefix-quit "Quit:";
|
||||
hosts {
|
||||
local "LocOper.DigitalIRC.Net";
|
||||
global "Oper.DigitalIRC.Net";
|
||||
coadmin "NetAdmin.DigitalIRC.Net";
|
||||
admin "Admin.DigitalIRC.Net";
|
||||
servicesadmin "ServicesOp.DigitalIRC.Net";
|
||||
netadmin "NetAdmin.DigitalIRC.Net";
|
||||
host-on-oper-up "off";
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
* Discussioni.Org (IRC.Discussioni.Org) Network Configuration File
|
||||
*
|
||||
* Added-at: 17 January 2002 22:39
|
||||
* Author: Jollino
|
||||
* Email: jollino@discussioni.org
|
||||
*/
|
||||
|
||||
set {
|
||||
network-name "Discussioni.Org";
|
||||
default-server "IRC.Discussioni.Org";
|
||||
services-server "Services.Discussioni.Org";
|
||||
stats-server "Stats.Discussioni.Org";
|
||||
help-channel "#help";
|
||||
hiddenhost-prefix "DISCUSSIONI";
|
||||
hosts {
|
||||
local "LocOp.Discussioni.Org";
|
||||
global "Oper.Discussioni.Org";
|
||||
coadmin "Co-Admin.Discussioni.Org";
|
||||
admin "Admin.Discussioni.Org";
|
||||
servicesadmin "ServOper.Discussioni.Org";
|
||||
netadmin "NetAdmin.Discussioni.Org";
|
||||
host-on-oper-up yes;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
set {
|
||||
network-name "DragonWings";
|
||||
default-server "irc.dragonwings.org";
|
||||
services-server "saturn.dragonwings.org";
|
||||
stats-server "stats.dragonwings.org";
|
||||
help-channel "#DragonWings";
|
||||
hiddenhost-prefix "dw";
|
||||
prefix-quit "Quit:";
|
||||
hosts {
|
||||
local "locop.dragonwings.org";
|
||||
global "ircop.dragonwings.org";
|
||||
coadmin "coadmin.dragonwings.org";
|
||||
admin "admin.dragonwings.org";
|
||||
servicesadmin "serviceop.dragonwings.org";
|
||||
netadmin "netadmin.dragonwings.org";
|
||||
host-on-oper-up "off";
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
* GamesCafe (irc.gamerscafe.net) Network Configuration File
|
||||
*
|
||||
* Added-at: 22 August 2001 01:17
|
||||
* Author: Osiris
|
||||
* Email: daniel@linux.ws
|
||||
*/
|
||||
|
||||
set {
|
||||
network-name "GamesCafe";
|
||||
default-server "irc.gamerscafe.net";
|
||||
services-server "Services.GamersCafe.Net";
|
||||
stats-server "Services.GamersCafe.Net";
|
||||
help-channel "#GamersCafe";
|
||||
hiddenhost-prefix "GC";
|
||||
hosts {
|
||||
local "localoper.gamerscafe.net";
|
||||
global "oper.gamerscafe.net";
|
||||
coadmin "coadmin.gamerscafe.net";
|
||||
admin "admin.gamerscafe.net";
|
||||
servicesadmin "csop.gamerscafe.net";
|
||||
netadmin "network-admin.gamerscafe.net";
|
||||
host-on-oper yes;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
* German-Elite (irc.german-elite.net) Network Configuration File
|
||||
* -----------------------------------------
|
||||
*/
|
||||
|
||||
set {
|
||||
network-name "German-Elite";
|
||||
default-server "irc.german-elite.net";
|
||||
services-server "services.german-elite.net";
|
||||
stats-server "stats.german-elite.net";
|
||||
help-channel "#german-elite";
|
||||
hiddenhost-prefix "GE";
|
||||
prefix-quit "Quit:";
|
||||
hosts {
|
||||
local "locop.german-elite.net";
|
||||
global "ircop.german-elite.net";
|
||||
coadmin "coadmin.german-elite.net";
|
||||
admin "admin.german-elite.net";
|
||||
servicesadmin "csop.german-elite.net";
|
||||
netadmin "netadmin.german-elite.net";
|
||||
host-on-oper-up "on";
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
* Network Configuration File Template
|
||||
* -----------------------------------------
|
||||
* Added-at: August 2000
|
||||
* Author: Anonymos
|
||||
* E-Mail: Anonymos@Global-IRC.de
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
set {
|
||||
network-name "Global";
|
||||
default-server "IRC.Global-IRC.de";
|
||||
services-server "Service.Global-IRC.de";
|
||||
stats-server "Stats.Global-IRC.de";
|
||||
help-channel "#Global-IRC-World";
|
||||
hiddenhost-prefix "GL-IRC";
|
||||
prefix-quit "Quit:";
|
||||
hosts {
|
||||
local "Local-IRC-OP.Global-IRC.de";
|
||||
global "Global-IRC-OP.Global-IRC.de";
|
||||
coadmin "CoAdmin.Global-IRC.de";
|
||||
admin "ServerAdmin.Global-IRC.de";
|
||||
servicesadmin "ServiceAdmin.Global-IRC.de";
|
||||
netadmin "NetworkAdmin.Global-IRC.de";
|
||||
host-on-oper-up "on";
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,28 @@
|
||||
/*
|
||||
* Global-IRC.net Network Configuration File
|
||||
* -----------------------------------------
|
||||
* Added-at: 14 July 1999 00:00 GMT
|
||||
* Author: Stskeeps (Carsten Munk)
|
||||
* E-Mail: stskeeps@global-irc.net
|
||||
* $Id$
|
||||
* -----------------------------------------
|
||||
*/
|
||||
|
||||
set {
|
||||
network-name "Global-IRC";
|
||||
default-server "irc.global-irc.net";
|
||||
services-server "services.global-irc.net";
|
||||
stats-server "stats.global-irc.net";
|
||||
help-channel "#Global";
|
||||
hiddenhost-prefix "global";
|
||||
prefix-quit "Quit:";
|
||||
hosts {
|
||||
local "locop.global-irc.net";
|
||||
global "ircop.global-irc.net";
|
||||
coadmin "coadmin.global-irc.net";
|
||||
admin "admin.global-irc.net";
|
||||
servicesadmin "serviceop.global-irc.net";
|
||||
netadmin "netadmin.global-irc.net";
|
||||
host-on-oper-up "off";
|
||||
};
|
||||
};
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user