mirror of
https://github.com/anope/anope.git
synced 2026-07-06 12:53:14 +02:00
Compare commits
701 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 1dee851207 | |||
| 9c91d386e4 | |||
| 3e4d87051b | |||
| 26975fc011 | |||
| c15dc49994 | |||
| 14ee76a0ad | |||
| 4465c67790 | |||
| 20e0fa33fc | |||
| 7e76daf39f | |||
| 2ee63f0f68 | |||
| c35029fa2f | |||
| bae8987ec1 | |||
| 470d4d1a97 | |||
| 78bac905c2 | |||
| d88d8e940e | |||
| b2c3775b58 | |||
| b311248bed | |||
| f7f45b4e2b | |||
| 3cad3514f1 | |||
| 1020ca47bd | |||
| 48dbb70ecc | |||
| ae16206f0c | |||
| 7045f206af | |||
| 67bd3e44c0 | |||
| 264981fb1b | |||
| 47d471c53d | |||
| e43bc49ba7 | |||
| d9de4ddd82 | |||
| 8f7f4b1593 | |||
| fc64c0c6dd | |||
| 03d065e952 | |||
| 77a52eec7c | |||
| 523a586176 | |||
| af32a14fc1 | |||
| 5c8548040a | |||
| 6a42c1a4f3 | |||
| 0defcda8d0 | |||
| f6ee88c42a | |||
| 34f65e3266 | |||
| 02ac3a403c | |||
| e1e840a87d | |||
| eb66f9eda0 | |||
| a4c37a373a | |||
| bca9b4ce83 | |||
| a2446b8d4b | |||
| e567cfda36 | |||
| 961a9bc506 | |||
| da6e2730c2 | |||
| 2b8072bf80 | |||
| 49cea76841 | |||
| e1c8aa0dbc | |||
| 2546e865e2 | |||
| d6af21e0d9 | |||
| 18522f7fc8 | |||
| 4c167bed69 | |||
| 32a21679fb | |||
| a5eaf6fc49 | |||
| 9d7245bded | |||
| 02fb4b67cf | |||
| cf44418e10 | |||
| 6fbb7cffe9 | |||
| b279863acb | |||
| 9e7dadb967 | |||
| 9069bf4e2f | |||
| e85b0a5f68 | |||
| 195eff9c04 | |||
| 42aa330db3 | |||
| 1e9d959857 | |||
| 38721993f1 | |||
| 1b782235c4 | |||
| 368300d319 | |||
| 94e10d52fb | |||
| d25c8c169e | |||
| 67b7fed9ed | |||
| e32a8dbbe5 | |||
| 281edf8475 | |||
| ce7c266651 | |||
| c1166e3618 | |||
| 8294c94b95 | |||
| 6f09b703dd | |||
| 466e5be741 | |||
| 32076c099c | |||
| 216b96aa57 | |||
| 6d592e2a0f | |||
| feb5a4d935 | |||
| e03ae0cd85 | |||
| 901fc3e40f | |||
| 5683f45925 | |||
| bafc17472e | |||
| 7638c7a884 | |||
| d25722ddd0 | |||
| 750d1009ec | |||
| b8e7960ff6 | |||
| ff878bbda8 | |||
| 1baf774647 | |||
| 772410d974 | |||
| 7ceb4426c7 | |||
| 10c7a9ff94 | |||
| b3c4b28a67 | |||
| 0da4150283 | |||
| 5920f1b59c | |||
| 68fcb1af93 | |||
| 0574de2d22 | |||
| c9c53dbe61 | |||
| a084245822 | |||
| 77e3f062da | |||
| 0e14adcb0f | |||
| 8bb3067e42 | |||
| 0c469abe4a | |||
| d63e32a579 | |||
| f13c450b93 | |||
| e95c07291a | |||
| 2963fc0a1d | |||
| 5d309d46e1 | |||
| 2e7fcd3098 | |||
| 884759aed4 | |||
| 2ec65023a6 | |||
| 0093f3fa44 | |||
| 2ad76278dd | |||
| 23e59d9f2c | |||
| 3cb9e0b97c | |||
| 0b7b6d9d6d | |||
| 56e6efbe8f | |||
| feed624cdc | |||
| 1a6f42b994 | |||
| 04f49225c9 | |||
| b18d1a69b6 | |||
| 0ace685597 | |||
| bfcfd0b727 | |||
| 087f1cb359 | |||
| 010d20198e | |||
| 953e804231 | |||
| c656fe0694 | |||
| fb3ec7a897 | |||
| 274658f955 | |||
| 7621306f4b | |||
| b804867105 | |||
| f8f1550c31 | |||
| 0fcc66711b | |||
| 8d9574e306 | |||
| 6cb17c734c | |||
| 3545e8e383 | |||
| 3c18e02b0b | |||
| b831cd8a36 | |||
| 516ab164f6 | |||
| b2d028533d | |||
| a88d9cb1f0 | |||
| b57ef5d2c7 | |||
| 1a96390826 | |||
| 60339edf40 | |||
| 6990c692d6 | |||
| 98e62b4032 | |||
| a1d7d42d6a | |||
| 3f7c0829ef | |||
| 46d8af781d | |||
| 67b7c8bd7d | |||
| 21486e2c81 | |||
| 29ac40b584 | |||
| dde444ed0e | |||
| 9b6c209c80 | |||
| 3c7d67c8cd | |||
| c730291762 | |||
| c593661f40 | |||
| a9bf251886 | |||
| beac29b1d0 | |||
| 35d6437d45 | |||
| 76ce8ece1a | |||
| 464093d36e | |||
| 71bb3fefcc | |||
| 1f6f9f5dbb | |||
| 34bf21f7d1 | |||
| 847dfd9523 | |||
| a96e40e249 | |||
| 8656b65e39 | |||
| 39422beaef | |||
| 6d29538346 | |||
| bdf4650ff8 | |||
| 074bde5ccc | |||
| a4f7d847ab | |||
| 5beb338247 | |||
| 7b1154de69 | |||
| 46aeb8b70b | |||
| fe6271dffb | |||
| 7cede5bb60 | |||
| 2b7f0084b7 | |||
| ec7ce09ef4 | |||
| 574c8dfbc7 | |||
| 4381031994 | |||
| b3010c3c6b | |||
| d092f5e7c8 | |||
| 358f46b8ae | |||
| e5125c2c84 | |||
| 65db59b3ec | |||
| 95cd7a6aee | |||
| 12515fd2c1 | |||
| 437a6dbb29 | |||
| d96ca9b824 | |||
| aefde6e44d | |||
| 23a0628fba | |||
| ef9c69f99d | |||
| 8be331618c | |||
| a5fdf7c546 | |||
| dba19d839a | |||
| 7453c71c00 | |||
| f09ea316dd | |||
| ac0f3c5ccf | |||
| 76ea111980 | |||
| 9f9183afc4 | |||
| ef32505633 | |||
| 304494322f | |||
| 9e510cd0d9 | |||
| 0f49d1051a | |||
| 4b97a9b13f | |||
| 07f72a3122 | |||
| f4543edfe2 | |||
| 095751363d | |||
| 1b67b97e93 | |||
| d4bf0957d1 | |||
| 99acdcf168 | |||
| e95950ee26 | |||
| fc0171fb40 | |||
| 1c82697ccb | |||
| f3bb46a9f5 | |||
| 3b62c8f3e2 | |||
| 4d054aa2b2 | |||
| 3a8ff5d456 | |||
| 0b783b66a4 | |||
| 0c7050c506 | |||
| d02b3c1c45 | |||
| d8a945b1a6 | |||
| b50fbec705 | |||
| d488efdcfe | |||
| 13c5eec00a | |||
| 39eb9f8cfc | |||
| 83c2f8e970 | |||
| e23cf0c221 | |||
| de174149f7 | |||
| 663e79e4d3 | |||
| 2a5e7827bd | |||
| 9c0b843665 | |||
| 8fdfa6e094 | |||
| dad4be050b | |||
| 937b0e7185 | |||
| db4f38bcf5 | |||
| c2e09fdaea | |||
| 01768bc73e | |||
| c18eedec18 | |||
| 0e0615c6fe | |||
| 5bd3fde79b | |||
| 647f8cd4e6 | |||
| b2e25db159 | |||
| 9f9371531d | |||
| b578ed2544 | |||
| 0a7f167060 | |||
| d427772bd3 | |||
| b2d670298b | |||
| 6b646fa1f8 | |||
| 72269c44e5 | |||
| 3b2366e4ba | |||
| 257a8a9a24 | |||
| 7a1d2e11dd | |||
| 8dc687b657 | |||
| 18fc113984 | |||
| 20c1a5d638 | |||
| 8000ae0c0f | |||
| 284d95bfe2 | |||
| c7d5ee4bec | |||
| 4c4cc0ded7 | |||
| 83f89bfece | |||
| 7cf4245359 | |||
| 9284441491 | |||
| 7592a6981b | |||
| 56b158ea43 | |||
| 0143dafe51 | |||
| a2dbcc620e | |||
| 9b5fdea8f2 | |||
| fab07d6b75 | |||
| 1d198da436 | |||
| 8b6e17fe7e | |||
| 86484b6c2b | |||
| c14ae99d32 | |||
| cb0cda2f8d | |||
| 2af363755a | |||
| 753b8dc989 | |||
| d2ea1e7917 | |||
| a8f66578b1 | |||
| ca39aeb554 | |||
| a941f9bde0 | |||
| f4f6787c9c | |||
| 82816cb206 | |||
| 58f0c8c612 | |||
| 21e1913c0f | |||
| 79e7c3f98a | |||
| 72127e1b00 | |||
| ed47588087 | |||
| 448967cefc | |||
| 979027138b | |||
| 176e0e4f37 | |||
| b431d4dccf | |||
| 1b12b80b48 | |||
| 52fdc45597 | |||
| 91762524e2 | |||
| 413b38b1c1 | |||
| ecdccd6ad6 | |||
| e0fd118b3e | |||
| c10d7bdada | |||
| 4e2ca31cf5 | |||
| addd2a1987 | |||
| 4071487f80 | |||
| 9c17c2d818 | |||
| dd9fcca45d | |||
| d9c0a13caf | |||
| 5daa84c7f9 | |||
| b12669487f | |||
| 0e9a1e87d0 | |||
| f118960a25 | |||
| 5d6a71b6d2 | |||
| 23fab4ad06 | |||
| 825dc5be46 | |||
| b6fb6410c0 | |||
| 45dfea5ad9 | |||
| d0a5316c67 | |||
| 382ab84938 | |||
| f451c6cbac | |||
| 9645f53dc8 | |||
| 41802c28c6 | |||
| 97a13081e9 | |||
| 38fcf15d62 | |||
| 75dd784538 | |||
| e955db6e85 | |||
| a434651e75 | |||
| 7d674726c2 | |||
| be50211ae6 | |||
| faa8f57bb2 | |||
| 8cf21191fb | |||
| ae847bcaf0 | |||
| c4bbef0af8 | |||
| 7953274a88 | |||
| d8eb3d4937 | |||
| f91f375b70 | |||
| eac25d016a | |||
| 2356a1caab | |||
| 164b349ef9 | |||
| 2e370f6ed5 | |||
| 9d30e1d63f | |||
| 4771af1cb8 | |||
| 9c9df2ad1f | |||
| 7f418a58da | |||
| 510045858f | |||
| d270910ace | |||
| 10aeba2da2 | |||
| 4e675c50e5 | |||
| 0a37576270 | |||
| 8f6f2a2c47 | |||
| 36a465473e | |||
| 23a0ecd0c4 | |||
| 601af1b0eb | |||
| fb2aae1b17 | |||
| ac984af11a | |||
| d6cbd64621 | |||
| e6bdc5dddd | |||
| ba805e30b8 | |||
| 6e48b1d56f | |||
| cd6401f628 | |||
| a25f94456d | |||
| b5228282e1 | |||
| 593ec34ff7 | |||
| 7ce0eb219b | |||
| 99282e65a6 | |||
| d07e60b3da | |||
| 3da2cdb496 | |||
| ecdd046c80 | |||
| 98b35dfab2 | |||
| 56abaf8498 | |||
| 5394f5433a | |||
| c414433fae | |||
| 16d08e57df | |||
| 252a65af7e | |||
| d40edcae69 | |||
| 4c1cc0e05d | |||
| 80c332bc41 | |||
| 5a25a3807b | |||
| 27a2645ed3 | |||
| 830361e97d | |||
| 93a92bb73b | |||
| b9dc44ae9a | |||
| f52bbe22af | |||
| 96d7797134 | |||
| 9810da9829 | |||
| 5692abb316 | |||
| 2e65bd4012 | |||
| 1ac4a1d9a5 | |||
| 8d13a355cd | |||
| 8c4eec2b6e | |||
| 776207ba67 | |||
| 2f5e880e57 | |||
| 94f781726e | |||
| 054c227df0 | |||
| 907e192aab | |||
| d6d0c883b0 | |||
| 7f4327e8ba | |||
| 132932ffaf | |||
| c007b829f7 | |||
| 3b647b0740 | |||
| 7a21648683 | |||
| 389c1dbd92 | |||
| d95189a4d8 | |||
| e65a22ae9d | |||
| 4e8cc4f786 | |||
| dfc18db1dd | |||
| 63dbd7fbf0 | |||
| c1cdefe1a7 | |||
| cd9a2af65d | |||
| 7fe0543bc6 | |||
| 2a6ad3d9fc | |||
| 38cbff4156 | |||
| a86162f287 | |||
| ceddb8370c | |||
| 040b06ad56 | |||
| 1666b1a8d8 | |||
| 4362f53cc3 | |||
| cc616a7146 | |||
| 0f01c04b02 | |||
| 4cbdf9a73b | |||
| fce257dc43 | |||
| ad7601b0cc | |||
| 5be9de5d12 | |||
| 02ed9a9725 | |||
| 074f163750 | |||
| de023bab0a | |||
| 510a746f8d | |||
| 8eb46772e6 | |||
| d563aa0da8 | |||
| 3e3312db25 | |||
| bb5c4906cc | |||
| 444976e64f | |||
| 57b614ae59 | |||
| 2f9eabdb72 | |||
| a458f7c840 | |||
| 65bf84cfb5 | |||
| 5efaa5b206 | |||
| 41f4c7dab6 | |||
| 0f1936f63d | |||
| 5baa6247a9 | |||
| 82f5d1d61d | |||
| dd8dd3b4a0 | |||
| a718223585 | |||
| abc4851287 | |||
| 3d1255dbe9 | |||
| a762391446 | |||
| c070a00114 | |||
| e7c3090a70 | |||
| 5dd6326eff | |||
| 535ad6fd70 | |||
| 5df4ac9a98 | |||
| 4c54a3939f | |||
| 3d09748d1c | |||
| 36a4be7623 | |||
| 5fc72660e4 | |||
| 303e652a35 | |||
| e5447a8024 | |||
| 1bee18fcf4 | |||
| a57e41304f | |||
| e0e8147ee0 | |||
| 41a24afa4f | |||
| 4266d17e8c | |||
| 8d3fa47ab2 | |||
| 64781817ac | |||
| 69c18f131f | |||
| e030771cbc | |||
| 03f05d3948 | |||
| 32c4908c8c | |||
| c5ff7c6868 | |||
| 89257d9bce | |||
| e47aacad0e | |||
| 72ade225a7 | |||
| a52af0d260 | |||
| 92920f5a1c | |||
| bf727285bc | |||
| 310e95a92e | |||
| 78bff86dab | |||
| 3f093d708f | |||
| c3cc5804c3 | |||
| dc58239c8a | |||
| b67963353f | |||
| a899c04ec2 | |||
| fb17bc85ea | |||
| 474cd7a99b | |||
| 7de4b86b7f | |||
| 76337bc04a | |||
| abe232601b | |||
| 6ada3ec871 | |||
| 61a8dd57f7 | |||
| 94427b234c | |||
| fb3c819bee | |||
| f0c23e80a2 | |||
| 1e86c46000 | |||
| 2f49065500 | |||
| 41ae2dbefb | |||
| f44280a9c9 | |||
| d147db9023 | |||
| f484a68dee | |||
| 8550e22167 | |||
| 9834518b28 | |||
| 64ca357b13 | |||
| dc5039e994 | |||
| 845ca576b4 | |||
| 2264a206d2 | |||
| d324e91520 | |||
| 9ac1b4ba01 | |||
| 7e0cb6d8ef | |||
| 3055b7272b | |||
| 969cd5dd6c | |||
| 1f02278a1c | |||
| 32007f81cf | |||
| 609f87d39f | |||
| e88925e587 | |||
| c46ec39e50 | |||
| 9b2202dfee | |||
| 03f6e26550 | |||
| c554e85063 | |||
| 2892c9580f | |||
| 3c0994a89e | |||
| e800afcfac | |||
| 2ad697898f | |||
| e4068249dd | |||
| d45cb5451e | |||
| d9c9f2a407 | |||
| 7213413f8b | |||
| 516211c88a | |||
| d576137f28 | |||
| e1f5e030bc | |||
| afffeb0a1d | |||
| 4fc71bb22f | |||
| d4732faf41 | |||
| 95684187b6 | |||
| 4f33b17f96 | |||
| 0cdab86978 | |||
| 4f76bee273 | |||
| 8557a4161a | |||
| c9008cdafa | |||
| 8a7793da0c | |||
| 64b332730e | |||
| 36837330ae | |||
| 8b64e46ef1 | |||
| c4460784c2 | |||
| 408ec02406 | |||
| 67fc8c3416 | |||
| fb2fd9e9d3 | |||
| 527e04275f | |||
| c895bd2e59 | |||
| 94b2d1ac12 | |||
| a76e074f6d | |||
| 2f004c2aab | |||
| b940077553 | |||
| c8ded08b43 | |||
| 62a01dcc87 | |||
| 0cd3bfa24f | |||
| e46bcff324 | |||
| 67719e8db1 | |||
| 48be41cf7b | |||
| 5ceee5df38 | |||
| 1c12976958 | |||
| 96583892c6 | |||
| 0991d4e199 | |||
| 58233fb8bc | |||
| be928b5bbc | |||
| 31bc1d6b82 | |||
| 829ef1b7bd | |||
| b068874f40 | |||
| 18b3c572f4 | |||
| af034928cb | |||
| 8d40a750cc | |||
| 6a3f7c01b1 | |||
| 4c2bf72cb6 | |||
| 8e7b742ec7 | |||
| 19b47c7bae | |||
| 3bdc81348a | |||
| bf8f62c32d | |||
| d417241a5b | |||
| e5cb2018e5 | |||
| df6095fed2 | |||
| 8210e82a5e | |||
| d6d72cd803 | |||
| 063d9bf5f6 | |||
| 830e8617e6 | |||
| cf89e10a4c | |||
| 6842ad36f7 | |||
| 24f17de4aa | |||
| bbb04d4662 | |||
| 20052247c3 | |||
| 8b61a529a2 | |||
| 1137c50095 | |||
| 52d422d020 | |||
| 43c460e593 | |||
| 17ba13bc95 | |||
| 60229b15d2 | |||
| 3c88f3b8cf | |||
| 93cb5d06db | |||
| 7a64d95f7c | |||
| ff66e15f38 | |||
| 07902c03fd | |||
| d9949320c7 | |||
| b0ec178e85 | |||
| f753a925ad | |||
| 74dbfe0699 | |||
| 3bea089793 | |||
| ff93355af8 | |||
| 8fecad3039 | |||
| 37bd2c238e | |||
| 9a947fa435 | |||
| 4f7868b125 | |||
| 8066378471 | |||
| ab27b792b0 | |||
| f1c3bdd55e | |||
| 08edb15bea | |||
| 56c6ef4449 | |||
| 6526d2d8b3 | |||
| 76ab5c2c38 | |||
| 54e98f017c | |||
| bb7706d0f7 | |||
| 16e0b72d2d | |||
| b578e32531 | |||
| 4d8e3b847d | |||
| eaade23f9b | |||
| f20bac996d | |||
| 93bfd4cbe1 | |||
| 6620f9e9bd | |||
| dc64cfc940 | |||
| f8829783d2 | |||
| d6e600f74b | |||
| 5f7113bc0e | |||
| dc4daa25a7 | |||
| 0cadaedfbe | |||
| 11ad788dfd | |||
| 38a60d9142 | |||
| e8ad509aa5 | |||
| 37b3ed8ef3 | |||
| a6af422184 | |||
| 53acb73193 | |||
| 57f6d4f49c | |||
| d0467adea2 | |||
| 16924f68c0 | |||
| d280c48e6b | |||
| f0c0daa644 | |||
| 7a2d027e1d | |||
| f627a3bacd | |||
| 5a1257b7f0 | |||
| 866f3f32ab | |||
| 20ce170024 | |||
| 4034b3054a | |||
| e581158645 | |||
| 01021131ca | |||
| 13ea98a02e | |||
| db56a61f86 | |||
| df321a118e | |||
| 1931fcf0e5 | |||
| 63b02b8c97 | |||
| 1c8a77ab9f | |||
| 0c7d53f81e | |||
| bcc3ae5742 | |||
| 4e67e0897a | |||
| 76a9538441 | |||
| 91c7862579 | |||
| 6b6bc81999 | |||
| 1f2c385bb9 | |||
| d79dd0b7d7 | |||
| 8b2e8137f6 | |||
| 732466d8f4 | |||
| 3049916ade | |||
| 0afd666f22 | |||
| 8021a53ac4 | |||
| 0663f5e412 | |||
| 2ee496b8ac | |||
| 3abb18721b | |||
| 4eb0a3bdb7 | |||
| 6a03eb69eb | |||
| 4fa2a00bd5 | |||
| 82008d507c | |||
| 2ab4f175a8 | |||
| c9473bcc67 | |||
| 75ed5a9b59 | |||
| f010ab7dbf | |||
| 00b2cc9ce6 | |||
| d52cc7bcbc | |||
| 63838fa77d | |||
| e36f8143e3 | |||
| 72b26043b2 | |||
| f369157906 | |||
| ba46b8e4ab | |||
| 254901aace | |||
| c1c45a5db9 | |||
| a65e95837f | |||
| 43219d3906 | |||
| 1f8dec4c24 | |||
| fb5c5e3442 | |||
| e357c39774 | |||
| 10732baec2 | |||
| 068c6989de | |||
| 317d55f3f1 | |||
| 1397fda786 |
@@ -1,5 +1,5 @@
|
|||||||
___
|
___
|
||||||
/ _ \ http://www.anope.org
|
/ _ \ https://www.anope.org/
|
||||||
| /_\ | _ __ _ _ _ _ ___
|
| /_\ | _ __ _ _ _ _ ___
|
||||||
| _ || '_ \/ _ \/ _ \ / _ \
|
| _ || '_ \/ _ \/ _ \ / _ \
|
||||||
| | | || | | |_| |_| | __/
|
| | | || | | |_| |_| | __/
|
||||||
@@ -15,4 +15,5 @@ Anope is a set of Services for IRC networks that allows users to
|
|||||||
manage their nicks and channels in a secure and efficient way,
|
manage their nicks and channels in a secure and efficient way,
|
||||||
and administrators to manage their network with powerful tools.
|
and administrators to manage their network with powerful tools.
|
||||||
|
|
||||||
For all your Anope needs please visit our portal at www.anope.org
|
For all your Anope needs please visit our portal at
|
||||||
|
https://www.anope.org/
|
||||||
|
|||||||
@@ -28,7 +28,9 @@ Naram Qashat <cyberbotx@anope.org> <cyberbotx@5417fbe8-f217-4b02-8779-1006273d78
|
|||||||
Naram Qashat <cyberbotx@anope.org> <cyberbotx@cyberbotx.com>
|
Naram Qashat <cyberbotx@anope.org> <cyberbotx@cyberbotx.com>
|
||||||
Naram Qashat <cyberbotx@anope.org> <Naram Qashat cyberbotx@cyberbotx.com@5417fbe8-f217-4b02-8779-1006273d7864>
|
Naram Qashat <cyberbotx@anope.org> <Naram Qashat cyberbotx@cyberbotx.com@5417fbe8-f217-4b02-8779-1006273d7864>
|
||||||
Pieter Bootsma <geniusdex@anope.org> <geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>
|
Pieter Bootsma <geniusdex@anope.org> <geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>
|
||||||
|
Robby <robby@anope.org>
|
||||||
Robby <robby@chat.be>
|
Robby <robby@chat.be>
|
||||||
|
Robby <robby@chatbelgie.be>
|
||||||
Robin Burchell <w00t@inspircd.org> <rburchell@5417fbe8-f217-4b02-8779-1006273d7864>
|
Robin Burchell <w00t@inspircd.org> <rburchell@5417fbe8-f217-4b02-8779-1006273d7864>
|
||||||
Robin Burchell <w00t@inspircd.org> <Robin Burchell w00t@inspircd.org@5417fbe8-f217-4b02-8779-1006273d7864>
|
Robin Burchell <w00t@inspircd.org> <Robin Burchell w00t@inspircd.org@5417fbe8-f217-4b02-8779-1006273d7864>
|
||||||
Sebastian V. <hal9000@denorastats.org>
|
Sebastian V. <hal9000@denorastats.org>
|
||||||
|
|||||||
+16
@@ -0,0 +1,16 @@
|
|||||||
|
language: cpp
|
||||||
|
|
||||||
|
compiler:
|
||||||
|
- gcc
|
||||||
|
|
||||||
|
before_script:
|
||||||
|
- mkdir build
|
||||||
|
- cd build
|
||||||
|
- cmake -DINSTDIR:STRING=~/services -DDEFUMASK:STRING=077 -DCMAKE_BUILD_TYPE:STRING=DEBUG -DUSE_RUN_CC_PL:BOOLEAN=ON ..
|
||||||
|
|
||||||
|
script:
|
||||||
|
- make
|
||||||
|
|
||||||
|
notifications:
|
||||||
|
irc:
|
||||||
|
- "irc.anope.org#anope-devel"
|
||||||
+57
-49
@@ -2,13 +2,14 @@
|
|||||||
cmake_minimum_required(VERSION 2.4 FATAL_ERROR)
|
cmake_minimum_required(VERSION 2.4 FATAL_ERROR)
|
||||||
if(COMMAND cmake_policy)
|
if(COMMAND cmake_policy)
|
||||||
cmake_policy(SET CMP0003 NEW)
|
cmake_policy(SET CMP0003 NEW)
|
||||||
|
if(POLICY CMP0026)
|
||||||
|
cmake_policy(SET CMP0026 OLD)
|
||||||
|
endif(POLICY CMP0026)
|
||||||
|
if(POLICY CMP0007)
|
||||||
|
cmake_policy(SET CMP0007 OLD)
|
||||||
|
endif(POLICY CMP0007)
|
||||||
endif(COMMAND cmake_policy)
|
endif(COMMAND cmake_policy)
|
||||||
|
|
||||||
# If the Source dir and the Binary dir are the same, we are building in-source, which we will disallow due to Autotools being there (but only on non-Windows)
|
|
||||||
if(${CMAKE_CURRENT_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_BINARY_DIR} AND NOT WIN32)
|
|
||||||
message(FATAL_ERROR "You can not use CMake to build Anope from the root of it's source tree! Remove the CMakeCache.txt file from this directory, then create a separate directory (either below this directory or elsewhere), and then re-run CMake from there.")
|
|
||||||
endif(${CMAKE_CURRENT_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_BINARY_DIR} AND NOT WIN32)
|
|
||||||
|
|
||||||
# Set the project as C++ primarily, but have C enabled for the checks required later
|
# Set the project as C++ primarily, but have C enabled for the checks required later
|
||||||
project(Anope CXX)
|
project(Anope CXX)
|
||||||
enable_language(C)
|
enable_language(C)
|
||||||
@@ -44,20 +45,20 @@ if(MINOR_VERSION GREATER 5)
|
|||||||
set(CMAKE242_OR_BETTER TRUE)
|
set(CMAKE242_OR_BETTER TRUE)
|
||||||
else(MINOR_VERSION GREATER 5)
|
else(MINOR_VERSION GREATER 5)
|
||||||
set(CMAKE26_OR_BETTER FALSE)
|
set(CMAKE26_OR_BETTER FALSE)
|
||||||
# Also detect if we are using CMake 2.4.8 or better, the FIND sub-command of list() is non-existant in earlier versions
|
# Also detect if we are using CMake 2.4.8 or better, the FIND sub-command of list() is nonexistent in earlier versions
|
||||||
if(PATCH_VERSION GREATER 7)
|
if(PATCH_VERSION GREATER 7)
|
||||||
set(CMAKE248_OR_BETTER TRUE)
|
set(CMAKE248_OR_BETTER TRUE)
|
||||||
set(CMAKE244_OR_BETTER TRUE)
|
set(CMAKE244_OR_BETTER TRUE)
|
||||||
set(CMAKE242_OR_BETTER TRUE)
|
set(CMAKE242_OR_BETTER TRUE)
|
||||||
else(PATCH_VERSION GREATER 7)
|
else(PATCH_VERSION GREATER 7)
|
||||||
set(CMAKE248_OR_BETTER FALSE)
|
set(CMAKE248_OR_BETTER FALSE)
|
||||||
# Also detect if we are using CMake 2.4.4 or better, the CheckCXXCompilerFlag module and SORT sub-command of list() are non-existant in earlier versions
|
# Also detect if we are using CMake 2.4.4 or better, the CheckCXXCompilerFlag module and SORT sub-command of list() are nonexistent in earlier versions
|
||||||
if(PATCH_VERSION GREATER 3)
|
if(PATCH_VERSION GREATER 3)
|
||||||
set(CMAKE244_OR_BETTER TRUE)
|
set(CMAKE244_OR_BETTER TRUE)
|
||||||
set(CMAKE242_OR_BETTER TRUE)
|
set(CMAKE242_OR_BETTER TRUE)
|
||||||
else(PATCH_VERSION GREATER 3)
|
else(PATCH_VERSION GREATER 3)
|
||||||
set(CMAKE244_OR_BETTER FALSE)
|
set(CMAKE244_OR_BETTER FALSE)
|
||||||
# ALSO detect if we are using CMake 2.4.2 or better, the APPEND sub-command of list() is non-existant in earlier versions
|
# ALSO detect if we are using CMake 2.4.2 or better, the APPEND sub-command of list() is nonexistent in earlier versions
|
||||||
if(PATCH_VERSION GREATER 1)
|
if(PATCH_VERSION GREATER 1)
|
||||||
set(CMAKE242_OR_BETTER TRUE)
|
set(CMAKE242_OR_BETTER TRUE)
|
||||||
else(PATCH_VERSION GREATER 1)
|
else(PATCH_VERSION GREATER 1)
|
||||||
@@ -79,8 +80,20 @@ set(ENV{LC_ALL} C)
|
|||||||
set(DEFAULT_LIBRARY_DIRS)
|
set(DEFAULT_LIBRARY_DIRS)
|
||||||
set(DEFAULT_INCLUDE_DIRS)
|
set(DEFAULT_INCLUDE_DIRS)
|
||||||
|
|
||||||
|
# Check that we aren't running on an ancient broken GCC
|
||||||
|
if(CMAKE_COMPILER_IS_GNUCXX)
|
||||||
|
execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_FULL_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
string(REGEX REPLACE "^(\\d+\\.\\d+)" "\\1" GCC_VERSION ${GCC_FULL_VERSION})
|
||||||
|
if(GCC_VERSION LESS 4.2)
|
||||||
|
message(FATAL_ERROR "Your compiler is too old to build Anope. Upgrade to GCC 4.2 or newer!")
|
||||||
|
endif(GCC_VERSION LESS 4.2)
|
||||||
|
if(GCC_VERSION GREATER 6.0 OR GCC_VERSION EQUAL 6.0)
|
||||||
|
set(CXXFLAGS "${CXXFLAGS} -fno-delete-null-pointer-checks")
|
||||||
|
endif(GCC_VERSION GREATER 6.0 OR GCC_VERSION EQUAL 6.0)
|
||||||
|
endif(CMAKE_COMPILER_IS_GNUCXX)
|
||||||
|
|
||||||
# If we are using a GNU compiler (have to use CXX because it seems to fail on C), we will be able to determine it's default paths for libraries and includes
|
# If we are using a GNU compiler (have to use CXX because it seems to fail on C), we will be able to determine it's default paths for libraries and includes
|
||||||
if(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
if(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang$")
|
||||||
# First look for the compiler's default library directories
|
# First look for the compiler's default library directories
|
||||||
execute_process(COMMAND ${CMAKE_C_COMPILER} -print-search-dirs OUTPUT_VARIABLE LINES OUTPUT_STRIP_TRAILING_WHITESPACE)
|
execute_process(COMMAND ${CMAKE_C_COMPILER} -print-search-dirs OUTPUT_VARIABLE LINES OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
# Find only the part after "libraries: "
|
# Find only the part after "libraries: "
|
||||||
@@ -146,7 +159,7 @@ if(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
|||||||
if(DEFAULT_INCLUDE_DIRS)
|
if(DEFAULT_INCLUDE_DIRS)
|
||||||
remove_list_duplicates(DEFAULT_INCLUDE_DIRS)
|
remove_list_duplicates(DEFAULT_INCLUDE_DIRS)
|
||||||
endif(DEFAULT_INCLUDE_DIRS)
|
endif(DEFAULT_INCLUDE_DIRS)
|
||||||
endif(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
endif(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang$")
|
||||||
|
|
||||||
# If we are using Visual Studio, locate the path of the Windows Server 2008 SDK or Windows Server 2003 Platform SDK, depending on which is installed
|
# If we are using Visual Studio, locate the path of the Windows Server 2008 SDK or Windows Server 2003 Platform SDK, depending on which is installed
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
@@ -222,8 +235,6 @@ endif(EXTRA_LIBS)
|
|||||||
# Find gettext
|
# Find gettext
|
||||||
find_package(Gettext)
|
find_package(Gettext)
|
||||||
|
|
||||||
# Add an optional variable for using run-cc.pl for building, Perl will be checked later regardless of this setting
|
|
||||||
option(USE_RUN_CC_PL "Use run-cc.pl for building" OFF)
|
|
||||||
option(USE_PCH "Use precompiled headers" OFF)
|
option(USE_PCH "Use precompiled headers" OFF)
|
||||||
|
|
||||||
# Use the following directories as includes
|
# Use the following directories as includes
|
||||||
@@ -231,6 +242,11 @@ option(USE_PCH "Use precompiled headers" OFF)
|
|||||||
# source include directory so the precompiled headers work correctly.
|
# source include directory so the precompiled headers work correctly.
|
||||||
include_directories(${Anope_BINARY_DIR}/include ${Anope_SOURCE_DIR}/include ${Anope_BINARY_DIR}/language ${Anope_SOURCE_DIR}/modules/pseudoclients)
|
include_directories(${Anope_BINARY_DIR}/include ${Anope_SOURCE_DIR}/include ${Anope_BINARY_DIR}/language ${Anope_SOURCE_DIR}/modules/pseudoclients)
|
||||||
|
|
||||||
|
# Pass on REPRODUCIBLE_BUILD
|
||||||
|
if(REPRODUCIBLE_BUILD)
|
||||||
|
add_definitions(-DREPRODUCIBLE_BUILD)
|
||||||
|
endif(REPRODUCIBLE_BUILD)
|
||||||
|
|
||||||
# If using Windows, always add the _WIN32 define
|
# If using Windows, always add the _WIN32 define
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
add_definitions(-D_WIN32)
|
add_definitions(-D_WIN32)
|
||||||
@@ -276,13 +292,15 @@ if(MINGW)
|
|||||||
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS}")
|
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS}")
|
||||||
endif(MINGW)
|
endif(MINGW)
|
||||||
|
|
||||||
# Under Windows, we set the executable name for Anope to be anope
|
if(NOT PROGRAM_NAME)
|
||||||
if(WIN32)
|
# Under Windows, we set the executable name for Anope to be anope
|
||||||
set(PROGRAM_NAME anope)
|
if(WIN32)
|
||||||
# Under *nix, we set the executable name for Anope to be services
|
set(PROGRAM_NAME anope)
|
||||||
else(WIN32)
|
# Under *nix, we set the executable name for Anope to be services
|
||||||
set(PROGRAM_NAME services)
|
else(WIN32)
|
||||||
endif(WIN32)
|
set(PROGRAM_NAME services)
|
||||||
|
endif(WIN32)
|
||||||
|
endif(NOT PROGRAM_NAME)
|
||||||
|
|
||||||
# If we are not using Visual Studio, we'll run the following checks
|
# If we are not using Visual Studio, we'll run the following checks
|
||||||
if(NOT MSVC)
|
if(NOT MSVC)
|
||||||
@@ -337,12 +355,12 @@ if(CMAKE_BUILD_TYPE STREQUAL "DEBUG" OR CMAKE_BUILD_TYPE STREQUAL "RELWITHDEBINF
|
|||||||
set(DEBUG_BUILD TRUE)
|
set(DEBUG_BUILD TRUE)
|
||||||
endif(CMAKE_BUILD_TYPE STREQUAL "DEBUG" OR CMAKE_BUILD_TYPE STREQUAL "RELWITHDEBINFO")
|
endif(CMAKE_BUILD_TYPE STREQUAL "DEBUG" OR CMAKE_BUILD_TYPE STREQUAL "RELWITHDEBINFO")
|
||||||
|
|
||||||
# Check for the existance of the following include files
|
# Check for the existence of the following include files
|
||||||
check_include_file(cstdint HAVE_CSTDINT)
|
check_include_file(cstdint HAVE_CSTDINT)
|
||||||
check_include_file(stdint.h HAVE_STDINT_H)
|
check_include_file(stdint.h HAVE_STDINT_H)
|
||||||
check_include_file(strings.h HAVE_STRINGS_H)
|
check_include_file(strings.h HAVE_STRINGS_H)
|
||||||
|
|
||||||
# Check for the existance of the following functions
|
# Check for the existence of the following functions
|
||||||
check_function_exists(strcasecmp HAVE_STRCASECMP)
|
check_function_exists(strcasecmp HAVE_STRCASECMP)
|
||||||
check_function_exists(stricmp HAVE_STRICMP)
|
check_function_exists(stricmp HAVE_STRICMP)
|
||||||
check_function_exists(umask HAVE_UMASK)
|
check_function_exists(umask HAVE_UMASK)
|
||||||
@@ -364,19 +382,11 @@ find_program(GREP grep)
|
|||||||
find_program(SH sh)
|
find_program(SH sh)
|
||||||
find_program(CHGRP chgrp)
|
find_program(CHGRP chgrp)
|
||||||
find_program(CHMOD chmod)
|
find_program(CHMOD chmod)
|
||||||
find_program(PERL perl)
|
|
||||||
|
|
||||||
# If perl is included on the system and the user wants to use run-cc.pl, change the commands for compiling and linking
|
|
||||||
if(PERL AND USE_RUN_CC_PL)
|
|
||||||
set(CMAKE_CXX_COMPILE_OBJECT "${PERL} ${Anope_SOURCE_DIR}/run-cc.pl -q ${CMAKE_CXX_COMPILE_OBJECT}")
|
|
||||||
set(CMAKE_CXX_LINK_EXECUTABLE "${PERL} ${Anope_SOURCE_DIR}/run-cc.pl -q ${CMAKE_CXX_LINK_EXECUTABLE}")
|
|
||||||
set(CMAKE_CXX_CREATE_SHARED_MODULE "${PERL} ${Anope_SOURCE_DIR}/run-cc.pl -q ${CMAKE_CXX_CREATE_SHARED_MODULE}")
|
|
||||||
endif(PERL AND USE_RUN_CC_PL)
|
|
||||||
|
|
||||||
# If a INSTDIR was passed in to CMake, use it as the install prefix, otherwise set the default install prefix to the services directory under the user's home directory
|
# If a INSTDIR was passed in to CMake, use it as the install prefix, otherwise set the default install prefix to the services directory under the user's home directory
|
||||||
if(INSTDIR)
|
if(INSTDIR)
|
||||||
set(CMAKE_INSTALL_PREFIX "${INSTDIR}")
|
set(CMAKE_INSTALL_PREFIX "${INSTDIR}")
|
||||||
else(INSTDIR)
|
elseif(NOT CMAKE_INSTALL_PREFIX)
|
||||||
set(CMAKE_INSTALL_PREFIX "$ENV{HOME}/services")
|
set(CMAKE_INSTALL_PREFIX "$ENV{HOME}/services")
|
||||||
endif(INSTDIR)
|
endif(INSTDIR)
|
||||||
|
|
||||||
@@ -408,16 +418,14 @@ endif(NOT LOGS_DIR)
|
|||||||
read_from_file(${Anope_SOURCE_DIR}/src/version.sh "^VERSION_" VERSIONS)
|
read_from_file(${Anope_SOURCE_DIR}/src/version.sh "^VERSION_" VERSIONS)
|
||||||
# Iterate through the strings found
|
# Iterate through the strings found
|
||||||
foreach(VERSION_STR ${VERSIONS})
|
foreach(VERSION_STR ${VERSIONS})
|
||||||
# Get the length of the string
|
string(REGEX REPLACE "^VERSION_([A-Z]+)=\"?([^\"]*)\"?$" "\\1;\\2" VERSION_OUT ${VERSION_STR})
|
||||||
string(LENGTH ${VERSION_STR} VERSION_LEN)
|
# Depends on CMP0007 OLD
|
||||||
# Subtract 16 from the string's length (8 for VERSION_, 5 more for the type, 2 for the space and leading quote, 1 for the trailing quote)
|
list(LENGTH VERSION_OUT VERSION_LEN)
|
||||||
math(EXPR VERSION_NUM_LEN "${VERSION_LEN} - 16")
|
list(GET VERSION_OUT 0 VERSION_TYPE)
|
||||||
# Extract the type from the string
|
if(${VERSION_LEN} GREATER 1)
|
||||||
string(SUBSTRING ${VERSION_STR} 8 5 VERSION_TYPE)
|
list(GET VERSION_OUT 1 VERSION_DATA)
|
||||||
# Extract the actual value from the string
|
set(VERSION_${VERSION_TYPE} ${VERSION_DATA})
|
||||||
string(SUBSTRING ${VERSION_STR} 15 ${VERSION_NUM_LEN} VERSION)
|
endif(${VERSION_LEN} GREATER 1)
|
||||||
# Set the version type to the value extract from above
|
|
||||||
set(VERSION_${VERSION_TYPE} ${VERSION})
|
|
||||||
endforeach(VERSION_STR ${VERSIONS})
|
endforeach(VERSION_STR ${VERSIONS})
|
||||||
|
|
||||||
# Default build version to 0
|
# Default build version to 0
|
||||||
@@ -481,16 +489,16 @@ get_target_property(SERVICES_BINARY ${PROGRAM_NAME} LOCATION)
|
|||||||
get_filename_component(SERVICES_BINARY ${SERVICES_BINARY} NAME)
|
get_filename_component(SERVICES_BINARY ${SERVICES_BINARY} NAME)
|
||||||
|
|
||||||
# At install time, create the following additional directories
|
# At install time, create the following additional directories
|
||||||
install(CODE "file(MAKE_DIRECTORY \"\${CMAKE_INSTALL_PREFIX}/${DB_DIR}/backups\")")
|
install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${DB_DIR}/backups\")")
|
||||||
install(CODE "file(MAKE_DIRECTORY \"\${CMAKE_INSTALL_PREFIX}/${LOGS_DIR}\")")
|
install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${LOGS_DIR}\")")
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
install(CODE "file(MAKE_DIRECTORY \"\${CMAKE_INSTALL_PREFIX}/${DB_DIR}/runtime\")")
|
install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${DB_DIR}/runtime\")")
|
||||||
endif(WIN32)
|
endif(WIN32)
|
||||||
# On non-Windows platforms, if RUNGROUP is set, change the permissions of the below directories, as well as the group of the data directory
|
# On non-Windows platforms, if RUNGROUP is set, change the permissions of the below directories, as well as the group of the data directory
|
||||||
if(NOT WIN32 AND RUNGROUP)
|
if(NOT WIN32 AND RUNGROUP)
|
||||||
install(CODE "execute_process(COMMAND ${CHMOD} 2775 \"\${CMAKE_INSTALL_PREFIX}/\${DB_DIR}/backups\")")
|
install(CODE "execute_process(COMMAND ${CHMOD} 2775 \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/\${DB_DIR}/backups\")")
|
||||||
install(CODE "execute_process(COMMAND ${CHMOD} 2775 \"\${CMAKE_INSTALL_PREFIX}/\${LOGS_DIR}\")")
|
install(CODE "execute_process(COMMAND ${CHMOD} 2775 \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/\${LOGS_DIR}\")")
|
||||||
install(CODE "execute_process(COMMAND ${CHGRP} -R ${RUNGROUP} \"\${CMAKE_INSTALL_PREFIX}\")")
|
install(CODE "execute_process(COMMAND ${CHGRP} -R ${RUNGROUP} \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}\")")
|
||||||
endif(NOT WIN32 AND RUNGROUP)
|
endif(NOT WIN32 AND RUNGROUP)
|
||||||
# On Windows platforms, install extra files
|
# On Windows platforms, install extra files
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
@@ -503,7 +511,7 @@ if(WIN32)
|
|||||||
install(FILES ${EXTRA_DLLS} DESTINATION ${BIN_DIR})
|
install(FILES ${EXTRA_DLLS} DESTINATION ${BIN_DIR})
|
||||||
endif(WIN32)
|
endif(WIN32)
|
||||||
|
|
||||||
install(CODE "file(REMOVE_RECURSE \"${CMAKE_INSTALL_PREFIX}/${LIB_DIR}/modules\")")
|
install(CODE "file(REMOVE_RECURSE \"$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/${LIB_DIR}/modules\")")
|
||||||
|
|
||||||
# Only process the CPack section if we have CPack
|
# Only process the CPack section if we have CPack
|
||||||
if(EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake")
|
if(EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake")
|
||||||
@@ -533,14 +541,14 @@ if(EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake")
|
|||||||
"bin\\\\anope.bat\\\" \\\"-debug -nofork" "Anope IRC Services (Debug and Window Logging)"
|
"bin\\\\anope.bat\\\" \\\"-debug -nofork" "Anope IRC Services (Debug and Window Logging)"
|
||||||
"bin\\\\anope.bat\\\" \\\"-nofork" "Anope IRC Services (Window Logging)"
|
"bin\\\\anope.bat\\\" \\\"-nofork" "Anope IRC Services (Window Logging)"
|
||||||
"bin\\\\anope.bat\\\" \\\"-nothird" "Anope IRC Services (No Third Party Modules)"
|
"bin\\\\anope.bat\\\" \\\"-nothird" "Anope IRC Services (No Third Party Modules)"
|
||||||
"http://www.anope.org/" "Anope Web Site"
|
"https://www.anope.org/" "Anope Web Site"
|
||||||
)
|
)
|
||||||
# The following doesn't work, but a bug report has been filed about it
|
# The following doesn't work, but a bug report has been filed about it
|
||||||
#set(CPACK_CREATE_DESKTOP_LINK_${SERVICES_BINARY} TRUE)
|
#set(CPACK_CREATE_DESKTOP_LINK_${SERVICES_BINARY} TRUE)
|
||||||
set(CPACK_NSIS_MUI_ICON "${Anope_SOURCE_DIR}/src\\\\win32\\\\anope-icon.ico")
|
set(CPACK_NSIS_MUI_ICON "${Anope_SOURCE_DIR}/src\\\\win32\\\\anope-icon.ico")
|
||||||
set(CPACK_NSIS_MUI_UNIICON "${Anope_SOURCE_DIR}/src\\\\win32\\\\anope-icon.ico")
|
set(CPACK_NSIS_MUI_UNIICON "${Anope_SOURCE_DIR}/src\\\\win32\\\\anope-icon.ico")
|
||||||
set(CPACK_NSIS_INSTALLED_ICON_NAME "${SERVICES_BINARY}")
|
set(CPACK_NSIS_INSTALLED_ICON_NAME "${SERVICES_BINARY}")
|
||||||
set(CPACK_NSIS_URL_INFO_ABOUT "http://www.anope.org/")
|
set(CPACK_NSIS_URL_INFO_ABOUT "https://www.anope.org/")
|
||||||
set(CPACK_NSIS_COMPRESSOR "/SOLID lzma")
|
set(CPACK_NSIS_COMPRESSOR "/SOLID lzma")
|
||||||
endif(WIN32)
|
endif(WIN32)
|
||||||
set(CPACK_SOURCE_PACKAGE_FILE_NAME "anope-${VERSION_FULL_NOBUILD}-source")
|
set(CPACK_SOURCE_PACKAGE_FILE_NAME "anope-${VERSION_FULL_NOBUILD}-source")
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# Configuration script for Services.
|
# Configuration script for Services.
|
||||||
#
|
#
|
||||||
# Anope (c) 2003-2014 Anope Team
|
# Anope (c) 2003-2019 Anope Team
|
||||||
# Contact us at team@anope.org
|
# Contact us at team@anope.org
|
||||||
#
|
#
|
||||||
# This program is free but copyrighted software; see the file COPYING for
|
# This program is free but copyrighted software; see the file COPYING for
|
||||||
@@ -62,12 +62,6 @@ Run_Build_System () {
|
|||||||
BUILD_TYPE="-DCMAKE_BUILD_TYPE:STRING=RELEASE"
|
BUILD_TYPE="-DCMAKE_BUILD_TYPE:STRING=RELEASE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$USE_RUN_CC_PL" = "yes" ] ; then
|
|
||||||
RUN_CC_PL="-DUSE_RUN_CC_PL:BOOLEAN=ON"
|
|
||||||
else
|
|
||||||
RUN_CC_PL="-DUSE_RUN_CC_PL:BOOLEAN=OFF"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$USE_PCH" = "yes" ] ; then
|
if [ "$USE_PCH" = "yes" ] ; then
|
||||||
PCH="-DUSE_PCH:BOOLEAN=ON"
|
PCH="-DUSE_PCH:BOOLEAN=ON"
|
||||||
else
|
else
|
||||||
@@ -97,9 +91,13 @@ Run_Build_System () {
|
|||||||
REAL_SOURCE_DIR="$SOURCE_DIR"
|
REAL_SOURCE_DIR="$SOURCE_DIR"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "cmake $GEN_TYPE $WITH_INST $WITH_RUN $WITH_PERM $BUILD_TYPE $RUN_CC_PL $PCH $EXTRA_INCLUDE $EXTRA_LIBS $EXTRA_CONFIG_ARGS $REAL_SOURCE_DIR"
|
echo "cmake $GEN_TYPE $WITH_INST $WITH_RUN $WITH_PERM $BUILD_TYPE $PCH $EXTRA_INCLUDE $EXTRA_LIBS $EXTRA_CONFIG_ARGS $REAL_SOURCE_DIR"
|
||||||
|
|
||||||
cmake $GEN_TYPE $WITH_INST $WITH_RUN $WITH_PERM $BUILD_TYPE $RUN_CC_PL $PCH $EXTRA_INCLUDE $EXTRA_LIBS $EXTRA_CONFIG_ARGS $REAL_SOURCE_DIR
|
cmake $GEN_TYPE $WITH_INST $WITH_RUN $WITH_PERM $BUILD_TYPE $PCH $EXTRA_INCLUDE $EXTRA_LIBS $EXTRA_CONFIG_ARGS $REAL_SOURCE_DIR
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "You should fix these issues and then run ./Config -quick to rerun CMake."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
if [ "$SOURCE_DIR" = "." ] ; then
|
if [ "$SOURCE_DIR" = "." ] ; then
|
||||||
@@ -131,7 +129,6 @@ INSTDIR=$HOME/services
|
|||||||
RUNGROUP=
|
RUNGROUP=
|
||||||
UMASK=
|
UMASK=
|
||||||
DEBUG="no"
|
DEBUG="no"
|
||||||
USE_RUN_CC_PL="no"
|
|
||||||
USE_PCH="no"
|
USE_PCH="no"
|
||||||
EXTRA_INCLUDE_DIRS=
|
EXTRA_INCLUDE_DIRS=
|
||||||
EXTRA_LIB_DIRS=
|
EXTRA_LIB_DIRS=
|
||||||
@@ -173,45 +170,12 @@ done
|
|||||||
# Check for CMake and (optionally) install it
|
# Check for CMake and (optionally) install it
|
||||||
###########################################################################
|
###########################################################################
|
||||||
|
|
||||||
which cmake > /dev/null
|
cmake --version 2>&1 > /dev/null
|
||||||
if [ $? -ne 0 ] ; then
|
if [ $? -ne 0 ] ; then
|
||||||
clear
|
clear
|
||||||
if exists "cmake-bin" ; then :
|
echo "Anope requires CMake 2.4 or newer, which can be downloaded at https://cmake.org/ or through your system's package manager."
|
||||||
else
|
echo "If you have installed CMake already, ensure it is in your PATH environment variable."
|
||||||
echo "Anope requires CMake 2.4 or newer, which can be downloaded at http://cmake.org"
|
exit 0
|
||||||
echo "If you have installed CMake already, ensure it is in your PATH environment variable."
|
|
||||||
|
|
||||||
if [ `uname` = "Linux" ] ; then
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "Config can attempt to install CMake for you now, which"
|
|
||||||
echo "will take approximately 50 MB of disk space."
|
|
||||||
echo "Would you like to install CMake now?"
|
|
||||||
echo2 "[y] "
|
|
||||||
read YN
|
|
||||||
if [ "$YN" = "n" ] ; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Downloading CMake... this may take a minute or two."
|
|
||||||
wget -q http://anope.org/cmake/linux-i386.php -O cmake-bin.tar.gz
|
|
||||||
if [ $? -ne 0 ] ; then
|
|
||||||
rm -f cmake-bin.tar.gz
|
|
||||||
echo "Unable to download CMake"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
mkdir -p cmake-bin
|
|
||||||
tar zxf cmake-bin.tar.gz -C cmake-bin
|
|
||||||
rm -f cmake-bin.tar.gz
|
|
||||||
echo "Done!"
|
|
||||||
else
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
CMAKE_BIN=`find cmake-bin -name cmake`
|
|
||||||
CMAKE_BIN="`pwd`/`dirname $CMAKE_BIN`"
|
|
||||||
PATH="$PATH:$CMAKE_BIN"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
###########################################################################
|
###########################################################################
|
||||||
@@ -354,30 +318,6 @@ echo ""
|
|||||||
|
|
||||||
####
|
####
|
||||||
|
|
||||||
TEMP_YN="n"
|
|
||||||
if [ "$USE_RUN_CC_PL" = "yes" ] ; then
|
|
||||||
TEMP_YN="y"
|
|
||||||
fi
|
|
||||||
echo "You can optionally have the build run through run-cc.pl, which will"
|
|
||||||
echo "cause warnings and errors (if any) to be colored yellow and red,"
|
|
||||||
echo "respectively. This relies on Perl being installed, so if you say yes"
|
|
||||||
echo "to this without Perl, the option will be ignored."
|
|
||||||
echo "NOTE: If you are using MinGW, it is NOT recommended to say yes to"
|
|
||||||
echo "this, it may fail."
|
|
||||||
echo "Would you like to utilize run-cc.pl?"
|
|
||||||
echo2 "[$TEMP_YN] "
|
|
||||||
read YN
|
|
||||||
if [ "$YN" ] ; then
|
|
||||||
if [ "$YN" = "y" ] ; then
|
|
||||||
USE_RUN_CC_PL="yes"
|
|
||||||
else
|
|
||||||
USE_RUN_CC_PL="no"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
####
|
|
||||||
|
|
||||||
TEMP_YN="n"
|
TEMP_YN="n"
|
||||||
if [ "$USE_PCH" = "yes" ] ; then
|
if [ "$USE_PCH" = "yes" ] ; then
|
||||||
TEMP_YN="y"
|
TEMP_YN="y"
|
||||||
@@ -434,7 +374,7 @@ echo ""
|
|||||||
####
|
####
|
||||||
|
|
||||||
echo "Are there any extra arguments you wish to pass to CMake?"
|
echo "Are there any extra arguments you wish to pass to CMake?"
|
||||||
echo "If you need no extra arugments to CMake, enter NONE in all caps."
|
echo "If you need no extra arguments to CMake, enter NONE in all caps."
|
||||||
echo2 "[$EXTRA_CONFIG_ARGS] "
|
echo2 "[$EXTRA_CONFIG_ARGS] "
|
||||||
if read INPUT ; then : ; else echo "" ; exit 1 ; fi
|
if read INPUT ; then : ; else echo "" ; exit 1 ; fi
|
||||||
if [ "$INPUT" ] ; then
|
if [ "$INPUT" ] ; then
|
||||||
@@ -459,7 +399,6 @@ INSTDIR="$INSTDIR"
|
|||||||
RUNGROUP="$RUNGROUP"
|
RUNGROUP="$RUNGROUP"
|
||||||
UMASK=$UMASK
|
UMASK=$UMASK
|
||||||
DEBUG="$DEBUG"
|
DEBUG="$DEBUG"
|
||||||
USE_RUN_CC_PL="$USE_RUN_CC_PL"
|
|
||||||
USE_PCH="$USE_PCH"
|
USE_PCH="$USE_PCH"
|
||||||
EXTRA_INCLUDE_DIRS="$EXTRA_INCLUDE_DIRS"
|
EXTRA_INCLUDE_DIRS="$EXTRA_INCLUDE_DIRS"
|
||||||
EXTRA_LIB_DIRS="$EXTRA_LIB_DIRS"
|
EXTRA_LIB_DIRS="$EXTRA_LIB_DIRS"
|
||||||
|
|||||||
BIN
Binary file not shown.
@@ -0,0 +1,46 @@
|
|||||||
|
## About
|
||||||
|
|
||||||
|
Anope is an open source set of IRC Services. It is highly modular, with a vast number of configurable parameters, and is the most used IRC services package. There are also many modules on the [modsite](https://modules.anope.org) to add additional features. It runs on Linux, BSD, and Windows, and supports many modern IRCds, including InspIRCd, UnrealIRCd, and ircd-hybrid. For more details, credits, command line options, and contact information see [docs/README](https://github.com/anope/anope/blob/2.0/docs/README).
|
||||||
|
|
||||||
|
* [Website](https://anope.org)
|
||||||
|
* [GitHub](https://github.com/anope)
|
||||||
|
* IRC \#anope on irc.anope.org
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
### Linux/BSD
|
||||||
|
Download the latest release off of the [releases page](https://github.com/anope/anope/releases).
|
||||||
|
|
||||||
|
|
||||||
|
```
|
||||||
|
$ ./Config
|
||||||
|
$ cd build
|
||||||
|
$ make
|
||||||
|
$ make install
|
||||||
|
```
|
||||||
|
|
||||||
|
Now change to the directory where you installed Anope to, e.g. `$ cd ~/services/`
|
||||||
|
|
||||||
|
### Windows
|
||||||
|
Download the latest release off of the [releases page](https://github.com/anope/anope/releases) and run the installer.
|
||||||
|
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
Copy conf/example.conf to conf/services.conf
|
||||||
|
|
||||||
|
```
|
||||||
|
$ cp conf/example.conf conf/services.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
Edit services.conf, configuring the uplink, serverinfo, and protocol module configurations. Example link blocks for popular IRCds are included in the the example.conf documentation. The [Anope wiki](https://wiki.anope.org) is also a good source of information. Our support channel is located at #anope on [irc.anope.org](irc://irc.anope.org/#anope).
|
||||||
|
|
||||||
|
Note that the example configuration file includes other example configuration files. If you want to modify the other example configuration files, copy them (e.g. `modules.example.conf` to `modules.conf`) and modify the `include` directive in `services.conf` to include the new file.
|
||||||
|
|
||||||
|
## Running
|
||||||
|
|
||||||
|
Run `$ ./bin/services` to start Anope. If asked to provide logs for support, use the `--support` flag, e.g.: `$ ./bin/services --support`
|
||||||
|
|
||||||
|
## Installing extra modules
|
||||||
|
|
||||||
|
Extra modules, which are usually modules which require extra libraries to use, such as m\_mysql, can be enabled with the `./extras` command from the source directory. Then re-run `Config`, `make` and `make install` again. Third party modules can be installed by placing them into the `modules/third` directory.
|
||||||
+8
-3
@@ -432,11 +432,15 @@ macro(calculate_libraries SRC SRC_LDFLAGS EXTRA_DEPENDS)
|
|||||||
# Reset libraries
|
# Reset libraries
|
||||||
set(LIBRARIES)
|
set(LIBRARIES)
|
||||||
# Check to see if there are any lines matching: /* RequiredLibraries: [something] */
|
# Check to see if there are any lines matching: /* RequiredLibraries: [something] */
|
||||||
read_from_file(${SRC} "/\\\\*[ \t]*RequiredLibraries:[ \t]*.*[ \t]*\\\\*/" REQUIRED_LIBRARIES)
|
if(WIN32)
|
||||||
|
read_from_file(${SRC} "/\\\\*[ \t]*RequiredWindowsLibraries:[ \t]*.*[ \t]*\\\\*/" REQUIRED_LIBRARIES)
|
||||||
|
else(WIN32)
|
||||||
|
read_from_file(${SRC} "/\\\\*[ \t]*RequiredLibraries:[ \t]*.*[ \t]*\\\\*/" REQUIRED_LIBRARIES)
|
||||||
|
endif(WIN32)
|
||||||
# Iterate through those lines
|
# Iterate through those lines
|
||||||
foreach(REQUIRED_LIBRARY ${REQUIRED_LIBRARIES})
|
foreach(REQUIRED_LIBRARY ${REQUIRED_LIBRARIES})
|
||||||
# Strip off the /* RequiredLibraries: and */ from the line
|
# Strip off the /* RequiredLibraries: and */ from the line
|
||||||
string(REGEX REPLACE "/\\*[ \t]*RequiredLibraries:[ \t]*([^ \t]*)[ \t]*\\*/" "\\1" REQUIRED_LIBRARY ${REQUIRED_LIBRARY})
|
string(REGEX REPLACE "/\\*[ \t]*Required.*Libraries:[ \t]*([^ \t]*)[ \t]*\\*/" "\\1" REQUIRED_LIBRARY ${REQUIRED_LIBRARY})
|
||||||
# Replace all commas with semicolons
|
# Replace all commas with semicolons
|
||||||
string(REGEX REPLACE "," ";" REQUIRED_LIBRARY ${REQUIRED_LIBRARY})
|
string(REGEX REPLACE "," ";" REQUIRED_LIBRARY ${REQUIRED_LIBRARY})
|
||||||
# Iterate through the libraries given
|
# Iterate through the libraries given
|
||||||
@@ -445,7 +449,8 @@ macro(calculate_libraries SRC SRC_LDFLAGS EXTRA_DEPENDS)
|
|||||||
if(DEFAULT_LIBRARY_DIRS OR WSDK_PATH OR DEFINED $ENV{VCINSTALLDIR})
|
if(DEFAULT_LIBRARY_DIRS OR WSDK_PATH OR DEFINED $ENV{VCINSTALLDIR})
|
||||||
find_library(FOUND_${LIBRARY}_LIBRARY NAMES ${LIBRARY} PATHS ${DEFAULT_LIBRARY_DIRS} ${WSDK_PATH}/lib $ENV{VCINSTALLDIR}/lib ${EXTRA_INCLUDE} ${EXTRA_LIBS})
|
find_library(FOUND_${LIBRARY}_LIBRARY NAMES ${LIBRARY} PATHS ${DEFAULT_LIBRARY_DIRS} ${WSDK_PATH}/lib $ENV{VCINSTALLDIR}/lib ${EXTRA_INCLUDE} ${EXTRA_LIBS})
|
||||||
else(DEFAULT_LIBRARY_DIRS OR WSDK_PATH OR DEFINED $ENV{VCINSTALLDIR})
|
else(DEFAULT_LIBRARY_DIRS OR WSDK_PATH OR DEFINED $ENV{VCINSTALLDIR})
|
||||||
find_library(FOUND_${LIBRARY}_LIBRARY NAMES ${LIBRARY} ${EXTRA_INCLUDE} ${EXTRA_LIBS})
|
find_library(FOUND_${LIBRARY}_LIBRARY NAMES ${LIBRARY} PATHS ${EXTRA_INCLUDE} ${EXTRA_LIBS} NO_DEFAULT_PATH)
|
||||||
|
find_library(FOUND_${LIBRARY}_LIBRARY NAMES ${LIBRARY} PATHS ${EXTRA_INCLUDE} ${EXTRA_LIBS})
|
||||||
endif(DEFAULT_LIBRARY_DIRS OR WSDK_PATH OR DEFINED $ENV{VCINSTALLDIR})
|
endif(DEFAULT_LIBRARY_DIRS OR WSDK_PATH OR DEFINED $ENV{VCINSTALLDIR})
|
||||||
# If the library was found, we will add it to the linker flags
|
# If the library was found, we will add it to the linker flags
|
||||||
if(FOUND_${LIBRARY}_LIBRARY)
|
if(FOUND_${LIBRARY}_LIBRARY)
|
||||||
|
|||||||
+6
-14
@@ -2,33 +2,25 @@
|
|||||||
if(NOT WIN32)
|
if(NOT WIN32)
|
||||||
find_path(GETTEXT_INCLUDE libintl.h /usr/include /usr/local/include ${EXTRA_INCLUDE})
|
find_path(GETTEXT_INCLUDE libintl.h /usr/include /usr/local/include ${EXTRA_INCLUDE})
|
||||||
find_library(GETTEXT_LIBRARY intl PATHS /usr/lib /usr/lib64 ${EXTRA_LIBS})
|
find_library(GETTEXT_LIBRARY intl PATHS /usr/lib /usr/lib64 ${EXTRA_LIBS})
|
||||||
find_library(ICONV_LIBRARY iconv PATHS /usr/lib /usr/lib64 ${EXTRA_LIBS})
|
|
||||||
find_program(GETTEXT_MSGFMT msgfmt PATHS /usr/bin/ /usr/local/bin ${EXTRA_INCLUDE})
|
find_program(GETTEXT_MSGFMT msgfmt PATHS /usr/bin/ /usr/local/bin ${EXTRA_INCLUDE})
|
||||||
if(GETTEXT_INCLUDE AND GETTEXT_MSGFMT)
|
if(GETTEXT_INCLUDE AND GETTEXT_MSGFMT)
|
||||||
set(GETTEXT_FOUND TRUE)
|
set(GETTEXT_FOUND TRUE)
|
||||||
|
if(GETTEXT_LIBRARY)
|
||||||
|
set(GETTEXT_LIBRARIES ${GETTEXT_LIBRARY})
|
||||||
|
endif(GETTEXT_LIBRARY)
|
||||||
endif(GETTEXT_INCLUDE AND GETTEXT_MSGFMT)
|
endif(GETTEXT_INCLUDE AND GETTEXT_MSGFMT)
|
||||||
else(NOT WIN32)
|
else(NOT WIN32)
|
||||||
find_path(GETTEXT_INCLUDE libintl.h ${DEFAULT_INCLUDE_DIRS} ${WSDK_PATH}/include $ENV{VCINSTALLDIR}/include gettext/include ${EXTRA_INCLUDE})
|
find_path(GETTEXT_INCLUDE libintl.h ${DEFAULT_INCLUDE_DIRS} ${WSDK_PATH}/include $ENV{VCINSTALLDIR}/include gettext/include ${EXTRA_INCLUDE})
|
||||||
find_library(GETTEXT_LIBRARY libintl PATHS ${DEFAULT_LIBRARY_DIRS} ${WSDK_PATH}/lib $ENV{VCINSTALLDIR}/lib gettext/lib ${EXTRA_LIBS})
|
find_library(GETTEXT_LIBRARY libintl PATHS ${DEFAULT_LIBRARY_DIRS} ${WSDK_PATH}/lib $ENV{VCINSTALLDIR}/lib gettext/lib ${EXTRA_LIBS})
|
||||||
find_library(ICONV_LIBRARY libiconv PATHS ${DEFAULT_LIBRARY_DIRS} ${WSDK_PATH}/lib $ENV{VCINSTALLDIR}/lib gettext/lib ${EXTRA_LIBS})
|
|
||||||
find_library(MINGWEX_LIBRARY libmingwex PATHS ${DEFAULT_LIBRARY_DIRS} ${WSDK_PATH}/lib $ENV{VCINSTALLDIR}/lib gettext/lib ${EXTRA_LIBS})
|
|
||||||
find_library(GCC_LIBRARY libgcc PATHS ${DEFAULT_LIBRARY_DIRS} ${WSDK_PATH}/lib $ENV{VCINSTALLDIR}/lib gettext/lib ${EXTRA_LIBS})
|
|
||||||
find_program(GETTEXT_MSGFMT msgfmt PATHS ${DEFAULT_INCLUDE_DIRS} ${WSDK_PATH}/bin $ENV{VCINSTALLDIR}/bin gettext/bin ${EXTRA_INCLUDE})
|
find_program(GETTEXT_MSGFMT msgfmt PATHS ${DEFAULT_INCLUDE_DIRS} ${WSDK_PATH}/bin $ENV{VCINSTALLDIR}/bin gettext/bin ${EXTRA_INCLUDE})
|
||||||
if(GETTEXT_INCLUDE AND GETTEXT_MSGFMT AND ICONV_LIBRARY AND MINGWEX_LIBRARY AND GCC_LIBRARY)
|
if(GETTEXT_INCLUDE AND GETTEXT_LIBRARY AND GETTEXT_MSGFMT)
|
||||||
set(GETTEXT_FOUND TRUE)
|
set(GETTEXT_FOUND TRUE)
|
||||||
endif(GETTEXT_INCLUDE AND GETTEXT_MSGFMT AND ICONV_LIBRARY AND MINGWEX_LIBRARY AND GCC_LIBRARY)
|
set(GETTEXT_LIBRARIES ${GETTEXT_LIBRARY})
|
||||||
|
endif(GETTEXT_INCLUDE AND GETTEXT_LIBRARY AND GETTEXT_MSGFMT)
|
||||||
endif(NOT WIN32)
|
endif(NOT WIN32)
|
||||||
|
|
||||||
# If we found everything we need set variables correctly for lang/CMakeLists.txt to use
|
# If we found everything we need set variables correctly for lang/CMakeLists.txt to use
|
||||||
if(GETTEXT_FOUND)
|
if(GETTEXT_FOUND)
|
||||||
include_directories("${GETTEXT_INCLUDE}")
|
include_directories("${GETTEXT_INCLUDE}")
|
||||||
set(GETTEXT_MSGFMT_EXECUTABLE ${GETTEXT_MSGFMT})
|
set(GETTEXT_MSGFMT_EXECUTABLE ${GETTEXT_MSGFMT})
|
||||||
|
|
||||||
if(WIN32)
|
|
||||||
set(GETTEXT_LIBRARIES libiconv libintl libmingwex libgcc)
|
|
||||||
else(WIN32)
|
|
||||||
if(GETTEXT_LIBRARY)
|
|
||||||
set(GETTEXT_LIBRARIES ${GETTEXT_LIBRARY} ${ICONV_LIBRARY})
|
|
||||||
endif(GETTEXT_LIBRARY)
|
|
||||||
endif(WIN32)
|
|
||||||
endif(GETTEXT_FOUND)
|
endif(GETTEXT_FOUND)
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
* client, the client becomes no different from a normal service bot, so you will have to use botserv/bot
|
* client, the client becomes no different from a normal service bot, so you will have to use botserv/bot
|
||||||
* to manually delete the client.
|
* to manually delete the client.
|
||||||
*
|
*
|
||||||
* You may then waant to map some of the below commands to other services, like placing botserv/bot on
|
* You may then want to map some of the below commands to other services, like placing botserv/bot on
|
||||||
* OperServ so you can delete the below client, and mapping assign and unassign to ChanServ so users are
|
* OperServ so you can delete the below client, and mapping assign and unassign to ChanServ so users are
|
||||||
* able to control whether or not ChanServ is in the channel. You may also want to map botserv/set/nobot
|
* able to control whether or not ChanServ is in the channel. You may also want to map botserv/set/nobot
|
||||||
* to OperServ so you can restrict who can assign the other core service clients.
|
* to OperServ so you can restrict who can assign the other core service clients.
|
||||||
@@ -202,7 +202,7 @@ command { service = "BotServ"; name = "BADWORDS"; command = "botserv/badwords";
|
|||||||
* Used for administrating BotServ bots.
|
* Used for administrating BotServ bots.
|
||||||
*/
|
*/
|
||||||
module { name = "bs_bot" }
|
module { name = "bs_bot" }
|
||||||
command { service = "BotServ"; name = "BOT"; command = "botserv/bot"; }
|
command { service = "BotServ"; name = "BOT"; command = "botserv/bot"; permission = "botserv/bot"; }
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* bs_botlist
|
* bs_botlist
|
||||||
@@ -242,7 +242,7 @@ command { service = "BotServ"; name = "INFO"; command = "botserv/info"; }
|
|||||||
* botserv/kick - Dummy help wrapper for the KICK command.
|
* botserv/kick - Dummy help wrapper for the KICK command.
|
||||||
* botserv/kick/amsg - Configures BotServ's AMSG kicker.
|
* botserv/kick/amsg - Configures BotServ's AMSG kicker.
|
||||||
* botserv/kick/badwords - Configures BotServ's badwords kicker.
|
* botserv/kick/badwords - Configures BotServ's badwords kicker.
|
||||||
* botserv/kick/bolds - Configures BotServ's bold text kiceker.
|
* botserv/kick/bolds - Configures BotServ's bold text kicker.
|
||||||
* botserv/kick/caps - Configures BotServ's capital letters kicker.
|
* botserv/kick/caps - Configures BotServ's capital letters kicker.
|
||||||
* botserv/kick/colors - Configures BotServ's color kicker.
|
* botserv/kick/colors - Configures BotServ's color kicker.
|
||||||
* botserv/kick/flood - Configures BotServ's flood kicker.
|
* botserv/kick/flood - Configures BotServ's flood kicker.
|
||||||
@@ -333,7 +333,7 @@ privilege
|
|||||||
/*
|
/*
|
||||||
* fantasy
|
* fantasy
|
||||||
*
|
*
|
||||||
* Allows 'fantaisist' commands to be used in channels.
|
* Allows 'fantasist' commands to be used in channels.
|
||||||
*
|
*
|
||||||
* Provides the commands:
|
* Provides the commands:
|
||||||
* botserv/set/fantasy - Used for enabling or disabling BotServ's fantasist commands.
|
* botserv/set/fantasy - Used for enabling or disabling BotServ's fantasist commands.
|
||||||
@@ -386,6 +386,7 @@ fantasy { name = "LEVELS"; command = "chanserv/levels"; }
|
|||||||
fantasy { name = "LIST"; command = "chanserv/list"; prepend_channel = false; }
|
fantasy { name = "LIST"; command = "chanserv/list"; prepend_channel = false; }
|
||||||
fantasy { name = "LOG"; command = "chanserv/log"; }
|
fantasy { name = "LOG"; command = "chanserv/log"; }
|
||||||
fantasy { name = "MODE"; command = "chanserv/mode"; }
|
fantasy { name = "MODE"; command = "chanserv/mode"; }
|
||||||
|
fantasy { name = "MUTE"; command = "chanserv/ban"; kick = no; mode = "QUIET"; }
|
||||||
fantasy { name = "OP"; command = "chanserv/modes"; }
|
fantasy { name = "OP"; command = "chanserv/modes"; }
|
||||||
fantasy { name = "OWNER"; command = "chanserv/modes"; }
|
fantasy { name = "OWNER"; command = "chanserv/modes"; }
|
||||||
fantasy { name = "PROTECT"; command = "chanserv/modes"; }
|
fantasy { name = "PROTECT"; command = "chanserv/modes"; }
|
||||||
|
|||||||
+45
-21
@@ -79,7 +79,7 @@ module
|
|||||||
* - cs_secure: Enable channel security, requiring the user to be identified with NickServ in
|
* - cs_secure: Enable channel security, requiring the user to be identified with NickServ in
|
||||||
* order to be considered for being on the access list of the channel
|
* order to be considered for being on the access list of the channel
|
||||||
* - secureops: Only allow operator status to be given if the user is on the access list
|
* - secureops: Only allow operator status to be given if the user is on the access list
|
||||||
* - securefounder: Only allow the real founder of the channel to drop the channel, change it's
|
* - securefounder: Only allow the real founder of the channel to drop the channel, change its
|
||||||
* password, or change the founder or successor
|
* password, or change the founder or successor
|
||||||
* - signkick: Use of ChanServ's KICK command will cause the user's nick to be signed to the kick.
|
* - signkick: Use of ChanServ's KICK command will cause the user's nick to be signed to the kick.
|
||||||
* - signkick_level: Same as above, but the kick will not be signed if the user is at the same access
|
* - signkick_level: Same as above, but the kick will not be signed if the user is at the same access
|
||||||
@@ -151,6 +151,13 @@ module
|
|||||||
*/
|
*/
|
||||||
reasonmax = 200
|
reasonmax = 200
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The message formatting to use for signed kick messages.
|
||||||
|
* %n is the nick of the kicker
|
||||||
|
* %m is the message specified
|
||||||
|
*/
|
||||||
|
signkickformat = "%m (%n)"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If set, prevents channel access entries from containing hostmasks.
|
* If set, prevents channel access entries from containing hostmasks.
|
||||||
*/
|
*/
|
||||||
@@ -186,12 +193,12 @@ module
|
|||||||
*
|
*
|
||||||
* If you load cs_xop, you may define a XOP command to associate the privilege with.
|
* If you load cs_xop, you may define a XOP command to associate the privilege with.
|
||||||
*
|
*
|
||||||
* The name of privileges are uesd to associate them with channel modes. If you are using an IRCd that allows you to define additional
|
* The name of privileges are used to associate them with channel modes. If you are using an IRCd that allows you to define additional
|
||||||
* channel status modes, such as InspIRCd, you can associate privileges (and thus access levels, flags, xop) with the mode by naming
|
* channel status modes, such as InspIRCd, you can associate privileges (and thus access levels, flags, xop) with the mode by naming
|
||||||
* the privileges appropriately. For example, if you had a channel mode called admin, you could create AUTOADMIN, ADMIN, and ADMINME
|
* the privileges appropriately. For example, if you had a channel mode called admin, you could create AUTOADMIN, ADMIN, and ADMINME
|
||||||
* privileges which would automatically be associated with that channel mode.
|
* privileges which would automatically be associated with that channel mode.
|
||||||
*
|
*
|
||||||
* Defining new privileges here is not useful unless you have a module (eg, a third party one) made to check for
|
* Defining new privileges here is not useful unless you have a module (e.g. a third party one) made to check for
|
||||||
* the specific level you are defining.
|
* the specific level you are defining.
|
||||||
*
|
*
|
||||||
* Sane defaults are provided below that do not need to be edited unless you wish to change the default behavior.
|
* Sane defaults are provided below that do not need to be edited unless you wish to change the default behavior.
|
||||||
@@ -413,7 +420,7 @@ privilege
|
|||||||
*
|
*
|
||||||
* Used by chanserv/getkey and nickserv/ajoin.
|
* Used by chanserv/getkey and nickserv/ajoin.
|
||||||
*
|
*
|
||||||
* Users with this permission can get they channel key with GETKEY and
|
* Users with this permission can get their channel key with GETKEY and
|
||||||
* can use nickserv/ajoin to join channels with keys.
|
* can use nickserv/ajoin to join channels with keys.
|
||||||
*/
|
*/
|
||||||
privilege
|
privilege
|
||||||
@@ -658,7 +665,7 @@ privilege
|
|||||||
rank = 300
|
rank = 300
|
||||||
level = 10
|
level = 10
|
||||||
flag = "a"
|
flag = "a"
|
||||||
xop = "AOP"
|
xop = "SOP"
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -685,7 +692,7 @@ privilege
|
|||||||
* chanserv/saset/noexpire and chanserv/set.
|
* chanserv/saset/noexpire and chanserv/set.
|
||||||
*
|
*
|
||||||
* Users with this permission can set what BotServ will kick for, change
|
* Users with this permission can set what BotServ will kick for, change
|
||||||
* BotServ and ChanServ settings, clone ChanServ channel setings, and
|
* BotServ and ChanServ settings, clone ChanServ channel settings, and
|
||||||
* set ChanServ logging options.
|
* set ChanServ logging options.
|
||||||
*/
|
*/
|
||||||
privilege
|
privilege
|
||||||
@@ -799,25 +806,25 @@ privilege
|
|||||||
command_group
|
command_group
|
||||||
{
|
{
|
||||||
name = "chanserv/access"
|
name = "chanserv/access"
|
||||||
description = "Used to manage the list of privileged users"
|
description = _("Used to manage the list of privileged users")
|
||||||
}
|
}
|
||||||
|
|
||||||
command_group
|
command_group
|
||||||
{
|
{
|
||||||
name = "chanserv/status"
|
name = "chanserv/status"
|
||||||
description = "Used to modify the channel status of you or other users"
|
description = _("Used to modify the channel status of you or other users")
|
||||||
}
|
}
|
||||||
|
|
||||||
command_group
|
command_group
|
||||||
{
|
{
|
||||||
name = "chanserv/management"
|
name = "chanserv/management"
|
||||||
description = "Used to manage channels"
|
description = _("Used to manage channels")
|
||||||
}
|
}
|
||||||
|
|
||||||
command_group
|
command_group
|
||||||
{
|
{
|
||||||
name = "chanserv/admin"
|
name = "chanserv/admin"
|
||||||
description = "Services Operator commands"
|
description = _("Services Operator commands")
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Give it a help command. */
|
/* Give it a help command. */
|
||||||
@@ -829,8 +836,8 @@ command { service = "ChanServ"; name = "HELP"; command = "generic/help"; }
|
|||||||
* Provides commands chanserv/access and chanserv/levels.
|
* Provides commands chanserv/access and chanserv/levels.
|
||||||
* Provides the access system "levels".
|
* Provides the access system "levels".
|
||||||
*
|
*
|
||||||
* Used for giving users access in channels using a levels system. Allows allows redefining which privileges
|
* Used for giving users access in channels using a levels system. Allows redefining which privileges
|
||||||
* are representated by given level on a per channel basis.
|
* are represented by given level on a per channel basis.
|
||||||
*
|
*
|
||||||
* The "LIST" subcommand of chanserv/access will show every access entry on the channel, including access
|
* The "LIST" subcommand of chanserv/access will show every access entry on the channel, including access
|
||||||
* entries not added by cs_access. The "level" of these entries will be the representation of the access
|
* entries not added by cs_access. The "level" of these entries will be the representation of the access
|
||||||
@@ -868,6 +875,12 @@ command { service = "ChanServ"; name = "AKICK"; command = "chanserv/akick"; grou
|
|||||||
*
|
*
|
||||||
* Provides the command chanserv/ban.
|
* Provides the command chanserv/ban.
|
||||||
*
|
*
|
||||||
|
* The configuration option 'kick' may be set in a command block for this command to control
|
||||||
|
* whether or not users will be kicked from the channel once banned. The default is 'yes'.
|
||||||
|
*
|
||||||
|
* The configuration option 'mode' may be set to control which mode is set, such as BAN or QUIET.
|
||||||
|
* The default is BAN.
|
||||||
|
*
|
||||||
* Used for banning users from channels.
|
* Used for banning users from channels.
|
||||||
*/
|
*/
|
||||||
module { name = "cs_ban" }
|
module { name = "cs_ban" }
|
||||||
@@ -928,7 +941,7 @@ command { service = "ChanServ"; name = "ENTRYMSG"; command = "chanserv/entrymsg"
|
|||||||
* Used for giving users access in channels.
|
* Used for giving users access in channels.
|
||||||
*
|
*
|
||||||
* The "LIST" subcommand of chanserv/flags will show every access entry on the channel, including access
|
* The "LIST" subcommand of chanserv/flags will show every access entry on the channel, including access
|
||||||
* entries not added by cs_flags. The "Flags" of these entries will be the flags representation of the
|
* entries not added by cs_flags. The "flags" of these entries will be the flags representation of the
|
||||||
* privilege set granted by the access entry.
|
* privilege set granted by the access entry.
|
||||||
*/
|
*/
|
||||||
module { name = "cs_flags" }
|
module { name = "cs_flags" }
|
||||||
@@ -1042,7 +1055,7 @@ command { service = "ChanServ"; name = "LOG"; command = "chanserv/log"; group =
|
|||||||
* Provides the command chanserv/mode and chanserv/modes.
|
* Provides the command chanserv/mode and chanserv/modes.
|
||||||
*
|
*
|
||||||
* Used for changing mode locks and changing modes. Multiple commands may be mapped to chanserv/modes, the
|
* Used for changing mode locks and changing modes. Multiple commands may be mapped to chanserv/modes, the
|
||||||
* configuration directive 'set' and 'unset' are used to tell chanserv/modes which modes should be set or
|
* configuration directives 'set' and 'unset' are used to tell chanserv/modes which modes should be set or
|
||||||
* unset when the command is executed.
|
* unset when the command is executed.
|
||||||
*/
|
*/
|
||||||
module
|
module
|
||||||
@@ -1055,6 +1068,13 @@ module
|
|||||||
* If not set, the default is +nt.
|
* If not set, the default is +nt.
|
||||||
*/
|
*/
|
||||||
mlock = "+nt"
|
mlock = "+nt"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The maximum number of entries that may be on a mode lock list.
|
||||||
|
*
|
||||||
|
* This directive is optional.
|
||||||
|
*/
|
||||||
|
max = 32
|
||||||
}
|
}
|
||||||
command { service = "ChanServ"; name = "MODE"; command = "chanserv/mode"; group = "chanserv/management"; }
|
command { service = "ChanServ"; name = "MODE"; command = "chanserv/mode"; group = "chanserv/management"; }
|
||||||
|
|
||||||
@@ -1101,9 +1121,6 @@ module
|
|||||||
|
|
||||||
/* Sets the time to keep seen entries in the seen database. */
|
/* Sets the time to keep seen entries in the seen database. */
|
||||||
purgetime = "30d"
|
purgetime = "30d"
|
||||||
|
|
||||||
/* Sets the delay between checks for expired seen entries. */
|
|
||||||
expiretimeout = "1d"
|
|
||||||
}
|
}
|
||||||
command { service = "OperServ"; name = "SEEN"; command = "operserv/seen"; permission = "operserv/seen"; }
|
command { service = "OperServ"; name = "SEEN"; command = "operserv/seen"; permission = "operserv/seen"; }
|
||||||
|
|
||||||
@@ -1146,7 +1163,7 @@ module
|
|||||||
defbantype = 2
|
defbantype = 2
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If set, persisent channels have their creation times lowered to their
|
* If set, persistent channels have their creation times lowered to their
|
||||||
* original registration dates.
|
* original registration dates.
|
||||||
*/
|
*/
|
||||||
persist_lower_ts = true
|
persist_lower_ts = true
|
||||||
@@ -1155,7 +1172,7 @@ command { service = "ChanServ"; name = "SET"; command = "chanserv/set"; group =
|
|||||||
command { service = "ChanServ"; name = "SET AUTOOP"; command = "chanserv/set/autoop"; }
|
command { service = "ChanServ"; name = "SET AUTOOP"; command = "chanserv/set/autoop"; }
|
||||||
command { service = "ChanServ"; name = "SET BANTYPE"; command = "chanserv/set/bantype"; }
|
command { service = "ChanServ"; name = "SET BANTYPE"; command = "chanserv/set/bantype"; }
|
||||||
command { service = "ChanServ"; name = "SET DESCRIPTION"; command = "chanserv/set/description"; }
|
command { service = "ChanServ"; name = "SET DESCRIPTION"; command = "chanserv/set/description"; }
|
||||||
command { service = "ChanServ"; name = "SET DESC"; command = "chanserv/set/description"; }
|
command { service = "ChanServ"; name = "SET DESC"; command = "chanserv/set/description"; hide = yes; }
|
||||||
command { service = "ChanServ"; name = "SET FOUNDER"; command = "chanserv/set/founder"; }
|
command { service = "ChanServ"; name = "SET FOUNDER"; command = "chanserv/set/founder"; }
|
||||||
command { service = "ChanServ"; name = "SET KEEPMODES"; command = "chanserv/set/keepmodes"; }
|
command { service = "ChanServ"; name = "SET KEEPMODES"; command = "chanserv/set/keepmodes"; }
|
||||||
command { service = "ChanServ"; name = "SET PEACE"; command = "chanserv/set/peace"; }
|
command { service = "ChanServ"; name = "SET PEACE"; command = "chanserv/set/peace"; }
|
||||||
@@ -1209,6 +1226,13 @@ module
|
|||||||
* If not set, the default is never.
|
* If not set, the default is never.
|
||||||
*/
|
*/
|
||||||
expire = 90d
|
expire = 90d
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Settings to show to non-opers in ChanServ's INFO output.
|
||||||
|
* Comment to completely disable showing any information about
|
||||||
|
* suspended channels to non-opers.
|
||||||
|
*/
|
||||||
|
show = "suspended, by, reason, on, expires"
|
||||||
}
|
}
|
||||||
command { service = "ChanServ"; name = "SUSPEND"; command = "chanserv/suspend"; permission = "chanserv/suspend"; group = "chanserv/admin"; }
|
command { service = "ChanServ"; name = "SUSPEND"; command = "chanserv/suspend"; permission = "chanserv/suspend"; group = "chanserv/admin"; }
|
||||||
command { service = "ChanServ"; name = "UNSUSPEND"; command = "chanserv/unsuspend"; permission = "chanserv/suspend"; group = "chanserv/admin"; }
|
command { service = "ChanServ"; name = "UNSUSPEND"; command = "chanserv/unsuspend"; permission = "chanserv/suspend"; group = "chanserv/admin"; }
|
||||||
@@ -1263,7 +1287,7 @@ command { service = "ChanServ"; name = "UP"; command = "chanserv/up"; group = "c
|
|||||||
* Provides the access system "XOP".
|
* Provides the access system "XOP".
|
||||||
*
|
*
|
||||||
* Used for giving users access in channels. Many commands may be linked to chanserv/xop, but the
|
* Used for giving users access in channels. Many commands may be linked to chanserv/xop, but the
|
||||||
* privileges given by each is determined by the privilege:xop settings above. These commands should
|
* privileges given by each are determined by the privilege:xop settings above. These commands should
|
||||||
* be ordered from highest to lowest, as each command inherits the privileges of the commands below
|
* be ordered from highest to lowest, as each command inherits the privileges of the commands below
|
||||||
* it.
|
* it.
|
||||||
*
|
*
|
||||||
@@ -1285,7 +1309,7 @@ command { service = "ChanServ"; name = "VOP"; command = "chanserv/xop"; group =
|
|||||||
/*
|
/*
|
||||||
* cs_statusupdate
|
* cs_statusupdate
|
||||||
*
|
*
|
||||||
* This module automatically updates users status on channels when the
|
* This module automatically updates users' status on channels when the
|
||||||
* channel's access list is modified.
|
* channel's access list is modified.
|
||||||
*/
|
*/
|
||||||
module { name = "cs_statusupdate" }
|
module { name = "cs_statusupdate" }
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ module
|
|||||||
}
|
}
|
||||||
command { service = "ChanServ"; name = "SET CHANSTATS"; command = "chanserv/set/chanstats"; }
|
command { service = "ChanServ"; name = "SET CHANSTATS"; command = "chanserv/set/chanstats"; }
|
||||||
command { service = "NickServ"; name = "SET CHANSTATS"; command = "nickserv/set/chanstats"; }
|
command { service = "NickServ"; name = "SET CHANSTATS"; command = "nickserv/set/chanstats"; }
|
||||||
command { service = "NickServ"; name = "SASET CHANSTATS"; command = "nickserv/saset/chanstats"; }
|
command { service = "NickServ"; name = "SASET CHANSTATS"; command = "nickserv/saset/chanstats"; permission = "nickserv/saset/chanstats"; }
|
||||||
|
|
||||||
module { name = "cs_fantasy_stats" }
|
module { name = "cs_fantasy_stats" }
|
||||||
command { service = "ChanServ"; name = "STATS"; command = "chanserv/stats"; }
|
command { service = "ChanServ"; name = "STATS"; command = "chanserv/stats"; }
|
||||||
|
|||||||
+2
-1
@@ -37,7 +37,8 @@ cd $ANOPATH
|
|||||||
if [ -f "$ANODATA/$ANOPIDF" ]
|
if [ -f "$ANODATA/$ANOPIDF" ]
|
||||||
then
|
then
|
||||||
ANOPID=`cat "$ANODATA/$ANOPIDF"`
|
ANOPID=`cat "$ANODATA/$ANOPIDF"`
|
||||||
if [ `ps auwx | grep $ANOPROG | grep $ANOPID | grep -v -c grep` = 1 ]
|
kill -0 $ANOPID 2>/dev/null
|
||||||
|
if [ $? -eq 0 ]
|
||||||
then
|
then
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|||||||
+94
-56
@@ -80,7 +80,7 @@
|
|||||||
* [OPTIONAL] Defines
|
* [OPTIONAL] Defines
|
||||||
*
|
*
|
||||||
* You can define values to other values, which can be used to easily change
|
* You can define values to other values, which can be used to easily change
|
||||||
* many values in the configuration. at once.
|
* many values in the configuration at once.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -110,7 +110,7 @@ define
|
|||||||
#include
|
#include
|
||||||
{
|
{
|
||||||
type = "executable"
|
type = "executable"
|
||||||
name = "/usr/bin/wget -q -O - http://some.misconfigured.network.com/services.conf"
|
name = "/usr/bin/wget -q -O - https://some.misconfigured.network.com/services.conf"
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -126,6 +126,7 @@ define
|
|||||||
* An example configuration for InspIRCd that is compatible with the below uplink
|
* An example configuration for InspIRCd that is compatible with the below uplink
|
||||||
* and serverinfo configuration would look like:
|
* and serverinfo configuration would look like:
|
||||||
*
|
*
|
||||||
|
* # This goes in inspircd.conf, *NOT* your Anope config!
|
||||||
* <link name="services.localhost.net"
|
* <link name="services.localhost.net"
|
||||||
* ipaddr="127.0.0.1"
|
* ipaddr="127.0.0.1"
|
||||||
* port="7000"
|
* port="7000"
|
||||||
@@ -137,19 +138,22 @@ define
|
|||||||
* An example configuration for UnrealIRCd that is compatible with the below uplink
|
* An example configuration for UnrealIRCd that is compatible with the below uplink
|
||||||
* and serverinfo configuration would look like:
|
* and serverinfo configuration would look like:
|
||||||
*
|
*
|
||||||
* link services.localhost.net
|
* // This goes in unrealircd.conf, *NOT* your Anope config!
|
||||||
* {
|
* listen {
|
||||||
* username *;
|
* ip 127.0.0.1;
|
||||||
* hostname *;
|
* port 7000;
|
||||||
* bind-ip "127.0.0.1";
|
* options {
|
||||||
* port 7000;
|
* serversonly;
|
||||||
* hub *;
|
* };
|
||||||
* password-connect "mypassword";
|
* };
|
||||||
* password-receive "mypassword";
|
* link services.localhost.net {
|
||||||
* class servers;
|
* incoming {
|
||||||
|
* mask *@127.0.0.1;
|
||||||
|
* };
|
||||||
|
* password "mypassword";
|
||||||
|
* class servers;
|
||||||
* };
|
* };
|
||||||
* ulines { services.localhost.net; };
|
* ulines { services.localhost.net; };
|
||||||
* listen 127.0.0.1:7000;
|
|
||||||
*/
|
*/
|
||||||
uplink
|
uplink
|
||||||
{
|
{
|
||||||
@@ -205,7 +209,7 @@ serverinfo
|
|||||||
name = "services.localhost.net"
|
name = "services.localhost.net"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The text which should appear as the server's information in /whois and similar
|
* The text which should appear as the server's information in /WHOIS and similar
|
||||||
* queries.
|
* queries.
|
||||||
*/
|
*/
|
||||||
description = "Services for IRC Networks"
|
description = "Services for IRC Networks"
|
||||||
@@ -252,10 +256,12 @@ serverinfo
|
|||||||
* - hybrid
|
* - hybrid
|
||||||
* - inspircd12
|
* - inspircd12
|
||||||
* - inspircd20
|
* - inspircd20
|
||||||
|
* - inspircd3
|
||||||
* - ngircd
|
* - ngircd
|
||||||
* - plexus
|
* - plexus
|
||||||
* - ratbox
|
* - ratbox
|
||||||
* - unreal
|
* - unreal (for 3.2.x)
|
||||||
|
* - unreal4
|
||||||
*/
|
*/
|
||||||
module
|
module
|
||||||
{
|
{
|
||||||
@@ -319,6 +325,16 @@ networkinfo
|
|||||||
*/
|
*/
|
||||||
modelistsize = 100
|
modelistsize = 100
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Characters allowed in nicknames. This always includes the characters described
|
||||||
|
* in RFC1459, and so does not need to be set for normal behavior. Changing this to
|
||||||
|
* include characters your IRCd doesn't support will cause your IRCd and/or Services
|
||||||
|
* to break. Multibyte characters are not supported, nor are escape sequences.
|
||||||
|
*
|
||||||
|
* It is recommended you DON'T change this.
|
||||||
|
*/
|
||||||
|
#nick_chars = ""
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The characters allowed in hostnames. This is used for validating hostnames given
|
* The characters allowed in hostnames. This is used for validating hostnames given
|
||||||
* to services, such as BotServ bot hostnames and user vhosts. Changing this is not
|
* to services, such as BotServ bot hostnames and user vhosts. Changing this is not
|
||||||
@@ -462,7 +478,7 @@ options
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* If set, this will allow users to let Services send PRIVMSGs to them
|
* If set, this will allow users to let Services send PRIVMSGs to them
|
||||||
* instead of NOTICEs. Also see the defmsg option of nickserv:defaults,
|
* instead of NOTICEs. Also see the "msg" option of nickserv:defaults,
|
||||||
* which also toggles the default communication (PRIVMSG or NOTICE) to
|
* which also toggles the default communication (PRIVMSG or NOTICE) to
|
||||||
* use for unregistered users.
|
* use for unregistered users.
|
||||||
*
|
*
|
||||||
@@ -489,7 +505,7 @@ options
|
|||||||
#hidestatso = yes
|
#hidestatso = yes
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* A space-separated list of ulined servers on your network, it is assumed that
|
* A space-separated list of U-lined servers on your network, it is assumed that
|
||||||
* the servers in this list are allowed to set channel modes and Services will
|
* the servers in this list are allowed to set channel modes and Services will
|
||||||
* not attempt to reverse their mode changes.
|
* not attempt to reverse their mode changes.
|
||||||
*
|
*
|
||||||
@@ -521,14 +537,14 @@ options
|
|||||||
*
|
*
|
||||||
* Note for this to work the regex module providing the regex engine must be loaded.
|
* Note for this to work the regex module providing the regex engine must be loaded.
|
||||||
*/
|
*/
|
||||||
regexengine = "regex/pcre"
|
#regexengine = "regex/pcre"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* A list of languages to load on startup that will be available in /nickserv set language.
|
* A list of languages to load on startup that will be available in /NICKSERV SET LANGUAGE.
|
||||||
* Useful if you translate Anope to your language. (Explained further in docs/LANGUAGE).
|
* Useful if you translate Anope to your language. (Explained further in docs/LANGUAGE).
|
||||||
* Note that english should not be listed here because it is the base language.
|
* Note that English should not be listed here because it is the base language.
|
||||||
*
|
*
|
||||||
* Removing .UTF-8 will instead use the default encoding for the language, eg. iso-8859-1 for western European languages.
|
* Removing .UTF-8 will instead use the default encoding for the language, e.g. iso-8859-1 for western European languages.
|
||||||
*/
|
*/
|
||||||
languages = "ca_ES.UTF-8 de_DE.UTF-8 el_GR.UTF-8 es_ES.UTF-8 fr_FR.UTF-8 hu_HU.UTF-8 it_IT.UTF-8 nl_NL.UTF-8 pl_PL.UTF-8 pt_PT.UTF-8 ru_RU.UTF-8 tr_TR.UTF-8"
|
languages = "ca_ES.UTF-8 de_DE.UTF-8 el_GR.UTF-8 es_ES.UTF-8 fr_FR.UTF-8 hu_HU.UTF-8 it_IT.UTF-8 nl_NL.UTF-8 pl_PL.UTF-8 pt_PT.UTF-8 ru_RU.UTF-8 tr_TR.UTF-8"
|
||||||
|
|
||||||
@@ -657,19 +673,19 @@ log
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* The source(s) to only accept log messages from. Leave commented to allow all sources.
|
* The source(s) to only accept log messages from. Leave commented to allow all sources.
|
||||||
* This can be a users name, a channel name, one of our clients (eg, OperServ), or a server name.
|
* This can be a users name, a channel name, one of our clients (e.g. OperServ), or a server name.
|
||||||
*/
|
*/
|
||||||
#source = ""
|
#source = ""
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The bot used to log generic messages which have no predefined sender if there
|
* The bot used to log generic messages which have no predefined sender if the
|
||||||
* is a channel in the target directive.
|
* target directive is set to a channel or globops.
|
||||||
*/
|
*/
|
||||||
bot = "Global"
|
bot = "Global"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The number of days to keep logfiles, only useful if you are logging to a file.
|
* The number of days to keep log files, only useful if you are logging to a file.
|
||||||
* Set to 0 to never delete old logfiles.
|
* Set to 0 to never delete old log files.
|
||||||
*
|
*
|
||||||
* Note that Anope must run 24 hours a day for this feature to work correctly.
|
* Note that Anope must run 24 hours a day for this feature to work correctly.
|
||||||
*/
|
*/
|
||||||
@@ -694,7 +710,7 @@ log
|
|||||||
* means "* ~operserv/*" would log everything because * matches everything.
|
* means "* ~operserv/*" would log everything because * matches everything.
|
||||||
*
|
*
|
||||||
* Valid admin, override, and command options are:
|
* Valid admin, override, and command options are:
|
||||||
* pesudo-serv/commandname (eg, operserv/akill, chanserv/set)
|
* pesudo-serv/commandname (e.g. operserv/akill, chanserv/set)
|
||||||
*
|
*
|
||||||
* Valid server options are:
|
* Valid server options are:
|
||||||
* connect, quit, sync, squit
|
* connect, quit, sync, squit
|
||||||
@@ -703,7 +719,7 @@ log
|
|||||||
* create, destroy, join, part, kick, leave, mode
|
* create, destroy, join, part, kick, leave, mode
|
||||||
*
|
*
|
||||||
* Valid user options are:
|
* Valid user options are:
|
||||||
* connect, disconnect, quit, nick, ident, host, mode, maxusers, oper
|
* connect, disconnect, quit, nick, ident, host, mode, maxusers, oper, away
|
||||||
*
|
*
|
||||||
* Rawio and debug are simple yes/no answers, there are no types for them.
|
* Rawio and debug are simple yes/no answers, there are no types for them.
|
||||||
*
|
*
|
||||||
@@ -725,8 +741,9 @@ log
|
|||||||
*/
|
*/
|
||||||
log
|
log
|
||||||
{
|
{
|
||||||
|
bot = "Global"
|
||||||
target = "globops"
|
target = "globops"
|
||||||
admin = "global/* operserv/mode operserv/kick operserv/akill operserv/s*line operserv/noop operserv/jupe operserv/oline operserv/set operserv/svsnick operserv/svsjoin operserv/svspart nickserv/getpass */drop"
|
admin = "global/* operserv/chankill operserv/mode operserv/kick operserv/akill operserv/s*line operserv/noop operserv/jupe operserv/oline operserv/set operserv/svsnick operserv/svsjoin operserv/svspart nickserv/getpass */drop"
|
||||||
servers = "squit"
|
servers = "squit"
|
||||||
users = "oper"
|
users = "oper"
|
||||||
other = "expire/* bados akill/*"
|
other = "expire/* bados akill/*"
|
||||||
@@ -747,35 +764,34 @@ log
|
|||||||
*
|
*
|
||||||
* Available privileges:
|
* Available privileges:
|
||||||
* botserv/administration - Can view and assign private BotServ bots
|
* botserv/administration - Can view and assign private BotServ bots
|
||||||
|
* botserv/fantasy - Can use fantasy commands without the FANTASIA privilege
|
||||||
* chanserv/administration - Can modify the settings of any channel (including changing of the owner!)
|
* chanserv/administration - Can modify the settings of any channel (including changing of the owner!)
|
||||||
|
* chanserv/access/list - Can view channel access and akick lists, but not modify them
|
||||||
* chanserv/access/modify - Can modify channel access and akick lists, and use /chanserv enforce
|
* chanserv/access/modify - Can modify channel access and akick lists, and use /chanserv enforce
|
||||||
* chanserv/auspex - Can see any information with /chanserv info
|
* chanserv/auspex - Can see any information with /CHANSERV INFO
|
||||||
* chanserv/no-register-limit - May register an unlimited number of channels and nicknames
|
* chanserv/no-register-limit - May register an unlimited number of channels and nicknames
|
||||||
* chanserv/kick - Can kick and ban users from channels through ChanServ
|
* chanserv/kick - Can kick and ban users from channels through ChanServ
|
||||||
* memoserv/info - Can see any information with /memoserv info
|
* memoserv/info - Can see any information with /MEMOSERV INFO
|
||||||
* memoserv/set-limit - Can set the limit of max stored memos on any user and channel
|
* memoserv/set-limit - Can set the limit of max stored memos on any user and channel
|
||||||
* memoserv/no-limit - Can send memos through limits and throttles
|
* memoserv/no-limit - Can send memos through limits and throttles
|
||||||
* nickserv/access - Can modify other users access and certificate lists
|
* nickserv/access - Can modify other users access and certificate lists
|
||||||
* nickserv/alist - Can see the channel access list of other users
|
* nickserv/alist - Can see the channel access list of other users
|
||||||
* nickserv/auspex - Can see any information with /nickserv info
|
* nickserv/auspex - Can see any information with /NICKSERV INFO
|
||||||
* nickserv/confirm - Can confirm other users nicknames
|
* nickserv/confirm - Can confirm other users nicknames
|
||||||
* nickserv/drop - Can drop other users nicks
|
* nickserv/drop - Can drop other users nicks
|
||||||
|
* nickserv/recover - Can recover other users nicks
|
||||||
* operserv/config - Can modify services's configuration
|
* operserv/config - Can modify services's configuration
|
||||||
|
* operserv/oper/modify - Can add and remove operators with at most the same privileges
|
||||||
* protected - Can not be kicked from channels by Services
|
* protected - Can not be kicked from channels by Services
|
||||||
*
|
*
|
||||||
* Available commands:
|
* Available commands:
|
||||||
* botserv/bot/del botserv/bot/add botserv/bot/change botserv/set/private
|
* botserv/bot/del botserv/bot/add botserv/bot/change botserv/set/private
|
||||||
* botserv/set/nobot
|
* botserv/set/nobot
|
||||||
*
|
*
|
||||||
* chanserv/access/list chanserv/drop chanserv/getkey chanserv/invite
|
* chanserv/drop chanserv/getkey chanserv/invite
|
||||||
* chanserv/list chanserv/suspend chanserv/topic
|
* chanserv/list chanserv/suspend chanserv/topic
|
||||||
*
|
*
|
||||||
* chanserv/saset/bantype chanserv/saset/description chanserv/saset/email chanserv/saset/keepmodes
|
* chanserv/saset/noexpire
|
||||||
* chanserv/saset/founder chanserv/saset/keeptopic chanserv/saset/restricted
|
|
||||||
* chanserv/saset/peace chanserv/saset/persist chanserv/saset/private
|
|
||||||
* chanserv/saset/secure chanserv/saset/securefounder chanserv/saset/secureops
|
|
||||||
* chanserv/saset/signkick chanserv/saset/successor chanserv/saset/topiclock
|
|
||||||
* chanserv/saset/url chanserv/saset/noexpire chanserv/saset/autoop
|
|
||||||
*
|
*
|
||||||
* memoserv/sendall memoserv/staff
|
* memoserv/sendall memoserv/staff
|
||||||
*
|
*
|
||||||
@@ -803,6 +819,9 @@ log
|
|||||||
* These can contain commands for oper-only strings (see above) which grants access to that specific command,
|
* These can contain commands for oper-only strings (see above) which grants access to that specific command,
|
||||||
* and privileges (which grant access to more general permissions for the named area).
|
* and privileges (which grant access to more general permissions for the named area).
|
||||||
* Wildcard entries are permitted for both, e.g. 'commands = "operserv/*"' for all OperServ commands.
|
* Wildcard entries are permitted for both, e.g. 'commands = "operserv/*"' for all OperServ commands.
|
||||||
|
* You can also negate values with a ~. For example, "~operserv/akill operserv/*" would allow all OperServ
|
||||||
|
* commands except for operserv/akill. Note that processing stops at the first matching option, which
|
||||||
|
* means "* ~operserv/*" would allow everything because * matches everything.
|
||||||
*
|
*
|
||||||
* Below are some default example types, but this is by no means exhaustive,
|
* Below are some default example types, but this is by no means exhaustive,
|
||||||
* and it is recommended that you configure them to your needs.
|
* and it is recommended that you configure them to your needs.
|
||||||
@@ -822,7 +841,7 @@ opertype
|
|||||||
/* The name of this opertype */
|
/* The name of this opertype */
|
||||||
name = "Services Operator"
|
name = "Services Operator"
|
||||||
|
|
||||||
/* What opertype(s) this inherits from. Seperate with a comma. */
|
/* What opertype(s) this inherits from. Separate with a comma. */
|
||||||
inherits = "Helper, Another Helper"
|
inherits = "Helper, Another Helper"
|
||||||
|
|
||||||
/* What commands (see above) this opertype may use */
|
/* What commands (see above) this opertype may use */
|
||||||
@@ -848,7 +867,7 @@ opertype
|
|||||||
|
|
||||||
inherits = "Services Operator"
|
inherits = "Services Operator"
|
||||||
|
|
||||||
commands = "chanserv/access/list chanserv/drop chanserv/getkey chanserv/saset/noexpire memoserv/sendall nickserv/saset/* nickserv/getemail operserv/news operserv/jupe operserv/svs operserv/stats operserv/oline operserv/noop operserv/forbid global/*"
|
commands = "botserv/* chanserv/access/list chanserv/drop chanserv/getkey chanserv/saset/noexpire memoserv/sendall nickserv/saset/* nickserv/getemail operserv/news operserv/jupe operserv/svs operserv/stats operserv/oline operserv/noop operserv/forbid global/*"
|
||||||
|
|
||||||
privs = "*"
|
privs = "*"
|
||||||
}
|
}
|
||||||
@@ -885,7 +904,7 @@ opertype
|
|||||||
*/
|
*/
|
||||||
require_oper = yes
|
require_oper = yes
|
||||||
|
|
||||||
/* An optional password. If defined the user must login using "/msg OperServ LOGIN" first */
|
/* An optional password. If defined, the user must login using "/OPERSERV LOGIN" first */
|
||||||
#password = "secret"
|
#password = "secret"
|
||||||
|
|
||||||
/* An optional SSL fingerprint. If defined, it's required to be able to use this opertype. */
|
/* An optional SSL fingerprint. If defined, it's required to be able to use this opertype. */
|
||||||
@@ -975,6 +994,11 @@ mail
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* The subject and message of emails sent to users when they register accounts.
|
* The subject and message of emails sent to users when they register accounts.
|
||||||
|
*
|
||||||
|
* Available tokens for this template are:
|
||||||
|
* %n - Gets replaced with the nickname
|
||||||
|
* %N - Gets replaced with the network name
|
||||||
|
* %c - Gets replaced with the confirmation code
|
||||||
*/
|
*/
|
||||||
registration_subject = "Nickname registration for %n"
|
registration_subject = "Nickname registration for %n"
|
||||||
registration_message = "Hi,
|
registration_message = "Hi,
|
||||||
@@ -988,6 +1012,11 @@ mail
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* The subject and message of emails sent to users when they request a new password.
|
* The subject and message of emails sent to users when they request a new password.
|
||||||
|
*
|
||||||
|
* Available tokens for this template are:
|
||||||
|
* %n - Gets replaced with the nickname
|
||||||
|
* %N - Gets replaced with the network name
|
||||||
|
* %c - Gets replaced with the confirmation code
|
||||||
*/
|
*/
|
||||||
reset_subject = "Reset password request for %n"
|
reset_subject = "Reset password request for %n"
|
||||||
reset_message = "Hi,
|
reset_message = "Hi,
|
||||||
@@ -1001,11 +1030,18 @@ mail
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* The subject and message of emails sent to users when they request a new email address.
|
* The subject and message of emails sent to users when they request a new email address.
|
||||||
|
*
|
||||||
|
* Available tokens for this template are:
|
||||||
|
* %e - Gets replaced with the old email address
|
||||||
|
* %E - Gets replaced with the new email address
|
||||||
|
* %n - Gets replaced with the nickname
|
||||||
|
* %N - Gets replaced with the network name
|
||||||
|
* %c - Gets replaced with the confirmation code
|
||||||
*/
|
*/
|
||||||
emailchange_subject = "Email confirmation"
|
emailchange_subject = "Email confirmation"
|
||||||
emailchange_message = "Hi,
|
emailchange_message = "Hi,
|
||||||
|
|
||||||
You have requested to change your email address to %e.
|
You have requested to change your email address from %e to %E.
|
||||||
Please type \" /msg NickServ CONFIRM %c \" to confirm this change.
|
Please type \" /msg NickServ CONFIRM %c \" to confirm this change.
|
||||||
|
|
||||||
If you don't know why this mail was sent to you, please ignore it silently.
|
If you don't know why this mail was sent to you, please ignore it silently.
|
||||||
@@ -1014,6 +1050,13 @@ mail
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* The subject and message of emails sent to users when they receive a new memo.
|
* The subject and message of emails sent to users when they receive a new memo.
|
||||||
|
*
|
||||||
|
* Available tokens for this template are:
|
||||||
|
* %n - Gets replaced with the nickname
|
||||||
|
* %s - Gets replaced with the sender's nickname
|
||||||
|
* %d - Gets replaced with the memo number
|
||||||
|
* %t - Gets replaced with the memo text
|
||||||
|
* %N - Gets replaced with the network name
|
||||||
*/
|
*/
|
||||||
memo_subject = "New memo"
|
memo_subject = "New memo"
|
||||||
memo_message = "Hi %n,
|
memo_message = "Hi %n,
|
||||||
@@ -1153,7 +1196,7 @@ module
|
|||||||
/*
|
/*
|
||||||
* db_redis.
|
* db_redis.
|
||||||
*
|
*
|
||||||
* This module allows using Redis (http://redis.io) as a database backend.
|
* This module allows using Redis (https://redis.io/) as a database backend.
|
||||||
* This module requires that m_redis is loaded and configured properly.
|
* This module requires that m_redis is loaded and configured properly.
|
||||||
*
|
*
|
||||||
* Redis 2.8 supports keyspace notifications which allows Redis to push notifications
|
* Redis 2.8 supports keyspace notifications which allows Redis to push notifications
|
||||||
@@ -1192,23 +1235,14 @@ module
|
|||||||
* encrypted by this module. Old passwords stored in another encryption method are
|
* encrypted by this module. Old passwords stored in another encryption method are
|
||||||
* automatically re-encrypted by the primary encryption module on next identify.
|
* automatically re-encrypted by the primary encryption module on next identify.
|
||||||
*
|
*
|
||||||
* NOTE: enc_old is Anope's previous (broken) MD5 implementation which is present in
|
* enc_md5, enc_sha1, and enc_old are deprecated, and are provided for users
|
||||||
* versions prior to Anope 1.7.17. If your databases were made using that module,
|
* to upgrade to a newer encryption module. Do not use them as the primary
|
||||||
* use this and not enc_md5.
|
* encryption module. They will be removed in a future release.
|
||||||
*
|
|
||||||
* NOTE: enc_sha1 relies on how the OS stores 2+ byte data internally, and is
|
|
||||||
* potentially broken when moving between 2 different OSes, such as moving from
|
|
||||||
* Linux to Windows. It is recommended that you use enc_sha256 instead if you want
|
|
||||||
* to use an SHA-based encryption. If you choose to do so, it is also recommended
|
|
||||||
* that you first try to get everyone's passwords converted to enc_sha256 before
|
|
||||||
* switching OSes by placing enc_sha256 at the beginning of the list.
|
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#module { name = "enc_bcrypt" }
|
#module { name = "enc_bcrypt" }
|
||||||
module { name = "enc_sha256" }
|
module { name = "enc_sha256" }
|
||||||
#module { name = "enc_md5" }
|
|
||||||
#module { name = "enc_sha1" }
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* When using enc_none, passwords will be stored without encryption. This isn't secure
|
* When using enc_none, passwords will be stored without encryption. This isn't secure
|
||||||
@@ -1216,6 +1250,10 @@ module { name = "enc_sha256" }
|
|||||||
*/
|
*/
|
||||||
#module { name = "enc_none" }
|
#module { name = "enc_none" }
|
||||||
|
|
||||||
|
/* Deprecated encryption modules */
|
||||||
|
#module { name = "enc_md5" }
|
||||||
|
#module { name = "enc_sha1" }
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* enc_old is Anope's previous (broken) MD5 implementation used from 1.4.x to 1.7.16.
|
* enc_old is Anope's previous (broken) MD5 implementation used from 1.4.x to 1.7.16.
|
||||||
* If your databases were made using that module, load it here to allow conversion to the primary
|
* If your databases were made using that module, load it here to allow conversion to the primary
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ service
|
|||||||
/*
|
/*
|
||||||
* The hostname of the StatServ client.
|
* The hostname of the StatServ client.
|
||||||
*/
|
*/
|
||||||
host = "services.host"
|
host = "stats.host"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The realname of the StatServ client.
|
* The realname of the StatServ client.
|
||||||
@@ -45,7 +45,7 @@ service
|
|||||||
*
|
*
|
||||||
* Prefixes may be given to the channels in the form of mode characters or prefix symbols.
|
* Prefixes may be given to the channels in the form of mode characters or prefix symbols.
|
||||||
*/
|
*/
|
||||||
#channels = "@#services,#mychan"
|
#channels = "@#stats,#mychan"
|
||||||
}
|
}
|
||||||
|
|
||||||
module
|
module
|
||||||
@@ -84,7 +84,7 @@ module
|
|||||||
/*
|
/*
|
||||||
* Get the CTCP version from users
|
* Get the CTCP version from users
|
||||||
* The users connecting to the network will receive a CTCP VERSION
|
* The users connecting to the network will receive a CTCP VERSION
|
||||||
* request from the above configured services client
|
* request from the above configured stats client
|
||||||
*/
|
*/
|
||||||
ctcpuser = "yes"
|
ctcpuser = "yes"
|
||||||
|
|
||||||
@@ -95,4 +95,3 @@ module
|
|||||||
*/
|
*/
|
||||||
ctcpeob = "yes"
|
ctcpeob = "yes"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -137,7 +137,17 @@ command { service = "MemoServ"; name = "DEL"; command = "memoserv/del"; }
|
|||||||
*
|
*
|
||||||
* Used to ignore memos from specific users.
|
* Used to ignore memos from specific users.
|
||||||
*/
|
*/
|
||||||
module { name = "ms_ignore" }
|
module
|
||||||
|
{
|
||||||
|
name = "ms_ignore"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The maximum number of entries that may be on a memo ignore list.
|
||||||
|
*
|
||||||
|
* This directive is optional.
|
||||||
|
*/
|
||||||
|
max = 32
|
||||||
|
}
|
||||||
command { service = "MemoServ"; name = "IGNORE"; command = "memoserv/ignore"; }
|
command { service = "MemoServ"; name = "IGNORE"; command = "memoserv/ignore"; }
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
+68
-43
@@ -30,7 +30,7 @@ module { name = "help" }
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* The nameserver to use for resolving hostnames, must be an IP or a resolver configuration file.
|
* The nameserver to use for resolving hostnames, must be an IP or a resolver configuration file.
|
||||||
* The below should work fine on all unix like systems. Windows users will have to find their nameservers
|
* The below should work fine on all UNIX-like systems. Windows users will have to find their nameservers
|
||||||
* from ipconfig /all and put the IP here.
|
* from ipconfig /all and put the IP here.
|
||||||
*/
|
*/
|
||||||
nameserver = "/etc/resolv.conf"
|
nameserver = "/etc/resolv.conf"
|
||||||
@@ -124,26 +124,58 @@ module { name = "help" }
|
|||||||
* %g is the realname of the user
|
* %g is the realname of the user
|
||||||
* %h is the hostname of the user
|
* %h is the hostname of the user
|
||||||
* %i is the IP of the user
|
* %i is the IP of the user
|
||||||
* %r is the reason (configured below). Will be nothing if not configured.
|
* %r is the reply reason (configured below). Will be nothing if not configured.
|
||||||
* %N is the network name set in networkinfo:networkname
|
* %N is the network name set in networkinfo:networkname
|
||||||
*/
|
*/
|
||||||
reason = "You are listed in the efnet RBL, visit http://rbl.efnetrbl.org/?i=%i for info"
|
reason = "You are listed in the EFnet RBL, visit https://rbl.efnetrbl.org/?i=%i for info"
|
||||||
|
|
||||||
/* Replies to ban and their reason. If this is totally omitted all replies get banned. */
|
/* Replies to ban and their reason. If no replies are configured, all replies get banned. */
|
||||||
1 = "Open Proxy"
|
reply
|
||||||
/* Don't ban for result 2 or 3 */
|
{
|
||||||
#2 = "spamtrap666"
|
code = 1
|
||||||
#3 = "spamtrap50"
|
reason = "Open Proxy"
|
||||||
4 = "TOR"
|
}
|
||||||
5 = "Drones / Flooding"
|
|
||||||
|
#reply
|
||||||
|
{
|
||||||
|
code = 2
|
||||||
|
reason = "spamtrap666"
|
||||||
|
}
|
||||||
|
|
||||||
|
#reply
|
||||||
|
{
|
||||||
|
code = 3
|
||||||
|
reason = "spamtrap50"
|
||||||
|
}
|
||||||
|
|
||||||
|
reply
|
||||||
|
{
|
||||||
|
code = 4
|
||||||
|
reason = "TOR"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If set, users identified to services at the time the result comes back
|
||||||
|
* will not be banned.
|
||||||
|
*/
|
||||||
|
#allow_account = yes
|
||||||
|
}
|
||||||
|
|
||||||
|
reply
|
||||||
|
{
|
||||||
|
code = 5
|
||||||
|
reason = "Drones / Flooding"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
blacklist
|
#blacklist
|
||||||
{
|
{
|
||||||
name = "dnsbl.dronebl.org"
|
name = "dnsbl.dronebl.org"
|
||||||
time = 4h
|
time = 4h
|
||||||
reason = "You have a host listed in the DroneBL. For more information, visit http://dronebl.org/lookup_branded?ip=%i&network=%N"
|
reason = "You have a host listed in the DroneBL. For more information, visit https://dronebl.org/lookup_branded?ip=%i&network=%N"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Exempt localhost from DNSBL checks */
|
||||||
|
exempt { ip = "127.0.0.0/8" }
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -191,8 +223,9 @@ module { name = "help" }
|
|||||||
* extforward_headers set below, set this to its IP.
|
* extforward_headers set below, set this to its IP.
|
||||||
* This allows services to obtain the real IP of users by
|
* This allows services to obtain the real IP of users by
|
||||||
* reading the forwarded-for HTTP header.
|
* reading the forwarded-for HTTP header.
|
||||||
|
* Multiple IP addresses can be specified separated by a space character.
|
||||||
*/
|
*/
|
||||||
#extforward_ip = "192.168.0.255"
|
#extforward_ip = "192.168.0.255 192.168.1.255"
|
||||||
|
|
||||||
/* The header to look for. These probably work as is. */
|
/* The header to look for. These probably work as is. */
|
||||||
extforward_header = "X-Forwarded-For Forwarded-For"
|
extforward_header = "X-Forwarded-For Forwarded-For"
|
||||||
@@ -211,7 +244,6 @@ module { name = "help" }
|
|||||||
ldap
|
ldap
|
||||||
{
|
{
|
||||||
server = "ldap://127.0.0.1"
|
server = "ldap://127.0.0.1"
|
||||||
port = 389
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Admin credentials used for performing searches and adding users.
|
* Admin credentials used for performing searches and adding users.
|
||||||
@@ -267,16 +299,18 @@ module { name = "help" }
|
|||||||
password_attribute = "userPassword"
|
password_attribute = "userPassword"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If set, the reason to give the users who try to "/msg NickServ REGISTER".
|
* If set, the reason to give the users who try to register with NickServ,
|
||||||
|
* including nick registration from grouping.
|
||||||
|
*
|
||||||
* If not set, then registration is not blocked.
|
* If not set, then registration is not blocked.
|
||||||
*/
|
*/
|
||||||
#disable_register_reason = "To register on this network visit http://some.misconfigured.site/register"
|
#disable_register_reason = "To register on this network visit https://some.misconfigured.site/register"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If set, the reason to give the users who try to "/msg NickServ SET EMAIL".
|
* If set, the reason to give the users who try to "/msg NickServ SET EMAIL".
|
||||||
* If not set, then email changing is not blocked.
|
* If not set, then email changing is not blocked.
|
||||||
*/
|
*/
|
||||||
#disable_email_reason = "To change your email address visit http://some.misconfigured.site"
|
#disable_email_reason = "To change your email address visit https://some.misconfigured.site"
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -340,6 +374,7 @@ module { name = "help" }
|
|||||||
port = 3306
|
port = 3306
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* m_redis
|
* m_redis
|
||||||
*
|
*
|
||||||
@@ -404,7 +439,7 @@ module { name = "help" }
|
|||||||
rewrite_source = "CLEAR $ USERS"
|
rewrite_source = "CLEAR $ USERS"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Message to rewrite the source message to. A $ followed by a number, eg $0, gets
|
* Message to rewrite the source message to. A $ followed by a number, e.g. $0, gets
|
||||||
* replaced by the number-th word from the source_message, starting from 0.
|
* replaced by the number-th word from the source_message, starting from 0.
|
||||||
*/
|
*/
|
||||||
rewrite_target = "KICK $1 *"
|
rewrite_target = "KICK $1 *"
|
||||||
@@ -507,25 +542,7 @@ module { name = "help" }
|
|||||||
* authenticating users through this mechanism. Supported mechanisms are:
|
* authenticating users through this mechanism. Supported mechanisms are:
|
||||||
* PLAIN, EXTERNAL.
|
* PLAIN, EXTERNAL.
|
||||||
*/
|
*/
|
||||||
#module { name = "m_sasl" }
|
module { name = "m_sasl" }
|
||||||
|
|
||||||
/*
|
|
||||||
* m_sasl_dh-aes [EXTRA]
|
|
||||||
*
|
|
||||||
* Add the DH-AES mechanism to SASL.
|
|
||||||
* Requires m_sasl to be loaded.
|
|
||||||
* Requires openssl.
|
|
||||||
*/
|
|
||||||
#module { name = "m_sasl_dh-aes" }
|
|
||||||
|
|
||||||
/*
|
|
||||||
* m_sasl_dh-blowfish [EXTRA]
|
|
||||||
*
|
|
||||||
* Add the DH-BLOWFISH mechanism to SASL.
|
|
||||||
* Requires m_sasl to be loaded.
|
|
||||||
* Requires openssl.
|
|
||||||
*/
|
|
||||||
#module { name = "m_sasl_dh-blowfish" }
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* m_ssl_gnutls [EXTRA]
|
* m_ssl_gnutls [EXTRA]
|
||||||
@@ -533,14 +550,14 @@ module { name = "help" }
|
|||||||
* This module provides SSL services to Anope using GnuTLS, for example to
|
* This module provides SSL services to Anope using GnuTLS, for example to
|
||||||
* connect to the uplink server(s) via SSL.
|
* connect to the uplink server(s) via SSL.
|
||||||
*
|
*
|
||||||
* You may only load either m_ssl_gnutls or m_ssl_openssl, bot not both.
|
* You may only load either m_ssl_gnutls or m_ssl_openssl, but not both.
|
||||||
*/
|
*/
|
||||||
#module
|
#module
|
||||||
{
|
{
|
||||||
name = "m_ssl_gnutls"
|
name = "m_ssl_gnutls"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* An optional certificate and key for m_gnutls to give to the uplink.
|
* An optional certificate and key for m_ssl_gnutls to give to the uplink.
|
||||||
*
|
*
|
||||||
* You can generate your own certificate and key pair by using:
|
* You can generate your own certificate and key pair by using:
|
||||||
*
|
*
|
||||||
@@ -571,7 +588,7 @@ module { name = "help" }
|
|||||||
* This module provides SSL services to Anope using OpenSSL, for example to
|
* This module provides SSL services to Anope using OpenSSL, for example to
|
||||||
* connect to the uplink server(s) via SSL.
|
* connect to the uplink server(s) via SSL.
|
||||||
*
|
*
|
||||||
* You may only load either m_ssl_openssl or m_ssl_gnutls, bot not both.
|
* You may only load either m_ssl_openssl or m_ssl_gnutls, but not both.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#module
|
#module
|
||||||
@@ -579,7 +596,7 @@ module { name = "help" }
|
|||||||
name = "m_ssl_openssl"
|
name = "m_ssl_openssl"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* An optional certificate and key for m_openssl to give to the uplink.
|
* An optional certificate and key for m_ssl_openssl to give to the uplink.
|
||||||
*
|
*
|
||||||
* You can generate your own certificate and key pair by using:
|
* You can generate your own certificate and key pair by using:
|
||||||
*
|
*
|
||||||
@@ -588,6 +605,14 @@ module { name = "help" }
|
|||||||
*/
|
*/
|
||||||
cert = "data/anope.crt"
|
cert = "data/anope.crt"
|
||||||
key = "data/anope.key"
|
key = "data/anope.key"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* As of 2014 SSL 3.0 is considered insecure, but it might be enabled
|
||||||
|
* on some systems by default for compatibility reasons.
|
||||||
|
* You can use the following option to enable or disable it explicitly.
|
||||||
|
* Leaving this option not set defaults to the default system behavior.
|
||||||
|
*/
|
||||||
|
#sslv3 = no
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -632,13 +657,13 @@ module { name = "help" }
|
|||||||
* If set, the reason to give the users who try to "/msg NickServ REGISTER".
|
* If set, the reason to give the users who try to "/msg NickServ REGISTER".
|
||||||
* If not set, then registration is not blocked.
|
* If not set, then registration is not blocked.
|
||||||
*/
|
*/
|
||||||
#disable_reason = "To register on this network visit http://some.misconfigured.site/register"
|
#disable_reason = "To register on this network visit https://some.misconfigured.site/register"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If set, the reason to give the users who try to "/msg NickServ SET EMAIL".
|
* If set, the reason to give the users who try to "/msg NickServ SET EMAIL".
|
||||||
* If not set, then email changing is not blocked.
|
* If not set, then email changing is not blocked.
|
||||||
*/
|
*/
|
||||||
#disable_email_reason = "To change your email address visit http://some.misconfigured.site"
|
#disable_email_reason = "To change your email address visit https://some.misconfigured.site"
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ module
|
|||||||
confirmemailchanges = no
|
confirmemailchanges = no
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* A message sent to users on connect if they use an unregistered nick.
|
* A message sent to users on connect if they use an unregistered nick. %n will be replaced with the user's nickname.
|
||||||
*
|
*
|
||||||
* This directive is optional.
|
* This directive is optional.
|
||||||
*/
|
*/
|
||||||
@@ -97,15 +97,18 @@ module
|
|||||||
* - ns_secure: Enable nickname security, requiring the nick's password before any operations
|
* - ns_secure: Enable nickname security, requiring the nick's password before any operations
|
||||||
* can be done on it
|
* can be done on it
|
||||||
* - ns_private: Hide the nick from NickServ's LIST command
|
* - ns_private: Hide the nick from NickServ's LIST command
|
||||||
* - hide_email: Hide's the nick's e-mail address from NickServ's INFO command
|
* - hide_email: Hide the nick's e-mail address from NickServ's INFO command
|
||||||
* - hide_mask: Hide's the nick's last or current user@host from NickServ's INFO command
|
* - hide_mask: Hide the nick's last or current user@host from NickServ's INFO command
|
||||||
* - hide_quit: Hide's the nick's last quit message
|
* - hide_status: Hide the nick's services operator access status from NickServ's INFO command
|
||||||
|
* - hide_quit: Hide the nick's last quit message from NickServ's INFO command
|
||||||
* - memo_signon: Notify user if they have a new memo when they sign into the nick
|
* - memo_signon: Notify user if they have a new memo when they sign into the nick
|
||||||
* - memo_receive: Notify user if they have a new memo as soon as it's received
|
* - memo_receive: Notify user if they have a new memo as soon as it's received
|
||||||
|
* - memo_mail: Notify user if they have a new memo by mail
|
||||||
* - autoop: User will be automatically opped in channels they enter and have access to
|
* - autoop: User will be automatically opped in channels they enter and have access to
|
||||||
* - msg: Services messages will be sent as PRIVMSGs instead of NOTICEs, requires
|
* - msg: Services messages will be sent as PRIVMSGs instead of NOTICEs, requires
|
||||||
* options:useprivmsg to be enabled as well
|
* options:useprivmsg to be enabled as well
|
||||||
* - ns_keepmodes: Enables keepmodes, which retains user modes across sessions
|
* - ns_keep_modes: Enables keepmodes, which retains user modes across sessions
|
||||||
|
* - ns_no_expire: Enables no expire. Unconfirmed expire overrules this.
|
||||||
*
|
*
|
||||||
* This directive is optional, if left blank, the options will default to ns_secure, memo_signon, and
|
* This directive is optional, if left blank, the options will default to ns_secure, memo_signon, and
|
||||||
* memo_receive. If you really want no defaults, use "none" by itself as the option.
|
* memo_receive. If you really want no defaults, use "none" by itself as the option.
|
||||||
@@ -230,7 +233,7 @@ module
|
|||||||
command_group
|
command_group
|
||||||
{
|
{
|
||||||
name = "nickserv/admin"
|
name = "nickserv/admin"
|
||||||
description = "Services Operator commands"
|
description = _("Services Operator commands")
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Give it a help command. */
|
/* Give it a help command. */
|
||||||
@@ -380,7 +383,15 @@ command { service = "NickServ"; name = "UNGROUP"; command = "nickserv/ungroup";
|
|||||||
*
|
*
|
||||||
* Used for identifying to accounts.
|
* Used for identifying to accounts.
|
||||||
*/
|
*/
|
||||||
module { name = "ns_identify" }
|
module
|
||||||
|
{
|
||||||
|
name = "ns_identify"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If set, limits the number of concurrent users that can be logged in as a given account at once.
|
||||||
|
*/
|
||||||
|
maxlogins = 10
|
||||||
|
}
|
||||||
command { service = "NickServ"; name = "ID"; command = "nickserv/identify"; hide = true; }
|
command { service = "NickServ"; name = "ID"; command = "nickserv/identify"; hide = true; }
|
||||||
command { service = "NickServ"; name = "IDENTIFY"; command = "nickserv/identify"; }
|
command { service = "NickServ"; name = "IDENTIFY"; command = "nickserv/identify"; }
|
||||||
|
|
||||||
@@ -389,7 +400,7 @@ command { service = "NickServ"; name = "IDENTIFY"; command = "nickserv/identify"
|
|||||||
*
|
*
|
||||||
* Provides the commands:
|
* Provides the commands:
|
||||||
* nickserv/info. - Used for gathering information about an account.
|
* nickserv/info. - Used for gathering information about an account.
|
||||||
* nickserv/set/hide, nickserv/saset/hide - Used for configuring which options are publically shown in nickserv/info.
|
* nickserv/set/hide, nickserv/saset/hide - Used for configuring which options are publicly shown in nickserv/info.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
module { name = "ns_info" }
|
module { name = "ns_info" }
|
||||||
@@ -447,7 +458,7 @@ module
|
|||||||
* If set, Services will svsnick and svsjoin users who use the recover
|
* If set, Services will svsnick and svsjoin users who use the recover
|
||||||
* command on an identified user to the nick and channels of the recovered user.
|
* command on an identified user to the nick and channels of the recovered user.
|
||||||
*
|
*
|
||||||
* This directive is opional.
|
* This directive is optional.
|
||||||
*/
|
*/
|
||||||
restoreonrecover = yes
|
restoreonrecover = yes
|
||||||
}
|
}
|
||||||
@@ -615,6 +626,13 @@ module
|
|||||||
* This directive is optional. If not set, the default is never.
|
* This directive is optional. If not set, the default is never.
|
||||||
*/
|
*/
|
||||||
#suspendexpire = 90d
|
#suspendexpire = 90d
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Settings to show to non-opers in NickServ's INFO output.
|
||||||
|
* Comment to completely disable showing any information about
|
||||||
|
* suspended nicknames to non-opers.
|
||||||
|
*/
|
||||||
|
show = "suspended, by, reason, on, expires"
|
||||||
}
|
}
|
||||||
command { service = "NickServ"; name = "SUSPEND"; command = "nickserv/suspend"; permission = "nickserv/suspend"; group = "nickserv/admin"; }
|
command { service = "NickServ"; name = "SUSPEND"; command = "nickserv/suspend"; permission = "nickserv/suspend"; group = "nickserv/admin"; }
|
||||||
command { service = "NickServ"; name = "UNSUSPEND"; command = "nickserv/unsuspend"; permission = "nickserv/suspend"; group = "nickserv/admin"; }
|
command { service = "NickServ"; name = "UNSUSPEND"; command = "nickserv/unsuspend"; permission = "nickserv/suspend"; group = "nickserv/admin"; }
|
||||||
|
|||||||
@@ -159,7 +159,7 @@ command { service = "OperServ"; name = "CHANKILL"; command = "operserv/chankill"
|
|||||||
*
|
*
|
||||||
* Provides the command operserv/defcon.
|
* Provides the command operserv/defcon.
|
||||||
*
|
*
|
||||||
* Allows you to set services in defcon mode, which can be used to restrict services access
|
* Allows you to set services in DefCon mode, which can be used to restrict services access
|
||||||
* during bot attacks.
|
* during bot attacks.
|
||||||
*/
|
*/
|
||||||
#module
|
#module
|
||||||
@@ -260,7 +260,7 @@ command { service = "OperServ"; name = "CHANKILL"; command = "operserv/chankill"
|
|||||||
*/
|
*/
|
||||||
#akillreason = "This network is currently not accepting connections, please try again later."
|
#akillreason = "This network is currently not accepting connections, please try again later."
|
||||||
}
|
}
|
||||||
#command { service = "OperServ"; name = "DEFCON"; command = "operserv/defcon"; }
|
#command { service = "OperServ"; name = "DEFCON"; command = "operserv/defcon"; permission = "operserv/defcon"; }
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* os_dns
|
* os_dns
|
||||||
@@ -511,11 +511,11 @@ command { service = "OperServ"; name = "NOOP"; command = "operserv/noop"; permis
|
|||||||
*
|
*
|
||||||
* Provides the command operserv/oline.
|
* Provides the command operserv/oline.
|
||||||
*
|
*
|
||||||
* Used to set oper flags on users, and is specific to UnrealIRCd.
|
* Used to set oper flags on users, and is specific to UnrealIRCd 3.2.
|
||||||
* See /helpop ?svso on your IRCd for more information.
|
* See /helpop ?svso on your IRCd for more information.
|
||||||
*/
|
*/
|
||||||
module { name = "os_oline" }
|
#module { name = "os_oline" }
|
||||||
command { service = "OperServ"; name = "OLINE"; command = "operserv/oline"; permission = "operserv/oline"; }
|
#command { service = "OperServ"; name = "OLINE"; command = "operserv/oline"; permission = "operserv/oline"; }
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* os_oper
|
* os_oper
|
||||||
@@ -570,10 +570,8 @@ module
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Sets the default expiry time for session exceptions.
|
* Sets the default expiry time for session exceptions.
|
||||||
*
|
|
||||||
* This directive is required if os_session is loaded.
|
|
||||||
*/
|
*/
|
||||||
exceptionexpiry = 1d
|
#exceptionexpiry = 1d
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The message that will be NOTICE'd to a user just before they are removed from the network because
|
* The message that will be NOTICE'd to a user just before they are removed from the network because
|
||||||
@@ -594,7 +592,7 @@ module
|
|||||||
*
|
*
|
||||||
* This directive is optional, if not set, nothing will be sent.
|
* This directive is optional, if not set, nothing will be sent.
|
||||||
*/
|
*/
|
||||||
#sessionlimitdetailsloc = "Please visit http://your.website.url/ for more information about session limits."
|
#sessionlimitdetailsloc = "Please visit https://your.website.url/ for more information about session limits."
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If set and is not 0, this directive tells Services to add an AKILL if the number of subsequent kills
|
* If set and is not 0, this directive tells Services to add an AKILL if the number of subsequent kills
|
||||||
|
|||||||
@@ -80,17 +80,17 @@
|
|||||||
* [OPTIONAL] Defines
|
* [OPTIONAL] Defines
|
||||||
*
|
*
|
||||||
* You can define values to other values, which can be used to easily change
|
* You can define values to other values, which can be used to easily change
|
||||||
* many values in the configuration. at once.
|
* many values in the configuration at once.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The services.host define is used in multiple different locations throughout the
|
* The stats.host define is used in multiple different locations throughout the
|
||||||
* configuration for services clients hostnames.
|
* configuration for the stats client hostname.
|
||||||
*/
|
*/
|
||||||
define
|
define
|
||||||
{
|
{
|
||||||
name = "services.host"
|
name = "stats.host"
|
||||||
value = "services.localhost.net"
|
value = "stats.localhost.net"
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -110,7 +110,7 @@ define
|
|||||||
#include
|
#include
|
||||||
{
|
{
|
||||||
type = "executable"
|
type = "executable"
|
||||||
name = "/usr/bin/wget -q -O - http://some.misconfigured.network.com/services.conf"
|
name = "/usr/bin/wget -q -O - https://some.misconfigured.network.com/stats.conf"
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -126,30 +126,34 @@ define
|
|||||||
* An example configuration for InspIRCd that is compatible with the below uplink
|
* An example configuration for InspIRCd that is compatible with the below uplink
|
||||||
* and serverinfo configuration would look like:
|
* and serverinfo configuration would look like:
|
||||||
*
|
*
|
||||||
* <link name="services.localhost.net"
|
* # This goes in inspircd.conf, *NOT* your Anope config!
|
||||||
|
* <link name="stats.localhost.net"
|
||||||
* ipaddr="127.0.0.1"
|
* ipaddr="127.0.0.1"
|
||||||
* port="7000"
|
* port="7000"
|
||||||
* sendpass="mypassword"
|
* sendpass="mypassword"
|
||||||
* recvpass="mypassword">
|
* recvpass="mypassword">
|
||||||
* <uline server="services.localhost.net" silent="yes">
|
* <uline server="stats.localhost.net" silent="yes">
|
||||||
* <bind address="127.0.0.1" port="7000" type="servers">
|
* <bind address="127.0.0.1" port="7000" type="servers">
|
||||||
*
|
*
|
||||||
* An example configuration for UnrealIRCd that is compatible with the below uplink
|
* An example configuration for UnrealIRCd that is compatible with the below uplink
|
||||||
* and serverinfo configuration would look like:
|
* and serverinfo configuration would look like:
|
||||||
*
|
*
|
||||||
* link services.localhost.net
|
* // This goes in unrealircd.conf, *NOT* your Anope config!
|
||||||
* {
|
* listen {
|
||||||
* username *;
|
* ip 127.0.0.1;
|
||||||
* hostname *;
|
* port 7000;
|
||||||
* bind-ip "127.0.0.1";
|
* options {
|
||||||
* port 7000;
|
* serversonly;
|
||||||
* hub *;
|
* };
|
||||||
* password-connect "mypassword";
|
|
||||||
* password-receive "mypassword";
|
|
||||||
* class servers;
|
|
||||||
* };
|
* };
|
||||||
* ulines { services.localhost.net; };
|
* link stats.localhost.net {
|
||||||
* listen 127.0.0.1:7000;
|
* incoming {
|
||||||
|
* mask *@127.0.0.1;
|
||||||
|
* };
|
||||||
|
* password "mypassword";
|
||||||
|
* class servers;
|
||||||
|
* };
|
||||||
|
* ulines { stats.localhost.net; };
|
||||||
*/
|
*/
|
||||||
uplink
|
uplink
|
||||||
{
|
{
|
||||||
@@ -205,7 +209,7 @@ serverinfo
|
|||||||
name = "stats.localhost.net"
|
name = "stats.localhost.net"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The text which should appear as the server's information in /whois and similar
|
* The text which should appear as the server's information in /WHOIS and similar
|
||||||
* queries.
|
* queries.
|
||||||
*/
|
*/
|
||||||
description = "Stats for IRC Networks"
|
description = "Stats for IRC Networks"
|
||||||
@@ -231,13 +235,13 @@ serverinfo
|
|||||||
* The filename containing the Services process ID. The path is relative to the
|
* The filename containing the Services process ID. The path is relative to the
|
||||||
* services root directory.
|
* services root directory.
|
||||||
*/
|
*/
|
||||||
pid = "data/services.pid"
|
pid = "data/stats.pid"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The filename containing the Message of the Day. The path is relative to the
|
* The filename containing the Message of the Day. The path is relative to the
|
||||||
* services root directory.
|
* services root directory.
|
||||||
*/
|
*/
|
||||||
motd = "conf/services.motd"
|
motd = "conf/stats.motd"
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -252,10 +256,12 @@ serverinfo
|
|||||||
* - hybrid
|
* - hybrid
|
||||||
* - inspircd12
|
* - inspircd12
|
||||||
* - inspircd20
|
* - inspircd20
|
||||||
|
* - inspircd3
|
||||||
* - ngircd
|
* - ngircd
|
||||||
* - plexus
|
* - plexus
|
||||||
* - ratbox
|
* - ratbox
|
||||||
* - unreal
|
* - unreal (for 3.2.x)
|
||||||
|
* - unreal4
|
||||||
*/
|
*/
|
||||||
module
|
module
|
||||||
{
|
{
|
||||||
@@ -378,7 +384,7 @@ options
|
|||||||
#hidestatso = yes
|
#hidestatso = yes
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* A space-separated list of ulined servers on your network, it is assumed that
|
* A space-separated list of U-lined servers on your network, it is assumed that
|
||||||
* the servers in this list are allowed to set channel modes and Services will
|
* the servers in this list are allowed to set channel modes and Services will
|
||||||
* not attempt to reverse their mode changes.
|
* not attempt to reverse their mode changes.
|
||||||
*
|
*
|
||||||
@@ -411,17 +417,17 @@ log
|
|||||||
*/
|
*/
|
||||||
target = "stats.log"
|
target = "stats.log"
|
||||||
|
|
||||||
/* Log to both services.log and the channel #services
|
/* Log to both stats.log and the channel #stats
|
||||||
*
|
*
|
||||||
* Note that some older IRCds, such as Ratbox, require services to be in the
|
* Note that some older IRCds, such as Ratbox, require services to be in the
|
||||||
* log channel to be able to message it. To do this, configure service:channels to
|
* log channel to be able to message it. To do this, configure service:channels to
|
||||||
* join your logging channel.
|
* join your logging channel.
|
||||||
*/
|
*/
|
||||||
#target = "stats.log #services"
|
#target = "stats.log #stats"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The source(s) to only accept log messages from. Leave commented to allow all sources.
|
* The source(s) to only accept log messages from. Leave commented to allow all sources.
|
||||||
* This can be a users name, a channel name, one of our clients (eg, OperServ), or a server name.
|
* This can be a users name, a channel name, one of our clients (e.g. OperServ), or a server name.
|
||||||
*/
|
*/
|
||||||
#source = ""
|
#source = ""
|
||||||
|
|
||||||
@@ -432,8 +438,8 @@ log
|
|||||||
bot = "Global"
|
bot = "Global"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The number of days to keep logfiles, only useful if you are logging to a file.
|
* The number of days to keep log files, only useful if you are logging to a file.
|
||||||
* Set to 0 to never delete old logfiles.
|
* Set to 0 to never delete old log files.
|
||||||
*
|
*
|
||||||
* Note that Anope must run 24 hours a day for this feature to work correctly.
|
* Note that Anope must run 24 hours a day for this feature to work correctly.
|
||||||
*/
|
*/
|
||||||
@@ -461,7 +467,7 @@ log
|
|||||||
* create, destroy, join, part, kick, leave, mode
|
* create, destroy, join, part, kick, leave, mode
|
||||||
*
|
*
|
||||||
* Valid user options are:
|
* Valid user options are:
|
||||||
* connect, disconnect, quit, nick, ident, host, mode, maxusers, oper
|
* connect, disconnect, quit, nick, ident, host, mode, maxusers, oper, away
|
||||||
*
|
*
|
||||||
* Rawio and debug are simple yes/no answers, there are no types for them.
|
* Rawio and debug are simple yes/no answers, there are no types for them.
|
||||||
*
|
*
|
||||||
@@ -510,4 +516,3 @@ include
|
|||||||
type = "file"
|
type = "file"
|
||||||
name = "irc2sql.example.conf"
|
name = "irc2sql.example.conf"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
-4901
File diff suppressed because it is too large
Load Diff
@@ -1 +0,0 @@
|
|||||||
git log --pretty=format:"Revision %h - %cD - %s" > version.log
|
|
||||||
@@ -1 +1 @@
|
|||||||
For all bug reports / updates please see http://bugs.anope.org
|
For all bug reports / updates please see https://bugs.anope.org/
|
||||||
|
|||||||
+7
-7
@@ -21,7 +21,7 @@ The syntax is usually *_cast<type>(var).
|
|||||||
static_cast
|
static_cast
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
From my expierence, this cast is closest to C-style casting for non-pointer
|
From my experience, this cast is closest to C-style casting for non-pointer
|
||||||
types as well as between some (but not all) pointer types. This type of cast,
|
types as well as between some (but not all) pointer types. This type of cast,
|
||||||
like C-style casting, is performed at compile-time. static_cast can also do
|
like C-style casting, is performed at compile-time. static_cast can also do
|
||||||
a downcast of a derived class to a base class, but only if the base class is
|
a downcast of a derived class to a base class, but only if the base class is
|
||||||
@@ -80,7 +80,7 @@ Bad_cast exception.
|
|||||||
|
|
||||||
Note that in Anope we prefer if Anope::debug_cast is used.
|
Note that in Anope we prefer if Anope::debug_cast is used.
|
||||||
This uses dynamic_cast (and checks for a NULL pointer return) on debug builds
|
This uses dynamic_cast (and checks for a NULL pointer return) on debug builds
|
||||||
and static_cast on release builds, to speed up the program beacuse of dynamic_cast's
|
and static_cast on release builds, to speed up the program because of dynamic_cast's
|
||||||
reliance on RTTI.
|
reliance on RTTI.
|
||||||
|
|
||||||
reinterpret_cast
|
reinterpret_cast
|
||||||
@@ -100,12 +100,12 @@ Links
|
|||||||
The following links are web sites I've used to get this information, and might
|
The following links are web sites I've used to get this information, and might
|
||||||
describe some of the above a bit better than I have. :P
|
describe some of the above a bit better than I have. :P
|
||||||
|
|
||||||
http://www.acm.org/crossroads/xrds3-1/ovp3-1.html
|
https://www.acm.org/crossroads/xrds3-1/ovp3-1.html
|
||||||
http://www.cplusplus.com/doc/tutorial/typecasting.html
|
http://www.cplusplus.com/doc/tutorial/typecasting.html
|
||||||
http://www.codeguru.com/forum/showthread.php?t=312456
|
http://www.codeguru.com/forum/showthread.php?t=312456
|
||||||
http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/BitOp/cast.html
|
https://web.archive.org/web/20170810222238/http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/BitOp/cast.html
|
||||||
http://msdn.microsoft.com/en-us/library/5f6c9f8h(VS.80).aspx
|
https://www.microsoft.com/en-us/download/details.aspx?id=55984
|
||||||
http://en.wikibooks.org/wiki/C%2B%2B_Programming/Type_Casting
|
https://en.wikibooks.org/wiki/C%2B%2B_Programming/Type_Casting
|
||||||
http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=134
|
https://web.archive.org/web/20160510114447/http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=134
|
||||||
|
|
||||||
-- CyberBotX, Nov 23, 2008
|
-- CyberBotX, Nov 23, 2008
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
Orginally pulled from: http://www.inspircd.org/wiki/Coding_Guidelines
|
Originally pulled from: https://wiki.inspircd.org/Coding_Guidelines
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
+145
-12
@@ -1,9 +1,142 @@
|
|||||||
|
Anope Version 2.0.7
|
||||||
|
-------------------
|
||||||
|
Fix not sending login data on successful NickServ GROUP
|
||||||
|
Fix m_httpd to not consider headers to be case sensitive
|
||||||
|
Add InspIRCd 3 protocol support
|
||||||
|
Add 'n' email token for use in the email change template
|
||||||
|
Add logging for NickServ UNGROUP
|
||||||
|
Fix setting swhois on UnrealIRCd
|
||||||
|
Add nickserv/recover permission to allow opers to recover other users
|
||||||
|
Fix superadmin not being removed when deopering
|
||||||
|
Fix setting nickserv access list in webcpanel
|
||||||
|
Add support for post-handshake SASL in Unreal 4.2.2+
|
||||||
|
Add logging for channel memo deletionso
|
||||||
|
|
||||||
|
Anope Version 2.0.6
|
||||||
|
-------------------
|
||||||
|
Log client IP for web clients running commands via webcpanel
|
||||||
|
Fix log file path for the config file could not be opened log message
|
||||||
|
Allow nickserv/group to be used via XMLRPC
|
||||||
|
Fix logsearch without wildcards
|
||||||
|
Support cidr exempts in m_dnsbl
|
||||||
|
Add support for IPv6 dnsbls
|
||||||
|
Add +u and +L channel modes for ircd-hybrid
|
||||||
|
Set +x after hostserv/off on InspIRCd and UnrealIRCd
|
||||||
|
Fix chanserv/mode not being able to set extbans
|
||||||
|
Send CHGIDENT/CHGHOST on SVSLOGIN on InspIRCd
|
||||||
|
Fix escaping replies from commands in webcpanel
|
||||||
|
Enable require_oper for all opers added via operserv/oper
|
||||||
|
Advertise SASL mechanisms to UnrealIRCd servers
|
||||||
|
|
||||||
|
Anope Version 2.0.5
|
||||||
|
-------------------
|
||||||
|
Fix negative levels to not match users with negative access
|
||||||
|
Fix memo sender to always be the account name of the sender
|
||||||
|
Allow unregistered users to use the ChanServ seen command
|
||||||
|
Fix secureops to not be enforced on operators with the chanserv/administration privilege
|
||||||
|
Fix command name in HELP syntax messages to always be upper case
|
||||||
|
Show unconfirmed nickname messages on registration in webcpanel
|
||||||
|
Fix NickServ SET EMAIL to be executable via XMLRPC
|
||||||
|
Fix OperServ USERLIST/CHANLIST to accept regexes
|
||||||
|
Allow OperServ USERLIST to also match realname syntax (n!u@h#r)
|
||||||
|
Fix db_old importing languages to use the UTF-8 version
|
||||||
|
Fix m_dns to return REFUSED if no answers could be found
|
||||||
|
Fix ns_maxemail to be case insensitive
|
||||||
|
Add MemoServ READ ALL command
|
||||||
|
Add support for NickServ GROUP to be executed via XMLRPC
|
||||||
|
Add support for logging hostname/ip of SASL authentication attempts, if supported by IRCd
|
||||||
|
|
||||||
|
Anope Version 2.0.4
|
||||||
|
-------------------
|
||||||
|
Add notice rpc method to XMLRPC
|
||||||
|
Fix access check in cs_updown to not allow actions on users with equal access
|
||||||
|
Fix randomnews to work when there are more than 'newscount' random news
|
||||||
|
Fix crash from handling nick introduction collisions on unreal4
|
||||||
|
Add support for GCC6
|
||||||
|
Fix handling /join 0 on ratbox
|
||||||
|
Fix saset display to update the account of the proper user
|
||||||
|
Fix nickserv/confirm to send account and +r when appropriate
|
||||||
|
Fix chankill to not add duplicate akills
|
||||||
|
Allow nickserv/maxemail to disregard gmail style aliases when comparing emails
|
||||||
|
Fix chanserv/mode when setting listmodes with CIDR ranges
|
||||||
|
Fix reported expiry time when the time is divisible by 1 year
|
||||||
|
Clearify botserv repeat kicker help and allow setting repeat times to 1
|
||||||
|
Send vident/vhost with SASL login
|
||||||
|
Add support for SASL reauth
|
||||||
|
Fix log and database backup directories to be properly created by the installer
|
||||||
|
|
||||||
|
Anope Version 2.0.3
|
||||||
|
-------------------
|
||||||
|
Add support for UnrealIRCd 4
|
||||||
|
Fix cs_access to respect chanserv/access/list privilege
|
||||||
|
Fix cs_access to match level -1 as every user, not any level <0
|
||||||
|
Fix problems related to object destruction order when using db_sql_live
|
||||||
|
Show memo notify settings in ms_info
|
||||||
|
Fix some actions bumping channels last used time that shouldn't have
|
||||||
|
Add maxlogins configuration directive to limit the number of concurrent logins to one account
|
||||||
|
Fix race with auto svsnick on ghost sometimes causing nick collisions instead
|
||||||
|
Fix saset langauge reply
|
||||||
|
Show akill/sxlines ids in VIEW
|
||||||
|
Fix crash when an oper is configured in both the configuration and via os_oper
|
||||||
|
Fix m_ldap reconnect logic not properly setting protocol and network timeout settings
|
||||||
|
Fix crash from unloading regex modules when regex xlines exist
|
||||||
|
Fix irc2sql to store away messages
|
||||||
|
Add notice method to m_xmlrpc_main
|
||||||
|
Fix numerics on InspIRCd from being sent to user UID
|
||||||
|
Fix usermode +I on UnrealIRCd to be considered oper only
|
||||||
|
Fix crash in webcpanel when deleting your own access on a channel
|
||||||
|
Fix webcpanel allowing suspended users to login
|
||||||
|
Fix hs_off on InspIRCd to not desync active user host
|
||||||
|
Fix bs_bot to not allow colliding bots into users
|
||||||
|
Don't allow hostserv modules to load if there is no hostserv
|
||||||
|
Fix ns_register allowing bot nicks to be registered through webcpanel
|
||||||
|
Don't update chanserv keepmodes during inhabit
|
||||||
|
Fix build on cmake 2.4
|
||||||
|
Allow searching emails by wildcard in ns_getemail
|
||||||
|
|
||||||
|
Anope Version 2.0.2
|
||||||
|
-------------------
|
||||||
|
Fix keepmodes preventing the first user of a channel from being deopped
|
||||||
|
Fix SQlines that don't begin with # from matching channels
|
||||||
|
Made cs_clone behave like the help describes, copying many settings and lists by default
|
||||||
|
Allow cs_clone to clone levels, too
|
||||||
|
Update Hybrid protocol module for 8.2
|
||||||
|
Fix not unescaping all characters sent over XMLRPC
|
||||||
|
Fix crash when os_mode is used to destroy channels, like when unsetting permanent channel mode from an empty channel
|
||||||
|
Allow users with topic change privilege to change the topic instead of requiring them to use ChanServ's topic command
|
||||||
|
Fix negatively locking param modes in default mlock
|
||||||
|
Change entrymsg to check for the SET privilege, not real founder
|
||||||
|
Allow configuring characters allowed in nicknames
|
||||||
|
Fix crash when non users register channels externally (like XMLRPC)
|
||||||
|
Remove operserv/exception MOVE, it did not function correctly. Instead reorder the list by deleting/adding entries.
|
||||||
|
Allow flood ttb to be 0.
|
||||||
|
Enforce mlock when disabling defcon modes
|
||||||
|
Fix cs_mode not being able to apply mlock on register
|
||||||
|
Add log message when users send memos
|
||||||
|
Fix old collide timers from staying around after successful identify. Fixes being able to identify and logout and still being hit by the old timers.
|
||||||
|
Fix undefined behavior in cs_mode which usually crashes when clearing large list modes
|
||||||
|
Show all opertypes in operserv/info, even if no opers use them
|
||||||
|
|
||||||
|
Anope Version 2.0.1
|
||||||
|
-------------------
|
||||||
|
Fix access entries on accounts sometimes not updating when a user's display name changes
|
||||||
|
Fix ns_group to properly validate the account of the user against the target
|
||||||
|
Fix os_stats not saving max user count and time when using SQL
|
||||||
|
Fix nickalias's 'nc' field sometimes not being updated when using SQL
|
||||||
|
Fix several crashes on Windows related to being unable to load modules
|
||||||
|
Fix bs_bot change not properly reintroducing bots after changing their ident, host, or realname
|
||||||
|
|
||||||
|
Add English language file to allow users to easily modify language strings
|
||||||
|
Add configuring which mode cs_ban sets, and added a MUTE command to BotServ's fantasy
|
||||||
|
Allow SVSPART to take an optional reason
|
||||||
|
Allow cs_list to search channel topics and descriptions
|
||||||
|
|
||||||
Anope Version 2.0.0
|
Anope Version 2.0.0
|
||||||
-------------------
|
-------------------
|
||||||
Added irc2sql stats module
|
Added irc2sql stats module
|
||||||
|
|
||||||
Anope Version 1.9.9
|
Anope Version 1.9.9
|
||||||
--------------------
|
-------------------
|
||||||
A Added a better webpanel template, removed the old one
|
A Added a better webpanel template, removed the old one
|
||||||
A Added SQL logging support
|
A Added SQL logging support
|
||||||
A Added Redis database support
|
A Added Redis database support
|
||||||
@@ -15,7 +148,7 @@ F Fixed setting BotServ's default settings in the config
|
|||||||
F Fixed some names of config items, including NickServ's kill protect
|
F Fixed some names of config items, including NickServ's kill protect
|
||||||
|
|
||||||
Anope Version 1.9.8
|
Anope Version 1.9.8
|
||||||
--------------------
|
-------------------
|
||||||
A Ability to configure fantasy commands in the config
|
A Ability to configure fantasy commands in the config
|
||||||
A Add SVSJOIN and SVSPART commands
|
A Add SVSJOIN and SVSPART commands
|
||||||
F Fix "leave" channel log level from not logging
|
F Fix "leave" channel log level from not logging
|
||||||
@@ -27,7 +160,7 @@ F Fix crash in os_forbid with expiring entries
|
|||||||
F Fix several issues with db_sql_live
|
F Fix several issues with db_sql_live
|
||||||
|
|
||||||
Anope Version 1.9.7
|
Anope Version 1.9.7
|
||||||
--------------------
|
-------------------
|
||||||
A Added ability for using regex as patterns for various commands
|
A Added ability for using regex as patterns for various commands
|
||||||
A Extended ability of operserv/akill to also match against nick and realname
|
A Extended ability of operserv/akill to also match against nick and realname
|
||||||
A Added chanserv:require configuration option
|
A Added chanserv:require configuration option
|
||||||
@@ -37,7 +170,7 @@ A Added a web panel
|
|||||||
A db_sql_live now allows all tables to be "live", not just a select few
|
A db_sql_live now allows all tables to be "live", not just a select few
|
||||||
|
|
||||||
Anope Version 1.9.6
|
Anope Version 1.9.6
|
||||||
--------------------
|
-------------------
|
||||||
A Added ability to configure emails sent by services
|
A Added ability to configure emails sent by services
|
||||||
A Added chanserv/up and chanserv/down
|
A Added chanserv/up and chanserv/down
|
||||||
A Added m_proxyscan
|
A Added m_proxyscan
|
||||||
@@ -56,7 +189,7 @@ F Fixed crash in /os oper info
|
|||||||
F Fixed eventfd Config check to work properly on OpenVZ
|
F Fixed eventfd Config check to work properly on OpenVZ
|
||||||
|
|
||||||
Anope Version 1.9.5
|
Anope Version 1.9.5
|
||||||
--------------------
|
-------------------
|
||||||
A Extended LDAP support
|
A Extended LDAP support
|
||||||
A Added os_oper, os_kill, os_forbid, m_statusupdate, cs_sync, and bs_autoassign
|
A Added os_oper, os_kill, os_forbid, m_statusupdate, cs_sync, and bs_autoassign
|
||||||
A Added a new configuration file format
|
A Added a new configuration file format
|
||||||
@@ -74,7 +207,7 @@ F Fixed setting -P on channels with only a botserv bot in it
|
|||||||
F Fixed modemanager complaining about prefixless modes on InspIRCd
|
F Fixed modemanager complaining about prefixless modes on InspIRCd
|
||||||
|
|
||||||
Anope Version 1.9.4
|
Anope Version 1.9.4
|
||||||
--------------------
|
-------------------
|
||||||
A Automatically set channel founder to the user with the highest access if there is no successor
|
A Automatically set channel founder to the user with the highest access if there is no successor
|
||||||
A /chanserv clone command to copy settings from one channel to another.
|
A /chanserv clone command to copy settings from one channel to another.
|
||||||
A /chanserv mode command
|
A /chanserv mode command
|
||||||
@@ -95,7 +228,7 @@ F Some failed logic in /operserv exception that prevents proper exceptions from
|
|||||||
F Fixed the anope_os_sxlines MySQL table and code to work after restarting
|
F Fixed the anope_os_sxlines MySQL table and code to work after restarting
|
||||||
|
|
||||||
Anope Version 1.9.3
|
Anope Version 1.9.3
|
||||||
--------------------
|
-------------------
|
||||||
A Added italics BotServ kicks support
|
A Added italics BotServ kicks support
|
||||||
A Tell users when their nicks expire in /ns glist and /ns info
|
A Tell users when their nicks expire in /ns glist and /ns info
|
||||||
A Added SSL support
|
A Added SSL support
|
||||||
@@ -122,7 +255,7 @@ F Anoperc start/stop to send the globaloncycle global, and fixed anoperc rehash
|
|||||||
F Fixed a potential crash if HostServ or BotServ was disbled
|
F Fixed a potential crash if HostServ or BotServ was disbled
|
||||||
|
|
||||||
Anope Version 1.9.2
|
Anope Version 1.9.2
|
||||||
--------------------
|
-------------------
|
||||||
A K alias to chanserv kick command
|
A K alias to chanserv kick command
|
||||||
A KB alias to chanserv ban command
|
A KB alias to chanserv ban command
|
||||||
A The ability to register empty nonregistered channels
|
A The ability to register empty nonregistered channels
|
||||||
@@ -136,8 +269,8 @@ A Added ns_resetpass module to the core
|
|||||||
A CS ACCESS VIEW which shows who added the access and last time used
|
A CS ACCESS VIEW which shows who added the access and last time used
|
||||||
A Last used time to CS AKICK VIEW
|
A Last used time to CS AKICK VIEW
|
||||||
A Added a sha_256 encryption module
|
A Added a sha_256 encryption module
|
||||||
A Added the ability to load multiple encryption modules, and the ability to seamlessly convert your database between diferent encryptions
|
A Added the ability to load multiple encryption modules, and the ability to seamlessly convert your database between different encryptions
|
||||||
A Added configuration options to allow Anope to reconnect if it disconnects from the uplink instead of dieing
|
A Added configuration options to allow Anope to reconnect if it disconnects from the uplink instead of dying
|
||||||
A Added support for linking with IPv6
|
A Added support for linking with IPv6
|
||||||
F Unban command to accept an optional nick arg
|
F Unban command to accept an optional nick arg
|
||||||
F Some typos in services.conf
|
F Some typos in services.conf
|
||||||
@@ -153,7 +286,7 @@ F ms_rsend to really work
|
|||||||
F SQUITing juped servers on InspIRCd1.2+
|
F SQUITing juped servers on InspIRCd1.2+
|
||||||
|
|
||||||
Anope Version 1.9.1
|
Anope Version 1.9.1
|
||||||
--------------------
|
-------------------
|
||||||
F Don't enforce akick/forbidden/etc.-restrictions on clients on ulined servers.
|
F Don't enforce akick/forbidden/etc.-restrictions on clients on ulined servers.
|
||||||
F Remove modules_unload_all fini + hack that goes with it.
|
F Remove modules_unload_all fini + hack that goes with it.
|
||||||
F Signal handling cleanup.
|
F Signal handling cleanup.
|
||||||
@@ -194,7 +327,7 @@ Provided by Liber <Liber@jasonirc.net> - 2009
|
|||||||
F Support operoverride and such things (stop reversing changes from nonopped people where unnecessary)
|
F Support operoverride and such things (stop reversing changes from nonopped people where unnecessary)
|
||||||
|
|
||||||
Anope Version 1.9.0
|
Anope Version 1.9.0
|
||||||
--------------------
|
-------------------
|
||||||
F Modified compile to use g++
|
F Modified compile to use g++
|
||||||
F Improve protocol modules support (classes, virtual methods, etc)
|
F Improve protocol modules support (classes, virtual methods, etc)
|
||||||
F Move core services to use BotInfo
|
F Move core services to use BotInfo
|
||||||
|
|||||||
+47
-2
@@ -1,3 +1,48 @@
|
|||||||
|
Anope Version 2.0.7
|
||||||
|
-------------------
|
||||||
|
Add nickserv/recover permission
|
||||||
|
Add inspircd3 protocol module
|
||||||
|
Add default permission for chanstats saset chanstats command
|
||||||
|
|
||||||
|
Anope Version 2.0.6
|
||||||
|
-------------------
|
||||||
|
Mark enc_md5 and enc_sha1 as deprecated. Their use has been discouraged for years, and they will be removed in a future release.
|
||||||
|
Exempt all of 127.0.0.0/8 from m_dnsbl by default
|
||||||
|
Load m_sasl by default
|
||||||
|
Fix documentation for nickserv default option ns_keep_modes
|
||||||
|
|
||||||
|
Anope Version 2.0.5
|
||||||
|
-------------------
|
||||||
|
No significant changes.
|
||||||
|
|
||||||
|
Anope Version 2.0.4
|
||||||
|
-------------------
|
||||||
|
Removed m_sasl_dh-aes and m_sasl_dh-blowfish
|
||||||
|
|
||||||
|
Anope Version 2.0.3
|
||||||
|
-------------------
|
||||||
|
Add operserv/chankill to default globops log
|
||||||
|
Add ns_identify:maxlogins to limit the max number of concurrent logins per account
|
||||||
|
Document ns_no_expire nickserv default
|
||||||
|
Remove default session exception expiry time
|
||||||
|
|
||||||
|
Anope Version 2.0.2
|
||||||
|
-------------------
|
||||||
|
Add an operserv/oper/modify privilege, required to use oper add and oper del
|
||||||
|
Add a chanserv/access/list privilege, which allow readonly access to ChanServ access and akick lists
|
||||||
|
Changed m_dnsbl's result configuration to be more extensible
|
||||||
|
Add 'max' setting to cs_mode
|
||||||
|
Add 'nickchars' setting to networkinfo
|
||||||
|
Add 'botserv/fantasy', 'chanserv/access/list', and 'operserv/oper/modify' oper privileges
|
||||||
|
Fix 'emailchange_message' to include the proper email address
|
||||||
|
Set a default permission on operserv/defcon
|
||||||
|
|
||||||
|
Anope Version 2.0.1
|
||||||
|
-------------------
|
||||||
|
Add MUTE command to BotServ fantasy configuration
|
||||||
|
Document memo_mail option in nickserv.conf
|
||||||
|
Add 'show' setting to ns_info and cs_info to control which fields are shown to non opers
|
||||||
|
|
||||||
Anope Version 2.0.0
|
Anope Version 2.0.0
|
||||||
-------------------
|
-------------------
|
||||||
options:passlen, enforceruser, enforcerhost, releasetimeout, and guestnickprefix moved to nickserv's module configuration
|
options:passlen, enforceruser, enforcerhost, releasetimeout, and guestnickprefix moved to nickserv's module configuration
|
||||||
@@ -68,7 +113,7 @@ opertype:commands removed operserv/umode
|
|||||||
operserv:modules removed os_umode
|
operserv:modules removed os_umode
|
||||||
|
|
||||||
Anope Version 1.9.3
|
Anope Version 1.9.3
|
||||||
------------------
|
-------------------
|
||||||
** ADDED CONFIGURATION DIRECTIVES **
|
** ADDED CONFIGURATION DIRECTIVES **
|
||||||
nickserv/auspex privilege added
|
nickserv/auspex privilege added
|
||||||
SSL module added for SSL support
|
SSL module added for SSL support
|
||||||
@@ -102,7 +147,7 @@ networkinfo:logchannel, logbot, logusers, logmaxusers, logchannel, and options:k
|
|||||||
dumpcore because it really didn't do anything
|
dumpcore because it really didn't do anything
|
||||||
|
|
||||||
Anope Version 1.9.2
|
Anope Version 1.9.2
|
||||||
--------------------
|
-------------------
|
||||||
** ADDED CONFIGURATION DIRECTIVES **
|
** ADDED CONFIGURATION DIRECTIVES **
|
||||||
options:enablelogchannel added to auto turn on the logchannel on startup
|
options:enablelogchannel added to auto turn on the logchannel on startup
|
||||||
options:mlock added to configure the default mlock modes on new channels
|
options:mlock added to configure the default mlock modes on new channels
|
||||||
|
|||||||
@@ -91,4 +91,3 @@ Anope DefCon
|
|||||||
|
|
||||||
You might get DefCon support by posting on our online forum, or maybe on
|
You might get DefCon support by posting on our online forum, or maybe on
|
||||||
our #anope channel at /server irc.anope.org.
|
our #anope channel at /server irc.anope.org.
|
||||||
|
|
||||||
|
|||||||
@@ -32,4 +32,3 @@ Anope Internal Events
|
|||||||
|
|
||||||
The "anope_override" identifier is for compatibility with C++11.
|
The "anope_override" identifier is for compatibility with C++11.
|
||||||
Its usage is highly recommended.
|
Its usage is highly recommended.
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
Frequently Asked Questions (FAQ) concerning Anope
|
Frequently Asked Questions (FAQ) concerning Anope
|
||||||
------------------------------------------------
|
-------------------------------------------------
|
||||||
|
|
||||||
The information in the 1.9 FAQ is subject to change at any
|
The information in the 2.0 FAQ is subject to change at any
|
||||||
moment due to new developments. Please visit our website
|
moment due to new developments. Please visit our website
|
||||||
for the most up to date information.
|
for the most up to date information.
|
||||||
|
|
||||||
An updated version of the FAQ can be found here:
|
An updated version of the FAQ can be found here:
|
||||||
|
|
||||||
http://wiki.anope.org/index.php/FAQ
|
https://wiki.anope.org/index.php/2.0/FAQ
|
||||||
|
|||||||
+8
-23
@@ -19,27 +19,20 @@ Note: You should also read the README and FAQ files!
|
|||||||
The very first thing you need to do is to get the Anope package (if not
|
The very first thing you need to do is to get the Anope package (if not
|
||||||
already done). You can find it at:
|
already done). You can find it at:
|
||||||
|
|
||||||
http://www.anope.org/
|
https://www.anope.org/
|
||||||
|
|
||||||
Anope can be built one of two ways. The recommended way is to use CMake.
|
Anope requires cmake to build. You can check if CMake is already
|
||||||
You can check if CMake is already installed on your system using the
|
installed on your system using the command:
|
||||||
command:
|
|
||||||
|
|
||||||
cmake --version
|
cmake --version
|
||||||
|
|
||||||
If it's installed, you will get a line that says something similar to
|
If it's installed, you will get a line that says something similar to
|
||||||
"cmake version 2.6-patch 1". If the version is less than 2.4 or you get
|
"cmake version 2.8.12.2". If the version is less than 2.4 or you get
|
||||||
an error saying the command was not found, you will not be able to use
|
an error saying the command was not found, you will not be able to use
|
||||||
CMake unless you install it yourself into your home directory. CMake
|
CMake unless you install it yourself into your home directory. CMake
|
||||||
can be downloaded from:
|
can be downloaded from:
|
||||||
|
|
||||||
http://www.cmake.org/cmake/resources/software.html
|
https://cmake.org/download/
|
||||||
|
|
||||||
If you are unable to install CMake yourself (either due to lack of space
|
|
||||||
or restrictions by your hosting provider), you still have the alternative
|
|
||||||
to use the provided configure script. This option is not recommended and
|
|
||||||
will eventually be phased out, but is provided for compatibility for those
|
|
||||||
lacking CMake.
|
|
||||||
|
|
||||||
Next, unpack the package in your home directory, and go into the created
|
Next, unpack the package in your home directory, and go into the created
|
||||||
directory.
|
directory.
|
||||||
@@ -51,16 +44,8 @@ Note: You should also read the README and FAQ files!
|
|||||||
Now type ./Config to start the configuration script. It will ask you a
|
Now type ./Config to start the configuration script. It will ask you a
|
||||||
few questions, and figure out how to compile Anope on your system. If
|
few questions, and figure out how to compile Anope on your system. If
|
||||||
you are unsure about the answer to a question, use the default value.
|
you are unsure about the answer to a question, use the default value.
|
||||||
The question to using configure or cmake depends on your decision from
|
|
||||||
above. If you have CMake and wish to use it, answer with cmake, otherwise
|
|
||||||
answer with configure.
|
|
||||||
|
|
||||||
You can now type make to compile Anope. If there are errors in the
|
Now cd build and type make and make install. This will install
|
||||||
Makefile, *try to use gmake* instead. If it still doesn't work, you (or
|
|
||||||
the system administrator if it's a shell) must install GNU make. You may
|
|
||||||
find it at ftp://prep.ai.mit.edu/pub/gnu/.
|
|
||||||
|
|
||||||
Now type make install (or gmake install; see above). This will install
|
|
||||||
all the needed files in the paths you specified with the configure
|
all the needed files in the paths you specified with the configure
|
||||||
script, and setup file permissions. You should ensure that the data
|
script, and setup file permissions. You should ensure that the data
|
||||||
directory is not accessible by other users, as malicious users may
|
directory is not accessible by other users, as malicious users may
|
||||||
@@ -74,7 +59,7 @@ Note: You should also read the README and FAQ files!
|
|||||||
the file carefully. Using the default values is NOT a good idea, and will
|
the file carefully. Using the default values is NOT a good idea, and will
|
||||||
most likely not work!
|
most likely not work!
|
||||||
|
|
||||||
If you need help, you should visit http://forum.anope.org/ or #anope on
|
If you need help, you should visit https://forum.anope.org/ or #anope on
|
||||||
irc.anope.org. Provide *complete* error output, along with other relevant
|
irc.anope.org. Provide *complete* error output, along with other relevant
|
||||||
information eg. OS, compiler and C++ library versions.
|
information eg. OS, compiler and C++ library versions.
|
||||||
See the README file for more information.
|
See the README file for more information.
|
||||||
@@ -105,7 +90,7 @@ Note: You should also read the README and FAQ files!
|
|||||||
|
|
||||||
You may also try our interactive link maker, which is located at:
|
You may also try our interactive link maker, which is located at:
|
||||||
|
|
||||||
http://anope.org/ilm.php
|
https://www.anope.org/ilm.php
|
||||||
|
|
||||||
4) Starting Anope
|
4) Starting Anope
|
||||||
|
|
||||||
|
|||||||
+91
-100
@@ -1,5 +1,5 @@
|
|||||||
Instructions d'installation d'Anope
|
Instructions d'installation d'Anope
|
||||||
------------------------------------
|
-----------------------------------
|
||||||
|
|
||||||
1) Installation d'Anope
|
1) Installation d'Anope
|
||||||
2) Mettre à jour Anope
|
2) Mettre à jour Anope
|
||||||
@@ -11,148 +11,139 @@ Note : Vous devrez également lire les fichiers README et FAQ !
|
|||||||
|
|
||||||
1) Installation d'Anope
|
1) Installation d'Anope
|
||||||
|
|
||||||
NOTE IMPORTANTE : il n'est pas recommandé d'utiliser (et même d'installer)
|
NOTE IMPORTANTE : il est déconseillé d'utiliser (et même d'installer)
|
||||||
Anope en tant que root. Utilisez un utilisateur non
|
Anope en tant que root. Utilisez un utilisateur non
|
||||||
privilégié. Celui que vous utilisez pour l'IRCd ou un
|
privilégié. Celui que vous utilisez pour l'IRCd ou
|
||||||
utilisateur dédié suffira.
|
un utilisateur dédié suffira.
|
||||||
|
|
||||||
La première chose que vous devez faire est d'obtenir le package Anope (si ce
|
La première chose que vous devez faire est d'obtenir le package Anope
|
||||||
n'est déjà fait). Vous pouvez le trouver ici :
|
(si ce n'est déjà fait). Vous pouvez le trouver ici :
|
||||||
|
|
||||||
http://www.anope.org/
|
https://www.anope.org/
|
||||||
|
|
||||||
Anope peut être installé de deux façons. La méthode recommandée est
|
Anope nécessite cmake pour être compilé. Vous pouvez vérifier si CMake
|
||||||
d'utiliser CMake. Vous pouvez vérifier si CMake est déjà installé
|
est déjà installé sur votre système avec la commande :
|
||||||
sur votre système en utilisant la commande :
|
|
||||||
|
|
||||||
cmake --version
|
cmake --version
|
||||||
|
|
||||||
Si CMake est installé, vous aurez une ligne qui dit quelque chose similaire
|
Si CMake est installé, vous aurez une ligne qui dit quelque chose comme
|
||||||
à "cmake version 2.6 cmake-patch 1". Si la version est inférieure à 2.4 ou
|
"cmake version 2.8.12.2". Si la version est inférieure à 2.4 ou si vous
|
||||||
si vous obtenez une erreur disant que la commande n'a pas été trouvée,
|
obtenez une erreur disant que la commande n'a pas été trouvée, vous ne
|
||||||
vous ne serez pas en mesure d'utiliser CMake, sauf si vous l'installez
|
pourrez pas utiliser CMake à moins de l'installer vous-même dans votre
|
||||||
vous-même dans votre répertoire home. CMake peut être téléchargé ici :
|
répertoire home. CMake peut être téléchargé ici :
|
||||||
|
|
||||||
http://www.cmake.org/cmake/resources/software.html
|
https://cmake.org/download/
|
||||||
|
|
||||||
Si vous n'arrivez pas à l'installer (soit en raison du manque d'espace
|
Ensuite, décompressez le package dans votre répertoire home, et allez
|
||||||
ou de restrictions par votre fournisseur d'hébergement), vous pouvez encore
|
dans le répértoire qui vient d'être créé.
|
||||||
utiliser le script de configuration fourni. Cette option n'est pas
|
|
||||||
recommandée et finira par être retirée, mais est fournie pour la
|
|
||||||
compatibilité de ceux à qui il manque CMake.
|
|
||||||
|
|
||||||
Ensuite, décompressez le package dans votre répertoire home, et allez dans
|
Si il y a des modules facultatifs que vous voulez activer comme m_mysql,
|
||||||
le répértoire qui vient d'être créé.
|
exécuter le script 'extras' pour les activer. Si vous ne savez pas, vous
|
||||||
|
pouvez les activer plus tard.
|
||||||
|
|
||||||
Maintenant, tapez ./Config pour lancer le script de configuration. Il va
|
Maintenant, tapez ./Config pour lancer le script de configuration. Il
|
||||||
vous poser quelques questions, et compiler Anope sur votre système. Si vous
|
va vous poser quelques questions, et déterminer comment compiler Anope
|
||||||
ne savez pas répondre à une question, utilisez la valeur par défaut. La
|
sur votre système. Si vous ne savez pas comment répondre à une question,
|
||||||
question d'utiliser CMake ou configure dépend de la décision que vous avez
|
utilisez la valeur par défaut.
|
||||||
prise précedemment. Si vous avez CMake et que vous souhaitez l'utiliser,
|
|
||||||
répondez avec cmake, sinon répondez avec configure.
|
|
||||||
|
|
||||||
Vous pouvez maintenant taper make pour compiler Anope. S'il y'a des erreurs
|
Allez dans le dossier build (cd build) et tapez make et make install.
|
||||||
dans le Makefile, *essayez d'utiliser* gmake à la place. Si cela ne
|
Ceci va installer tous les fichiers nécessaires dans les dossiers que
|
||||||
fonctionne toujours pas, vous (ou votre administrateur système) devriez
|
vous avez indiqués avec le script Config et régler les permissions des
|
||||||
installer GNU make.
|
fichiers. Vous devez vous assurer que le répertoire data n'est pas
|
||||||
Vous pouvez le trouver ici : ftp://prep.ai.mit.edu/pub/gnu/.
|
accessible par les autres utilisateurs, car des utilisateurs
|
||||||
|
malveillants pourraient causer des problèmes sur votre réseau, si les
|
||||||
|
mots de passe ne sont pas chiffrés, ou lire les mémos de tous les
|
||||||
|
utilisateurs.
|
||||||
|
|
||||||
Maintenant, tapez make install (ou gmake install ; voir ci-dessus). Cela
|
Allez maintenant dans le répertoire conf (par défaut, ~/services/conf).
|
||||||
permet d'installer tous les fichiers nécessaires dans les chemins que vous
|
Copiez l'exemple de fichier de configuration (example.conf) en
|
||||||
avez spécifié au script configure, et de régler les permissions des fichiers.
|
services.conf et ouvrez ce dernier avec votre éditeur de texte favori.
|
||||||
Vous devez vous assurer que le répertoire data n'est pas accessible par les
|
Il contient toutes les directives de configuration qu'Anope va utiliser
|
||||||
autres utilisateurs, des utilisateurs malveillants pourraient causer des
|
en démarrant. Lisez attentivement les instructions contenues dans le
|
||||||
problèmes sur votre réseau, si les mots de passe ne sont pas chiffrés,
|
fichier. L'utilisation des valeurs par défaut n'est pas toujours
|
||||||
ou lire les mémos de tout utilisateur.
|
recommandée, et Anope ne fonctionnera probablement pas !
|
||||||
|
|
||||||
Si vous voyez des erreurs lors de ce processus, merci de nous envoyer un
|
Si vous avez besoin d'aide, vous pouvez aller sur le site
|
||||||
e-mail avec la sortie d'erreur *complète* et n'oubliez pas de mentionner
|
https://forum.anope.org/ ou le canal #anope sur irc.anope.org.
|
||||||
les versions de votre système, compilateur et bibliothèque C++.
|
Fournissez *l'essemble* des erreurs qui apparaîssent, en plus de
|
||||||
|
toutes informations utiles, comme les versions de votre OS, du
|
||||||
Allez maintenant dans le répertoire de données (par défaut, ~/services/data).
|
compilateur utilisé et de la librairie C++. Lisez le fichier README
|
||||||
Copiez l'exemple de fichier de configuration (example.conf) en services.conf
|
pour plus d'informations.
|
||||||
et ouvrez ce dernier avec votre éditeur de texte favori. Il contient toute
|
|
||||||
les directives de configuration. Anope va l'utiliser au démarrage.
|
|
||||||
Lisez attentivement les instructions contenues dans le fichier.
|
|
||||||
L'utilisation des valeurs par défaut n'est pas recommendé et Anope ne
|
|
||||||
fonctionnera probablement pas.
|
|
||||||
|
|
||||||
Si vous avez besoin d'aide, abonnez-vous à la liste de diffusion Anope
|
|
||||||
et envoyez-y vos e-mails pour obtenir de l'aide de la part des autres
|
|
||||||
utilisateurs. Voir le fichier README pour plus d'informations.
|
|
||||||
|
|
||||||
2) Mettre à jour Anope
|
2) Mettre à jour Anope
|
||||||
|
|
||||||
Pour mettre à jour Anope, suivez simplement les instructions d'installation
|
Pour mettre à jour Anope, suivez simplement les instructions
|
||||||
décrites dans la section 1. Il y a cependant une ligne de conduite
|
d'installation décrites dans la section 1. Prenez garde cependant :
|
||||||
spécifique :
|
|
||||||
|
|
||||||
* IMPORTANT : Sauvegardez vos anciennes bases de données !
|
* IMPORTANT : Sauvegardez vos anciennes bases de données !
|
||||||
* Si vous mettez à jour vers une nouvelle version majeure, toujours
|
* Si vous mettez à jour vers une nouvelle version majeure,
|
||||||
redémarrer avec un fichier de configuration neuf depuis example.conf.
|
recommencez *toujours* toute votre configuration à partir du
|
||||||
|
fichier example.conf.
|
||||||
|
|
||||||
3) Configuration de l'IRCd
|
3) Configuration de l'IRCd
|
||||||
|
|
||||||
Les Services agissent comme un serveur IRC avec des pseudo-clients.
|
Les Services agissent comme un serveur IRC avec des pseudo-clients.
|
||||||
Pour les relier à votre réseau, vous aurez besoin de configurer votre IRCd
|
Pour les relier à votre réseau, vous aurez besoin de configurer votre
|
||||||
pour permettre aux services de linker.
|
IRCd pour permettre aux services de se connecter.
|
||||||
|
|
||||||
La configuration varie selon les IRCd, mais vous aurez probablement besoin
|
La configuration dépend de l'IRCd utilisé, mais vous aurez probablement
|
||||||
d'un block link (aussi appelé connect block, ou C line), un U line (aussi
|
besoin d'un bloc link (aussi appelé connect block, ou C:line) et un
|
||||||
appelé shared block) et assurez-vous que l'IRCd écoute sur le port donné
|
U:line (aussi appelé shared block). Assurez-vous que l'IRCd écoute
|
||||||
dans le block link.
|
sur le port donné dans le bloc link.
|
||||||
|
|
||||||
Des exemples de configurations de link peuvent être trouvés dans le fichier
|
Des exemples de configurations de bloc link peuvent être trouvés dans
|
||||||
example.conf pour certains des IRCd les plus populaires.
|
le fichier example.conf pour certains des IRCd les plus populaires.
|
||||||
|
|
||||||
Souvenez-vous de /rehash votre IRCd pour appliquer les changements.
|
Souvenez-vous de /rehash votre IRCd pour appliquer les changements.
|
||||||
|
|
||||||
Vous pouvez également essayer notre créateur de link interactif situé ici :
|
Vous pouvez également essayer notre créateur de bloc link interactif
|
||||||
|
situé ici :
|
||||||
|
|
||||||
http://anope.org/ilm.php
|
https://www.anope.org/ilm.php
|
||||||
|
|
||||||
4) Mettre en route Anope
|
4) Mettre en route Anope
|
||||||
|
|
||||||
Allez dans le répertoire où les fichiers binaires ont été installés (par
|
Allez dans le répertoire où les fichiers binaires ont été installés
|
||||||
défaut, ~/services/bin). Tapez ./services pour lancer Anope.
|
(par défaut, ~/services/bin). Tapez ./services pour lancer Anope.
|
||||||
|
|
||||||
S'il ya des erreurs de syntaxe dans le fichier de configuration, elles
|
S'il y a des erreurs de syntaxe dans le fichier de configuration, elles
|
||||||
seront affichées sur l'écran. Corrigez-les jusqu'à ce qu'il n'y en ait plus.
|
seront affichées à l'écran. Corrigez-les jusqu'à ce qu'il n'y en ait
|
||||||
Un démarrage réussi ne générera pas de message.
|
plus. Un démarrage réussi ne générera pas de message.
|
||||||
|
|
||||||
Donnez aux services au moins une minute pour se connecter à votre réseau.
|
Donnez aux services au moins une minute pour se connecter à votre
|
||||||
Certains IRCds sur certains systèmes peuvent être très lents pour le
|
réseau, car certains IRCds sur certains systèmes peuvent être très
|
||||||
processus de liaison. Si rien n'arrive après environ une minute, il y a
|
lents pour le processus de liaison. Si rien ne se passe après environ
|
||||||
probablement un problème de configuration. Essayez de lancer Anope en mode
|
une minute, il y a probablement un problème de configuration. Essayez
|
||||||
debug ./services -debug -nofork pour voir toutes les erreurs rencontrées
|
de lancer Anope en mode debug avec ./services -debug -nofork pour voir
|
||||||
et essayez de les corriger.
|
toutes les erreurs rencontrées et essayez de les corriger.
|
||||||
|
|
||||||
Si vous avez besoin d'aide pour résoudre des erreurs, n'hésitez pas à vous
|
Si vous avez besoin d'aide pour résoudre des erreurs, n'hésitez pas à
|
||||||
abonner à la liste de diffusion Anope et d'y poser vos question.
|
vous abonner à la liste de diffusion Anope et d'y poser vos question.
|
||||||
Voir le fichier README pour plus de détails.
|
Voir le fichier README pour plus de détails.
|
||||||
|
|
||||||
5) Mettre en place un crontab
|
5) Mettre en place un crontab
|
||||||
|
|
||||||
Une entrée crontab vous permettra de vérifier périodiquement si Anope est
|
Une entrée crontab vous permettra de vérifier périodiquement si Anope
|
||||||
toujours en cours d'exécution et de le redémarrer s'il n'est pas.
|
est toujours en cours d'exécution et de le redémarrer s'il n'est pas.
|
||||||
|
|
||||||
D'abord renommez le script example.chk qui est dans le chemin d'Anope
|
D'abord renommez le script example.chk qui est dans les dossiers
|
||||||
(par défaut, ~/services/data) en services.chk et modifiez-le. Vous aurez
|
d'Anope (par défaut, ~/services/conf) en services.chk et modifiez-le.
|
||||||
besoin de modifier la partie CONFIGURATION du fichier. Assurez-vous ensuite
|
Vous aurez besoin de modifier la partie CONFIGURATION du fichier.
|
||||||
que le fichier est marqué comme exécutable en tapant chmod +x services.chk
|
Assurez-vous ensuite que le fichier est marqué comme exécutable en
|
||||||
et essayez de lancer le script pour voir si cela fonctionne (Anope ne doit
|
tapant chmod +x services.chk et essayez de lancer le script pour voir
|
||||||
pas être en marche lorsque vous faites cela ;))
|
si cela fonctionne (Anope ne doit pas être en marche lorsque vous
|
||||||
|
testez cela ;))
|
||||||
|
|
||||||
Lorsque c'est fait, vous devrez ajouter l'entrée crontab. Tapez crontab -e.
|
Lorsque c'est fait, vous devrez ajouter l'entrée crontab. Entrez
|
||||||
Cela va ouvrir l'éditeur de texte par défaut avec le fichier crontab.
|
crontab -e. Cela va ouvrir l'éditeur de texte par défaut avec le
|
||||||
Entrez la ligne suivante (avec le chemin correct) :
|
fichier crontab. Entrez la ligne suivante (avec le chemin correct) :
|
||||||
|
|
||||||
*/5 * * * * /home/ircd/services/data/services.chk > /dev/null 2>&1
|
*/5 * * * * /home/ircd/services/conf/services.chk > /dev/null 2>&1
|
||||||
|
|
||||||
Le */5 au début signifie "vérifier toutes les 5 minutes". Vous pouvez
|
Le */5 au début signifie "vérifier toutes les 5 minutes". Vous pouvez
|
||||||
remplacer le 5 par un autre numéro si vous voulez (mais moins de 60).
|
remplacer le 5 par un autre numéro si vous voulez (mais moins de 60).
|
||||||
Consultez pages de manuel de votre système pour plus de détails sur la
|
Consultez les pages de manuel de votre système pour plus de détails sur
|
||||||
syntaxe du fichier crontab. Les pages de manuel intéressantes sont
|
la syntaxe du fichier crontab. Les pages de manuel intéressantes sont
|
||||||
crontab(5), crontab(1) et cron(8).
|
crontab(5), crontab(1) et cron(8).
|
||||||
|
|
||||||
Sauvegardez, quittez et c'est installé.
|
Sauvegardez, quittez, et c'est installé !
|
||||||
|
|||||||
+2
-2
@@ -22,13 +22,13 @@ Anope Mutli Language Support
|
|||||||
|
|
||||||
2) Adding a new language
|
2) Adding a new language
|
||||||
|
|
||||||
Anope uses gettext (http://www.gnu.org/software/gettext/) to translate messages for users. To add a new language
|
Anope uses gettext (https://www.gnu.org/software/gettext/) to translate messages for users. To add a new language
|
||||||
install gettext and run `msginit -l language -o anope.language.po -i anope.pot`. For example if I was translating to
|
install gettext and run `msginit -l language -o anope.language.po -i anope.pot`. For example if I was translating to
|
||||||
Spanish I could run `msginit -l es_ES -o anope.es_ES.po -i anope.pot`. Open the newly generating .po file and start
|
Spanish I could run `msginit -l es_ES -o anope.es_ES.po -i anope.pot`. Open the newly generating .po file and start
|
||||||
translating. Once you are done simply rerun ./Config; make && make install and add the language to your services.conf.
|
translating. Once you are done simply rerun ./Config; make && make install and add the language to your services.conf.
|
||||||
Note that on Windows it is not quite this simple, windows.cpp must be edited and Anope recompiled and restarted.
|
Note that on Windows it is not quite this simple, windows.cpp must be edited and Anope recompiled and restarted.
|
||||||
|
|
||||||
Poedit (http://www.poedit.net/) is a popular po file editor, and we recommend using it or another editor designed to edit
|
Poedit (https://poedit.net/) is a popular po file editor, and we recommend using it or another editor designed to edit
|
||||||
po files (especially on Windows).
|
po files (especially on Windows).
|
||||||
|
|
||||||
If you have finished a language file translation and you want others to use it, please send it to team@anope.org
|
If you have finished a language file translation and you want others to use it, please send it to team@anope.org
|
||||||
|
|||||||
+3
-3
@@ -87,7 +87,7 @@ Anope Modules
|
|||||||
|
|
||||||
5) More Modules
|
5) More Modules
|
||||||
|
|
||||||
You can download more useful modules from http://modules.anope.org/. Just
|
You can download more useful modules from https://modules.anope.org/. Just
|
||||||
grab the module file (usually with a .cpp extension). Place the module
|
grab the module file (usually with a .cpp extension). Place the module
|
||||||
file in your modules (anope-1.9.x/modules/third) folder; although any of
|
file in your modules (anope-1.9.x/modules/third) folder; although any of
|
||||||
the other folders within the modules directory will work.
|
the other folders within the modules directory will work.
|
||||||
@@ -118,11 +118,11 @@ Anope Modules
|
|||||||
There are a number of useful documents on the Anope Wiki. The Anope Wiki
|
There are a number of useful documents on the Anope Wiki. The Anope Wiki
|
||||||
can be reached at:
|
can be reached at:
|
||||||
|
|
||||||
* http://wiki.anope.org/
|
* https://wiki.anope.org/
|
||||||
|
|
||||||
8) Modules Repository
|
8) Modules Repository
|
||||||
|
|
||||||
You can find modules at http://modules.anope.org
|
You can find modules at https://modules.anope.org/
|
||||||
|
|
||||||
These modules are 3rd party and as such are not supported by the Anope Team.
|
These modules are 3rd party and as such are not supported by the Anope Team.
|
||||||
Contact the Module Author directly with problems, not the Anope Team.
|
Contact the Module Author directly with problems, not the Anope Team.
|
||||||
|
|||||||
@@ -4,4 +4,3 @@ Highlighted News in Anope 1.9
|
|||||||
* Added in live updating SQL and the ability to execute commands through SQL
|
* Added in live updating SQL and the ability to execute commands through SQL
|
||||||
* Re-designed configuration file
|
* Re-designed configuration file
|
||||||
* Code refresh / rewrite into C++
|
* Code refresh / rewrite into C++
|
||||||
|
|
||||||
|
|||||||
+10
-12
@@ -1,16 +1,14 @@
|
|||||||
Anope -- a set of IRC services for IRC networks
|
Anope -- a set of IRC services for IRC networks
|
||||||
-----------------------------------------------
|
-----------------------------------------------
|
||||||
|
|
||||||
Anope is 2003-2014 Anope Team <team@anope.org>.
|
Anope is 2003-2019 Anope Team <team@anope.org>.
|
||||||
Based on Epona 2000-2002 PegSoft <epona@pegsoft.net>.
|
Based on Epona 2000-2002 PegSoft <epona@pegsoft.net>.
|
||||||
Based on Services 1996-1999 Andrew Church <achurch@achurch.org>.
|
Based on Services 1996-1999 Andrew Church <achurch@achurch.org>.
|
||||||
|
|
||||||
This program is free but copyrighted software; see the file COPYING for
|
This program is free but copyrighted software; see the file COPYING for
|
||||||
details.
|
details.
|
||||||
|
|
||||||
Information about Anope may be found at http://www.anope.org/
|
Information about Anope may be found at https://www.anope.org/
|
||||||
Information about Epona may be found at http://www.epona.org/
|
|
||||||
Information about Services may be found at http://www.ircservices.esper.net/
|
|
||||||
|
|
||||||
Table of Contents
|
Table of Contents
|
||||||
-----------------
|
-----------------
|
||||||
@@ -19,7 +17,7 @@ Table of Contents
|
|||||||
3) Installation
|
3) Installation
|
||||||
4) Command Line Options
|
4) Command Line Options
|
||||||
5) Messages Translation
|
5) Messages Translation
|
||||||
6) Contact and Mailing List
|
6) Contact
|
||||||
|
|
||||||
1) Credits
|
1) Credits
|
||||||
|
|
||||||
@@ -107,11 +105,11 @@ Table of Contents
|
|||||||
|
|
||||||
Anope Translations:
|
Anope Translations:
|
||||||
|
|
||||||
* Robby <robby@chat.be> (nl_NL)
|
* Robby <robby@chatbelgie.be> (nl_NL)
|
||||||
* Kein <kein-of@yandex.ru> (ru_RU)
|
* Kein <kein-of@yandex.ru> (ru_RU)
|
||||||
* Maik Funke <Han@mefalcon.org> (de_DE)
|
* Maik Funke <Han@mefalcon.org> (de_DE)
|
||||||
* Isaac Fontal <i_fontal@hotmail.com> (es_ES)
|
* Isaac Fontal <i_fontal@hotmail.com> (es_ES)
|
||||||
* Janos Kapitany <sarkanyka@cjbchat.hu> (hu_HU)
|
* Janos Kapitany <sarkanyka@cjbchat.hu> (hu_HU)
|
||||||
* Szymon S'wierkosz <szymek@adres.pl> (pl_PL)
|
* Szymon S'wierkosz <szymek@adres.pl> (pl_PL)
|
||||||
* Christopher N. <saka@epiknet.org> (fr_FR)
|
* Christopher N. <saka@epiknet.org> (fr_FR)
|
||||||
* Yusuf Kurekci <ysfm.20@gmail.com> (tr_TR)
|
* Yusuf Kurekci <ysfm.20@gmail.com> (tr_TR)
|
||||||
@@ -170,12 +168,12 @@ Table of Contents
|
|||||||
|
|
||||||
* Bahamut 1.4.27 or later (including 1.8)
|
* Bahamut 1.4.27 or later (including 1.8)
|
||||||
* Charybdis 3.4 or later
|
* Charybdis 3.4 or later
|
||||||
* Hybrid 8.1 or later
|
* Hybrid 8.2 or later
|
||||||
* InspIRCd 1.2 or 2.0
|
* InspIRCd 1.2 or later
|
||||||
* ngIRCd 19.2 or later
|
* ngIRCd 19.2 or later
|
||||||
* Plexus 3 or later
|
* Plexus 3 or later
|
||||||
* Ratbox 2.0.6 or later
|
* Ratbox 2.0.6 or later
|
||||||
* UnrealIRCd 3.2 or later
|
* UnrealIRCd 3.2 or 4
|
||||||
|
|
||||||
Anope could also work with some of the daemons derived by the ones listed
|
Anope could also work with some of the daemons derived by the ones listed
|
||||||
above, but there's no support for them if they work or don't work.
|
above, but there's no support for them if they work or don't work.
|
||||||
@@ -242,7 +240,7 @@ Table of Contents
|
|||||||
6) Contact
|
6) Contact
|
||||||
|
|
||||||
For announcements and discussions about Anope, please visit our
|
For announcements and discussions about Anope, please visit our
|
||||||
Portal and Forums at http://www.anope.org/ -- make sure you register
|
Portal and Forums at https://www.anope.org/ -- make sure you register
|
||||||
yourself to get full benefits.
|
yourself to get full benefits.
|
||||||
|
|
||||||
If you read the documentation carefully, and didn't find the answer to
|
If you read the documentation carefully, and didn't find the answer to
|
||||||
@@ -254,7 +252,7 @@ Table of Contents
|
|||||||
The more precise you are the sooner you'll be likely to get an answer.
|
The more precise you are the sooner you'll be likely to get an answer.
|
||||||
|
|
||||||
If you think you found a bug, add it to the bug tracking system
|
If you think you found a bug, add it to the bug tracking system
|
||||||
(http://bugs.anope.org) and - again - be as precise as possible. Also say
|
(https://bugs.anope.org/) and - again - be as precise as possible. Also say
|
||||||
whether the bug happens always or under what circumstances, and anything
|
whether the bug happens always or under what circumstances, and anything
|
||||||
that could be useful to track your bug down. If you wrote a patch, send
|
that could be useful to track your bug down. If you wrote a patch, send
|
||||||
it over. :)
|
it over. :)
|
||||||
|
|||||||
+4
-4
@@ -1,8 +1,8 @@
|
|||||||
Starting in Anope 1.9.9, Anope has Redis database support (http://redis.io/).
|
Starting in Anope 1.9.9, Anope has Redis database support (https://redis.io/).
|
||||||
This document explains the data structure used by Anope, and explains how
|
This document explains the data structure used by Anope, and explains how
|
||||||
keyspace notification works.
|
keyspace notification works.
|
||||||
|
|
||||||
This is not a tutorial on how to use Redis, see http://redis.io/documentation
|
This is not a tutorial on how to use Redis, see https://redis.io/documentation
|
||||||
for that.
|
for that.
|
||||||
|
|
||||||
Table of Contents
|
Table of Contents
|
||||||
@@ -70,7 +70,7 @@ Table of Contents
|
|||||||
2) Keyspace notifications
|
2) Keyspace notifications
|
||||||
|
|
||||||
Redis 2.7 (unstable) and 2.8 (stable) and newer support keyspace notifications
|
Redis 2.7 (unstable) and 2.8 (stable) and newer support keyspace notifications
|
||||||
(http://redis.io/topics/notifications). This allows Redis to notify Anope of
|
(https://redis.io/topics/notifications). This allows Redis to notify Anope of
|
||||||
any external changes to objects in the database. Once notified, Anope will
|
any external changes to objects in the database. Once notified, Anope will
|
||||||
immediately update the object. Otherwise, Anope keeps all objects in memory
|
immediately update the object. Otherwise, Anope keeps all objects in memory
|
||||||
and will not regularly read from the databaes once started.
|
and will not regularly read from the databaes once started.
|
||||||
@@ -152,7 +152,7 @@ Table of Contents
|
|||||||
HMSET hash:BotInfo:8 nick redis user redis host services.anope.org realname "Services for IRC Networks"
|
HMSET hash:BotInfo:8 nick redis user redis host services.anope.org realname "Services for IRC Networks"
|
||||||
|
|
||||||
Note if you are using HSET instead of HMSET you will need to use a transaction, as shown in the above example.
|
Note if you are using HSET instead of HMSET you will need to use a transaction, as shown in the above example.
|
||||||
If you are watching your services logs you will immediatly see:
|
If you are watching your services logs you will immediately see:
|
||||||
|
|
||||||
USERS: redis!redis@services.anope.org (Services for IRC Networks) connected to the network (services.anope.org)
|
USERS: redis!redis@services.anope.org (Services for IRC Networks) connected to the network (services.anope.org)
|
||||||
|
|
||||||
|
|||||||
+3
-4
@@ -20,7 +20,6 @@ Anope Bundled Tools
|
|||||||
address. This should generate a log file of what happened when it tried
|
address. This should generate a log file of what happened when it tried
|
||||||
to connect to the SMTP server.
|
to connect to the SMTP server.
|
||||||
|
|
||||||
Credits:
|
Credits:
|
||||||
Originally written by Dominick Meglio <codemastr@unrealircd.com>
|
Originally written by Dominick Meglio <codemastr@unrealircd.com>
|
||||||
Ported to *nix by Trystan Scott Lee <trystan@nomadirc.net>
|
Ported to *nix by Trystan Scott Lee <trystan@nomadirc.net>
|
||||||
|
|
||||||
|
|||||||
+5
-14
@@ -18,10 +18,10 @@ Anope for Windows
|
|||||||
1) Download the required files:
|
1) Download the required files:
|
||||||
|
|
||||||
* Current Anope source:
|
* Current Anope source:
|
||||||
http://sourceforge.net/project/showfiles.php?group_id=94081
|
https://github.com/anope/anope/releases
|
||||||
|
|
||||||
* CMake:
|
* CMake:
|
||||||
http://www.cmake.org/cmake/resources/software.html
|
https://cmake.org/download/
|
||||||
|
|
||||||
(NOTE: When installing, tell CMake to add itself to the PATH.)
|
(NOTE: When installing, tell CMake to add itself to the PATH.)
|
||||||
|
|
||||||
@@ -73,18 +73,10 @@ Anope for Windows
|
|||||||
Some Anope modules require third party libraries, such as m_mysql and
|
Some Anope modules require third party libraries, such as m_mysql and
|
||||||
the SSL modules. If these libraries are installed in nonstandard
|
the SSL modules. If these libraries are installed in nonstandard
|
||||||
locations, cmake will probably not find them and should be told where
|
locations, cmake will probably not find them and should be told where
|
||||||
they are by passing additional search paths to the last question in
|
they are by passing their location to Config.
|
||||||
Config, such as:
|
|
||||||
|
|
||||||
-DEXTRA_INCLUDE:STRING=c:/openssl/include;c:/mysql/include
|
The libraries used to build the 'extra' modules are available at
|
||||||
-DEXTRA_LIBS:STRING=c:/openssl/lib;c:/mysql/lib
|
https://github.com/Adam-/windows-scripts.
|
||||||
|
|
||||||
Building Anope with gettext requires libintl, libiconv, libgcc and
|
|
||||||
libmingex. We have precompiled these libraries for you that you may
|
|
||||||
use if you want. They are avaiable at http://anope.org/downloads/anope-extra.zip
|
|
||||||
The OpenSSL, MySQL, and OpenLDAP header files and libraries are also included in
|
|
||||||
this package. Once downloaded and extracted, you should run install.bat
|
|
||||||
then give Config the path to the new 'installed' directory.
|
|
||||||
|
|
||||||
5) You are now ready to compile. If you said you wanted to use NMake in step 4,
|
5) You are now ready to compile. If you said you wanted to use NMake in step 4,
|
||||||
at the prompt type:
|
at the prompt type:
|
||||||
@@ -167,4 +159,3 @@ Anope for Windows
|
|||||||
Anope's Windows Installer was made using:
|
Anope's Windows Installer was made using:
|
||||||
|
|
||||||
* NSIS 2.20 <http://nsis.sourceforge.net>
|
* NSIS 2.20 <http://nsis.sourceforge.net>
|
||||||
|
|
||||||
|
|||||||
+7
-4
@@ -3,11 +3,11 @@ This allows external applications, such as websites, to execute remote procedure
|
|||||||
|
|
||||||
Currently there are 5 supported XMLRPC calls, provided by m_xmlrpc_main:
|
Currently there are 5 supported XMLRPC calls, provided by m_xmlrpc_main:
|
||||||
|
|
||||||
checkAuthetication - Takes two parameters, an account name and a password. Checks if the account name is valid and the password
|
checkAuthentication - Takes two parameters, an account name and a password. Checks if the account name is valid and the password
|
||||||
is correct for the account name, useful for making login pages on websites.
|
is correct for the account name, useful for making login pages on websites.
|
||||||
|
|
||||||
command - Takes three parameters, a service name (BotServ, ChanServ, NickServ), a user name (whether online or not), and the command
|
command - Takes three parameters, a service name (BotServ, ChanServ, NickServ), a user name (whether online or not), and the command
|
||||||
to execute. This will execute a the given command to Anope using the given service name. If the user given is online, the
|
to execute. This will execute the given command to Anope using the given service name. If the user given is online, the
|
||||||
command reply will go to them, if not it is returned by XMLRPC.
|
command reply will go to them, if not it is returned by XMLRPC.
|
||||||
|
|
||||||
stats - Takes no parameters, returns miscellaneous stats that can be found in the /operserv stats command.
|
stats - Takes no parameters, returns miscellaneous stats that can be found in the /operserv stats command.
|
||||||
@@ -17,10 +17,13 @@ channel - Takes one parameter, a channel name, and returns real time information
|
|||||||
|
|
||||||
user - Takes one parameter, a user name, and returns real time information regarding that user.
|
user - Takes one parameter, a user name, and returns real time information regarding that user.
|
||||||
|
|
||||||
|
opers - Takes no parameters, returns opertypes, their privileges and commands.
|
||||||
|
|
||||||
|
notice - Takes three parameters, source user, target user, and message. Sends a message to the user.
|
||||||
|
|
||||||
XMLRPC was designed to be used with db_sql, and will not return any information that can be pulled from the SQL
|
XMLRPC was designed to be used with db_sql, and will not return any information that can be pulled from the SQL
|
||||||
database, such as accounts and registered channel information. It is instead used for pulling realtime data such
|
database, such as accounts and registered channel information. It is instead used for pulling realtime data such
|
||||||
as users and channels currently online. For examples on how to use these calls in PHP, see xmlrpc.php in docs/XMLRPC.
|
as users and channels currently online. For examples on how to use these calls in PHP, see xmlrpc.php in docs/XMLRPC.
|
||||||
|
|
||||||
Also note that the parameter named "id" is reserved for query ID. If you pass a query to Anope containing a value for id. it will
|
Also note that the parameter named "id" is reserved for query ID. If you pass a query to Anope containing a value for id. it will
|
||||||
be stored by Anope and the same id will be passed back in the result.
|
be stored by Anope and the same id will be passed back in the result.
|
||||||
|
|
||||||
|
|||||||
+126
-71
@@ -1,90 +1,145 @@
|
|||||||
<?php
|
<?php
|
||||||
/* XMLRPC Functions
|
|
||||||
|
/**
|
||||||
|
* XMLRPC Functions
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class AnopeXMLRPC
|
class AnopeXMLRPC
|
||||||
{
|
{
|
||||||
private $Host;
|
/**
|
||||||
|
* The XMLRPC host
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
private $host;
|
||||||
|
|
||||||
function __construct($Host)
|
/**
|
||||||
{
|
* Initiate a new AnopeXMLRPC instance
|
||||||
$this->Host = $Host;
|
*
|
||||||
}
|
* @param $host
|
||||||
|
*/
|
||||||
|
public function __construct($host)
|
||||||
|
{
|
||||||
|
$this->host = $host;
|
||||||
|
}
|
||||||
|
|
||||||
/** Run an XMLRPC command. Name should be a query name and params an array of parameters, eg:
|
/**
|
||||||
* $this->RunXMLRPC("checkAuthentication", array("adam", "qwerty"));
|
* Run an XMLRPC command. Name should be a query name and params an array of parameters, eg:
|
||||||
* If successful returns back an array of useful information.
|
* $this->raw("checkAuthentication", ["adam", "qwerty"]);
|
||||||
*
|
* If successful returns back an array of useful information.
|
||||||
* Note that $params["id"] is reserved for query ID, you may set it to something if you wish.
|
*
|
||||||
* If you do, the same ID will be passed back with the reply from Anope.
|
* Note that $params["id"] is reserved for query ID, you may set it to something if you wish.
|
||||||
*/
|
* If you do, the same ID will be passed back with the reply from Anope.
|
||||||
function RunXMLRPC($name, $params)
|
*
|
||||||
{
|
* @param $name
|
||||||
$xmlquery = xmlrpc_encode_request($name, $params);
|
* @param $params
|
||||||
$context = stream_context_create(array("http" => array(
|
* @return array|null
|
||||||
"method" => "POST",
|
*/
|
||||||
"header" => "Content-Type: text/xml",
|
public function run($name, $params)
|
||||||
"content" => $xmlquery)));
|
{
|
||||||
|
$xmlquery = xmlrpc_encode_request($name, $params);
|
||||||
|
$context = stream_context_create(["http" => [
|
||||||
|
"method" => "POST",
|
||||||
|
"header" => "Content-Type: text/xml",
|
||||||
|
"content" => $xmlquery]]);
|
||||||
|
|
||||||
$inbuf = file_get_contents($this->Host, false, $context);
|
$inbuf = file_get_contents($this->host, false, $context);
|
||||||
$response = xmlrpc_decode($inbuf);
|
$response = xmlrpc_decode($inbuf);
|
||||||
|
|
||||||
if (isset($response[0]))
|
if ($response) {
|
||||||
return $response[0];
|
return $response;
|
||||||
return NULL;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/** Do Command on Service as User, eg:
|
return null;
|
||||||
* $anope->DoCommand("ChanServ", "Adam", "REGISTER #adam");
|
}
|
||||||
* Returns an array of information regarding the command execution, if
|
|
||||||
* If 'online' is set to yes, then the reply to the command was sent to the user on IRC.
|
|
||||||
* If 'online' is set to no, then the reply to the command is in the array member 'return'
|
|
||||||
*/
|
|
||||||
function DoCommand($Service, $User, $Command)
|
|
||||||
{
|
|
||||||
return $this->RunXMLRPC("command", array($Service, $User, $Command));
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Check an account/nick name and password to see if they are valid
|
/**
|
||||||
* Returns the account display name if valid
|
* Do Command on Service as User, eg:
|
||||||
*/
|
* $anope->command("ChanServ", "Adam", "REGISTER #adam");
|
||||||
function CheckAuthentication($Account, $Pass)
|
* Returns an array of information regarding the command execution, if
|
||||||
{
|
* If 'online' is set to yes, then the reply to the command was sent to the user on IRC.
|
||||||
$ret = $this->RunXMLRPC("checkAuthentication", array($Account, $Pass));
|
* If 'online' is set to no, then the reply to the command is in the array member 'return'
|
||||||
|
*
|
||||||
|
* @param $service
|
||||||
|
* @param $user
|
||||||
|
* @param $command
|
||||||
|
* @return array|null
|
||||||
|
*/
|
||||||
|
public function command($service, $user, $command)
|
||||||
|
{
|
||||||
|
return $this->run("command", [$service, $user, $command]);
|
||||||
|
}
|
||||||
|
|
||||||
if ($ret && $ret["result"] == "Success")
|
/**
|
||||||
return $ret["account"];
|
* Check an account/nick name and password to see if they are valid
|
||||||
return NULL;
|
* Returns the account display name if valid
|
||||||
}
|
*
|
||||||
|
* @param $account
|
||||||
|
* @param $pass
|
||||||
|
* @return string|null
|
||||||
|
*/
|
||||||
|
public function auth($account, $pass)
|
||||||
|
{
|
||||||
|
$ret = $this->run("checkAuthentication", [$account, $pass]);
|
||||||
|
|
||||||
/* Returns an array of misc stats regarding Anope
|
if ($ret && $ret["result"] == "Success") {
|
||||||
*/
|
return $ret["account"];
|
||||||
function DoStats()
|
}
|
||||||
{
|
|
||||||
return $this->RunXMLRPC("stats", NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Look up data for a channel
|
return null;
|
||||||
* Returns an array containing channel information, or an array of size one
|
}
|
||||||
* (just containing the name) if the channel does not exist
|
|
||||||
*/
|
|
||||||
function DoChannel($Channel)
|
|
||||||
{
|
|
||||||
return $this->RunXMLRPC("channel", array($Channel));
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Like DoChannel(), but different.
|
/**
|
||||||
*/
|
* Returns an array of misc stats regarding Anope
|
||||||
function DoUser($User)
|
*
|
||||||
{
|
* @return array|null
|
||||||
return $this->RunXMLRPC("user", array($User));
|
*/
|
||||||
}
|
public function stats()
|
||||||
|
{
|
||||||
|
return $this->run("stats", null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Look up data for a channel
|
||||||
|
* Returns an array containing channel information, or an array of size one
|
||||||
|
* (just containing the name) if the channel does not exist
|
||||||
|
*
|
||||||
|
* @param $channel
|
||||||
|
* @return array|null
|
||||||
|
*/
|
||||||
|
public function channel($channel)
|
||||||
|
{
|
||||||
|
return $this->run("channel", [$channel]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sent a notice to a user.
|
||||||
|
* Returns an array containing channel information, or an array of size one
|
||||||
|
* (just containing the name) if the channel does not exist
|
||||||
|
*
|
||||||
|
* @param $source
|
||||||
|
* @param $target
|
||||||
|
* @param $message
|
||||||
|
* @return array|null
|
||||||
|
*/
|
||||||
|
public function notice($source, $target, $message)
|
||||||
|
{
|
||||||
|
return $this->run("notice", [$source, $target, $message]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Like channel(), but different.
|
||||||
|
*
|
||||||
|
* @param $user
|
||||||
|
* @return array|null
|
||||||
|
*/
|
||||||
|
public function user($user)
|
||||||
|
{
|
||||||
|
return $this->run("user", [$user]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$anopexmlrpc = new AnopeXMLRPC("http://127.0.0.1:8080/xmlrpc");
|
$anope = new AnopeXMLRPC("http://127.0.0.1:8080/xmlrpc");
|
||||||
|
|
||||||
?>
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
#
|
#
|
||||||
# Script taken from InspIRCd, www.inspircd.org
|
# Script taken from InspIRCd, https://www.inspircd.org/
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful, but WITHOUT
|
# 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
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
# details.
|
# details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
@@ -148,12 +148,7 @@ while (1)
|
|||||||
|
|
||||||
if ($input eq "q") {
|
if ($input eq "q") {
|
||||||
if (-e "build/CMakeFiles") {
|
if (-e "build/CMakeFiles") {
|
||||||
if (-e "cmake-bin") {
|
system("cmake", "build/.");
|
||||||
my $cmake_path = `find cmake-bin -name cmake -print0`;
|
|
||||||
system($cmake_path, "build/.");
|
|
||||||
} else {
|
|
||||||
system("cmake", "build/.");
|
|
||||||
}
|
|
||||||
print "\nNow cd build, then run make to build Anope.\n\n";
|
print "\nNow cd build, then run make to build Anope.\n\n";
|
||||||
} else {
|
} else {
|
||||||
print "\nBuild directory not found. You should run ./Config now.\n\n"
|
print "\nBuild directory not found. You should run ./Config now.\n\n"
|
||||||
|
|||||||
@@ -1,20 +1,21 @@
|
|||||||
# Set version.cpp to use C++ as well as set its compile flags
|
# Set version.cpp to use C++ as well as set its compile flags
|
||||||
set_source_files_properties(version.cpp PROPERTIES LANGUAGE CXX COMPILE_FLAGS "${CXXFLAGS}")
|
set_source_files_properties(version.cpp PROPERTIES LANGUAGE CXX COMPILE_FLAGS "${CXXFLAGS}")
|
||||||
# Generate version executable to modify version.h, setting it's linker flags as well
|
# Generate version-bin executable to modify version.h, setting it's linker flags as well
|
||||||
add_executable(version version.cpp)
|
add_executable(version-bin version.cpp)
|
||||||
set_target_properties(version PROPERTIES LINKER_LANGUAGE CXX LINK_FLAGS "${LDFLAGS}")
|
set_target_properties(version-bin PROPERTIES LINKER_LANGUAGE CXX LINK_FLAGS "${LDFLAGS}")
|
||||||
get_target_property(version_BINARY version LOCATION)
|
get_target_property(version_BINARY version-bin LOCATION)
|
||||||
# Modify version.h from the above executable, with dependencies to version.cpp
|
# Modify version.h from the above executable, with dependencies to version.cpp
|
||||||
# and all of the source files in the main build
|
# and all of the source files in the main build
|
||||||
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/version_build
|
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/version_build
|
||||||
COMMAND ${version_BINARY} ${Anope_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/version.h
|
COMMAND ${version_BINARY} ${Anope_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/version.h ${CMAKE_CURRENT_BINARY_DIR}/build.h
|
||||||
DEPENDS version ${SRC_SRCS}
|
DEPENDS version-bin ${SRC_SRCS}
|
||||||
)
|
)
|
||||||
# Add version to list of files for CPack to ignore
|
# Add version-bin to list of files for CPack to ignore
|
||||||
get_filename_component(version_BINARY ${version_BINARY} NAME)
|
get_filename_component(version_BINARY ${version_BINARY} NAME)
|
||||||
add_to_cpack_ignored_files("${version_BINARY}$" TRUE)
|
add_to_cpack_ignored_files("${version_BINARY}$" TRUE)
|
||||||
if(NOT WIN32)
|
if(NOT WIN32)
|
||||||
add_to_cpack_ignored_files("version.h$" TRUE)
|
add_to_cpack_ignored_files("version.h$" TRUE)
|
||||||
|
add_to_cpack_ignored_files("build.h$" TRUE)
|
||||||
endif(NOT WIN32)
|
endif(NOT WIN32)
|
||||||
|
|
||||||
set(PCH_SOURCES_GCH "")
|
set(PCH_SOURCES_GCH "")
|
||||||
@@ -60,4 +61,4 @@ if(USE_PCH AND CMAKE_COMPILER_IS_GNUCXX)
|
|||||||
endif(USE_PCH AND CMAKE_COMPILER_IS_GNUCXX)
|
endif(USE_PCH AND CMAKE_COMPILER_IS_GNUCXX)
|
||||||
|
|
||||||
# Add a custom target to the above file
|
# Add a custom target to the above file
|
||||||
add_custom_target(headers DEPENDS version ${CMAKE_CURRENT_BINARY_DIR}/version_build ${PCH_SOURCES_GCH})
|
add_custom_target(headers DEPENDS version-bin ${CMAKE_CURRENT_BINARY_DIR}/version_build ${PCH_SOURCES_GCH})
|
||||||
|
|||||||
+19
-17
@@ -1,13 +1,12 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
*
|
*
|
||||||
* Based on the original code of Epona by Lara.
|
* Based on the original code of Epona by Lara.
|
||||||
* Based on the original code of Services by Andy Church.
|
* Based on the original code of Services by Andy Church.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef ACCESS_H
|
#ifndef ACCESS_H
|
||||||
@@ -74,21 +73,17 @@ class CoreExport AccessProvider : public Service
|
|||||||
/* Represents one entry of an access list on a channel. */
|
/* Represents one entry of an access list on a channel. */
|
||||||
class CoreExport ChanAccess : public Serializable
|
class CoreExport ChanAccess : public Serializable
|
||||||
{
|
{
|
||||||
|
Anope::string mask;
|
||||||
|
/* account this access entry is for, if any */
|
||||||
|
Serialize::Reference<NickCore> nc;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
typedef std::multimap<const ChanAccess *, const ChanAccess *> Set;
|
typedef std::vector<ChanAccess *> Path;
|
||||||
/* shows the 'path' taken to determine if an access entry matches a user
|
|
||||||
* .first are access entries checked
|
|
||||||
* .second are access entries which match
|
|
||||||
*/
|
|
||||||
typedef std::pair<Set, Set> Path;
|
|
||||||
|
|
||||||
/* The provider that created this access entry */
|
/* The provider that created this access entry */
|
||||||
AccessProvider *provider;
|
AccessProvider *provider;
|
||||||
/* Channel this access entry is on */
|
/* Channel this access entry is on */
|
||||||
Serialize::Reference<ChannelInfo> ci;
|
Serialize::Reference<ChannelInfo> ci;
|
||||||
/* account this access entry is for, if any */
|
|
||||||
Serialize::Reference<NickCore> nc;
|
|
||||||
Anope::string mask;
|
|
||||||
Anope::string creator;
|
Anope::string creator;
|
||||||
time_t last_seen;
|
time_t last_seen;
|
||||||
time_t created;
|
time_t created;
|
||||||
@@ -96,15 +91,21 @@ class CoreExport ChanAccess : public Serializable
|
|||||||
ChanAccess(AccessProvider *p);
|
ChanAccess(AccessProvider *p);
|
||||||
virtual ~ChanAccess();
|
virtual ~ChanAccess();
|
||||||
|
|
||||||
|
void SetMask(const Anope::string &mask, ChannelInfo *ci);
|
||||||
|
const Anope::string &Mask() const;
|
||||||
|
NickCore *GetAccount() const;
|
||||||
|
|
||||||
void Serialize(Serialize::Data &data) const anope_override;
|
void Serialize(Serialize::Data &data) const anope_override;
|
||||||
static Serializable* Unserialize(Serializable *obj, Serialize::Data &);
|
static Serializable* Unserialize(Serializable *obj, Serialize::Data &);
|
||||||
|
|
||||||
|
static const unsigned int MAX_DEPTH = 4;
|
||||||
|
|
||||||
/** Check if this access entry matches the given user or account
|
/** Check if this access entry matches the given user or account
|
||||||
* @param u The user
|
* @param u The user
|
||||||
* @param nc The account
|
* @param nc The account
|
||||||
* @param p The path to the access object which matches will be put here
|
* @param next Next channel to check if any
|
||||||
*/
|
*/
|
||||||
virtual bool Matches(const User *u, const NickCore *nc, Path &p) const;
|
virtual bool Matches(const User *u, const NickCore *nc, ChannelInfo* &next) const;
|
||||||
|
|
||||||
/** Check if this access entry has the given privilege.
|
/** Check if this access entry has the given privilege.
|
||||||
* @param name The privilege name
|
* @param name The privilege name
|
||||||
@@ -132,13 +133,13 @@ class CoreExport ChanAccess : public Serializable
|
|||||||
/* A group of access entries. This is used commonly, for example with ChannelInfo::AccessFor,
|
/* A group of access entries. This is used commonly, for example with ChannelInfo::AccessFor,
|
||||||
* to show what access a user has on a channel because users can match multiple access entries.
|
* to show what access a user has on a channel because users can match multiple access entries.
|
||||||
*/
|
*/
|
||||||
class CoreExport AccessGroup : public std::vector<ChanAccess *>
|
class CoreExport AccessGroup
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
/* access entries + paths */
|
||||||
|
std::vector<ChanAccess::Path> paths;
|
||||||
/* Channel these access entries are on */
|
/* Channel these access entries are on */
|
||||||
const ChannelInfo *ci;
|
const ChannelInfo *ci;
|
||||||
/* Path from these entries to other entries that they depend on */
|
|
||||||
ChanAccess::Path path;
|
|
||||||
/* Account these entries affect, if any */
|
/* Account these entries affect, if any */
|
||||||
const NickCore *nc;
|
const NickCore *nc;
|
||||||
/* super_admin always gets all privs. founder is a special case where ci->founder == nc */
|
/* super_admin always gets all privs. founder is a special case where ci->founder == nc */
|
||||||
@@ -166,7 +167,8 @@ class CoreExport AccessGroup : public std::vector<ChanAccess *>
|
|||||||
bool operator<(const AccessGroup &other) const;
|
bool operator<(const AccessGroup &other) const;
|
||||||
bool operator>=(const AccessGroup &other) const;
|
bool operator>=(const AccessGroup &other) const;
|
||||||
bool operator<=(const AccessGroup &other) const;
|
bool operator<=(const AccessGroup &other) const;
|
||||||
|
|
||||||
|
inline bool empty() const { return paths.empty(); }
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -1,13 +1,12 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
*
|
*
|
||||||
* Based on the original code of Epona by Lara.
|
* Based on the original code of Epona by Lara.
|
||||||
* Based on the original code of Services by Andy Church.
|
* Based on the original code of Services by Andy Church.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef ACCOUNT_H
|
#ifndef ACCOUNT_H
|
||||||
@@ -247,6 +246,7 @@ class CoreExport IdentifyRequest
|
|||||||
virtual void OnSuccess() = 0;
|
virtual void OnSuccess() = 0;
|
||||||
virtual void OnFail() = 0;
|
virtual void OnFail() = 0;
|
||||||
|
|
||||||
|
Module *GetOwner() const { return owner; }
|
||||||
const Anope::string &GetAccount() const { return account; }
|
const Anope::string &GetAccount() const { return account; }
|
||||||
const Anope::string &GetPassword() const { return password; }
|
const Anope::string &GetPassword() const { return password; }
|
||||||
|
|
||||||
|
|||||||
+6
-5
@@ -1,13 +1,12 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
*
|
*
|
||||||
* Based on the original code of Epona by Lara.
|
* Based on the original code of Epona by Lara.
|
||||||
* Based on the original code of Services by Andy Church.
|
* Based on the original code of Services by Andy Church.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef ANOPE_H
|
#ifndef ANOPE_H
|
||||||
@@ -337,7 +336,9 @@ namespace Anope
|
|||||||
template<typename T> class multimap : public std::multimap<string, T, ci::less> { };
|
template<typename T> class multimap : public std::multimap<string, T, ci::less> { };
|
||||||
template<typename T> class hash_map : public TR1NS::unordered_map<string, T, hash_ci, compare> { };
|
template<typename T> class hash_map : public TR1NS::unordered_map<string, T, hash_ci, compare> { };
|
||||||
|
|
||||||
|
#ifndef REPRODUCIBLE_BUILD
|
||||||
static const char *const compiled = __TIME__ " " __DATE__;
|
static const char *const compiled = __TIME__ " " __DATE__;
|
||||||
|
#endif
|
||||||
|
|
||||||
/** The time Anope started.
|
/** The time Anope started.
|
||||||
*/
|
*/
|
||||||
@@ -543,7 +544,7 @@ namespace Anope
|
|||||||
extern CoreExport Anope::string Random(size_t len);
|
extern CoreExport Anope::string Random(size_t len);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** sepstream allows for splitting token seperated lists.
|
/** sepstream allows for splitting token separated lists.
|
||||||
* Each successive call to sepstream::GetToken() returns
|
* Each successive call to sepstream::GetToken() returns
|
||||||
* the next token, until none remain, at which point the method returns
|
* the next token, until none remain, at which point the method returns
|
||||||
* an empty string.
|
* an empty string.
|
||||||
@@ -615,7 +616,7 @@ class CoreExport sepstream
|
|||||||
bool StreamEnd();
|
bool StreamEnd();
|
||||||
};
|
};
|
||||||
|
|
||||||
/** A derived form of sepstream, which seperates on commas
|
/** A derived form of sepstream, which separates on commas
|
||||||
*/
|
*/
|
||||||
class commasepstream : public sepstream
|
class commasepstream : public sepstream
|
||||||
{
|
{
|
||||||
@@ -625,7 +626,7 @@ class commasepstream : public sepstream
|
|||||||
commasepstream(const Anope::string &source, bool allowempty = false) : sepstream(source, ',', allowempty) { }
|
commasepstream(const Anope::string &source, bool allowempty = false) : sepstream(source, ',', allowempty) { }
|
||||||
};
|
};
|
||||||
|
|
||||||
/** A derived form of sepstream, which seperates on spaces
|
/** A derived form of sepstream, which separates on spaces
|
||||||
*/
|
*/
|
||||||
class spacesepstream : public sepstream
|
class spacesepstream : public sepstream
|
||||||
{
|
{
|
||||||
|
|||||||
+2
-4
@@ -1,10 +1,9 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* Copyright (C) 2008-2011 Adam <Adam@anope.org>
|
* (C) 2008-2011 Adam <Adam@anope.org>
|
||||||
* Copyright (C) 2008-2014 Anope Team <team@anope.org>
|
* (C) 2008-2019 Anope Team <team@anope.org>
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef BASE_H
|
#ifndef BASE_H
|
||||||
@@ -142,4 +141,3 @@ class Reference : public ReferenceBase
|
|||||||
};
|
};
|
||||||
|
|
||||||
#endif // BASE_H
|
#endif // BASE_H
|
||||||
|
|
||||||
|
|||||||
+2
-3
@@ -1,10 +1,9 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* Copyright (C) 2008-2011 Robin Burchell <w00t@inspircd.org>
|
* (C) 2008-2011 Robin Burchell <w00t@inspircd.org>
|
||||||
* Copyright (C) 2008-2014 Anope Team <team@anope.org>
|
* (C) 2008-2019 Anope Team <team@anope.org>
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef BOTS_H
|
#ifndef BOTS_H
|
||||||
|
|||||||
+13
-7
@@ -1,10 +1,9 @@
|
|||||||
/* Channel support
|
/* Channel support
|
||||||
*
|
*
|
||||||
* (C) 2008-2014 Anope Team
|
* (C) 2008-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef CHANNELS_H
|
#ifndef CHANNELS_H
|
||||||
@@ -32,6 +31,8 @@ struct ChanUserContainer : public Extensible
|
|||||||
|
|
||||||
class CoreExport Channel : public Base, public Extensible
|
class CoreExport Channel : public Base, public Extensible
|
||||||
{
|
{
|
||||||
|
static std::vector<Channel *> deleting;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
typedef std::multimap<Anope::string, Anope::string> ModeList;
|
typedef std::multimap<Anope::string, Anope::string> ModeList;
|
||||||
private:
|
private:
|
||||||
@@ -59,7 +60,7 @@ class CoreExport Channel : public Base, public Extensible
|
|||||||
Anope::string topic;
|
Anope::string topic;
|
||||||
/* Who set the topic */
|
/* Who set the topic */
|
||||||
Anope::string topic_setter;
|
Anope::string topic_setter;
|
||||||
/* The timestamp associated with the topic. Not necessarually anywhere close to Anope::CurTime.
|
/* The timestamp associated with the topic. Not necessarily anywhere close to Anope::CurTime.
|
||||||
* This is the time the topic was *originally set*. When we restore the topic we want to change the TS back
|
* This is the time the topic was *originally set*. When we restore the topic we want to change the TS back
|
||||||
* to this, but we can only do this on certain IRCds.
|
* to this, but we can only do this on certain IRCds.
|
||||||
*/
|
*/
|
||||||
@@ -242,9 +243,9 @@ class CoreExport Channel : public Base, public Extensible
|
|||||||
|
|
||||||
/** Get a list of modes on a channel
|
/** Get a list of modes on a channel
|
||||||
* @param name A mode name to get the list of
|
* @param name A mode name to get the list of
|
||||||
* @return a pair of iterators for the beginning and end of the list
|
* @return a vector of the list mode entries
|
||||||
*/
|
*/
|
||||||
std::pair<ModeList::iterator, ModeList::iterator> GetModeList(const Anope::string &name);
|
std::vector<Anope::string> GetModeList(const Anope::string &name);
|
||||||
|
|
||||||
/** Get a string of the modes set on this channel
|
/** Get a string of the modes set on this channel
|
||||||
* @param complete Include mode parameters
|
* @param complete Include mode parameters
|
||||||
@@ -258,7 +259,7 @@ class CoreExport Channel : public Base, public Extensible
|
|||||||
* @param newtopic The new topic
|
* @param newtopic The new topic
|
||||||
* @param ts The time the new topic is being set
|
* @param ts The time the new topic is being set
|
||||||
*/
|
*/
|
||||||
void ChangeTopicInternal(const Anope::string &user, const Anope::string &newtopic, time_t ts = Anope::CurTime);
|
void ChangeTopicInternal(User *u, const Anope::string &user, const Anope::string &newtopic, time_t ts = Anope::CurTime);
|
||||||
|
|
||||||
/** Update the topic of the channel, and reset it if topiclock etc says to
|
/** Update the topic of the channel, and reset it if topiclock etc says to
|
||||||
* @param user The user setting the topic
|
* @param user The user setting the topic
|
||||||
@@ -276,10 +277,11 @@ class CoreExport Channel : public Base, public Extensible
|
|||||||
|
|
||||||
/** Unbans a user from this channel.
|
/** Unbans a user from this channel.
|
||||||
* @param u The user to unban
|
* @param u The user to unban
|
||||||
|
* @param mode The mode to unban
|
||||||
* @param full Whether or not to match using the user's real host and IP
|
* @param full Whether or not to match using the user's real host and IP
|
||||||
* @return whether or not a ban was removed
|
* @return whether or not a ban was removed
|
||||||
*/
|
*/
|
||||||
bool Unban(User *u, bool full = false);
|
bool Unban(User *u, const Anope::string &mode, bool full = false);
|
||||||
|
|
||||||
/** Check whether a user is permitted to be on this channel
|
/** Check whether a user is permitted to be on this channel
|
||||||
* @param u The user
|
* @param u The user
|
||||||
@@ -299,6 +301,10 @@ class CoreExport Channel : public Base, public Extensible
|
|||||||
* @param ts The time the channel was created
|
* @param ts The time the channel was created
|
||||||
*/
|
*/
|
||||||
static Channel *FindOrCreate(const Anope::string &name, bool &created, time_t ts = Anope::CurTime);
|
static Channel *FindOrCreate(const Anope::string &name, bool &created, time_t ts = Anope::CurTime);
|
||||||
|
|
||||||
|
void QueueForDeletion();
|
||||||
|
|
||||||
|
static void DeleteChannels();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // CHANNELS_H
|
#endif // CHANNELS_H
|
||||||
|
|||||||
+5
-1
@@ -1,6 +1,6 @@
|
|||||||
/* Declarations for command data.
|
/* Declarations for command data.
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
@@ -59,6 +59,8 @@ class CoreExport CommandSource
|
|||||||
public:
|
public:
|
||||||
/* The account executing the command */
|
/* The account executing the command */
|
||||||
Reference<NickCore> nc;
|
Reference<NickCore> nc;
|
||||||
|
/* for web clients */
|
||||||
|
Anope::string ip;
|
||||||
/* Where the reply should go */
|
/* Where the reply should go */
|
||||||
CommandReply *reply;
|
CommandReply *reply;
|
||||||
/* Channel the command was executed on (fantasy) */
|
/* Channel the command was executed on (fantasy) */
|
||||||
@@ -170,6 +172,8 @@ class CoreExport Command : public Service
|
|||||||
*/
|
*/
|
||||||
static void Run(CommandSource &source, const Anope::string &message);
|
static void Run(CommandSource &source, const Anope::string &message);
|
||||||
|
|
||||||
|
void Run(CommandSource &source, const Anope::string &, const CommandInfo &, std::vector<Anope::string> ¶ms);
|
||||||
|
|
||||||
/** Looks up a command name from the service name.
|
/** Looks up a command name from the service name.
|
||||||
* Note that if the same command exists multiple places this will return the first one encountered
|
* Note that if the same command exists multiple places this will return the first one encountered
|
||||||
* @param command_service The command service to lookup, eg, nickserv/register
|
* @param command_service The command service to lookup, eg, nickserv/register
|
||||||
|
|||||||
+14
-10
@@ -1,13 +1,12 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
*
|
*
|
||||||
* Based on the original code of Epona by Lara.
|
* Based on the original code of Epona by Lara.
|
||||||
* Based on the original code of Services by Andy Church.
|
* Based on the original code of Services by Andy Church.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef CONFIG_H
|
#ifndef CONFIG_H
|
||||||
@@ -51,14 +50,13 @@ namespace Configuration
|
|||||||
template<typename T> T Get(const Anope::string &tag, const Anope::string &def) const
|
template<typename T> T Get(const Anope::string &tag, const Anope::string &def) const
|
||||||
{
|
{
|
||||||
const Anope::string &value = this->Get<const Anope::string>(tag, def);
|
const Anope::string &value = this->Get<const Anope::string>(tag, def);
|
||||||
try
|
if (!value.empty())
|
||||||
{
|
try
|
||||||
return convertTo<T>(value);
|
{
|
||||||
}
|
return convertTo<T>(value);
|
||||||
catch (const ConvertException &)
|
}
|
||||||
{
|
catch (const ConvertException &) { }
|
||||||
return T();
|
return T();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Set(const Anope::string &tag, const Anope::string &value);
|
bool Set(const Anope::string &tag, const Anope::string &value);
|
||||||
@@ -80,6 +78,7 @@ namespace Configuration
|
|||||||
File(const Anope::string &, bool);
|
File(const Anope::string &, bool);
|
||||||
~File();
|
~File();
|
||||||
const Anope::string &GetName() const;
|
const Anope::string &GetName() const;
|
||||||
|
Anope::string GetPath() const;
|
||||||
|
|
||||||
bool IsOpen() const;
|
bool IsOpen() const;
|
||||||
bool Open();
|
bool Open();
|
||||||
@@ -104,6 +103,8 @@ namespace Configuration
|
|||||||
time_t TimeoutCheck;
|
time_t TimeoutCheck;
|
||||||
/* options:usestrictprivmsg */
|
/* options:usestrictprivmsg */
|
||||||
bool UseStrictPrivmsg;
|
bool UseStrictPrivmsg;
|
||||||
|
/* networkinfo:nickchars */
|
||||||
|
Anope::string NickChars;
|
||||||
|
|
||||||
/* either "/msg " or "/" */
|
/* either "/msg " or "/" */
|
||||||
Anope::string StrictPrivmsg;
|
Anope::string StrictPrivmsg;
|
||||||
@@ -132,11 +133,14 @@ namespace Configuration
|
|||||||
~Conf();
|
~Conf();
|
||||||
|
|
||||||
void LoadConf(File &file);
|
void LoadConf(File &file);
|
||||||
|
void Post(Conf *old);
|
||||||
|
|
||||||
Block *GetModule(Module *);
|
Block *GetModule(Module *);
|
||||||
Block *GetModule(const Anope::string &name);
|
Block *GetModule(const Anope::string &name);
|
||||||
|
|
||||||
BotInfo *GetClient(const Anope::string &name);
|
BotInfo *GetClient(const Anope::string &name);
|
||||||
|
|
||||||
|
Block *GetCommand(CommandSource &);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Uplink
|
struct Uplink
|
||||||
|
|||||||
+1
-4
@@ -1,16 +1,14 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
*
|
*
|
||||||
* Based on the original code of Epona by Lara.
|
* Based on the original code of Epona by Lara.
|
||||||
* Based on the original code of Services by Andy Church.
|
* Based on the original code of Services by Andy Church.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
class AccessGroup;
|
class AccessGroup;
|
||||||
class AutoKick;
|
class AutoKick;
|
||||||
class BotInfo;
|
class BotInfo;
|
||||||
@@ -53,4 +51,3 @@ struct MemoInfo;
|
|||||||
struct ModeLock;
|
struct ModeLock;
|
||||||
struct Oper;
|
struct Oper;
|
||||||
namespace SASL { struct Message; }
|
namespace SASL { struct Message; }
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef EXTENSIBLE_H
|
#ifndef EXTENSIBLE_H
|
||||||
@@ -40,6 +39,8 @@ class CoreExport Extensible
|
|||||||
|
|
||||||
virtual ~Extensible();
|
virtual ~Extensible();
|
||||||
|
|
||||||
|
void UnsetExtensibles();
|
||||||
|
|
||||||
template<typename T> T* GetExt(const Anope::string &name) const;
|
template<typename T> T* GetExt(const Anope::string &name) const;
|
||||||
bool HasExt(const Anope::string &name) const;
|
bool HasExt(const Anope::string &name) const;
|
||||||
|
|
||||||
@@ -176,6 +177,8 @@ class SerializableExtensibleItem : public PrimitiveExtensibleItem<T>
|
|||||||
T t;
|
T t;
|
||||||
if (data[this->name] >> t)
|
if (data[this->name] >> t)
|
||||||
this->Set(e, t);
|
this->Set(e, t);
|
||||||
|
else
|
||||||
|
this->Unset(e);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -196,6 +199,8 @@ class SerializableExtensibleItem<bool> : public PrimitiveExtensibleItem<bool>
|
|||||||
data[this->name] >> b;
|
data[this->name] >> b;
|
||||||
if (b)
|
if (b)
|
||||||
this->Set(e);
|
this->Set(e);
|
||||||
|
else
|
||||||
|
this->Unset(e);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+3
-4
@@ -1,10 +1,9 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* Copyright (C) 2002-2011 InspIRCd Development Team
|
* (C) 2002-2011 InspIRCd Development Team
|
||||||
* Copyright (C) 2009-2014 Anope Team <team@anope.org>
|
* (C) 2009-2019 Anope Team <team@anope.org>
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef HASHCOMP_H
|
#ifndef HASHCOMP_H
|
||||||
@@ -123,7 +122,7 @@ namespace ci
|
|||||||
* @param s1 String to find in
|
* @param s1 String to find in
|
||||||
* @param n Position to search up to
|
* @param n Position to search up to
|
||||||
* @param c Character to search for
|
* @param c Character to search for
|
||||||
* @return Pointer to the first occurance of c in s1
|
* @return Pointer to the first occurrence of c in s1
|
||||||
*/
|
*/
|
||||||
static const char *find(const char *s1, int n, char c);
|
static const char *find(const char *s1, int n, char c);
|
||||||
};
|
};
|
||||||
|
|||||||
+3
-5
@@ -1,10 +1,9 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2008-2014 Anope Team
|
* (C) 2008-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "anope.h"
|
#include "anope.h"
|
||||||
@@ -74,7 +73,7 @@ namespace Language
|
|||||||
#define MORE_OBSCURE_PASSWORD _("Please try again with a more obscure password. Passwords should be at least\n" \
|
#define MORE_OBSCURE_PASSWORD _("Please try again with a more obscure password. Passwords should be at least\n" \
|
||||||
"five characters long, should not be something easily guessed\n" \
|
"five characters long, should not be something easily guessed\n" \
|
||||||
"(e.g. your real name or your nick), and cannot contain the space or tab characters.")
|
"(e.g. your real name or your nick), and cannot contain the space or tab characters.")
|
||||||
#define PASSWORD_TOO_LONG _("Your password is too long. Please try again with a shorter password.")
|
#define PASSWORD_TOO_LONG _("Your password is too long. It must not exceed %u characters.")
|
||||||
#define NICK_NOT_REGISTERED _("Your nick isn't registered.")
|
#define NICK_NOT_REGISTERED _("Your nick isn't registered.")
|
||||||
#define NICK_X_NOT_REGISTERED _("Nick \002%s\002 isn't registered.")
|
#define NICK_X_NOT_REGISTERED _("Nick \002%s\002 isn't registered.")
|
||||||
#define NICK_X_NOT_IN_USE _("Nick \002%s\002 isn't currently in use.")
|
#define NICK_X_NOT_IN_USE _("Nick \002%s\002 isn't currently in use.")
|
||||||
@@ -107,7 +106,7 @@ namespace Language
|
|||||||
#define CHAN_SETTING_UNSET _("%s for %s unset.")
|
#define CHAN_SETTING_UNSET _("%s for %s unset.")
|
||||||
#define CHAN_ACCESS_LEVEL_RANGE _("Access level must be between %d and %d inclusive.")
|
#define CHAN_ACCESS_LEVEL_RANGE _("Access level must be between %d and %d inclusive.")
|
||||||
#define CHAN_INFO_HEADER _("Information for channel \002%s\002:")
|
#define CHAN_INFO_HEADER _("Information for channel \002%s\002:")
|
||||||
#define CHAN_EXCEPTED _("\002%s\002 matches an except on %s and cannot be banned until the except have been removed.")
|
#define CHAN_EXCEPTED _("\002%s\002 matches an except on %s and cannot be banned until the except has been removed.")
|
||||||
#define MEMO_NEW_X_MEMO_ARRIVED _("There is a new memo on channel %s.\n" \
|
#define MEMO_NEW_X_MEMO_ARRIVED _("There is a new memo on channel %s.\n" \
|
||||||
"Type \002%s%s READ %s %d\002 to read it.")
|
"Type \002%s%s READ %s %d\002 to read it.")
|
||||||
#define MEMO_NEW_MEMO_ARRIVED _("You have a new memo from %s.\n" \
|
#define MEMO_NEW_MEMO_ARRIVED _("You have a new memo from %s.\n" \
|
||||||
@@ -126,4 +125,3 @@ namespace Language
|
|||||||
#define HOST_SET_IDENTTOOLONG _("Error! The vHost ident is too long, please use an ident shorter than %d characters.")
|
#define HOST_SET_IDENTTOOLONG _("Error! The vHost ident is too long, please use an ident shorter than %d characters.")
|
||||||
#define HOST_NOT_ASSIGNED _("Please contact an Operator to get a vHost assigned to this nick.")
|
#define HOST_NOT_ASSIGNED _("Please contact an Operator to get a vHost assigned to this nick.")
|
||||||
#define HOST_NO_VIDENT _("Your IRCd does not support vIdent's, if this is incorrect, please report this as a possible bug")
|
#define HOST_NO_VIDENT _("Your IRCd does not support vIdent's, if this is incorrect, please report this as a possible bug")
|
||||||
|
|
||||||
|
|||||||
+2
-4
@@ -1,13 +1,12 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
*
|
*
|
||||||
* Based on the original code of Epona by Lara.
|
* Based on the original code of Epona by Lara.
|
||||||
* Based on the original code of Services by Andy Church.
|
* Based on the original code of Services by Andy Church.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef LISTS_H
|
#ifndef LISTS_H
|
||||||
@@ -52,7 +51,7 @@ class CoreExport NumberList
|
|||||||
virtual void HandleNumber(unsigned number);
|
virtual void HandleNumber(unsigned number);
|
||||||
|
|
||||||
/** Called when there is an error with the numbered list
|
/** Called when there is an error with the numbered list
|
||||||
* Return false to immediatly stop processing the list and return
|
* Return false to immediately stop processing the list and return
|
||||||
* This is all done before we start calling HandleNumber, so no numbers will have been processed yet
|
* This is all done before we start calling HandleNumber, so no numbers will have been processed yet
|
||||||
* @param list The list
|
* @param list The list
|
||||||
* @return false to stop processing
|
* @return false to stop processing
|
||||||
@@ -93,4 +92,3 @@ class CoreExport InfoFormatter
|
|||||||
};
|
};
|
||||||
|
|
||||||
#endif // LISTS_H
|
#endif // LISTS_H
|
||||||
|
|
||||||
|
|||||||
+6
-3
@@ -1,13 +1,12 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
*
|
*
|
||||||
* Based on the original code of Epona by Lara.
|
* Based on the original code of Epona by Lara.
|
||||||
* Based on the original code of Services by Andy Church.
|
* Based on the original code of Services by Andy Church.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef LOGGER_H
|
#ifndef LOGGER_H
|
||||||
@@ -96,6 +95,11 @@ class CoreExport Log
|
|||||||
|
|
||||||
~Log();
|
~Log();
|
||||||
|
|
||||||
|
private:
|
||||||
|
Anope::string FormatSource() const;
|
||||||
|
Anope::string FormatCommand() const;
|
||||||
|
|
||||||
|
public:
|
||||||
Anope::string BuildPrefix() const;
|
Anope::string BuildPrefix() const;
|
||||||
|
|
||||||
template<typename T> Log &operator<<(T val)
|
template<typename T> Log &operator<<(T val)
|
||||||
@@ -138,4 +142,3 @@ class CoreExport LogInfo
|
|||||||
};
|
};
|
||||||
|
|
||||||
#endif // LOGGER_H
|
#endif // LOGGER_H
|
||||||
|
|
||||||
|
|||||||
+1
-3
@@ -1,14 +1,12 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
*
|
*
|
||||||
* Based on the original code of Epona by Lara.
|
* Based on the original code of Epona by Lara.
|
||||||
* Based on the original code of Services by Andy Church.
|
* Based on the original code of Services by Andy Church.
|
||||||
*
|
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAIL_H
|
#ifndef MAIL_H
|
||||||
|
|||||||
+2
-2
@@ -1,13 +1,12 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
*
|
*
|
||||||
* Based on the original code of Epona by Lara.
|
* Based on the original code of Epona by Lara.
|
||||||
* Based on the original code of Services by Andy Church.
|
* Based on the original code of Services by Andy Church.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MEMO_H
|
#ifndef MEMO_H
|
||||||
@@ -19,6 +18,7 @@
|
|||||||
class CoreExport Memo : public Serializable
|
class CoreExport Memo : public Serializable
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
MemoInfo *mi;
|
||||||
bool unread;
|
bool unread;
|
||||||
bool receipt;
|
bool receipt;
|
||||||
Memo();
|
Memo();
|
||||||
|
|||||||
+3
-5
@@ -1,13 +1,12 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
*
|
*
|
||||||
* Based on the original code of Epona by Lara.
|
* Based on the original code of Epona by Lara.
|
||||||
* Based on the original code of Services by Andy Church.
|
* Based on the original code of Services by Andy Church.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "protocol.h"
|
#include "protocol.h"
|
||||||
@@ -82,7 +81,7 @@ namespace Message
|
|||||||
|
|
||||||
struct CoreExport Mode : IRCDMessage
|
struct CoreExport Mode : IRCDMessage
|
||||||
{
|
{
|
||||||
Mode(Module *creator, const Anope::string &mname = "MODE") : IRCDMessage(creator, mname, 2) { }
|
Mode(Module *creator, const Anope::string &mname = "MODE") : IRCDMessage(creator, mname, 2) { SetFlag(IRCDMESSAGE_SOFT_LIMIT); }
|
||||||
|
|
||||||
void Run(MessageSource &source, const std::vector<Anope::string> ¶ms) anope_override;
|
void Run(MessageSource &source, const std::vector<Anope::string> ¶ms) anope_override;
|
||||||
};
|
};
|
||||||
@@ -131,7 +130,7 @@ namespace Message
|
|||||||
|
|
||||||
struct CoreExport SQuit : IRCDMessage
|
struct CoreExport SQuit : IRCDMessage
|
||||||
{
|
{
|
||||||
SQuit(Module *creator, const Anope::string &mname = "SQUIT") : IRCDMessage(creator, mname, 2) { SetFlag(IRCDMESSAGE_REQUIRE_SERVER); }
|
SQuit(Module *creator, const Anope::string &mname = "SQUIT") : IRCDMessage(creator, mname, 2) { }
|
||||||
|
|
||||||
void Run(MessageSource &source, const std::vector<Anope::string> ¶ms) anope_override;
|
void Run(MessageSource &source, const std::vector<Anope::string> ¶ms) anope_override;
|
||||||
};
|
};
|
||||||
@@ -172,4 +171,3 @@ namespace Message
|
|||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Message
|
} // namespace Message
|
||||||
|
|
||||||
|
|||||||
+49
-15
@@ -1,7 +1,7 @@
|
|||||||
/* Mode support
|
/* Mode support
|
||||||
*
|
*
|
||||||
* Copyright (C) 2008-2011 Adam <Adam@anope.org>
|
* (C) 2008-2011 Adam <Adam@anope.org>
|
||||||
* Copyright (C) 2008-2014 Anope Team <team@anope.org>
|
* (C) 2008-2019 Anope Team <team@anope.org>
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
*/
|
*/
|
||||||
@@ -88,7 +88,7 @@ class CoreExport UserModeParam : public UserMode
|
|||||||
* @param value The param
|
* @param value The param
|
||||||
* @return true or false
|
* @return true or false
|
||||||
*/
|
*/
|
||||||
virtual bool IsValid(const Anope::string &value) const { return true; }
|
virtual bool IsValid(Anope::string &value) const { return true; }
|
||||||
};
|
};
|
||||||
|
|
||||||
/** This class is a channel mode, all channel modes use this/inherit from this
|
/** This class is a channel mode, all channel modes use this/inherit from this
|
||||||
@@ -96,6 +96,9 @@ class CoreExport UserModeParam : public UserMode
|
|||||||
class CoreExport ChannelMode : public Mode
|
class CoreExport ChannelMode : public Mode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
/* channel modes that can posssibly unwrap this mode */
|
||||||
|
std::vector<ChannelMode *> listeners;
|
||||||
|
|
||||||
/** constructor
|
/** constructor
|
||||||
* @param name The mode name
|
* @param name The mode name
|
||||||
* @param mc The mode char
|
* @param mc The mode char
|
||||||
@@ -103,6 +106,20 @@ class CoreExport ChannelMode : public Mode
|
|||||||
ChannelMode(const Anope::string &name, char mc);
|
ChannelMode(const Anope::string &name, char mc);
|
||||||
|
|
||||||
bool CanSet(User *u) const anope_override;
|
bool CanSet(User *u) const anope_override;
|
||||||
|
|
||||||
|
virtual void Check() { }
|
||||||
|
|
||||||
|
/** 'wrap' this channel mode and param to the underlying mode and param
|
||||||
|
*/
|
||||||
|
virtual ChannelMode *Wrap(Anope::string ¶m);
|
||||||
|
|
||||||
|
/** 'unwrap' this mode to our internal representation
|
||||||
|
*/
|
||||||
|
ChannelMode *Unwrap(Anope::string ¶m);
|
||||||
|
|
||||||
|
/** called when a mode is being unwrapped, and is asking us if we can unwrap it
|
||||||
|
*/
|
||||||
|
virtual ChannelMode *Unwrap(ChannelMode *, Anope::string ¶m);
|
||||||
};
|
};
|
||||||
|
|
||||||
/** This is a mode for lists, eg b/e/I. These modes should inherit from this
|
/** This is a mode for lists, eg b/e/I. These modes should inherit from this
|
||||||
@@ -120,7 +137,7 @@ class CoreExport ChannelModeList : public ChannelMode
|
|||||||
* @param mask The mask
|
* @param mask The mask
|
||||||
* @return true for yes, false for no
|
* @return true for yes, false for no
|
||||||
*/
|
*/
|
||||||
virtual bool IsValid(const Anope::string &mask) const { return true; }
|
virtual bool IsValid(Anope::string &mask) const;
|
||||||
|
|
||||||
/** Checks if mask affects user
|
/** Checks if mask affects user
|
||||||
* Should only be used for extbans or other weird ircd-specific things.
|
* Should only be used for extbans or other weird ircd-specific things.
|
||||||
@@ -162,7 +179,7 @@ class CoreExport ChannelModeParam : public ChannelMode
|
|||||||
* @param value The param
|
* @param value The param
|
||||||
* @return true for yes, false for no
|
* @return true for yes, false for no
|
||||||
*/
|
*/
|
||||||
virtual bool IsValid(const Anope::string &value) const { return true; }
|
virtual bool IsValid(Anope::string &value) const { return true; }
|
||||||
};
|
};
|
||||||
|
|
||||||
/** This is a mode that is a channel status, eg +v/h/o/a/q.
|
/** This is a mode that is a channel status, eg +v/h/o/a/q.
|
||||||
@@ -175,7 +192,7 @@ class CoreExport ChannelModeStatus : public ChannelMode
|
|||||||
/* The "level" of the mode, used to compare with other modes.
|
/* The "level" of the mode, used to compare with other modes.
|
||||||
* Used so we know op > halfop > voice etc.
|
* Used so we know op > halfop > voice etc.
|
||||||
*/
|
*/
|
||||||
short level;
|
unsigned level;
|
||||||
|
|
||||||
/** constructor
|
/** constructor
|
||||||
* @param name The mode name
|
* @param name The mode name
|
||||||
@@ -183,7 +200,28 @@ class CoreExport ChannelModeStatus : public ChannelMode
|
|||||||
* @param msymbol The symbol for the mode, eg @ %
|
* @param msymbol The symbol for the mode, eg @ %
|
||||||
* @param mlevel A level for the mode, which is usually determined by the PREFIX capab
|
* @param mlevel A level for the mode, which is usually determined by the PREFIX capab
|
||||||
*/
|
*/
|
||||||
ChannelModeStatus(const Anope::string &name, char mc, char msymbol, short mlevel);
|
ChannelModeStatus(const Anope::string &name, char mc, char msymbol, unsigned mlevel);
|
||||||
|
};
|
||||||
|
|
||||||
|
/** A virtual mode. This mode doesn't natively exist on the IRCd (like extbans),
|
||||||
|
* but we still have a representation for it.
|
||||||
|
*/
|
||||||
|
template<typename T>
|
||||||
|
class CoreExport ChannelModeVirtual : public T
|
||||||
|
{
|
||||||
|
Anope::string base;
|
||||||
|
ChannelMode *basech;
|
||||||
|
|
||||||
|
public:
|
||||||
|
ChannelModeVirtual(const Anope::string &mname, const Anope::string &basename);
|
||||||
|
|
||||||
|
~ChannelModeVirtual();
|
||||||
|
|
||||||
|
void Check() anope_override;
|
||||||
|
|
||||||
|
ChannelMode *Wrap(Anope::string ¶m) anope_override;
|
||||||
|
|
||||||
|
ChannelMode *Unwrap(ChannelMode *cm, Anope::string ¶m) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* The status a user has on a channel (+v, +h, +o) etc */
|
/* The status a user has on a channel (+v, +h, +o) etc */
|
||||||
@@ -225,7 +263,7 @@ class CoreExport ChannelModeKey : public ChannelModeParam
|
|||||||
public:
|
public:
|
||||||
ChannelModeKey(char mc) : ChannelModeParam("KEY", mc) { }
|
ChannelModeKey(char mc) : ChannelModeParam("KEY", mc) { }
|
||||||
|
|
||||||
bool IsValid(const Anope::string &value) const anope_override;
|
bool IsValid(Anope::string &value) const anope_override;
|
||||||
};
|
};
|
||||||
|
|
||||||
/** This class is used for oper only channel modes
|
/** This class is used for oper only channel modes
|
||||||
@@ -257,13 +295,6 @@ class CoreExport ChannelModeNoone : public ChannelMode
|
|||||||
*/
|
*/
|
||||||
class CoreExport ModeManager
|
class CoreExport ModeManager
|
||||||
{
|
{
|
||||||
protected:
|
|
||||||
/* Array of all modes Anope knows about. Modes are in this array at position
|
|
||||||
* modechar. Additionally, status modes are in this array (again) at statuschar.
|
|
||||||
*/
|
|
||||||
static std::vector<ChannelMode *> ChannelModes;
|
|
||||||
static std::vector<UserMode *> UserModes;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
/* Number of generic channel and user modes we are tracking */
|
/* Number of generic channel and user modes we are tracking */
|
||||||
@@ -364,6 +395,7 @@ class CoreExport Entry
|
|||||||
Anope::string mask;
|
Anope::string mask;
|
||||||
public:
|
public:
|
||||||
unsigned short cidr_len;
|
unsigned short cidr_len;
|
||||||
|
int family;
|
||||||
Anope::string nick, user, host, real;
|
Anope::string nick, user, host, real;
|
||||||
|
|
||||||
/** Constructor
|
/** Constructor
|
||||||
@@ -377,6 +409,8 @@ class CoreExport Entry
|
|||||||
*/
|
*/
|
||||||
const Anope::string GetMask() const;
|
const Anope::string GetMask() const;
|
||||||
|
|
||||||
|
const Anope::string GetNUHMask() const;
|
||||||
|
|
||||||
/** Check if this entry matches a user
|
/** Check if this entry matches a user
|
||||||
* @param u The user
|
* @param u The user
|
||||||
* @param full True to match against a users real host and IP
|
* @param full True to match against a users real host and IP
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
|
|||||||
+50
-24
@@ -1,13 +1,12 @@
|
|||||||
/* Modular support
|
/* Modular support
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
*
|
*
|
||||||
* Based on the original code of Epona by Lara.
|
* Based on the original code of Epona by Lara.
|
||||||
* Based on the original code of Services by Andy Church.
|
* Based on the original code of Services by Andy Church.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "serialize.h"
|
#include "serialize.h"
|
||||||
@@ -20,6 +19,7 @@
|
|||||||
#include "timers.h"
|
#include "timers.h"
|
||||||
#include "logger.h"
|
#include "logger.h"
|
||||||
#include "extensible.h"
|
#include "extensible.h"
|
||||||
|
#include "version.h"
|
||||||
|
|
||||||
/** This definition is used as shorthand for the various classes
|
/** This definition is used as shorthand for the various classes
|
||||||
* and functions needed to make a module loadable by the OS.
|
* and functions needed to make a module loadable by the OS.
|
||||||
@@ -40,6 +40,14 @@
|
|||||||
extern "C" void AnopeFini(x *m) \
|
extern "C" void AnopeFini(x *m) \
|
||||||
{ \
|
{ \
|
||||||
delete m; \
|
delete m; \
|
||||||
|
} \
|
||||||
|
extern "C" DllExport ModuleVersionC AnopeVersion() \
|
||||||
|
{ \
|
||||||
|
ModuleVersionC ver; \
|
||||||
|
ver.version_major = VERSION_MAJOR; \
|
||||||
|
ver.version_minor = VERSION_MINOR; \
|
||||||
|
ver.version_patch = VERSION_PATCH; \
|
||||||
|
return ver; \
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
# define MODULE_INIT(x) \
|
# define MODULE_INIT(x) \
|
||||||
@@ -50,6 +58,14 @@
|
|||||||
extern "C" DllExport void AnopeFini(x *m) \
|
extern "C" DllExport void AnopeFini(x *m) \
|
||||||
{ \
|
{ \
|
||||||
delete m; \
|
delete m; \
|
||||||
|
} \
|
||||||
|
extern "C" DllExport ModuleVersionC AnopeVersion() \
|
||||||
|
{ \
|
||||||
|
ModuleVersionC ver; \
|
||||||
|
ver.version_major = VERSION_MAJOR; \
|
||||||
|
ver.version_minor = VERSION_MINOR; \
|
||||||
|
ver.version_patch = VERSION_PATCH; \
|
||||||
|
return ver; \
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -173,6 +189,11 @@ enum
|
|||||||
};
|
};
|
||||||
typedef unsigned short ModType;
|
typedef unsigned short ModType;
|
||||||
|
|
||||||
|
struct ModuleVersionC
|
||||||
|
{
|
||||||
|
int version_major, version_minor, version_patch;
|
||||||
|
};
|
||||||
|
|
||||||
/** Returned by Module::GetVersion, used to see what version of Anope
|
/** Returned by Module::GetVersion, used to see what version of Anope
|
||||||
* a module is compiled against.
|
* a module is compiled against.
|
||||||
*/
|
*/
|
||||||
@@ -184,12 +205,7 @@ class ModuleVersion
|
|||||||
int version_patch;
|
int version_patch;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/** Constructor
|
ModuleVersion(const ModuleVersionC &);
|
||||||
* @param major The major version number
|
|
||||||
* @param minor The minor version number
|
|
||||||
* @param patch The patch version number
|
|
||||||
*/
|
|
||||||
ModuleVersion(int major, int minor, int patch);
|
|
||||||
|
|
||||||
/** Get the major version of Anope this was built against
|
/** Get the major version of Anope this was built against
|
||||||
* @return The major version
|
* @return The major version
|
||||||
@@ -279,16 +295,17 @@ class CoreExport Module : public Extensible
|
|||||||
*/
|
*/
|
||||||
void SetAuthor(const Anope::string &author);
|
void SetAuthor(const Anope::string &author);
|
||||||
|
|
||||||
/** Get the version of Anope this module was
|
virtual void Prioritize();
|
||||||
* compiled against
|
|
||||||
* @return The version
|
|
||||||
*/
|
|
||||||
ModuleVersion GetVersion() const;
|
|
||||||
|
|
||||||
/* Everything below here are events. Modules must ModuleManager::Attach to these events
|
/* Everything below here are events. Modules must ModuleManager::Attach to these events
|
||||||
* before they will be called.
|
* before they will be called.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** Called on startup after database load, but before
|
||||||
|
* connecting to the uplink.
|
||||||
|
*/
|
||||||
|
virtual void OnPostInit() { throw NotImplementedException(); }
|
||||||
|
|
||||||
/** Called before a user has been kicked from a channel.
|
/** Called before a user has been kicked from a channel.
|
||||||
* @param source The kicker
|
* @param source The kicker
|
||||||
* @param cu The user, channel, and status of the user being kicked
|
* @param cu The user, channel, and status of the user being kicked
|
||||||
@@ -472,11 +489,12 @@ class CoreExport Module : public Extensible
|
|||||||
virtual void OnJoinChannel(User *u, Channel *c) { throw NotImplementedException(); }
|
virtual void OnJoinChannel(User *u, Channel *c) { throw NotImplementedException(); }
|
||||||
|
|
||||||
/** Called when a new topic is set
|
/** Called when a new topic is set
|
||||||
|
* @param source The user changing the topic, if any
|
||||||
* @param c The channel
|
* @param c The channel
|
||||||
* @param setter The user who set the new topic
|
* @param setter The user who set the new topic, if there is no source
|
||||||
* @param topic The new topic
|
* @param topic The new topic
|
||||||
*/
|
*/
|
||||||
virtual void OnTopicUpdated(Channel *c, const Anope::string &user, const Anope::string &topic) { throw NotImplementedException(); }
|
virtual void OnTopicUpdated(User *source, Channel *c, const Anope::string &user, const Anope::string &topic) { throw NotImplementedException(); }
|
||||||
|
|
||||||
/** Called before a channel expires
|
/** Called before a channel expires
|
||||||
* @param ci The channel
|
* @param ci The channel
|
||||||
@@ -719,11 +737,6 @@ class CoreExport Module : public Extensible
|
|||||||
*/
|
*/
|
||||||
virtual void OnNickDrop(CommandSource &source, NickAlias *na) { throw NotImplementedException(); }
|
virtual void OnNickDrop(CommandSource &source, NickAlias *na) { throw NotImplementedException(); }
|
||||||
|
|
||||||
/** Called when a nick is forbidden
|
|
||||||
* @param na The nick alias of the forbidden nick
|
|
||||||
*/
|
|
||||||
virtual void OnNickForbidden(NickAlias *na) { throw NotImplementedException(); }
|
|
||||||
|
|
||||||
/** Called when a user groups their nick
|
/** Called when a user groups their nick
|
||||||
* @param u The user grouping
|
* @param u The user grouping
|
||||||
* @param target The target they're grouping to
|
* @param target The target they're grouping to
|
||||||
@@ -748,8 +761,15 @@ class CoreExport Module : public Extensible
|
|||||||
/** Called when a nick is registered
|
/** Called when a nick is registered
|
||||||
* @param user The user registering the nick, of any
|
* @param user The user registering the nick, of any
|
||||||
* @param The nick
|
* @param The nick
|
||||||
|
* @param pass The password of the newly registered nick
|
||||||
*/
|
*/
|
||||||
virtual void OnNickRegister(User *user, NickAlias *na) { throw NotImplementedException(); }
|
virtual void OnNickRegister(User *user, NickAlias *na, const Anope::string &pass) { throw NotImplementedException(); }
|
||||||
|
|
||||||
|
/** Called when a nick is confirmed. This will never be called if registration confirmation is not enabled.
|
||||||
|
* @param user The user confirming the nick
|
||||||
|
* @param The account being confirmed
|
||||||
|
*/
|
||||||
|
virtual void OnNickConfirm(User *user, NickCore *) { throw NotImplementedException(); }
|
||||||
|
|
||||||
/** Called when a nick is suspended
|
/** Called when a nick is suspended
|
||||||
* @param na The nick alias
|
* @param na The nick alias
|
||||||
@@ -1000,7 +1020,7 @@ class CoreExport Module : public Extensible
|
|||||||
*/
|
*/
|
||||||
virtual void OnLogMessage(LogInfo *li, const Log *l, const Anope::string &msg) { throw NotImplementedException(); }
|
virtual void OnLogMessage(LogInfo *li, const Log *l, const Anope::string &msg) { throw NotImplementedException(); }
|
||||||
|
|
||||||
/** Called when a DNS request (question) is recieved.
|
/** Called when a DNS request (question) is received.
|
||||||
* @param req The dns request
|
* @param req The dns request
|
||||||
* @param reply The reply that will be sent
|
* @param reply The reply that will be sent
|
||||||
*/
|
*/
|
||||||
@@ -1084,6 +1104,7 @@ class CoreExport Module : public Extensible
|
|||||||
|
|
||||||
enum Implementation
|
enum Implementation
|
||||||
{
|
{
|
||||||
|
I_OnPostInit,
|
||||||
I_OnPreUserKicked, I_OnUserKicked, I_OnReload, I_OnPreBotAssign, I_OnBotAssign, I_OnBotUnAssign, I_OnUserConnect,
|
I_OnPreUserKicked, I_OnUserKicked, I_OnReload, I_OnPreBotAssign, I_OnBotAssign, I_OnBotUnAssign, I_OnUserConnect,
|
||||||
I_OnNewServer, I_OnUserNickChange, I_OnPreHelp, I_OnPostHelp, I_OnPreCommand, I_OnPostCommand, I_OnSaveDatabase,
|
I_OnNewServer, I_OnUserNickChange, I_OnPreHelp, I_OnPostHelp, I_OnPreCommand, I_OnPostCommand, I_OnSaveDatabase,
|
||||||
I_OnLoadDatabase, I_OnEncrypt, I_OnDecrypt, I_OnBotFantasy, I_OnBotNoFantasyAccess, I_OnBotBan, I_OnBadWordAdd,
|
I_OnLoadDatabase, I_OnEncrypt, I_OnDecrypt, I_OnBotFantasy, I_OnBotNoFantasyAccess, I_OnBotBan, I_OnBadWordAdd,
|
||||||
@@ -1094,8 +1115,8 @@ enum Implementation
|
|||||||
I_OnPreUserLogoff, I_OnPostUserLogoff, I_OnBotCreate, I_OnBotChange, I_OnBotDelete, I_OnAccessDel, I_OnAccessAdd,
|
I_OnPreUserLogoff, I_OnPostUserLogoff, I_OnBotCreate, I_OnBotChange, I_OnBotDelete, I_OnAccessDel, I_OnAccessAdd,
|
||||||
I_OnAccessClear, I_OnLevelChange, I_OnChanDrop, I_OnChanRegistered, I_OnChanSuspend, I_OnChanUnsuspend,
|
I_OnAccessClear, I_OnLevelChange, I_OnChanDrop, I_OnChanRegistered, I_OnChanSuspend, I_OnChanUnsuspend,
|
||||||
I_OnCreateChan, I_OnDelChan, I_OnChannelCreate, I_OnChannelDelete, I_OnAkickAdd, I_OnAkickDel, I_OnCheckKick,
|
I_OnCreateChan, I_OnDelChan, I_OnChannelCreate, I_OnChannelDelete, I_OnAkickAdd, I_OnAkickDel, I_OnCheckKick,
|
||||||
I_OnChanInfo, I_OnCheckPriv, I_OnGroupCheckPriv, I_OnNickDrop, I_OnNickForbidden, I_OnNickGroup, I_OnNickIdentify,
|
I_OnChanInfo, I_OnCheckPriv, I_OnGroupCheckPriv, I_OnNickDrop, I_OnNickGroup, I_OnNickIdentify,
|
||||||
I_OnUserLogin, I_OnNickLogout, I_OnNickRegister, I_OnNickSuspend, I_OnNickUnsuspended, I_OnDelNick, I_OnNickCoreCreate,
|
I_OnUserLogin, I_OnNickLogout, I_OnNickRegister, I_OnNickConfirm, I_OnNickSuspend, I_OnNickUnsuspended, I_OnDelNick, I_OnNickCoreCreate,
|
||||||
I_OnDelCore, I_OnChangeCoreDisplay, I_OnNickClearAccess, I_OnNickAddAccess, I_OnNickEraseAccess, I_OnNickClearCert,
|
I_OnDelCore, I_OnChangeCoreDisplay, I_OnNickClearAccess, I_OnNickAddAccess, I_OnNickEraseAccess, I_OnNickClearCert,
|
||||||
I_OnNickAddCert, I_OnNickEraseCert, I_OnNickInfo, I_OnBotInfo, I_OnCheckAuthentication, I_OnNickUpdate,
|
I_OnNickAddCert, I_OnNickEraseCert, I_OnNickInfo, I_OnBotInfo, I_OnCheckAuthentication, I_OnNickUpdate,
|
||||||
I_OnFingerprint, I_OnUserAway, I_OnInvite, I_OnDeleteVhost, I_OnSetVhost, I_OnSetDisplayedHost, I_OnMemoSend, I_OnMemoDel,
|
I_OnFingerprint, I_OnUserAway, I_OnInvite, I_OnDeleteVhost, I_OnSetVhost, I_OnSetDisplayedHost, I_OnMemoSend, I_OnMemoDel,
|
||||||
@@ -1201,6 +1222,11 @@ class CoreExport ModuleManager
|
|||||||
* @return MOD_ERR_OK on success, anything else on fail
|
* @return MOD_ERR_OK on success, anything else on fail
|
||||||
*/
|
*/
|
||||||
static ModuleReturn DeleteModule(Module *m);
|
static ModuleReturn DeleteModule(Module *m);
|
||||||
|
|
||||||
|
/** Get the version of Anope the module was compiled against
|
||||||
|
* @return The version
|
||||||
|
*/
|
||||||
|
static ModuleVersion GetVersion(void *handle);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // MODULES_H
|
#endif // MODULES_H
|
||||||
|
|||||||
@@ -1,14 +1,12 @@
|
|||||||
/* BotServ core functions
|
/* BotServ core functions
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
*
|
*
|
||||||
* Based on the original code of Epona by Lara.
|
* Based on the original code of Epona by Lara.
|
||||||
* Based on the original code of Services by Andy Church.
|
* Based on the original code of Services by Andy Church.
|
||||||
*
|
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** Flags for badwords
|
/** Flags for badwords
|
||||||
@@ -70,4 +68,3 @@ struct BadWords
|
|||||||
|
|
||||||
virtual void Check() = 0;
|
virtual void Check() = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,14 +1,12 @@
|
|||||||
/* BotServ core functions
|
/* BotServ core functions
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
*
|
*
|
||||||
* Based on the original code of Epona by Lara.
|
* Based on the original code of Epona by Lara.
|
||||||
* Based on the original code of Services by Andy Church.
|
* Based on the original code of Services by Andy Church.
|
||||||
*
|
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Indices for TTB (Times To Ban) */
|
/* Indices for TTB (Times To Ban) */
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
/*
|
/*
|
||||||
* (C) 2003-2014 Anope Team
|
*
|
||||||
|
* (C) 2003-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct EntryMsg
|
struct EntryMsg
|
||||||
@@ -32,4 +32,3 @@ struct EntryMessageList : Serialize::Checker<std::vector<EntryMsg *> >
|
|||||||
|
|
||||||
virtual EntryMsg* Create() = 0;
|
virtual EntryMsg* Create() = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/* ChanServ core functions
|
/* ChanServ core functions
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
@@ -40,4 +40,3 @@ struct LogSettings : Serialize::Checker<std::vector<LogSetting *> >
|
|||||||
virtual ~LogSettings() { }
|
virtual ~LogSettings() { }
|
||||||
virtual LogSetting *Create() = 0;
|
virtual LogSetting *Create() = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/* ChanServ core functions
|
/* ChanServ core functions
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
@@ -80,11 +80,10 @@ struct ModeLocks
|
|||||||
virtual const ModeLock *GetMLock(const Anope::string &mname, const Anope::string ¶m = "") = 0;
|
virtual const ModeLock *GetMLock(const Anope::string &mname, const Anope::string ¶m = "") = 0;
|
||||||
|
|
||||||
/** Get the current mode locks as a string
|
/** Get the current mode locks as a string
|
||||||
* @param complete True to show mlock parameters aswell
|
* @param complete True to show mlock parameters as well
|
||||||
* @return A string of mode locks, eg: +nrt
|
* @return A string of mode locks, eg: +nrt
|
||||||
*/
|
*/
|
||||||
virtual Anope::string GetMLockAsString(bool complete) const = 0;
|
virtual Anope::string GetMLockAsString(bool complete) const = 0;
|
||||||
|
|
||||||
virtual void Check() = 0;
|
virtual void Check() = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +1,12 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
*
|
*
|
||||||
* Based on the original code of Epona by Lara.
|
* Based on the original code of Epona by Lara.
|
||||||
* Based on the original code of Services by Andy Church.
|
* Based on the original code of Services by Andy Church.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef DNS_H
|
#ifndef DNS_H
|
||||||
@@ -177,5 +176,3 @@ namespace DNS
|
|||||||
} // namespace DNS
|
} // namespace DNS
|
||||||
|
|
||||||
#endif // DNS_H
|
#endif // DNS_H
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +1,12 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
*
|
*
|
||||||
* Based on the original code of Epona by Lara.
|
* Based on the original code of Epona by Lara.
|
||||||
* Based on the original code of Services by Andy Church.
|
* Based on the original code of Services by Andy Church.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace Encryption
|
namespace Encryption
|
||||||
@@ -34,4 +33,3 @@ namespace Encryption
|
|||||||
virtual IV GetDefaultIV() = 0;
|
virtual IV GetDefaultIV() = 0;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+13
-2
@@ -1,3 +1,11 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* (C) 2012-2019 Anope Team
|
||||||
|
* Contact us at team@anope.org
|
||||||
|
*
|
||||||
|
* Please read COPYING and README for further details.
|
||||||
|
*/
|
||||||
|
|
||||||
#ifndef ANOPE_HTTPD_H
|
#ifndef ANOPE_HTTPD_H
|
||||||
#define ANOPE_HTTPD_H
|
#define ANOPE_HTTPD_H
|
||||||
|
|
||||||
@@ -15,7 +23,7 @@ struct HTTPReply
|
|||||||
{
|
{
|
||||||
HTTPError error;
|
HTTPError error;
|
||||||
Anope::string content_type;
|
Anope::string content_type;
|
||||||
std::map<Anope::string, Anope::string> headers;
|
std::map<Anope::string, Anope::string, ci::less> headers;
|
||||||
typedef std::list<std::pair<Anope::string, Anope::string> > cookie;
|
typedef std::list<std::pair<Anope::string, Anope::string> > cookie;
|
||||||
std::vector<cookie> cookies;
|
std::vector<cookie> cookies;
|
||||||
|
|
||||||
@@ -133,7 +141,7 @@ class HTTPProvider : public ListenSocket, public Service
|
|||||||
unsigned short port;
|
unsigned short port;
|
||||||
bool ssl;
|
bool ssl;
|
||||||
public:
|
public:
|
||||||
Anope::string ext_ip;
|
std::vector<Anope::string> ext_ips;
|
||||||
std::vector<Anope::string> ext_headers;
|
std::vector<Anope::string> ext_headers;
|
||||||
|
|
||||||
HTTPProvider(Module *c, const Anope::string &n, const Anope::string &i, const unsigned short p, bool s) : ListenSocket(i, p, i.find(':') != Anope::string::npos), Service(c, "HTTPProvider", n), ip(i), port(p), ssl(s) { }
|
HTTPProvider(Module *c, const Anope::string &n, const Anope::string &i, const unsigned short p, bool s) : ListenSocket(i, p, i.find(':') != Anope::string::npos), Service(c, "HTTPProvider", n), ip(i), port(p), ssl(s) { }
|
||||||
@@ -220,6 +228,9 @@ namespace HTTPUtils
|
|||||||
case '"':
|
case '"':
|
||||||
dst += """;
|
dst += """;
|
||||||
break;
|
break;
|
||||||
|
case '&':
|
||||||
|
dst += "&";
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
dst += src[i];
|
dst += src[i];
|
||||||
}
|
}
|
||||||
|
|||||||
+24
-26
@@ -1,8 +1,14 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* (C) 2011-2019 Anope Team
|
||||||
|
* Contact us at team@anope.org
|
||||||
|
*
|
||||||
|
* Please read COPYING and README for further details.
|
||||||
|
*/
|
||||||
|
|
||||||
#ifndef ANOPE_LDAP_H
|
#ifndef ANOPE_LDAP_H
|
||||||
#define ANOPE_LDAP_H
|
#define ANOPE_LDAP_H
|
||||||
|
|
||||||
typedef int LDAPQuery;
|
|
||||||
|
|
||||||
class LDAPException : public ModuleException
|
class LDAPException : public ModuleException
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -59,28 +65,26 @@ struct LDAPAttributes : public std::map<Anope::string, std::vector<Anope::string
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum QueryType
|
||||||
|
{
|
||||||
|
QUERY_UNKNOWN,
|
||||||
|
QUERY_BIND,
|
||||||
|
QUERY_SEARCH,
|
||||||
|
QUERY_ADD,
|
||||||
|
QUERY_DELETE,
|
||||||
|
QUERY_MODIFY
|
||||||
|
};
|
||||||
|
|
||||||
struct LDAPResult
|
struct LDAPResult
|
||||||
{
|
{
|
||||||
std::vector<LDAPAttributes> messages;
|
std::vector<LDAPAttributes> messages;
|
||||||
Anope::string error;
|
Anope::string error;
|
||||||
|
|
||||||
enum QueryType
|
|
||||||
{
|
|
||||||
QUERY_UNKNOWN,
|
|
||||||
QUERY_BIND,
|
|
||||||
QUERY_SEARCH,
|
|
||||||
QUERY_ADD,
|
|
||||||
QUERY_DELETE,
|
|
||||||
QUERY_MODIFY
|
|
||||||
};
|
|
||||||
|
|
||||||
QueryType type;
|
QueryType type;
|
||||||
LDAPQuery id;
|
|
||||||
|
|
||||||
LDAPResult()
|
LDAPResult()
|
||||||
{
|
{
|
||||||
this->type = QUERY_UNKNOWN;
|
this->type = QUERY_UNKNOWN;
|
||||||
this->id = -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t size() const
|
size_t size() const
|
||||||
@@ -126,48 +130,42 @@ class LDAPProvider : public Service
|
|||||||
|
|
||||||
/** Attempt to bind to the LDAP server as an admin
|
/** Attempt to bind to the LDAP server as an admin
|
||||||
* @param i The LDAPInterface the result is sent to
|
* @param i The LDAPInterface the result is sent to
|
||||||
* @return The query ID
|
|
||||||
*/
|
*/
|
||||||
virtual LDAPQuery BindAsAdmin(LDAPInterface *i) = 0;
|
virtual void BindAsAdmin(LDAPInterface *i) = 0;
|
||||||
|
|
||||||
/** Bind to LDAP
|
/** Bind to LDAP
|
||||||
* @param i The LDAPInterface the result is sent to
|
* @param i The LDAPInterface the result is sent to
|
||||||
* @param who The binddn
|
* @param who The binddn
|
||||||
* @param pass The password
|
* @param pass The password
|
||||||
* @return The query ID
|
|
||||||
*/
|
*/
|
||||||
virtual LDAPQuery Bind(LDAPInterface *i, const Anope::string &who, const Anope::string &pass) = 0;
|
virtual void Bind(LDAPInterface *i, const Anope::string &who, const Anope::string &pass) = 0;
|
||||||
|
|
||||||
/** Search ldap for the specified filter
|
/** Search ldap for the specified filter
|
||||||
* @param i The LDAPInterface the result is sent to
|
* @param i The LDAPInterface the result is sent to
|
||||||
* @param base The base DN to search
|
* @param base The base DN to search
|
||||||
* @param filter The filter to apply
|
* @param filter The filter to apply
|
||||||
* @return The query ID
|
|
||||||
*/
|
*/
|
||||||
virtual LDAPQuery Search(LDAPInterface *i, const Anope::string &base, const Anope::string &filter) = 0;
|
virtual void Search(LDAPInterface *i, const Anope::string &base, const Anope::string &filter) = 0;
|
||||||
|
|
||||||
/** Add an entry to LDAP
|
/** Add an entry to LDAP
|
||||||
* @param i The LDAPInterface the result is sent to
|
* @param i The LDAPInterface the result is sent to
|
||||||
* @param dn The dn of the entry to add
|
* @param dn The dn of the entry to add
|
||||||
* @param attributes The attributes
|
* @param attributes The attributes
|
||||||
* @return The query ID
|
|
||||||
*/
|
*/
|
||||||
virtual LDAPQuery Add(LDAPInterface *i, const Anope::string &dn, LDAPMods &attributes) = 0;
|
virtual void Add(LDAPInterface *i, const Anope::string &dn, LDAPMods &attributes) = 0;
|
||||||
|
|
||||||
/** Delete an entry from LDAP
|
/** Delete an entry from LDAP
|
||||||
* @param i The LDAPInterface the result is sent to
|
* @param i The LDAPInterface the result is sent to
|
||||||
* @param dn The dn of the entry to delete
|
* @param dn The dn of the entry to delete
|
||||||
* @return The query ID
|
|
||||||
*/
|
*/
|
||||||
virtual LDAPQuery Del(LDAPInterface *i, const Anope::string &dn) = 0;
|
virtual void Del(LDAPInterface *i, const Anope::string &dn) = 0;
|
||||||
|
|
||||||
/** Modify an existing entry in LDAP
|
/** Modify an existing entry in LDAP
|
||||||
* @param i The LDAPInterface the result is sent to
|
* @param i The LDAPInterface the result is sent to
|
||||||
* @param base The base DN to modify
|
* @param base The base DN to modify
|
||||||
* @param attributes The attributes to modify
|
* @param attributes The attributes to modify
|
||||||
* @return The query ID
|
|
||||||
*/
|
*/
|
||||||
virtual LDAPQuery Modify(LDAPInterface *i, const Anope::string &base, LDAPMods &attributes) = 0;
|
virtual void Modify(LDAPInterface *i, const Anope::string &base, LDAPMods &attributes) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // ANOPE_LDAP_H
|
#endif // ANOPE_LDAP_H
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/* NickServ core functions
|
/* NickServ core functions
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
@@ -68,4 +68,3 @@ class CertService : public Service
|
|||||||
|
|
||||||
virtual NickCore* FindAccountFromCert(const Anope::string &cert) = 0;
|
virtual NickCore* FindAccountFromCert(const Anope::string &cert) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,11 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* (C) 2011-2019 Anope Team
|
||||||
|
* Contact us at team@anope.org
|
||||||
|
*
|
||||||
|
* Please read COPYING and README for further details.
|
||||||
|
*/
|
||||||
|
|
||||||
#ifndef OS_FORBID_H
|
#ifndef OS_FORBID_H
|
||||||
#define OS_FORBID_H
|
#define OS_FORBID_H
|
||||||
|
|
||||||
@@ -37,10 +45,11 @@ class ForbidService : public Service
|
|||||||
|
|
||||||
virtual ForbidData *FindForbid(const Anope::string &mask, ForbidType type) = 0;
|
virtual ForbidData *FindForbid(const Anope::string &mask, ForbidType type) = 0;
|
||||||
|
|
||||||
|
virtual ForbidData *FindForbidExact(const Anope::string &mask, ForbidType type) = 0;
|
||||||
|
|
||||||
virtual std::vector<ForbidData *> GetForbids() = 0;
|
virtual std::vector<ForbidData *> GetForbids() = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
static ServiceReference<ForbidService> forbid_service("ForbidService", "forbid");
|
static ServiceReference<ForbidService> forbid_service("ForbidService", "forbid");
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/* OperServ ignore interface
|
/* OperServ ignore interface
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
@@ -9,7 +9,6 @@
|
|||||||
* Based on the original code of Services by Andy Church.
|
* Based on the original code of Services by Andy Church.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
struct IgnoreData
|
struct IgnoreData
|
||||||
{
|
{
|
||||||
Anope::string mask;
|
Anope::string mask;
|
||||||
@@ -42,4 +41,3 @@ class IgnoreService : public Service
|
|||||||
};
|
};
|
||||||
|
|
||||||
static ServiceReference<IgnoreService> ignore_service("IgnoreService", "ignore");
|
static ServiceReference<IgnoreService> ignore_service("IgnoreService", "ignore");
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,11 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* (C) 2011-2019 Anope Team
|
||||||
|
* Contact us at team@anope.org
|
||||||
|
*
|
||||||
|
* Please read COPYING and README for further details.
|
||||||
|
*/
|
||||||
|
|
||||||
#ifndef OS_NEWS
|
#ifndef OS_NEWS
|
||||||
#define OS_NEWS
|
#define OS_NEWS
|
||||||
|
|
||||||
@@ -42,4 +50,3 @@ class NewsService : public Service
|
|||||||
static ServiceReference<NewsService> news_service("NewsService", "news");
|
static ServiceReference<NewsService> news_service("NewsService", "news");
|
||||||
|
|
||||||
#endif // OS_NEWS
|
#endif // OS_NEWS
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,11 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* (C) 2011-2019 Anope Team
|
||||||
|
* Contact us at team@anope.org
|
||||||
|
*
|
||||||
|
* Please read COPYING and README for further details.
|
||||||
|
*/
|
||||||
|
|
||||||
#ifndef OS_SESSION_H
|
#ifndef OS_SESSION_H
|
||||||
#define OS_SESSION_H
|
#define OS_SESSION_H
|
||||||
|
|
||||||
@@ -7,7 +15,7 @@ struct Session
|
|||||||
unsigned count; /* Number of clients with this host */
|
unsigned count; /* Number of clients with this host */
|
||||||
unsigned hits; /* Number of subsequent kills for a host */
|
unsigned hits; /* Number of subsequent kills for a host */
|
||||||
|
|
||||||
Session(const Anope::string &ip, int len) : addr(ip, len), count(1), hits(0) { }
|
Session(const sockaddrs &ip, int len) : addr(ip, len), count(1), hits(0) { }
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Exception : Serializable
|
struct Exception : Serializable
|
||||||
@@ -84,4 +92,3 @@ Serializable* Exception::Unserialize(Serializable *obj, Serialize::Data &data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,11 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* (C) 2011-2019 Anope Team
|
||||||
|
* Contact us at team@anope.org
|
||||||
|
*
|
||||||
|
* Please read COPYING and README for further details.
|
||||||
|
*/
|
||||||
|
|
||||||
#ifndef CHANSERV_H
|
#ifndef CHANSERV_H
|
||||||
#define CHANSERV_H
|
#define CHANSERV_H
|
||||||
|
|
||||||
@@ -15,4 +23,3 @@ class ChanServService : public Service
|
|||||||
};
|
};
|
||||||
|
|
||||||
#endif // CHANSERV_H
|
#endif // CHANSERV_H
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,11 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* (C) 2011-2019 Anope Team
|
||||||
|
* Contact us at team@anope.org
|
||||||
|
*
|
||||||
|
* Please read COPYING and README for further details.
|
||||||
|
*/
|
||||||
|
|
||||||
#ifndef GLOBAL_H
|
#ifndef GLOBAL_H
|
||||||
#define GLOBAL_H
|
#define GLOBAL_H
|
||||||
|
|
||||||
@@ -17,4 +25,3 @@ class GlobalService : public Service
|
|||||||
};
|
};
|
||||||
|
|
||||||
#endif // GLOBAL_H
|
#endif // GLOBAL_H
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,11 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* (C) 2011-2019 Anope Team
|
||||||
|
* Contact us at team@anope.org
|
||||||
|
*
|
||||||
|
* Please read COPYING and README for further details.
|
||||||
|
*/
|
||||||
|
|
||||||
#ifndef MEMOSERV_H
|
#ifndef MEMOSERV_H
|
||||||
#define MEMOSERV_H
|
#define MEMOSERV_H
|
||||||
|
|
||||||
@@ -31,4 +39,3 @@ class MemoServService : public Service
|
|||||||
};
|
};
|
||||||
|
|
||||||
#endif // MEMOSERV_H
|
#endif // MEMOSERV_H
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,11 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* (C) 2011-2019 Anope Team
|
||||||
|
* Contact us at team@anope.org
|
||||||
|
*
|
||||||
|
* Please read COPYING and README for further details.
|
||||||
|
*/
|
||||||
|
|
||||||
#ifndef NICKSERV_H
|
#ifndef NICKSERV_H
|
||||||
#define NICKSERV_H
|
#define NICKSERV_H
|
||||||
|
|
||||||
@@ -14,4 +22,3 @@ class NickServService : public Service
|
|||||||
};
|
};
|
||||||
|
|
||||||
#endif // NICKSERV_H
|
#endif // NICKSERV_H
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace Redis
|
namespace Redis
|
||||||
@@ -59,6 +58,8 @@ namespace Redis
|
|||||||
public:
|
public:
|
||||||
Provider(Module *c, const Anope::string &n) : Service(c, "Redis::Provider", n) { }
|
Provider(Module *c, const Anope::string &n) : Service(c, "Redis::Provider", n) { }
|
||||||
|
|
||||||
|
virtual bool IsSocketDead() = 0;
|
||||||
|
|
||||||
virtual void SendCommand(Interface *i, const std::vector<Anope::string> &cmds) = 0;
|
virtual void SendCommand(Interface *i, const std::vector<Anope::string> &cmds) = 0;
|
||||||
virtual void SendCommand(Interface *i, const Anope::string &str) = 0;
|
virtual void SendCommand(Interface *i, const Anope::string &str) = 0;
|
||||||
|
|
||||||
@@ -71,4 +72,3 @@ namespace Redis
|
|||||||
virtual void CommitTransaction() = 0;
|
virtual void CommitTransaction() = 0;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+21
-5
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2014 Anope Team
|
* (C) 2014-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
@@ -46,6 +46,7 @@ namespace SASL
|
|||||||
{
|
{
|
||||||
time_t created;
|
time_t created;
|
||||||
Anope::string uid;
|
Anope::string uid;
|
||||||
|
Anope::string hostname, ip;
|
||||||
Reference<Mechanism> mech;
|
Reference<Mechanism> mech;
|
||||||
|
|
||||||
Session(Mechanism *m, const Anope::string &u) : created(Anope::CurTime), uid(u), mech(m) { }
|
Session(Mechanism *m, const Anope::string &u) : created(Anope::CurTime), uid(u), mech(m) { }
|
||||||
@@ -76,9 +77,10 @@ namespace SASL
|
|||||||
class IdentifyRequest : public ::IdentifyRequest
|
class IdentifyRequest : public ::IdentifyRequest
|
||||||
{
|
{
|
||||||
Anope::string uid;
|
Anope::string uid;
|
||||||
|
Anope::string hostname, ip;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
IdentifyRequest(Module *m, const Anope::string &id, const Anope::string &acc, const Anope::string &pass) : ::IdentifyRequest(m, acc, pass), uid(id) { }
|
IdentifyRequest(Module *m, const Anope::string &id, const Anope::string &acc, const Anope::string &pass, const Anope::string &h, const Anope::string &i) : ::IdentifyRequest(m, acc, pass), uid(id), hostname(h), ip(i) { }
|
||||||
|
|
||||||
void OnSuccess() anope_override
|
void OnSuccess() anope_override
|
||||||
{
|
{
|
||||||
@@ -86,13 +88,21 @@ namespace SASL
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
NickAlias *na = NickAlias::Find(GetAccount());
|
NickAlias *na = NickAlias::Find(GetAccount());
|
||||||
if (!na || na->nc->HasExt("NS_SUSPENDED"))
|
if (!na || na->nc->HasExt("NS_SUSPENDED") || na->nc->HasExt("UNCONFIRMED"))
|
||||||
|
return OnFail();
|
||||||
|
|
||||||
|
unsigned int maxlogins = Config->GetModule("ns_identify")->Get<unsigned int>("maxlogins");
|
||||||
|
if (maxlogins && na->nc->users.size() >= maxlogins)
|
||||||
return OnFail();
|
return OnFail();
|
||||||
|
|
||||||
Session *s = sasl->GetSession(uid);
|
Session *s = sasl->GetSession(uid);
|
||||||
if (s)
|
if (s)
|
||||||
{
|
{
|
||||||
Log(Config->GetClient("NickServ")) << "A user identified to account " << this->GetAccount() << " using SASL";
|
Anope::string user = "A user";
|
||||||
|
if (!hostname.empty() && !ip.empty())
|
||||||
|
user = hostname + " (" + ip + ")";
|
||||||
|
|
||||||
|
Log(this->GetOwner(), "sasl", Config->GetClient("NickServ")) << user << " identified to account " << this->GetAccount() << " using SASL";
|
||||||
sasl->Succeed(s, na->nc);
|
sasl->Succeed(s, na->nc);
|
||||||
delete s;
|
delete s;
|
||||||
}
|
}
|
||||||
@@ -116,8 +126,14 @@ namespace SASL
|
|||||||
accountstatus = "nonexistent ";
|
accountstatus = "nonexistent ";
|
||||||
else if (na->nc->HasExt("NS_SUSPENDED"))
|
else if (na->nc->HasExt("NS_SUSPENDED"))
|
||||||
accountstatus = "suspended ";
|
accountstatus = "suspended ";
|
||||||
|
else if (na->nc->HasExt("UNCONFIRMED"))
|
||||||
|
accountstatus = "unconfirmed ";
|
||||||
|
|
||||||
Log(Config->GetClient("NickServ")) << "A user failed to identify for " << accountstatus << "account " << this->GetAccount() << " using SASL";
|
Anope::string user = "A user";
|
||||||
|
if (!hostname.empty() && !ip.empty())
|
||||||
|
user = hostname + " (" + ip + ")";
|
||||||
|
|
||||||
|
Log(this->GetOwner(), "sasl", Config->GetClient("NickServ")) << user << " failed to identify for " << accountstatus << "account " << this->GetAccount() << " using SASL";
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* (C) 2003-2014 Anope Team
|
*
|
||||||
|
* (C) 2003-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
@@ -14,4 +15,3 @@ struct MiscData
|
|||||||
MiscData() { }
|
MiscData() { }
|
||||||
virtual ~MiscData() { }
|
virtual ~MiscData() { }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* (C) 2003-2014 Anope Team
|
*
|
||||||
|
* (C) 2003-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
@@ -213,4 +214,3 @@ namespace SQL
|
|||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,10 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* (C) 2010-2019 Anope Team
|
||||||
|
* Contact us at team@anope.org
|
||||||
|
*
|
||||||
|
* Please read COPYING and README for further details.
|
||||||
|
*/
|
||||||
|
|
||||||
class SSLService : public Service
|
class SSLService : public Service
|
||||||
{
|
{
|
||||||
@@ -6,4 +13,3 @@ class SSLService : public Service
|
|||||||
|
|
||||||
virtual void Init(Socket *s) = 0;
|
virtual void Init(Socket *s) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* (C) 2003-2014 Anope Team
|
*
|
||||||
|
* (C) 2003-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
|
|||||||
@@ -1,3 +1,11 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* (C) 2010-2019 Anope Team
|
||||||
|
* Contact us at team@anope.org
|
||||||
|
*
|
||||||
|
* Please read COPYING and README for further details.
|
||||||
|
*/
|
||||||
|
|
||||||
#include "httpd.h"
|
#include "httpd.h"
|
||||||
|
|
||||||
class XMLRPCRequest
|
class XMLRPCRequest
|
||||||
@@ -37,4 +45,3 @@ class XMLRPCServiceInterface : public Service
|
|||||||
|
|
||||||
virtual void Reply(XMLRPCRequest &request) = 0;
|
virtual void Reply(XMLRPCRequest &request) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -1,9 +1,9 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2008-2011 Robin Burchell <w00t@inspircd.org>
|
*
|
||||||
* Copyright (C) 2008-2014 Anope Team <team@anope.org>
|
* (C) 2008-2011 Robin Burchell <w00t@inspircd.org>
|
||||||
|
* (C) 2008-2019 Anope Team <team@anope.org>
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef OPERTYPE_H
|
#ifndef OPERTYPE_H
|
||||||
|
|||||||
+44
-5
@@ -1,13 +1,12 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
*
|
*
|
||||||
* Based on the original code of Epona by Lara.
|
* Based on the original code of Epona by Lara.
|
||||||
* Based on the original code of Services by Andy Church.
|
* Based on the original code of Services by Andy Church.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef PROTOCOL_H
|
#ifndef PROTOCOL_H
|
||||||
@@ -40,6 +39,9 @@ class CoreExport IRCDProto : public Service
|
|||||||
virtual void SendNumericInternal(int numeric, const Anope::string &dest, const Anope::string &buf);
|
virtual void SendNumericInternal(int numeric, const Anope::string &dest, const Anope::string &buf);
|
||||||
|
|
||||||
const Anope::string &GetProtocolName();
|
const Anope::string &GetProtocolName();
|
||||||
|
virtual bool Parse(const Anope::string &, Anope::map<Anope::string> &, Anope::string &, Anope::string &, std::vector<Anope::string> &);
|
||||||
|
virtual Anope::string Format(const Anope::string &source, const Anope::string &message);
|
||||||
|
|
||||||
/* Modes used by default by our clients */
|
/* Modes used by default by our clients */
|
||||||
Anope::string DefaultPseudoclientModes;
|
Anope::string DefaultPseudoclientModes;
|
||||||
/* Can we force change a users's nick? */
|
/* Can we force change a users's nick? */
|
||||||
@@ -64,11 +66,17 @@ class CoreExport IRCDProto : public Service
|
|||||||
bool CanCertFP;
|
bool CanCertFP;
|
||||||
/* Whether this IRCd requires unique IDs for each user or server. See TS6/P10. */
|
/* Whether this IRCd requires unique IDs for each user or server. See TS6/P10. */
|
||||||
bool RequiresID;
|
bool RequiresID;
|
||||||
|
/* If this IRCd has unique ids, whether the IDs and nicknames are ambiguous */
|
||||||
|
bool AmbiguousID;
|
||||||
/* The maximum number of modes we are allowed to set with one MODE command */
|
/* The maximum number of modes we are allowed to set with one MODE command */
|
||||||
unsigned MaxModes;
|
unsigned MaxModes;
|
||||||
/* The maximum number of bytes a line may have */
|
/* The maximum number of bytes a line may have */
|
||||||
unsigned MaxLine;
|
unsigned MaxLine;
|
||||||
|
|
||||||
|
/* Retrieves the next free UID or SID */
|
||||||
|
virtual Anope::string UID_Retrieve();
|
||||||
|
virtual Anope::string SID_Retrieve();
|
||||||
|
|
||||||
/** Sets the server in NOOP mode. If NOOP mode is enabled, no users
|
/** Sets the server in NOOP mode. If NOOP mode is enabled, no users
|
||||||
* will be able to oper on the server.
|
* will be able to oper on the server.
|
||||||
* @param s The server
|
* @param s The server
|
||||||
@@ -188,8 +196,8 @@ class CoreExport IRCDProto : public Service
|
|||||||
*/
|
*/
|
||||||
virtual void SendConnect() = 0;
|
virtual void SendConnect() = 0;
|
||||||
|
|
||||||
/** Called right before we begin our burst, after we have handshaked successfully with the uplink/
|
/** Called right before we begin our burst, after we have handshaked successfully with the uplink.
|
||||||
* At this point none of our servesr, users, or channels exist on the uplink
|
* At this point none of our servers, users, or channels exist on the uplink
|
||||||
*/
|
*/
|
||||||
virtual void SendBOB() { }
|
virtual void SendBOB() { }
|
||||||
virtual void SendEOB() { }
|
virtual void SendEOB() { }
|
||||||
@@ -219,8 +227,9 @@ class CoreExport IRCDProto : public Service
|
|||||||
*/
|
*/
|
||||||
virtual void SendOper(User *u);
|
virtual void SendOper(User *u);
|
||||||
|
|
||||||
|
virtual void SendSASLMechanisms(std::vector<Anope::string> &) { }
|
||||||
virtual void SendSASLMessage(const SASL::Message &) { }
|
virtual void SendSASLMessage(const SASL::Message &) { }
|
||||||
virtual void SendSVSLogin(const Anope::string &uid, const Anope::string &acc) { }
|
virtual void SendSVSLogin(const Anope::string &uid, const Anope::string &acc, const Anope::string &vident, const Anope::string &vhost) { }
|
||||||
|
|
||||||
virtual bool IsNickValid(const Anope::string &);
|
virtual bool IsNickValid(const Anope::string &);
|
||||||
virtual bool IsChannelValid(const Anope::string &);
|
virtual bool IsChannelValid(const Anope::string &);
|
||||||
@@ -232,6 +241,8 @@ class CoreExport IRCDProto : public Service
|
|||||||
* Defaults to Config->ListSize
|
* Defaults to Config->ListSize
|
||||||
*/
|
*/
|
||||||
virtual unsigned GetMaxListFor(Channel *c);
|
virtual unsigned GetMaxListFor(Channel *c);
|
||||||
|
|
||||||
|
virtual Anope::string NormalizeMask(const Anope::string &mask);
|
||||||
};
|
};
|
||||||
|
|
||||||
class CoreExport MessageSource
|
class CoreExport MessageSource
|
||||||
@@ -267,11 +278,39 @@ class CoreExport IRCDMessage : public Service
|
|||||||
IRCDMessage(Module *owner, const Anope::string &n, unsigned p = 0);
|
IRCDMessage(Module *owner, const Anope::string &n, unsigned p = 0);
|
||||||
unsigned GetParamCount() const;
|
unsigned GetParamCount() const;
|
||||||
virtual void Run(MessageSource &, const std::vector<Anope::string> ¶ms) = 0;
|
virtual void Run(MessageSource &, const std::vector<Anope::string> ¶ms) = 0;
|
||||||
|
virtual void Run(MessageSource &, const std::vector<Anope::string> ¶ms, const Anope::map<Anope::string> &tags);
|
||||||
|
|
||||||
void SetFlag(IRCDMessageFlag f) { flags.insert(f); }
|
void SetFlag(IRCDMessageFlag f) { flags.insert(f); }
|
||||||
bool HasFlag(IRCDMessageFlag f) const { return flags.count(f); }
|
bool HasFlag(IRCDMessageFlag f) const { return flags.count(f); }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/** MessageTokenizer allows tokens in the IRC wire format to be read from a string */
|
||||||
|
class CoreExport MessageTokenizer
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
/** The message we are parsing tokens from. */
|
||||||
|
Anope::string message;
|
||||||
|
|
||||||
|
/** The current position within the message. */
|
||||||
|
Anope::string::size_type position;
|
||||||
|
|
||||||
|
public:
|
||||||
|
/** Create a tokenstream and fill it with the provided data. */
|
||||||
|
MessageTokenizer(const Anope::string &msg);
|
||||||
|
|
||||||
|
/** Retrieve the next \<middle> token in the message.
|
||||||
|
* @param token The next token available, or an empty string if none remain.
|
||||||
|
* @return True if a token was retrieved; otherwise, false.
|
||||||
|
*/
|
||||||
|
bool GetMiddle(Anope::string &token);
|
||||||
|
|
||||||
|
/** Retrieve the next \<trailing> token in the message.
|
||||||
|
* @param token The next token available, or an empty string if none remain.
|
||||||
|
* @return True if a token was retrieved; otherwise, false.
|
||||||
|
*/
|
||||||
|
bool GetTrailing(Anope::string &token);
|
||||||
|
};
|
||||||
|
|
||||||
extern CoreExport IRCDProto *IRCD;
|
extern CoreExport IRCDProto *IRCD;
|
||||||
|
|
||||||
#endif // PROTOCOL_H
|
#endif // PROTOCOL_H
|
||||||
|
|||||||
+1
-1
@@ -73,7 +73,7 @@
|
|||||||
* include stdint.h. The hope is that one or the other can be
|
* include stdint.h. The hope is that one or the other can be
|
||||||
* used with no real difference.
|
* used with no real difference.
|
||||||
*
|
*
|
||||||
* 5) In the current verison, if your platform can't represent
|
* 5) In the current version, if your platform can't represent
|
||||||
* int32_t, int16_t and int8_t, it just dumps out with a compiler
|
* int32_t, int16_t and int8_t, it just dumps out with a compiler
|
||||||
* error.
|
* error.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2008-2014 Anope Team
|
* (C) 2008-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef REGCHANNEL_H
|
#ifndef REGCHANNEL_H
|
||||||
@@ -133,8 +132,8 @@ class CoreExport ChannelInfo : public Serializable, public Extensible
|
|||||||
/** Retrieve the access for a user or group in the form of a vector of access entries
|
/** Retrieve the access for a user or group in the form of a vector of access entries
|
||||||
* (as multiple entries can affect a single user).
|
* (as multiple entries can affect a single user).
|
||||||
*/
|
*/
|
||||||
AccessGroup AccessFor(const User *u);
|
AccessGroup AccessFor(const User *u, bool updateLastUsed = true);
|
||||||
AccessGroup AccessFor(const NickCore *nc);
|
AccessGroup AccessFor(const NickCore *nc, bool updateLastUsed = true);
|
||||||
|
|
||||||
/** Get the size of the accss vector for this channel
|
/** Get the size of the accss vector for this channel
|
||||||
* @return The access vector size
|
* @return The access vector size
|
||||||
@@ -198,6 +197,11 @@ class CoreExport ChannelInfo : public Serializable, public Extensible
|
|||||||
*/
|
*/
|
||||||
void ClearAkick();
|
void ClearAkick();
|
||||||
|
|
||||||
|
/** Get the level entries for the channel.
|
||||||
|
* @return The levels for the channel.
|
||||||
|
*/
|
||||||
|
const Anope::map<int16_t> &GetLevelEntries();
|
||||||
|
|
||||||
/** Get the level for a privilege
|
/** Get the level for a privilege
|
||||||
* @param priv The privilege name
|
* @param priv The privilege name
|
||||||
* @return the level
|
* @return the level
|
||||||
|
|||||||
+1
-3
@@ -1,13 +1,12 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
*
|
*
|
||||||
* Based on the original code of Epona by Lara.
|
* Based on the original code of Epona by Lara.
|
||||||
* Based on the original code of Services by Andy Church.
|
* Based on the original code of Services by Andy Church.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef REGEXPR_H
|
#ifndef REGEXPR_H
|
||||||
@@ -44,4 +43,3 @@ class CoreExport RegexProvider : public Service
|
|||||||
};
|
};
|
||||||
|
|
||||||
#endif // REGEXPR_H
|
#endif // REGEXPR_H
|
||||||
|
|
||||||
|
|||||||
+6
-7
@@ -1,13 +1,12 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
*
|
*
|
||||||
* Based on the original code of Epona by Lara.
|
* Based on the original code of Epona by Lara.
|
||||||
* Based on the original code of Services by Andy Church.
|
* Based on the original code of Services by Andy Church.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef SERIALIZE_H
|
#ifndef SERIALIZE_H
|
||||||
@@ -60,14 +59,14 @@ class CoreExport Serializable : public virtual Base
|
|||||||
* constructed before other objects are if it isn't.
|
* constructed before other objects are if it isn't.
|
||||||
*/
|
*/
|
||||||
static std::list<Serializable *> *SerializableItems;
|
static std::list<Serializable *> *SerializableItems;
|
||||||
|
friend class Serialize::Type;
|
||||||
/* The type of item this object is */
|
/* The type of item this object is */
|
||||||
Serialize::Type *s_type;
|
Serialize::Type *s_type;
|
||||||
private:
|
|
||||||
/* Iterator into serializable_items */
|
/* Iterator into serializable_items */
|
||||||
std::list<Serializable *>::iterator s_iter;
|
std::list<Serializable *>::iterator s_iter;
|
||||||
/* The hash of the last serialized form of this object commited to the database */
|
/* The hash of the last serialized form of this object committed to the database */
|
||||||
size_t last_commit;
|
size_t last_commit;
|
||||||
/* The last time this object was commited to the database */
|
/* The last time this object was committed to the database */
|
||||||
time_t last_commit_time;
|
time_t last_commit_time;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@@ -109,7 +108,7 @@ class CoreExport Serializable : public virtual Base
|
|||||||
* of class that inherits from Serialiable. Used for unserializing objects
|
* of class that inherits from Serialiable. Used for unserializing objects
|
||||||
* of this type, as it requires a function pointer to a static member function.
|
* of this type, as it requires a function pointer to a static member function.
|
||||||
*/
|
*/
|
||||||
class CoreExport Serialize::Type
|
class CoreExport Serialize::Type : public Base
|
||||||
{
|
{
|
||||||
typedef Serializable* (*unserialize_func)(Serializable *obj, Serialize::Data &);
|
typedef Serializable* (*unserialize_func)(Serializable *obj, Serialize::Data &);
|
||||||
|
|
||||||
@@ -188,7 +187,7 @@ class Serialize::Checker
|
|||||||
{
|
{
|
||||||
Anope::string name;
|
Anope::string name;
|
||||||
T obj;
|
T obj;
|
||||||
mutable Serialize::Type *type;
|
mutable ::Reference<Serialize::Type> type;
|
||||||
|
|
||||||
inline void Check() const
|
inline void Check() const
|
||||||
{
|
{
|
||||||
|
|||||||
+1
-6
@@ -1,13 +1,12 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
*
|
*
|
||||||
* Based on the original code of Epona by Lara.
|
* Based on the original code of Epona by Lara.
|
||||||
* Based on the original code of Services by Andy Church.
|
* Based on the original code of Services by Andy Church.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef SERVERS_H
|
#ifndef SERVERS_H
|
||||||
@@ -23,10 +22,6 @@ extern CoreExport Server *Me;
|
|||||||
|
|
||||||
namespace Servers
|
namespace Servers
|
||||||
{
|
{
|
||||||
/* Retrieves the next free TS6 UID or SID */
|
|
||||||
extern CoreExport const Anope::string TS6_UID_Retrieve();
|
|
||||||
extern CoreExport const Anope::string TS6_SID_Retrieve();
|
|
||||||
|
|
||||||
/* Gets our uplink. Note we don't actually have an "uplink", this is just
|
/* Gets our uplink. Note we don't actually have an "uplink", this is just
|
||||||
* the only server whose uplink *is* Me that is not a juped server.
|
* the only server whose uplink *is* Me that is not a juped server.
|
||||||
* @return Our uplink, or NULL if not uplinked to anything
|
* @return Our uplink, or NULL if not uplinked to anything
|
||||||
|
|||||||
+1
-3
@@ -1,13 +1,12 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
*
|
*
|
||||||
* Based on the original code of Epona by Lara.
|
* Based on the original code of Epona by Lara.
|
||||||
* Based on the original code of Services by Andy Church.
|
* Based on the original code of Services by Andy Church.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef SERVICE_H
|
#ifndef SERVICE_H
|
||||||
@@ -172,4 +171,3 @@ class ServiceAlias
|
|||||||
};
|
};
|
||||||
|
|
||||||
#endif // SERVICE_H
|
#endif // SERVICE_H
|
||||||
|
|
||||||
|
|||||||
+1
-2
@@ -1,13 +1,12 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
*
|
*
|
||||||
* Based on the original code of Epona by Lara.
|
* Based on the original code of Epona by Lara.
|
||||||
* Based on the original code of Services by Andy Church.
|
* Based on the original code of Services by Andy Church.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef SERVICES_H
|
#ifndef SERVICES_H
|
||||||
|
|||||||
@@ -1,13 +1,12 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
*
|
*
|
||||||
* Based on the original code of Epona by Lara.
|
* Based on the original code of Epona by Lara.
|
||||||
* Based on the original code of Services by Andy Church.
|
* Based on the original code of Services by Andy Church.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef SOCKETENGINE_H
|
#ifndef SOCKETENGINE_H
|
||||||
|
|||||||
+13
-6
@@ -1,13 +1,12 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
*
|
*
|
||||||
* Based on the original code of Epona by Lara.
|
* Based on the original code of Epona by Lara.
|
||||||
* Based on the original code of Services by Andy Church.
|
* Based on the original code of Services by Andy Church.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef SOCKETS_H
|
#ifndef SOCKETS_H
|
||||||
@@ -39,6 +38,10 @@ union CoreExport sockaddrs
|
|||||||
*/
|
*/
|
||||||
void clear();
|
void clear();
|
||||||
|
|
||||||
|
/** Get address family.
|
||||||
|
*/
|
||||||
|
int family() const;
|
||||||
|
|
||||||
/** Get the size of the sockaddr we represent
|
/** Get the size of the sockaddr we represent
|
||||||
* @return The size
|
* @return The size
|
||||||
*/
|
*/
|
||||||
@@ -54,12 +57,17 @@ union CoreExport sockaddrs
|
|||||||
*/
|
*/
|
||||||
Anope::string addr() const;
|
Anope::string addr() const;
|
||||||
|
|
||||||
|
/** Get the reverse address represented by this addr
|
||||||
|
* @return The reverse address
|
||||||
|
*/
|
||||||
|
Anope::string reverse() const;
|
||||||
|
|
||||||
/* Is this address ipv6? */
|
/* Is this address ipv6? */
|
||||||
bool ipv6() const;
|
bool ipv6() const;
|
||||||
|
|
||||||
/** Check if this sockaddr has data in it
|
/** Check if this sockaddr has data in it
|
||||||
*/
|
*/
|
||||||
bool operator()() const;
|
bool valid() const;
|
||||||
|
|
||||||
/** Compares with sockaddr with another. Compares address type, port, and address
|
/** Compares with sockaddr with another. Compares address type, port, and address
|
||||||
* @return true if they are the same
|
* @return true if they are the same
|
||||||
@@ -82,8 +90,6 @@ union CoreExport sockaddrs
|
|||||||
* @throws A socket exception if given an invalid structure
|
* @throws A socket exception if given an invalid structure
|
||||||
*/
|
*/
|
||||||
void ntop(int type, const void *src);
|
void ntop(int type, const void *src);
|
||||||
|
|
||||||
bool valid() const;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class CoreExport cidr
|
class CoreExport cidr
|
||||||
@@ -94,6 +100,7 @@ class CoreExport cidr
|
|||||||
public:
|
public:
|
||||||
cidr(const Anope::string &ip);
|
cidr(const Anope::string &ip);
|
||||||
cidr(const Anope::string &ip, unsigned char len);
|
cidr(const Anope::string &ip, unsigned char len);
|
||||||
|
cidr(const sockaddrs &ip, unsigned char len);
|
||||||
Anope::string mask() const;
|
Anope::string mask() const;
|
||||||
bool match(const sockaddrs &other);
|
bool match(const sockaddrs &other);
|
||||||
bool valid() const;
|
bool valid() const;
|
||||||
@@ -373,7 +380,7 @@ class CoreExport ListenSocket : public virtual Socket
|
|||||||
virtual ~ListenSocket();
|
virtual ~ListenSocket();
|
||||||
|
|
||||||
/** Process what has come in from the connection
|
/** Process what has come in from the connection
|
||||||
* @return false to destory this socket
|
* @return false to destroy this socket
|
||||||
*/
|
*/
|
||||||
bool ProcessRead();
|
bool ProcessRead();
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +1,12 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2019 Anope Team
|
||||||
* Contact us at team@anope.org
|
* Contact us at team@anope.org
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
*
|
*
|
||||||
* Based on the original code of Epona by Lara.
|
* Based on the original code of Epona by Lara.
|
||||||
* Based on the original code of Services by Andy Church.
|
* Based on the original code of Services by Andy Church.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef THREADENGINE_H
|
#ifndef THREADENGINE_H
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user