mirror of
https://github.com/anope/anope.git
synced 2026-07-01 14:06:39 +02:00
Compare commits
752 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 15f5be76b9 | |||
| 12f1ebee1c | |||
| 8e691eac80 | |||
| 2327c6ac9a | |||
| e23ea8f8ea | |||
| 449cfa6503 | |||
| 01fc7421b6 | |||
| e6d7306202 | |||
| 2107d18d9e | |||
| acb9428635 | |||
| 27a19dcc52 | |||
| ba26d9a15c | |||
| 9834040948 | |||
| bc9e035038 | |||
| debfa59be6 | |||
| e321749d1f | |||
| 8a2d7526cd | |||
| e1f34ee5d6 | |||
| 4ac5cf89e3 | |||
| f526932882 | |||
| 5a9f581491 | |||
| f6c093ae23 | |||
| f4c565aa08 | |||
| f03e802f58 | |||
| dbef7a7c64 | |||
| fca421aa2a | |||
| 035905d321 | |||
| 9bcf46f8ea | |||
| 0b6c7ce5d6 | |||
| 0bb1bc5c67 | |||
| 4b15ca0232 | |||
| 997302f861 | |||
| b3b6e9f862 | |||
| d23bfb0113 | |||
| 151f9c2bcc | |||
| b9acaa6d51 | |||
| c6065ff0f3 | |||
| a5aae4f41d | |||
| 0b36ddfaf3 | |||
| 947ddc9e1b | |||
| 43dc6f7509 | |||
| 883367c1d2 | |||
| 7f2c281121 | |||
| b448a20f40 | |||
| 227caba783 | |||
| b51dff0b1a | |||
| fbb8442252 | |||
| 8110fddfe5 | |||
| 1f7aa241bb | |||
| a8eda0676d | |||
| da7f47c1c7 | |||
| a92f09153a | |||
| 73714420d1 | |||
| ea96f2ad40 | |||
| 7083c424c2 | |||
| de16238e01 | |||
| a668c8b520 | |||
| 96ccfe4cbe | |||
| ee160842b3 | |||
| 98c840eb02 | |||
| 7d5ca5c90b | |||
| f40719787f | |||
| e5602f956d | |||
| e704fa6266 | |||
| bafcba023c | |||
| 6d34054b78 | |||
| cc37e6d69a | |||
| 4b48fc98d3 | |||
| 6da4a148fa | |||
| 63ad540e55 | |||
| a1165eea94 | |||
| bfca74f6b3 | |||
| 3acf74483c | |||
| a3ec8329f4 | |||
| 31bc597c81 | |||
| 2de0dddb1c | |||
| 41ea346551 | |||
| 439ad3e736 | |||
| 8105607257 | |||
| ccc088d946 | |||
| 8bb83f6b1a | |||
| da99a53dfa | |||
| a9e9ac32a0 | |||
| 05e6df23a2 | |||
| 3f9fc23270 | |||
| afe87bf693 | |||
| 0c5bf51378 | |||
| d41764bfd6 | |||
| 10f4724b6b | |||
| 8d5be77c93 | |||
| f4bd43e898 | |||
| 7d7664444a | |||
| 1a8bbd6004 | |||
| e725c880a9 | |||
| f5abcd1c4c | |||
| 1986aa6581 | |||
| 1a6060ac5b | |||
| 6f57907416 | |||
| b09632d1c3 | |||
| cd614831de | |||
| 9649dc78a1 | |||
| ee7455daa8 | |||
| 5f735b2570 | |||
| 4ea2bc5e46 | |||
| eabc8b641e | |||
| 2f1ed186d1 | |||
| 4cc68397dc | |||
| 2b7872139c | |||
| 8e3be20387 | |||
| 689dd44d3b | |||
| c9e0245f23 | |||
| 73d8c85879 | |||
| 7ae20c2a6d | |||
| d6a826a09c | |||
| 016761776b | |||
| c2450eabab | |||
| 6e6e053384 | |||
| 5edf19d230 | |||
| eb2aaf22ed | |||
| aca9d30064 | |||
| b84b1d8166 | |||
| 8e2fa4acdb | |||
| cc9e2c1260 | |||
| c3e95d8e2e | |||
| ba163027bd | |||
| 1eba69d035 | |||
| eb409fc6eb | |||
| 97fa6d84bc | |||
| 02940e4ea8 | |||
| 69a0f3bec2 | |||
| 6119586920 | |||
| 32cf99fdb5 | |||
| ca2209aaed | |||
| 0a3ddef315 | |||
| 0715db7182 | |||
| 8bf14ad5ea | |||
| c9f21f4ef6 | |||
| 1b2eb9b9c8 | |||
| 1343be58d7 | |||
| 97f6aadd5b | |||
| 2dafc85af4 | |||
| 7f8a0c9d33 | |||
| cc23f6dc01 | |||
| e717ac0a89 | |||
| 34ab54522e | |||
| 47bbc9b3fb | |||
| 68b51c7481 | |||
| 37b60f8d9d | |||
| 14204353ac | |||
| 098f19c005 | |||
| 4e1f5cce80 | |||
| da2ac3e8a2 | |||
| 7c7158cf24 | |||
| fbf3b34474 | |||
| ce42810265 | |||
| 07babdbd77 | |||
| fe3926f572 | |||
| 03eead042c | |||
| b1fff640dd | |||
| f251ca6373 | |||
| 24a2c51003 | |||
| 66f37139cb | |||
| 0646547c9e | |||
| 41206b991e | |||
| b7abfe5eca | |||
| 23e7f5bd33 | |||
| df9dfeae95 | |||
| e68a41a91e | |||
| 26f846e112 | |||
| f1fbe9e629 | |||
| 1c9b34190e | |||
| a5d4aa5821 | |||
| 9b583961b0 | |||
| fef0cc1c29 | |||
| f0ad0b4f0a | |||
| dc1d9c837b | |||
| 33a337dfc0 | |||
| b64dc09bd2 | |||
| fee60c8e06 | |||
| 3f867c1e11 | |||
| 2f46739931 | |||
| 6eec018c34 | |||
| e78db21180 | |||
| d4d2a4b4ce | |||
| e33b8d5f43 | |||
| c2b154e1b1 | |||
| 4a2861ba3d | |||
| 211bd80061 | |||
| 32679a107a | |||
| bc101d10de | |||
| 901a456132 | |||
| 0c61915e31 | |||
| d5e85c7f25 | |||
| a5425e3bf3 | |||
| 2062eb23f0 | |||
| af4d7d21ba | |||
| c2ba553483 | |||
| 8dd1fb8ac2 | |||
| b5fe380011 | |||
| af7bf785f9 | |||
| 04257b9d6a | |||
| acb6c55529 | |||
| 0e6f8488d3 | |||
| 56687c27cb | |||
| 9b0c7929d9 | |||
| d895a3aa01 | |||
| d4632e5286 | |||
| c38106211c | |||
| b8bcad048e | |||
| a93a7c87b6 | |||
| ba2c82e2f5 | |||
| 2c18601d8f | |||
| a1a1b3ad01 | |||
| 7a28d81b44 | |||
| 69dbcba069 | |||
| 66bf55fb7f | |||
| 002186c016 | |||
| 64f65b035e | |||
| b6f1c86f65 | |||
| a736b54ef1 | |||
| 8b8bc97194 | |||
| aa0adcf99b | |||
| 079fb1b66f | |||
| 1cab1d32c2 | |||
| 98fdce2e1d | |||
| d8d1c1d18c | |||
| 48ec53242e | |||
| 91321bdf68 | |||
| 33590aa59b | |||
| fd88b756fc | |||
| 8d1bc95faf | |||
| e67c2d5632 | |||
| 3728a0bda1 | |||
| d2da73cf68 | |||
| 100b24074d | |||
| a040f17787 | |||
| 6274bd0b34 | |||
| 095a25d473 | |||
| c00ecc5e02 | |||
| cdd9b6f11b | |||
| faee68e85f | |||
| 683f42eeef | |||
| f83558f10b | |||
| 9483da3239 | |||
| c67911bfcc | |||
| 4d271e0210 | |||
| c5a4e8337c | |||
| 7e08e7cb6c | |||
| 4031dc7321 | |||
| d1e4943800 | |||
| 74f18d7b1d | |||
| 3856538e48 | |||
| 236affa2a4 | |||
| f8d8104d82 | |||
| a3c7f716bd | |||
| b2b53a1e01 | |||
| 95f4e29edd | |||
| cdf147f351 | |||
| 2cf507ed66 | |||
| 46e1395e62 | |||
| 6117299ecd | |||
| f8777097d1 | |||
| a79046e025 | |||
| d0e8392445 | |||
| af8056d2dd | |||
| 4ba871c631 | |||
| da08dd6d0e | |||
| 1ac3b38fa8 | |||
| c29b72fcdc | |||
| a3673a5a2d | |||
| 9701cbcd08 | |||
| 1af02bf2a9 | |||
| bf725aa8dc | |||
| 52914216f0 | |||
| 8180dd414e | |||
| ff28985384 | |||
| 584a209b28 | |||
| c327d1aeef | |||
| 0d0763f72f | |||
| 4d101569f8 | |||
| 8866612160 | |||
| d69b14e54c | |||
| 505eed9eef | |||
| b188a1c0cd | |||
| 2c1f8260fd | |||
| d319fc6eb5 | |||
| 83eea99317 | |||
| 55a23c7253 | |||
| c8699c6726 | |||
| 95c8478ec5 | |||
| cba1313a40 | |||
| 96ea61d8b8 | |||
| 523f89f45f | |||
| 6617d29b52 | |||
| a4ab6876c3 | |||
| ff0109d6ba | |||
| 059c78aee3 | |||
| f75c5011e2 | |||
| 2832c736dd | |||
| f34ba4b1f0 | |||
| 91dde90ad2 | |||
| 661b320d23 | |||
| ae7706ae55 | |||
| 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 |
@@ -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/
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
---
|
||||||
|
name: Bug report
|
||||||
|
about: Report a non-security issue with Anope.
|
||||||
|
---
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Please fill in the template below. It will help us process your bug report a lot faster. If you have multiple bugs to report then please open one issue for each bug.
|
||||||
|
-->
|
||||||
|
|
||||||
|
**Description**
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**Steps to reproduce the issue:**
|
||||||
|
|
||||||
|
1.
|
||||||
|
2.
|
||||||
|
3.
|
||||||
|
|
||||||
|
**Describe the results you received:**
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**Describe the results you expected:**
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**Additional information you deem important (e.g. issue happens only occasionally):**
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**Output of `services --version`:**
|
||||||
|
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
name: Feature request
|
||||||
|
about: Request that a new feature is added to Anope.
|
||||||
|
---
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Please fill in the template below. It will help us process your feature request a lot faster. If you have multiple features to request then please open one issue for each feature.
|
||||||
|
-->
|
||||||
|
|
||||||
|
**Description**
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**Why this would be useful**
|
||||||
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
blank_issues_enabled: false
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
<!--
|
||||||
|
Please fill in the template below. It will help us process your pull request a lot faster.
|
||||||
|
-->
|
||||||
|
|
||||||
|
## Summary
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Briefly describe what this pull request changes.
|
||||||
|
-->
|
||||||
|
|
||||||
|
## Rationale
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Describe why you have made this change.
|
||||||
|
-->
|
||||||
|
|
||||||
|
## Testing Environment
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Describe the environment in which you have tested this change:
|
||||||
|
-->
|
||||||
|
|
||||||
|
I have tested this pull request on:
|
||||||
|
|
||||||
|
**Operating system name and version:** <!-- e.g. Linux 3.11 -->
|
||||||
|
**Compiler name and version:** <!-- e.g. GCC 4.2.0 -->
|
||||||
|
|
||||||
|
## Checks
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Tick the boxes for the checks you have made.
|
||||||
|
-->
|
||||||
|
|
||||||
|
I have ensured that:
|
||||||
|
|
||||||
|
- [ ] The code I am submitting is my own work and/or I have permission from the author to share it.
|
||||||
|
- [ ] Generative AI (Copilot, ChatGPT, etc) was not used to create any part of this pull request.
|
||||||
|
- [ ] If the pull request contains a security fix I have followed the reporting rules mentioned in [the security policy](https://github.com/anope/anope/security/policy) (delete if not applicable).
|
||||||
|
- [ ] I have documented any features added by this pull request (delete if not applicable).
|
||||||
|
- [ ] This pull request does not introduce any incompatible API changes (stable branches only, delete if not applicable).
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
# Security Policy
|
||||||
|
|
||||||
|
## Supported Versions
|
||||||
|
|
||||||
|
Currently the 2.0 (stable) branch is actively receiving security fixes.
|
||||||
|
|
||||||
|
The 2.1 (development) branch is still early in development and currently only receives security fixes when they are synced from the 2.0 branch.
|
||||||
|
|
||||||
|
Version | Supported
|
||||||
|
------- | ---------
|
||||||
|
2.1.x | :warning:
|
||||||
|
2.0.x | :white_check_mark:
|
||||||
|
1.8.x | :x:
|
||||||
|
|
||||||
|
## Reporting a Vulnerability
|
||||||
|
|
||||||
|
Please do not report security vulnerabilities on GitHub. Instead, email the details to team@anope.org or get the attention of a developer in our development IRC channel at irc.teranova.net #anope-devel and PM them the details.
|
||||||
|
|
||||||
|
We will triage your issue as soon as possible and try to release a fixed version within a week of receiving your report.
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
version: 2
|
||||||
|
updates:
|
||||||
|
- package-ecosystem: github-actions
|
||||||
|
directory: /
|
||||||
|
schedule:
|
||||||
|
interval: monthly
|
||||||
|
target-branch: "2.1"
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
name: Ubuntu CI
|
||||||
|
on:
|
||||||
|
- pull_request
|
||||||
|
- push
|
||||||
|
- workflow_dispatch
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
if: "!contains(github.event.head_commit.message, '[skip ubuntu ci]')"
|
||||||
|
runs-on: ubuntu-24.04
|
||||||
|
env:
|
||||||
|
CXX: ${{ matrix.compiler }}
|
||||||
|
CXXFLAGS: -std=${{ matrix.standard }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v6
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
sudo apt-get update --assume-yes
|
||||||
|
sudo apt-get install --assume-yes --no-install-recommends \
|
||||||
|
clang \
|
||||||
|
g++ \
|
||||||
|
gettext \
|
||||||
|
git \
|
||||||
|
libgnutls28-dev \
|
||||||
|
libldap2-dev \
|
||||||
|
libmysqlclient-dev \
|
||||||
|
libpcre2-dev \
|
||||||
|
libpcre3-dev \
|
||||||
|
libsqlite3-dev \
|
||||||
|
libssl-dev \
|
||||||
|
libtre-dev \
|
||||||
|
ninja-build
|
||||||
|
|
||||||
|
- name: Enable extras
|
||||||
|
run: |
|
||||||
|
for MODULE in m_ldap.cpp m_ldap_authentication.cpp m_ldap_oper.cpp m_mysql.cpp m_regex_pcre.cpp m_regex_pcre2.cpp m_regex_posix.cpp m_regex_tre.cpp m_sql_authentication.cpp m_sql_log.cpp m_sql_oper.cpp m_sqlite.cpp m_ssl_gnutls.cpp m_ssl_openssl.cpp stats
|
||||||
|
do
|
||||||
|
ln -s ${{ github.workspace }}/modules/extra/$MODULE ${{ github.workspace }}/modules
|
||||||
|
done
|
||||||
|
|
||||||
|
- name: Run CMake
|
||||||
|
run: |
|
||||||
|
mkdir build && cd build
|
||||||
|
cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=DEBUG -DINSTDIR:STRING=${{ github.workspace }}/run ..
|
||||||
|
|
||||||
|
- name: Build Anope
|
||||||
|
run: |
|
||||||
|
ninja -C ${{ github.workspace }}/build install
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
compiler:
|
||||||
|
- clang++
|
||||||
|
- g++
|
||||||
|
standard:
|
||||||
|
- c++98
|
||||||
|
- c++17
|
||||||
@@ -0,0 +1,74 @@
|
|||||||
|
name: Windows CI
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
release:
|
||||||
|
types:
|
||||||
|
- published
|
||||||
|
workflow_dispatch:
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
if: "!contains(github.event.head_commit.message, '[skip windows ci]')"
|
||||||
|
runs-on: windows-2025
|
||||||
|
env:
|
||||||
|
BUILD_TYPE: ${{ github.event_name == 'release' && 'Release' || 'Debug' }}
|
||||||
|
CONAN_USER_HOME: ${{ github.workspace }}/win/build
|
||||||
|
CONAN_USER_HOME_SHORT: None
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v6
|
||||||
|
|
||||||
|
- name: Setup NSIS
|
||||||
|
run: |-
|
||||||
|
choco install nsis
|
||||||
|
|
||||||
|
- name: Setup MSBuild
|
||||||
|
uses: microsoft/setup-msbuild@v2
|
||||||
|
|
||||||
|
- name: Setup Conan
|
||||||
|
uses: turtlebrowser/get-conan@v1.2
|
||||||
|
with:
|
||||||
|
version: 1.66.0
|
||||||
|
|
||||||
|
- name: Try to restore libraries from the cache
|
||||||
|
uses: actions/cache/restore@v4
|
||||||
|
id: library-cache
|
||||||
|
with:
|
||||||
|
key: conan-${{ hashFiles('src/win32/conanfile.txt') }}
|
||||||
|
path: ${{ env.CONAN_USER_HOME }}/.conan
|
||||||
|
|
||||||
|
- name: Install libraries
|
||||||
|
run: |
|
||||||
|
conan install ${{ github.workspace }}\src\win32 --build=missing
|
||||||
|
|
||||||
|
- name: Save libraries to the cache
|
||||||
|
if: ${{ steps.library-cache.outputs.cache-hit != 'true' }}
|
||||||
|
uses: actions/cache/save@v4
|
||||||
|
with:
|
||||||
|
key: ${{ steps.library-cache.outputs.cache-primary-key }}
|
||||||
|
path: ${{ env.CONAN_USER_HOME }}/.conan
|
||||||
|
|
||||||
|
- name: Run CMake
|
||||||
|
run: |
|
||||||
|
mkdir ${{ github.workspace }}\build
|
||||||
|
cd ${{ github.workspace }}\build
|
||||||
|
cmake -A x64 -D "CMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }}" -G "Visual Studio 17 2022" ..
|
||||||
|
|
||||||
|
- name: Build Anope
|
||||||
|
working-directory: ${{ github.workspace }}\build
|
||||||
|
run: |
|
||||||
|
msbuild PACKAGE.vcxproj /M:5 /P:Configuration=${{ env.BUILD_TYPE }} /P:Platform=x64 /VERBOSITY:MINIMAL
|
||||||
|
|
||||||
|
- name: Upload installer
|
||||||
|
if: "${{ github.event_name == 'release' }}"
|
||||||
|
working-directory: ${{ github.workspace }}\build
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
run: |
|
||||||
|
gh release upload ${{ github.event.release.tag_name }} $(Get-ChildItem anope-*.exe)
|
||||||
|
|
||||||
|
- name: Upload artifact
|
||||||
|
if: "${{ github.event_name != 'release' }}"
|
||||||
|
uses: actions/upload-artifact@v5
|
||||||
|
with:
|
||||||
|
name: windows-installer
|
||||||
|
path: ${{ github.workspace }}\build\\anope-*.exe
|
||||||
+19
-2
@@ -1,3 +1,20 @@
|
|||||||
config.cache
|
|
||||||
include/sysconf.h
|
|
||||||
build/
|
build/
|
||||||
|
config.cache
|
||||||
|
docs/doxygen
|
||||||
|
include/sysconf.h
|
||||||
|
modules/m_ldap.cpp
|
||||||
|
modules/m_ldap_authentication.cpp
|
||||||
|
modules/m_ldap_oper.cpp
|
||||||
|
modules/m_mysql.cpp
|
||||||
|
modules/m_regex_pcre.cpp
|
||||||
|
modules/m_regex_pcre2.cpp
|
||||||
|
modules/m_regex_posix.cpp
|
||||||
|
modules/m_regex_tre.cpp
|
||||||
|
modules/m_sql_authentication.cpp
|
||||||
|
modules/m_sql_log.cpp
|
||||||
|
modules/m_sql_oper.cpp
|
||||||
|
modules/m_sqlite.cpp
|
||||||
|
modules/m_ssl_gnutls.cpp
|
||||||
|
modules/m_ssl_openssl.cpp
|
||||||
|
modules/stats
|
||||||
|
run/
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
(svnadmin) <svn@localhost> <svn svn@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>
|
||||||
Adam <adam@anope.org> <adam-@5417fbe8-f217-4b02-8779-1006273d7864>
|
Adam <adam@anope.org> <adam-@5417fbe8-f217-4b02-8779-1006273d7864>
|
||||||
Adam <adam@anope.org> <adam@adam-laptop.(none)>
|
Adam <adam@anope.org> <adam@adam-laptop.(none)>
|
||||||
Adam <adam@anope.org> <Adam@anope.org>
|
Adam <adam@anope.org> <Adam@anope.org>
|
||||||
@@ -5,33 +6,55 @@ Adam <adam@anope.org> <Adam@drink-coca-cola.info>
|
|||||||
Adam <adam@anope.org> <Adam@sigterm.info>
|
Adam <adam@anope.org> <Adam@sigterm.info>
|
||||||
Adam Kramer <ribosome@anope.org> <ribosome ribosome@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>
|
Adam Kramer <ribosome@anope.org> <ribosome ribosome@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>
|
||||||
Alvaro Toledo <atoledo@keldon.org> <atoledo atoledo@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>
|
Alvaro Toledo <atoledo@keldon.org> <atoledo atoledo@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>
|
||||||
|
Attila Molnar <attilamolnar@hush.com>
|
||||||
Björn Stiddien <keeper@anope.org> <keeper keeper@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>
|
Björn Stiddien <keeper@anope.org> <keeper keeper@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>
|
||||||
Charles Kingsley <chaz@anope.org>
|
Charles Kingsley <chaz@anope.org>
|
||||||
Charles Kingsley <chaz@anope.org> <sjaz@5417fbe8-f217-4b02-8779-1006273d7864>
|
Charles Kingsley <chaz@anope.org> <sjaz@5417fbe8-f217-4b02-8779-1006273d7864>
|
||||||
|
Cronus <cronus@nite-serv.com>
|
||||||
Daniel Engel <dane@zero.org> <dane dane@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>
|
Daniel Engel <dane@zero.org> <dane dane@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>
|
||||||
David Robson <rob@anope.org> <robbeh@5417fbe8-f217-4b02-8779-1006273d7864>
|
|
||||||
David Robson <rob@anope.org> <rob rob@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>
|
David Robson <rob@anope.org> <rob rob@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>
|
||||||
|
David Robson <rob@anope.org> <robbeh@5417fbe8-f217-4b02-8779-1006273d7864>
|
||||||
Dennis Friis <peavey@inspircd.org> <peavey peavey@inspircd.org@5417fbe8-f217-4b02-8779-1006273d7864>
|
Dennis Friis <peavey@inspircd.org> <peavey peavey@inspircd.org@5417fbe8-f217-4b02-8779-1006273d7864>
|
||||||
Fabio Scotoni <cculex@gmail.com>
|
Fabio Scotoni <cculex@gmail.com>
|
||||||
|
Filippo Cortigiani <simos@simosnap.org> <devel@devel.crtnet.it>
|
||||||
|
Filippo Cortigiani <simos@simosnap.org> <simos@H7-25.fritz.box>
|
||||||
Florian Schulze <certus@anope.org> <certus certus@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>
|
Florian Schulze <certus@anope.org> <certus certus@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>
|
||||||
Gabriel Acevedo H. <drstein@anope.org> <drstein drstein@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>
|
Gabriel Acevedo H. <drstein@anope.org> <drstein drstein@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>
|
||||||
|
Harakiri <harakiri@overstack.fr>
|
||||||
|
Hendrik Jäger <gitcommit@henk.geekmail.org> <github@henk.geekmail.org>
|
||||||
Jan Milants <viper@anope.org>
|
Jan Milants <viper@anope.org>
|
||||||
Jan Milants <viper@anope.org> <jantje_85@5417fbe8-f217-4b02-8779-1006273d7864>
|
Jan Milants <viper@anope.org> <jantje_85@5417fbe8-f217-4b02-8779-1006273d7864>
|
||||||
Jan Milants <viper@anope.org> <viper viper@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>
|
Jan Milants <viper@anope.org> <viper viper@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>
|
||||||
Jens Voss <dukepyrolator@anope.org> <anope@s15355730.onlinehome-server.info>
|
Jens Voss <dukepyrolator@anope.org> <anope@s15355730.onlinehome-server.info>
|
||||||
Jens Voss <dukepyrolator@anope.org> <DukePyrolator@5417fbe8-f217-4b02-8779-1006273d7864>
|
Jens Voss <dukepyrolator@anope.org> <DukePyrolator@5417fbe8-f217-4b02-8779-1006273d7864>
|
||||||
Jens Voss <dukepyrolator@anope.org> <DukePyrolator@anope.org>
|
Jens Voss <dukepyrolator@anope.org> <DukePyrolator@anope.org>
|
||||||
Jens Voss <dukepyrolator@anope.org> Jens Voß <jens@pyrobook.(none)>
|
Jens Voss <dukepyrolator@anope.org> <jens@pyrobook.(none)>
|
||||||
|
k4be <k4be@pirc.pl> <34816207+k4bek4be@users.noreply.github.com>
|
||||||
Lee Holmes <lethality@anope.org>
|
Lee Holmes <lethality@anope.org>
|
||||||
|
Lee Holmes <lethality@anope.org> <lee@lethality.me.uk>
|
||||||
Mark Summers <mark@goopler.net> <mark mark@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>
|
Mark Summers <mark@goopler.net> <mark mark@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>
|
||||||
|
Matt Schatz <genius3000@g3k.solutions>
|
||||||
|
Matt Ullman <matt@airraidsirens.com> <blindsight@gamesurge.net>
|
||||||
|
Michael Hazell <michaelhazell@hotmail.com> <Techman-@users.noreply.github.com>
|
||||||
|
Michael Stapelberg <michael@robustirc.net> <stapelberg@users.noreply.github.com>
|
||||||
|
Michael Wobst <wobst.michael@web.de>
|
||||||
|
Michael Wobst <wobst.michael@web.de> <michael@static.163.129.251.148.clients.your-server.de>
|
||||||
|
Michael Wobst <wobst.michael@web.de> <michael@wobst.at>
|
||||||
Naram Qashat <cyberbotx@anope.org> <cyberbotx@5417fbe8-f217-4b02-8779-1006273d7864>
|
Naram Qashat <cyberbotx@anope.org> <cyberbotx@5417fbe8-f217-4b02-8779-1006273d7864>
|
||||||
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>
|
||||||
|
PeGaSuS <droider.pc@gmail.com>
|
||||||
|
PeGaSuS <droider.pc@gmail.com> <25697531+TehPeGaSuS@users.noreply.github.com>
|
||||||
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@chat.be>
|
Robby <robby@chatbelgie.be> <robby@anope.org>
|
||||||
|
Robby <robby@chatbelgie.be> <robby@chat.be>
|
||||||
|
Robert Scheck <robert@fedoraproject.org> <robert-scheck@users.noreply.github.com>
|
||||||
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>
|
||||||
|
Sadie Powell <sadie@sadiepowell.dev> <petpow@saberuk.com>
|
||||||
|
Sadie Powell <sadie@sadiepowell.dev> <sadie@witchery.services>
|
||||||
|
Sebastian Barfurth <github@afreshmelon.com>
|
||||||
Sebastian V. <hal9000@denorastats.org>
|
Sebastian V. <hal9000@denorastats.org>
|
||||||
Sebastian V. <hal9000@denorastats.org> <pimpmylinux@5417fbe8-f217-4b02-8779-1006273d7864>
|
Sebastian V. <hal9000@denorastats.org> <pimpmylinux@5417fbe8-f217-4b02-8779-1006273d7864>
|
||||||
(svnadmin) <svn@localhost> <svn svn@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>
|
|
||||||
Trystan S. Lee <trystan@nomadirc.net> <trystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>
|
Trystan S. Lee <trystan@nomadirc.net> <trystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>
|
||||||
|
Val Lorentz <progval+git@progval.net> <progval+git@progval.net>
|
||||||
|
|||||||
-16
@@ -1,16 +0,0 @@
|
|||||||
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
-63
@@ -1,19 +1,5 @@
|
|||||||
# This usage of CMake requires at least version 2.4 (checks are made to determine what to use when certain versions lack functions)
|
# This usage of CMake requires at least version 2.4 (checks are made to determine what to use when certain versions lack functions)
|
||||||
cmake_minimum_required(VERSION 2.4 FATAL_ERROR)
|
cmake_minimum_required(VERSION 2.4...3.20 FATAL_ERROR)
|
||||||
if(COMMAND cmake_policy)
|
|
||||||
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)
|
|
||||||
|
|
||||||
# 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)
|
||||||
@@ -50,20 +36,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)
|
||||||
@@ -85,8 +71,17 @@ 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)
|
||||||
|
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: "
|
||||||
@@ -152,7 +147,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)
|
||||||
@@ -225,11 +220,15 @@ if(EXTRA_LIBS)
|
|||||||
link_directories(${EXTRA_LIBS})
|
link_directories(${EXTRA_LIBS})
|
||||||
endif(EXTRA_LIBS)
|
endif(EXTRA_LIBS)
|
||||||
|
|
||||||
|
# setup conan
|
||||||
|
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/conanbuildinfo.cmake")
|
||||||
|
include("${CMAKE_CURRENT_SOURCE_DIR}/conanbuildinfo.cmake")
|
||||||
|
conan_basic_setup()
|
||||||
|
endif()
|
||||||
|
|
||||||
# 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
|
||||||
@@ -237,6 +236,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)
|
||||||
@@ -282,13 +286,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)
|
||||||
@@ -343,12 +349,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)
|
||||||
@@ -370,19 +376,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)
|
||||||
|
|
||||||
@@ -415,7 +413,6 @@ 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})
|
||||||
string(REGEX REPLACE "^VERSION_([A-Z]+)=\"?([^\"]*)\"?$" "\\1;\\2" VERSION_OUT ${VERSION_STR})
|
string(REGEX REPLACE "^VERSION_([A-Z]+)=\"?([^\"]*)\"?$" "\\1;\\2" VERSION_OUT ${VERSION_STR})
|
||||||
# Depends on CMP0007 OLD
|
|
||||||
list(LENGTH VERSION_OUT VERSION_LEN)
|
list(LENGTH VERSION_OUT VERSION_LEN)
|
||||||
list(GET VERSION_OUT 0 VERSION_TYPE)
|
list(GET VERSION_OUT 0 VERSION_TYPE)
|
||||||
if(${VERSION_LEN} GREATER 1)
|
if(${VERSION_LEN} GREATER 1)
|
||||||
@@ -472,42 +469,30 @@ if(${Anope_SOURCE_DIR} STREQUAL ${Anope_BINARY_DIR})
|
|||||||
endif(MSVC)
|
endif(MSVC)
|
||||||
endif(${Anope_SOURCE_DIR} STREQUAL ${Anope_BINARY_DIR})
|
endif(${Anope_SOURCE_DIR} STREQUAL ${Anope_BINARY_DIR})
|
||||||
|
|
||||||
# Go into the following directories and run their CMakeLists.txt as well
|
|
||||||
add_subdirectory(data)
|
|
||||||
add_subdirectory(docs)
|
|
||||||
add_subdirectory(language)
|
|
||||||
add_subdirectory(src)
|
|
||||||
add_subdirectory(modules)
|
|
||||||
add_subdirectory(include)
|
|
||||||
|
|
||||||
# Get the filename of the Anope binary, to use later
|
# Get the filename of the Anope binary, to use later
|
||||||
get_target_property(SERVICES_BINARY ${PROGRAM_NAME} LOCATION)
|
set(SERVICES_BINARY "$<TARGET_FILE:${PROGRAM_NAME}>")
|
||||||
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)
|
||||||
install(FILES ${Anope_SOURCE_DIR}/src/win32/anope.bat
|
install(FILES ${Anope_SOURCE_DIR}/src/win32/anope.bat
|
||||||
DESTINATION ${BIN_DIR}
|
DESTINATION ${BIN_DIR}
|
||||||
)
|
)
|
||||||
|
|
||||||
# Package any DLLs in src/win/
|
|
||||||
file(GLOB EXTRA_DLLS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "${Anope_SOURCE_DIR}/src/win32/*.dll")
|
|
||||||
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")
|
||||||
@@ -537,14 +522,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")
|
||||||
@@ -553,3 +538,12 @@ if(EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake")
|
|||||||
set(CPACK_MONOLITHIC_INSTALL TRUE)
|
set(CPACK_MONOLITHIC_INSTALL TRUE)
|
||||||
include(CPack)
|
include(CPack)
|
||||||
endif(EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake")
|
endif(EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake")
|
||||||
|
|
||||||
|
# Go into the following directories and run their CMakeLists.txt as well
|
||||||
|
add_subdirectory(data)
|
||||||
|
add_subdirectory(docs)
|
||||||
|
add_subdirectory(language)
|
||||||
|
add_subdirectory(src)
|
||||||
|
add_subdirectory(modules)
|
||||||
|
add_subdirectory(include)
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# Configuration script for Services.
|
# Configuration script for Services.
|
||||||
#
|
#
|
||||||
# Anope (c) 2003-2014 Anope Team
|
# Anope (C) 2003-2024 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=
|
||||||
@@ -152,6 +149,9 @@ while [ $# -ge 1 ] ; do
|
|||||||
echo "-nointro Skip intro (disclaimer, etc)"
|
echo "-nointro Skip intro (disclaimer, etc)"
|
||||||
echo "-quick Skip questions, go straight to cmake"
|
echo "-quick Skip questions, go straight to cmake"
|
||||||
exit 0
|
exit 0
|
||||||
|
elif [ $1 = "-devel" ] ; then
|
||||||
|
DEBUG="yes"
|
||||||
|
INSTDIR="$PWD/run"
|
||||||
elif [ $1 = "-nocache" ] ; then
|
elif [ $1 = "-nocache" ] ; then
|
||||||
IGNORE_CACHE="1"
|
IGNORE_CACHE="1"
|
||||||
elif [ $1 = "-nointro" ] ; then
|
elif [ $1 = "-nointro" ] ; then
|
||||||
@@ -173,10 +173,10 @@ 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
|
||||||
echo "Anope requires CMake 2.4 or newer, which can be downloaded at http://cmake.org or through your system's package manager."
|
echo "Anope requires CMake 2.4 or newer, which can be downloaded at https://cmake.org/ or through your system's package manager."
|
||||||
echo "If you have installed CMake already, ensure it is in your PATH environment variable."
|
echo "If you have installed CMake already, ensure it is in your PATH environment variable."
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
@@ -193,6 +193,7 @@ if [ ! "$NO_INTRO" ] ; then
|
|||||||
clear
|
clear
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
export MORE='-e'
|
||||||
. $SOURCE_DIR/src/version.sh
|
. $SOURCE_DIR/src/version.sh
|
||||||
cat $SOURCE_DIR/.BANNER | sed "s/CURVER/$VERSION_MAJOR.$VERSION_MINOR.$VERSION_PATCH$VERSION_EXTRA/" | sed "s@SOURCE_DIR@$SOURCE_DIR@" | $PAGER
|
cat $SOURCE_DIR/.BANNER | sed "s/CURVER/$VERSION_MAJOR.$VERSION_MINOR.$VERSION_PATCH$VERSION_EXTRA/" | sed "s@SOURCE_DIR@$SOURCE_DIR@" | $PAGER
|
||||||
echo ""
|
echo ""
|
||||||
@@ -321,30 +322,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"
|
||||||
@@ -401,7 +378,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
|
||||||
@@ -426,7 +403,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"
|
||||||
|
|||||||
@@ -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.teranova.net
|
||||||
|
|
||||||
|
## 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.teranova.net](ircs://irc.teranova.net/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.
|
||||||
+19
-10
@@ -160,7 +160,7 @@ macro(sort_list LIST)
|
|||||||
# For CMake 2.4.4 or better, this can be done automatically
|
# For CMake 2.4.4 or better, this can be done automatically
|
||||||
list(SORT ${LIST})
|
list(SORT ${LIST})
|
||||||
else(CMAKE244_OR_BETTER)
|
else(CMAKE244_OR_BETTER)
|
||||||
# For CMake 2.4.x before 2.4.4, we have to do this ourselves, firstly we'll create a teporary list
|
# For CMake 2.4.x before 2.4.4, we have to do this ourselves, firstly we'll create a temporary list
|
||||||
set(NEW_LIST)
|
set(NEW_LIST)
|
||||||
# Iterate through the old list
|
# Iterate through the old list
|
||||||
foreach(ITEM ${${LIST}})
|
foreach(ITEM ${${LIST}})
|
||||||
@@ -408,7 +408,7 @@ macro(calculate_depends SRC)
|
|||||||
else(FOUND_${FILENAME}_INCLUDE)
|
else(FOUND_${FILENAME}_INCLUDE)
|
||||||
# XXX
|
# XXX
|
||||||
if(NOT ${FILENAME} STREQUAL "libintl.h")
|
if(NOT ${FILENAME} STREQUAL "libintl.h")
|
||||||
message(FATAL_ERROR "${SRC} needs header file ${FILENAME} but we were unable to locate that header file! Check that the header file is within the search path of your OS.")
|
message(WARNING "${SRC} needs header file ${FILENAME} but we were unable to locate that header file! Check that the header file is within the search path of your OS.")
|
||||||
endif(NOT ${FILENAME} STREQUAL "libintl.h")
|
endif(NOT ${FILENAME} STREQUAL "libintl.h")
|
||||||
endif(FOUND_${FILENAME}_INCLUDE)
|
endif(FOUND_${FILENAME}_INCLUDE)
|
||||||
endif(CHECK_ANGLE_INCLUDES)
|
endif(CHECK_ANGLE_INCLUDES)
|
||||||
@@ -445,23 +445,32 @@ macro(calculate_libraries SRC SRC_LDFLAGS EXTRA_DEPENDS)
|
|||||||
string(REGEX REPLACE "," ";" REQUIRED_LIBRARY ${REQUIRED_LIBRARY})
|
string(REGEX REPLACE "," ";" REQUIRED_LIBRARY ${REQUIRED_LIBRARY})
|
||||||
# Iterate through the libraries given
|
# Iterate through the libraries given
|
||||||
foreach(LIBRARY ${REQUIRED_LIBRARY})
|
foreach(LIBRARY ${REQUIRED_LIBRARY})
|
||||||
|
# If the library has multiple names extract the alternate.
|
||||||
|
unset(LIBRARY_ALT)
|
||||||
|
if (${LIBRARY} MATCHES "^.+\\|.+$")
|
||||||
|
string(REGEX REPLACE ".+\\|(.*)" "\\1" LIBRARY_ALT ${LIBRARY})
|
||||||
|
string(REGEX REPLACE "(.+)\\|.*" "\\1" LIBRARY ${LIBRARY})
|
||||||
|
endif(${LIBRARY} MATCHES "^.+\\|.+$")
|
||||||
# Locate the library to see if it exists
|
# Locate the library to see if it exists
|
||||||
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} ${LIBRARY_ALT} 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} ${LIBRARY_ALT} PATHS ${EXTRA_INCLUDE} ${EXTRA_LIBS} NO_DEFAULT_PATH)
|
||||||
|
find_library(FOUND_${LIBRARY}_LIBRARY NAMES ${LIBRARY} ${LIBRARY_ALT} 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)
|
||||||
# Get the path only of the library, to add it to linker flags
|
|
||||||
get_filename_component(LIBRARY_PATH ${FOUND_${LIBRARY}_LIBRARY} PATH)
|
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
# For Visual Studio, instead of editing the linker flags, we'll add the library to a separate list of extra dependencies
|
# For Visual Studio, instead of editing the linker flags, we'll add the library to a separate list of extra dependencies
|
||||||
append_to_list(EXTRA_DEPENDENCIES "${FOUND_${LIBRARY}_LIBRARY}")
|
append_to_list(EXTRA_DEPENDENCIES "${FOUND_${LIBRARY}_LIBRARY}")
|
||||||
else(MSVC)
|
else(MSVC)
|
||||||
# For all others, add the library paths and libraries
|
# Get the path only of the library, to add it to library paths.
|
||||||
|
get_filename_component(LIBRARY_PATH ${FOUND_${LIBRARY}_LIBRARY} PATH)
|
||||||
append_to_list(LIBRARY_PATHS "${LIBRARY_PATH}")
|
append_to_list(LIBRARY_PATHS "${LIBRARY_PATH}")
|
||||||
append_to_list(LIBRARIES "${LIBRARY}")
|
# Extract the library short name, add it to the library path
|
||||||
|
get_filename_component(LIBRARY_NAME ${FOUND_${LIBRARY}_LIBRARY} NAME_WE)
|
||||||
|
string(REGEX REPLACE "^lib" "" LIBRARY_NAME ${LIBRARY_NAME})
|
||||||
|
append_to_list(LIBRARIES ${LIBRARY_NAME})
|
||||||
endif(MSVC)
|
endif(MSVC)
|
||||||
else(FOUND_${LIBRARY}_LIBRARY)
|
else(FOUND_${LIBRARY}_LIBRARY)
|
||||||
# In the case of the library not being found, we fatally error so CMake stops trying to generate
|
# In the case of the library not being found, we fatally error so CMake stops trying to generate
|
||||||
@@ -496,7 +505,7 @@ endmacro(calculate_libraries)
|
|||||||
# check_functions(<source filename> <output variable set to TRUE on success>)
|
# check_functions(<source filename> <output variable set to TRUE on success>)
|
||||||
#
|
#
|
||||||
# This macro is used in most of the module (sub)directories to calculate the
|
# This macro is used in most of the module (sub)directories to calculate the
|
||||||
# fcuntion dependencies for the given source file.
|
# function dependencies for the given source file.
|
||||||
###############################################################################
|
###############################################################################
|
||||||
macro(check_functions SRC SUCCESS)
|
macro(check_functions SRC SUCCESS)
|
||||||
# Default to true
|
# Default to true
|
||||||
@@ -530,7 +539,7 @@ endmacro(check_functions)
|
|||||||
# of TRUE is given, periods will be converted to \\. for CPack.
|
# of TRUE is given, periods will be converted to \\. for CPack.
|
||||||
###############################################################################
|
###############################################################################
|
||||||
macro(add_to_cpack_ignored_files ITEM)
|
macro(add_to_cpack_ignored_files ITEM)
|
||||||
# Temporary copy of the orignal item
|
# Temporary copy of the original item
|
||||||
set(REAL_ITEM "${ITEM}")
|
set(REAL_ITEM "${ITEM}")
|
||||||
# If we have 2+ arguments, assume that the second one was something like TRUE (doesn't matter really) and convert periods so they will be \\. for CPack
|
# If we have 2+ arguments, assume that the second one was something like TRUE (doesn't matter really) and convert periods so they will be \\. for CPack
|
||||||
if(${ARGC} GREATER 1)
|
if(${ARGC} GREATER 1)
|
||||||
|
|||||||
@@ -10,9 +10,9 @@ if(NOT WIN32)
|
|||||||
endif(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)
|
||||||
find_library(GETTEXT_LIBRARY libintl PATHS ${DEFAULT_LIBRARY_DIRS} ${WSDK_PATH}/lib $ENV{VCINSTALLDIR}/lib gettext/lib ${EXTRA_LIBS})
|
find_library(GETTEXT_LIBRARY gnuintl)
|
||||||
find_program(GETTEXT_MSGFMT msgfmt PATHS ${DEFAULT_INCLUDE_DIRS} ${WSDK_PATH}/bin $ENV{VCINSTALLDIR}/bin gettext/bin ${EXTRA_INCLUDE})
|
find_program(GETTEXT_MSGFMT msgfmt)
|
||||||
if(GETTEXT_INCLUDE AND GETTEXT_LIBRARY AND GETTEXT_MSGFMT)
|
if(GETTEXT_INCLUDE AND GETTEXT_LIBRARY AND GETTEXT_MSGFMT)
|
||||||
set(GETTEXT_FOUND TRUE)
|
set(GETTEXT_FOUND TRUE)
|
||||||
set(GETTEXT_LIBRARIES ${GETTEXT_LIBRARY})
|
set(GETTEXT_LIBRARIES ${GETTEXT_LIBRARY})
|
||||||
|
|||||||
+25
-25
@@ -118,7 +118,7 @@ Var AR_RegFlags
|
|||||||
"exit_${SecName}:"
|
"exit_${SecName}:"
|
||||||
!macroend
|
!macroend
|
||||||
|
|
||||||
!macro RemoveSection SecName
|
!macro RemoveSection_CPack SecName
|
||||||
; This macro is used to call section's Remove_... macro
|
; This macro is used to call section's Remove_... macro
|
||||||
;from the uninstaller.
|
;from the uninstaller.
|
||||||
;Input: section index constant name specified in Section command.
|
;Input: section index constant name specified in Section command.
|
||||||
@@ -348,7 +348,7 @@ Function un.RemoveFromPath
|
|||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
; Uninstall sutff
|
; Uninstall stuff
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
###########################################
|
###########################################
|
||||||
@@ -452,15 +452,15 @@ Done:
|
|||||||
Exch $R1
|
Exch $R1
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|
||||||
Function ConditionalAddToRegisty
|
Function ConditionalAddToRegistry
|
||||||
Pop $0
|
Pop $0
|
||||||
Pop $1
|
Pop $1
|
||||||
StrCmp "$0" "" ConditionalAddToRegisty_EmptyString
|
StrCmp "$0" "" ConditionalAddToRegistry_EmptyString
|
||||||
WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" \
|
WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" \
|
||||||
"$1" "$0"
|
"$1" "$0"
|
||||||
;MessageBox MB_OK "Set Registry: '$1' to '$0'"
|
;MessageBox MB_OK "Set Registry: '$1' to '$0'"
|
||||||
DetailPrint "Set install registry entry: '$1' to '$0'"
|
DetailPrint "Set install registry entry: '$1' to '$0'"
|
||||||
ConditionalAddToRegisty_EmptyString:
|
ConditionalAddToRegistry_EmptyString:
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|
||||||
;--------------------------------
|
;--------------------------------
|
||||||
@@ -558,44 +558,44 @@ Section "-Core installation"
|
|||||||
WriteUninstaller "$INSTDIR\Uninstall.exe"
|
WriteUninstaller "$INSTDIR\Uninstall.exe"
|
||||||
Push "DisplayName"
|
Push "DisplayName"
|
||||||
Push "@CPACK_NSIS_DISPLAY_NAME@"
|
Push "@CPACK_NSIS_DISPLAY_NAME@"
|
||||||
Call ConditionalAddToRegisty
|
Call ConditionalAddToRegistry
|
||||||
Push "DisplayVersion"
|
Push "DisplayVersion"
|
||||||
Push "@CPACK_PACKAGE_VERSION@"
|
Push "@CPACK_PACKAGE_VERSION@"
|
||||||
Call ConditionalAddToRegisty
|
Call ConditionalAddToRegistry
|
||||||
Push "Publisher"
|
Push "Publisher"
|
||||||
Push "@CPACK_PACKAGE_VENDOR@"
|
Push "@CPACK_PACKAGE_VENDOR@"
|
||||||
Call ConditionalAddToRegisty
|
Call ConditionalAddToRegistry
|
||||||
Push "UninstallString"
|
Push "UninstallString"
|
||||||
Push "$INSTDIR\Uninstall.exe"
|
Push "$INSTDIR\Uninstall.exe"
|
||||||
Call ConditionalAddToRegisty
|
Call ConditionalAddToRegistry
|
||||||
Push "NoRepair"
|
Push "NoRepair"
|
||||||
Push "1"
|
Push "1"
|
||||||
Call ConditionalAddToRegisty
|
Call ConditionalAddToRegistry
|
||||||
|
|
||||||
!ifdef CPACK_NSIS_ADD_REMOVE
|
!ifdef CPACK_NSIS_ADD_REMOVE
|
||||||
;Create add/remove functionality
|
;Create add/remove functionality
|
||||||
Push "ModifyPath"
|
Push "ModifyPath"
|
||||||
Push "$INSTDIR\AddRemove.exe"
|
Push "$INSTDIR\AddRemove.exe"
|
||||||
Call ConditionalAddToRegisty
|
Call ConditionalAddToRegistry
|
||||||
!else
|
!else
|
||||||
Push "NoModify"
|
Push "NoModify"
|
||||||
Push "1"
|
Push "1"
|
||||||
Call ConditionalAddToRegisty
|
Call ConditionalAddToRegistry
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
; Optional registration
|
; Optional registration
|
||||||
Push "DisplayIcon"
|
Push "DisplayIcon"
|
||||||
Push "$INSTDIR\@CPACK_NSIS_INSTALLED_ICON_NAME@"
|
Push "$INSTDIR\@CPACK_NSIS_INSTALLED_ICON_NAME@"
|
||||||
Call ConditionalAddToRegisty
|
Call ConditionalAddToRegistry
|
||||||
Push "HelpLink"
|
Push "HelpLink"
|
||||||
Push "@CPACK_NSIS_HELP_LINK@"
|
Push "@CPACK_NSIS_HELP_LINK@"
|
||||||
Call ConditionalAddToRegisty
|
Call ConditionalAddToRegistry
|
||||||
Push "URLInfoAbout"
|
Push "URLInfoAbout"
|
||||||
Push "@CPACK_NSIS_URL_INFO_ABOUT@"
|
Push "@CPACK_NSIS_URL_INFO_ABOUT@"
|
||||||
Call ConditionalAddToRegisty
|
Call ConditionalAddToRegistry
|
||||||
Push "Contact"
|
Push "Contact"
|
||||||
Push "@CPACK_NSIS_CONTACT@"
|
Push "@CPACK_NSIS_CONTACT@"
|
||||||
Call ConditionalAddToRegisty
|
Call ConditionalAddToRegistry
|
||||||
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
|
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
|
||||||
|
|
||||||
;Create shortcuts
|
;Create shortcuts
|
||||||
@@ -607,19 +607,19 @@ Section "-Core installation"
|
|||||||
; Write special uninstall registry entries
|
; Write special uninstall registry entries
|
||||||
Push "StartMenu"
|
Push "StartMenu"
|
||||||
Push "$STARTMENU_FOLDER"
|
Push "$STARTMENU_FOLDER"
|
||||||
Call ConditionalAddToRegisty
|
Call ConditionalAddToRegistry
|
||||||
Push "DoNotAddToPath"
|
Push "DoNotAddToPath"
|
||||||
Push "$DO_NOT_ADD_TO_PATH"
|
Push "$DO_NOT_ADD_TO_PATH"
|
||||||
Call ConditionalAddToRegisty
|
Call ConditionalAddToRegistry
|
||||||
Push "AddToPathAllUsers"
|
Push "AddToPathAllUsers"
|
||||||
Push "$ADD_TO_PATH_ALL_USERS"
|
Push "$ADD_TO_PATH_ALL_USERS"
|
||||||
Call ConditionalAddToRegisty
|
Call ConditionalAddToRegistry
|
||||||
Push "AddToPathCurrentUser"
|
Push "AddToPathCurrentUser"
|
||||||
Push "$ADD_TO_PATH_CURRENT_USER"
|
Push "$ADD_TO_PATH_CURRENT_USER"
|
||||||
Call ConditionalAddToRegisty
|
Call ConditionalAddToRegistry
|
||||||
Push "InstallToDesktop"
|
Push "InstallToDesktop"
|
||||||
Push "$INSTALL_DESKTOP"
|
Push "$INSTALL_DESKTOP"
|
||||||
Call ConditionalAddToRegisty
|
Call ConditionalAddToRegistry
|
||||||
|
|
||||||
@CPACK_NSIS_EXTRA_INSTALL_COMMANDS@
|
@CPACK_NSIS_EXTRA_INSTALL_COMMANDS@
|
||||||
|
|
||||||
@@ -731,7 +731,7 @@ Section "Uninstall"
|
|||||||
DeleteRegKey SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@"
|
DeleteRegKey SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@"
|
||||||
|
|
||||||
; Removes all optional components
|
; Removes all optional components
|
||||||
!insertmacro SectionList "RemoveSection"
|
!insertmacro SectionList "RemoveSection_CPack"
|
||||||
|
|
||||||
!insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
|
!insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
|
||||||
|
|
||||||
@@ -739,7 +739,7 @@ Section "Uninstall"
|
|||||||
@CPACK_NSIS_DELETE_ICONS@
|
@CPACK_NSIS_DELETE_ICONS@
|
||||||
@CPACK_NSIS_DELETE_ICONS_EXTRA@
|
@CPACK_NSIS_DELETE_ICONS_EXTRA@
|
||||||
|
|
||||||
;Delete empty start menu parent diretories
|
;Delete empty start menu parent directories
|
||||||
StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP"
|
StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP"
|
||||||
|
|
||||||
startMenuDeleteLoop:
|
startMenuDeleteLoop:
|
||||||
@@ -752,13 +752,13 @@ Section "Uninstall"
|
|||||||
StrCmp "$MUI_TEMP" "$SMPROGRAMS" startMenuDeleteLoopDone startMenuDeleteLoop
|
StrCmp "$MUI_TEMP" "$SMPROGRAMS" startMenuDeleteLoopDone startMenuDeleteLoop
|
||||||
startMenuDeleteLoopDone:
|
startMenuDeleteLoopDone:
|
||||||
|
|
||||||
; If the user changed the shortcut, then untinstall may not work. This should
|
; If the user changed the shortcut, then uninstall may not work. This should
|
||||||
; try to fix it.
|
; try to fix it.
|
||||||
StrCpy $MUI_TEMP "$START_MENU"
|
StrCpy $MUI_TEMP "$START_MENU"
|
||||||
Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk"
|
Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk"
|
||||||
@CPACK_NSIS_DELETE_ICONS_EXTRA@
|
@CPACK_NSIS_DELETE_ICONS_EXTRA@
|
||||||
|
|
||||||
;Delete empty start menu parent diretories
|
;Delete empty start menu parent directories
|
||||||
StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP"
|
StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP"
|
||||||
|
|
||||||
secondStartMenuDeleteLoop:
|
secondStartMenuDeleteLoop:
|
||||||
|
|||||||
@@ -242,14 +242,14 @@ 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.
|
||||||
* botserv/kick/italics - Configures BotServ's italics kicker.
|
* botserv/kick/italics - Configures BotServ's italics kicker.
|
||||||
* botserv/kick/repeat - Configures BotServ's repeat kicker.
|
* botserv/kick/repeat - Configures BotServ's repeat kicker.
|
||||||
* botserv/kick/reverses - Configures BotServ's reverse kicker.
|
* botserv/kick/reverses - Configures BotServ's reverse kicker.
|
||||||
* botserv/kick/underlines - Configures BotServ's reverse kicker.
|
* botserv/kick/underlines - Configures BotServ's underline kicker.
|
||||||
* botserv/set/dontkickops - Used for preventing BotServ from kicking channel operators.
|
* botserv/set/dontkickops - Used for preventing BotServ from kicking channel operators.
|
||||||
* botserv/set/dontkickvoices - Used for preventing BotServ from kicking voices.
|
* botserv/set/dontkickvoices - Used for preventing BotServ from kicking voices.
|
||||||
*
|
*
|
||||||
@@ -333,10 +333,10 @@ privilege
|
|||||||
/*
|
/*
|
||||||
* fantasy
|
* fantasy
|
||||||
*
|
*
|
||||||
* Allows 'fantaisist' commands to be used in channels.
|
* Allows fantasy commands (e.g. !kick) 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 fantasy commands.
|
||||||
*/
|
*/
|
||||||
module
|
module
|
||||||
{
|
{
|
||||||
@@ -375,15 +375,15 @@ fantasy { name = "ENFORCE"; command = "chanserv/enforce"; }
|
|||||||
fantasy { name = "ENTRYMSG"; command = "chanserv/entrymsg"; }
|
fantasy { name = "ENTRYMSG"; command = "chanserv/entrymsg"; }
|
||||||
fantasy { name = "FLAGS"; command = "chanserv/flags"; }
|
fantasy { name = "FLAGS"; command = "chanserv/flags"; }
|
||||||
fantasy { name = "HALFOP"; command = "chanserv/modes"; }
|
fantasy { name = "HALFOP"; command = "chanserv/modes"; }
|
||||||
fantasy { name = "HELP"; command = "generic/help"; prepend_channel = false; }
|
fantasy { name = "HELP"; command = "generic/help"; prepend_channel = no; }
|
||||||
fantasy { name = "HOP"; command = "chanserv/xop"; }
|
fantasy { name = "HOP"; command = "chanserv/xop"; }
|
||||||
fantasy { name = "INFO"; command = "chanserv/info"; prepend_channel = false; }
|
fantasy { name = "INFO"; command = "chanserv/info"; prepend_channel = no; }
|
||||||
fantasy { name = "INVITE"; command = "chanserv/invite"; }
|
fantasy { name = "INVITE"; command = "chanserv/invite"; }
|
||||||
fantasy { name = "K"; command = "chanserv/kick"; }
|
fantasy { name = "K"; command = "chanserv/kick"; }
|
||||||
fantasy { name = "KB"; command = "chanserv/ban"; }
|
fantasy { name = "KB"; command = "chanserv/ban"; }
|
||||||
fantasy { name = "KICK"; command = "chanserv/kick"; }
|
fantasy { name = "KICK"; command = "chanserv/kick"; }
|
||||||
fantasy { name = "LEVELS"; command = "chanserv/levels"; }
|
fantasy { name = "LEVELS"; command = "chanserv/levels"; }
|
||||||
fantasy { name = "LIST"; command = "chanserv/list"; prepend_channel = false; }
|
fantasy { name = "LIST"; command = "chanserv/list"; prepend_channel = no; }
|
||||||
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 = "MUTE"; command = "chanserv/ban"; kick = no; mode = "QUIET"; }
|
||||||
@@ -391,7 +391,7 @@ 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"; }
|
||||||
fantasy { name = "QOP"; command = "chanserv/xop"; }
|
fantasy { name = "QOP"; command = "chanserv/xop"; }
|
||||||
fantasy { name = "SEEN"; command = "chanserv/seen"; prepend_channel = false; }
|
fantasy { name = "SEEN"; command = "chanserv/seen"; prepend_channel = no; }
|
||||||
fantasy { name = "SOP"; command = "chanserv/xop"; }
|
fantasy { name = "SOP"; command = "chanserv/xop"; }
|
||||||
fantasy { name = "STATUS"; command = "chanserv/status"; }
|
fantasy { name = "STATUS"; command = "chanserv/status"; }
|
||||||
fantasy { name = "SUSPEND"; command = "chanserv/suspend"; permission = "chanserv/suspend"; }
|
fantasy { name = "SUSPEND"; command = "chanserv/suspend"; permission = "chanserv/suspend"; }
|
||||||
|
|||||||
+24
-26
@@ -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
|
||||||
@@ -89,10 +89,12 @@ module
|
|||||||
* - noautoop: Disables autoop on the channel
|
* - noautoop: Disables autoop on the channel
|
||||||
* - cs_keep_modes: Enables keep modes on the channel, which retains modes when the channel is
|
* - cs_keep_modes: Enables keep modes on the channel, which retains modes when the channel is
|
||||||
* not in use.
|
* not in use.
|
||||||
|
* - cs_no_expire: Enables no expire. Needs founder, successor (if set) or anyone in the access list
|
||||||
|
* to be a registered nick, otherwise the channel will be dropped.
|
||||||
* - none: No defaults
|
* - none: No defaults
|
||||||
*
|
*
|
||||||
* This directive is optional, if left blank, the options will default to keeptopic, cs_secure, securefounder,
|
* This directive is optional, if left blank, the options will default to keeptopic, peace, cs_secure,
|
||||||
* and signkick. If you really want no defaults, use "none" by itself as the option.
|
* securefounder, and signkick. If you really want no defaults, use "none" by itself as the option.
|
||||||
*/
|
*/
|
||||||
defaults = "keeptopic peace cs_secure securefounder signkick"
|
defaults = "keeptopic peace cs_secure securefounder signkick"
|
||||||
|
|
||||||
@@ -107,10 +109,9 @@ module
|
|||||||
/*
|
/*
|
||||||
* The length of time before a channel registration expires.
|
* The length of time before a channel registration expires.
|
||||||
*
|
*
|
||||||
* This directive is optional, but recommended.
|
* This directive is optional. If not set, the default is never.
|
||||||
* If not set, the default is 14 days.
|
|
||||||
*/
|
*/
|
||||||
expire = 14d
|
#expire = 90d
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The maximum number of entries on a channel's access list.
|
* The maximum number of entries on a channel's access list.
|
||||||
@@ -161,19 +162,19 @@ module
|
|||||||
/*
|
/*
|
||||||
* If set, prevents channel access entries from containing hostmasks.
|
* If set, prevents channel access entries from containing hostmasks.
|
||||||
*/
|
*/
|
||||||
disallow_hostmask_access = false
|
disallow_hostmask_access = no
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If set, prevents channels from being on access lists.
|
* If set, prevents channels from being on access lists.
|
||||||
*/
|
*/
|
||||||
disallow_channel_access = false
|
disallow_channel_access = no
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If set, ChanServ will always lower the timestamp of registered channels to their registration date.
|
* If set, ChanServ will always lower the timestamp of registered channels to their registration date.
|
||||||
* This prevents several race conditions where unauthorized users can join empty registered channels and set
|
* This prevents several race conditions where unauthorized users can join empty registered channels and set
|
||||||
* modes etc. prior to services deopping them.
|
* modes etc. prior to services deopping them.
|
||||||
*/
|
*/
|
||||||
always_lower_ts = false
|
always_lower_ts = no
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -193,12 +194,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.
|
||||||
@@ -420,7 +421,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
|
||||||
@@ -665,7 +666,7 @@ privilege
|
|||||||
rank = 300
|
rank = 300
|
||||||
level = 10
|
level = 10
|
||||||
flag = "a"
|
flag = "a"
|
||||||
xop = "AOP"
|
xop = "SOP"
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -692,7 +693,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
|
||||||
@@ -836,8 +837,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
|
||||||
@@ -941,7 +942,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" }
|
||||||
@@ -1055,7 +1056,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
|
||||||
@@ -1117,13 +1118,10 @@ module
|
|||||||
name = "cs_seen"
|
name = "cs_seen"
|
||||||
|
|
||||||
/* If set, uses the older 1.8 style seen, which is less resource intensive */
|
/* If set, uses the older 1.8 style seen, which is less resource intensive */
|
||||||
simple = false
|
simple = no
|
||||||
|
|
||||||
/* 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"; }
|
||||||
|
|
||||||
@@ -1166,10 +1164,10 @@ 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 = yes
|
||||||
}
|
}
|
||||||
command { service = "ChanServ"; name = "SET"; command = "chanserv/set"; group = "chanserv/management"; }
|
command { service = "ChanServ"; name = "SET"; command = "chanserv/set"; group = "chanserv/management"; }
|
||||||
command { service = "ChanServ"; name = "SET AUTOOP"; command = "chanserv/set/autoop"; }
|
command { service = "ChanServ"; name = "SET AUTOOP"; command = "chanserv/set/autoop"; }
|
||||||
@@ -1290,7 +1288,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.
|
||||||
*
|
*
|
||||||
@@ -1312,7 +1310,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"; }
|
||||||
|
|||||||
+194
-147
@@ -65,10 +65,6 @@
|
|||||||
* will typically be disabled. If this is not the case, more
|
* will typically be disabled. If this is not the case, more
|
||||||
* information will be given in the documentation.
|
* information will be given in the documentation.
|
||||||
*
|
*
|
||||||
* [DISCOURAGED]
|
|
||||||
* Indicates a directive which may cause undesirable side effects if
|
|
||||||
* specified.
|
|
||||||
*
|
|
||||||
* [DEPRECATED]
|
* [DEPRECATED]
|
||||||
* Indicates a directive which will disappear in a future version of
|
* Indicates a directive which will disappear in a future version of
|
||||||
* Services, usually because its functionality has been either
|
* Services, usually because its functionality has been either
|
||||||
@@ -80,17 +76,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 services.host define is used in multiple different locations throughout the
|
||||||
* configuration for services clients hostnames.
|
* configuration for the server name and pseudoclient hostnames.
|
||||||
*/
|
*/
|
||||||
define
|
define
|
||||||
{
|
{
|
||||||
name = "services.host"
|
name = "services.host"
|
||||||
value = "services.localhost.net"
|
value = "services.example.com"
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -110,7 +106,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,30 +122,37 @@ 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!
|
||||||
|
* <module name="hidechans">
|
||||||
|
* <module name="services_account">
|
||||||
|
* <module name="spanningtree">
|
||||||
|
* <bind address="127.0.0.1" port="7000" type="servers">
|
||||||
|
* <link name="services.example.com"
|
||||||
* 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="services.example.com" silent="yes">
|
||||||
* <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 services.example.com {
|
||||||
* listen 127.0.0.1:7000;
|
* incoming {
|
||||||
|
* mask *@127.0.0.1;
|
||||||
|
* };
|
||||||
|
* password "mypassword";
|
||||||
|
* class servers;
|
||||||
|
* };
|
||||||
|
* ulines { services.example.com; };
|
||||||
*/
|
*/
|
||||||
uplink
|
uplink
|
||||||
{
|
{
|
||||||
@@ -202,10 +205,10 @@ serverinfo
|
|||||||
* other server names on the rest of your IRC network. Note that it does not have
|
* other server names on the rest of your IRC network. Note that it does not have
|
||||||
* to be an existing hostname, just one that isn't on your network already.
|
* to be an existing hostname, just one that isn't on your network already.
|
||||||
*/
|
*/
|
||||||
name = "services.localhost.net"
|
name = "services.host"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 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"
|
||||||
@@ -247,19 +250,21 @@ serverinfo
|
|||||||
* You MUST modify this to match the IRCd you run.
|
* You MUST modify this to match the IRCd you run.
|
||||||
*
|
*
|
||||||
* Supported:
|
* Supported:
|
||||||
* - bahamut
|
* - [DEPRECATED] bahamut
|
||||||
* - charybdis
|
* - charybdis
|
||||||
* - hybrid
|
* - hybrid
|
||||||
* - inspircd12
|
* - [DEPRECATED] inspircd12
|
||||||
* - inspircd20
|
* - [DEPRECATED] inspircd20
|
||||||
|
* - inspircd3 (for 3.x and 4.x)
|
||||||
* - ngircd
|
* - ngircd
|
||||||
* - plexus
|
* - plexus
|
||||||
* - ratbox
|
* - ratbox
|
||||||
* - unreal
|
* - [DEPRECATED] unreal (for 3.2.x)
|
||||||
|
* - unreal4 (for 4.x or later)
|
||||||
*/
|
*/
|
||||||
module
|
module
|
||||||
{
|
{
|
||||||
name = "inspircd20"
|
name = "inspircd3"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Some protocol modules can enforce mode locks server-side. This reduces the spam caused by
|
* Some protocol modules can enforce mode locks server-side. This reduces the spam caused by
|
||||||
@@ -338,16 +343,16 @@ networkinfo
|
|||||||
*
|
*
|
||||||
* It is recommended you DON'T change this.
|
* It is recommended you DON'T change this.
|
||||||
*/
|
*/
|
||||||
vhost_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-"
|
vhost_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-/"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If set to true, allows vHosts to not contain dots (.).
|
* If enabled, allows vHosts to not contain dots (.).
|
||||||
* Newer IRCds generally do not have a problem with this, but the same warning as
|
* Newer IRCds generally do not have a problem with this, but the same warning as
|
||||||
* vhost_chars applies.
|
* vhost_chars applies.
|
||||||
*
|
*
|
||||||
* It is recommended you DON'T change this.
|
* It is recommended you DON'T change this.
|
||||||
*/
|
*/
|
||||||
allow_undotted_vhosts = false
|
allow_undotted_vhosts = no
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The characters that are not allowed to be at the very beginning or very ending
|
* The characters that are not allowed to be at the very beginning or very ending
|
||||||
@@ -355,7 +360,7 @@ networkinfo
|
|||||||
*
|
*
|
||||||
* It is recommended you DON'T change this.
|
* It is recommended you DON'T change this.
|
||||||
*/
|
*/
|
||||||
disallow_start_or_end = ".-"
|
disallow_start_or_end = ".-/"
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -449,12 +454,6 @@ options
|
|||||||
*/
|
*/
|
||||||
readtimeout = 5s
|
readtimeout = 5s
|
||||||
|
|
||||||
/*
|
|
||||||
* Sets the interval between sending warning messages for program errors via
|
|
||||||
* WALLOPS/GLOBOPS.
|
|
||||||
*/
|
|
||||||
warningtimeout = 4h
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sets the (maximum) frequency at which the timeout list is checked. This,
|
* Sets the (maximum) frequency at which the timeout list is checked. This,
|
||||||
* combined with readtimeout above, determines how accurately timed events,
|
* combined with readtimeout above, determines how accurately timed events,
|
||||||
@@ -485,7 +484,7 @@ options
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* If set, will force Services to only respond to PRIVMSGs addresses to
|
* If set, will force Services to only respond to PRIVMSGs addresses to
|
||||||
* Nick@ServerName - e.g. NickServ@localhost.net. This should be used in
|
* Nick@ServerName - e.g. NickServ@example.com. This should be used in
|
||||||
* conjunction with IRCd aliases. This directive is optional.
|
* conjunction with IRCd aliases. This directive is optional.
|
||||||
*
|
*
|
||||||
* This option will have no effect on some IRCds, such as TS6 IRCds.
|
* This option will have no effect on some IRCds, such as TS6 IRCds.
|
||||||
@@ -499,7 +498,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.
|
||||||
*
|
*
|
||||||
@@ -531,14 +530,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"
|
||||||
|
|
||||||
@@ -615,7 +614,7 @@ include
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* [OPTIONAL] NickServ
|
* [RECOMMENDED] NickServ
|
||||||
*
|
*
|
||||||
* Includes nickserv.example.conf, which is necessary for NickServ functionality.
|
* Includes nickserv.example.conf, which is necessary for NickServ functionality.
|
||||||
*
|
*
|
||||||
@@ -654,6 +653,8 @@ log
|
|||||||
* - a channel name
|
* - a channel name
|
||||||
* - a filename
|
* - a filename
|
||||||
* - globops
|
* - globops
|
||||||
|
*
|
||||||
|
* If you specify a filename the current date in the format ".YYYYMMDD" will be appended to the path.
|
||||||
*/
|
*/
|
||||||
target = "services.log"
|
target = "services.log"
|
||||||
|
|
||||||
@@ -667,19 +668,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.
|
||||||
*/
|
*/
|
||||||
@@ -704,7 +705,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)
|
* pseudo-serv/commandname (e.g. operserv/akill, chanserv/set)
|
||||||
*
|
*
|
||||||
* Valid server options are:
|
* Valid server options are:
|
||||||
* connect, quit, sync, squit
|
* connect, quit, sync, squit
|
||||||
@@ -735,8 +736,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/*"
|
||||||
@@ -749,7 +751,6 @@ log
|
|||||||
* You may define groups of commands and privileges, as well as who may use them.
|
* You may define groups of commands and privileges, as well as who may use them.
|
||||||
*
|
*
|
||||||
* This block is recommended, as without it you will be unable to access most oper commands.
|
* This block is recommended, as without it you will be unable to access most oper commands.
|
||||||
* It replaces the old ServicesRoot directive amongst others.
|
|
||||||
*
|
*
|
||||||
* The command names below are defaults and are configured in the *serv.conf's. If you configure
|
* The command names below are defaults and are configured in the *serv.conf's. If you configure
|
||||||
* additional commands with permissions, such as commands from third party modules, the permissions
|
* additional commands with permissions, such as commands from third party modules, the permissions
|
||||||
@@ -761,17 +762,18 @@ log
|
|||||||
* 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/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
|
* 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
|
||||||
@@ -783,12 +785,7 @@ log
|
|||||||
* 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
|
||||||
*
|
*
|
||||||
@@ -816,6 +813,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.
|
||||||
@@ -835,7 +835,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 */
|
||||||
@@ -898,7 +898,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. */
|
||||||
@@ -942,20 +942,25 @@ mail
|
|||||||
* If set, this option enables the mail commands in Services. You may choose
|
* If set, this option enables the mail commands in Services. You may choose
|
||||||
* to disable it if you have no Sendmail-compatible mailer installed. Whilst
|
* to disable it if you have no Sendmail-compatible mailer installed. Whilst
|
||||||
* this directive (and entire block) is optional, it is required if
|
* this directive (and entire block) is optional, it is required if
|
||||||
* nickserv:registration is set to yes.
|
* nickserv:registration is set to mail.
|
||||||
*/
|
*/
|
||||||
usemail = yes
|
usemail = yes
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This is the command-line that will be used to call the mailer to send an
|
* The command used for sending emails. It is assumed that this behaves like
|
||||||
* e-mail. It must be called with all the parameters needed to make it
|
* sendmail (i.e. it reads the email from the standard input stream) but you
|
||||||
* scan the mail input to find the mail recipient; consult your mailer
|
* should probably use Postfix or some other sendmail-compatible emailer
|
||||||
* documentation.
|
* instead of sendmail as sendmail is very hard to configure correctly. If
|
||||||
|
* you are using Windows then https://www.glob.com.au/sendmail/ is probably
|
||||||
|
* the best option currently.
|
||||||
*
|
*
|
||||||
* Postfix users must use the compatible sendmail utility provided with
|
* If your emailer sends emails directly from the services host you will
|
||||||
* it. This one usually needs no parameters on the command-line. Most
|
* need to configure DKIM, DMARC, and SPF to avoid email hosts from marking
|
||||||
* sendmail applications (or replacements of it) require the -t option
|
* your services emails as spam. It is important that you do this *BEFORE*
|
||||||
* to be used.
|
* sending emails for the first time as some email providers will add your
|
||||||
|
* host to a DNSBL like Spamhaus if they consider your emails to be spam. If
|
||||||
|
* this is too difficult then you may want to consider sending emails via an
|
||||||
|
* external email provider using a forwarder like msmtp.
|
||||||
*/
|
*/
|
||||||
sendmailpath = "/usr/sbin/sendmail -t"
|
sendmailpath = "/usr/sbin/sendmail -t"
|
||||||
|
|
||||||
@@ -963,7 +968,7 @@ mail
|
|||||||
* This is the e-mail address from which all the e-mails are to be sent from.
|
* This is the e-mail address from which all the e-mails are to be sent from.
|
||||||
* It should really exist.
|
* It should really exist.
|
||||||
*/
|
*/
|
||||||
sendfrom = "services@localhost.net"
|
sendfrom = "services@example.com"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This controls the minimum amount of time a user must wait before sending
|
* This controls the minimum amount of time a user must wait before sending
|
||||||
@@ -986,8 +991,21 @@ mail
|
|||||||
*/
|
*/
|
||||||
#dontquoteaddresses = yes
|
#dontquoteaddresses = yes
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The content type to use when sending emails.
|
||||||
|
*
|
||||||
|
* This directive is optional, and is generally only needed if you want to
|
||||||
|
* use HTML or non UTF-8 text in your services emails.
|
||||||
|
*/
|
||||||
|
#content_type = "text/plain; charset=UTF-8"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 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,
|
||||||
@@ -1001,6 +1019,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,
|
||||||
@@ -1014,6 +1037,13 @@ 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,
|
||||||
@@ -1027,6 +1057,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,
|
||||||
@@ -1070,7 +1107,7 @@ mail
|
|||||||
/*
|
/*
|
||||||
* [RECOMMENDED] db_flatfile
|
* [RECOMMENDED] db_flatfile
|
||||||
*
|
*
|
||||||
* This is the default flatfile database format.
|
* Stores your database in a custom flatfile format.
|
||||||
*/
|
*/
|
||||||
module
|
module
|
||||||
{
|
{
|
||||||
@@ -1089,7 +1126,7 @@ module
|
|||||||
*
|
*
|
||||||
* This directive is optional, but recommended.
|
* This directive is optional, but recommended.
|
||||||
*/
|
*/
|
||||||
keepbackups = 3
|
keepbackups = 7
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Allows Services to continue file write operations (i.e. database saving)
|
* Allows Services to continue file write operations (i.e. database saving)
|
||||||
@@ -1110,11 +1147,6 @@ module
|
|||||||
* This is only useful with very large databases, with hundreds
|
* This is only useful with very large databases, with hundreds
|
||||||
* of thousands of objects, that have a noticeable delay from
|
* of thousands of objects, that have a noticeable delay from
|
||||||
* writing databases.
|
* writing databases.
|
||||||
*
|
|
||||||
* If your database is large enough cause a noticeable delay when
|
|
||||||
* saving you should consider a more powerful alternative such
|
|
||||||
* as db_sql or db_redis, which incrementally update their
|
|
||||||
* databases asynchronously in real time.
|
|
||||||
*/
|
*/
|
||||||
fork = no
|
fork = no
|
||||||
}
|
}
|
||||||
@@ -1122,16 +1154,16 @@ module
|
|||||||
/*
|
/*
|
||||||
* db_sql and db_sql_live
|
* db_sql and db_sql_live
|
||||||
*
|
*
|
||||||
* db_sql module allows saving and loading databases using one of the SQL engines.
|
* Allows saving and loading databases to a SQL database.
|
||||||
* This module loads the databases once on startup, then incrementally updates
|
|
||||||
* objects in the database as they are changed within Anope in real time. Changes
|
|
||||||
* to the SQL tables not done by Anope will have no effect and will be overwritten.
|
|
||||||
*
|
*
|
||||||
* db_sql_live module allows saving and loading databases using one of the SQL engines.
|
* db_sql loads the databases once on startup and then incrementally updates in
|
||||||
* This module reads and writes to SQL in real time. Changes to the SQL tables
|
* in the database as they are changed within Anope. Changes to the SQL tables
|
||||||
* will be immediately reflected into Anope. This module should not be loaded
|
* not done by Anope will have no effect and will be overwritten.
|
||||||
* in conjunction with db_sql.
|
|
||||||
*
|
*
|
||||||
|
* db_sql_live module reads and writes to SQL in real time. Changes to the SQL
|
||||||
|
* tables will be immediately reflected in Anope. This module can not be loaded
|
||||||
|
* at the same time as db_sql. It should also not be used on large networks as
|
||||||
|
* it executes quite a lot of queries which can cause performance issues.
|
||||||
*/
|
*/
|
||||||
#module
|
#module
|
||||||
{
|
{
|
||||||
@@ -1139,10 +1171,10 @@ module
|
|||||||
#name = "db_sql_live"
|
#name = "db_sql_live"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The SQL service db_sql(_live) should use, these are configured in modules.conf.
|
* The SQL service that db_sql(_live) should use. These are configured in
|
||||||
* For MySQL, this should probably be mysql/main.
|
* modules.example.conf. For MySQL, this should probably be mysql/main.
|
||||||
*/
|
*/
|
||||||
engine = "sqlite/main"
|
engine = "mysql/main"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* An optional prefix to prepended to the name of each created table.
|
* An optional prefix to prepended to the name of each created table.
|
||||||
@@ -1150,23 +1182,28 @@ module
|
|||||||
*/
|
*/
|
||||||
#prefix = "anope_db_"
|
#prefix = "anope_db_"
|
||||||
|
|
||||||
/* Whether or not to import data from another database module in to SQL on startup.
|
/*
|
||||||
* If you enable this, be sure that the database services is configured to use is
|
* Whether or not to import data from another database module in to SQL on
|
||||||
* empty and that another database module to import from is loaded before db_sql.
|
* startup.
|
||||||
* After you enable this and do a database import you should disable it for
|
|
||||||
* subsequent restarts.
|
|
||||||
*
|
*
|
||||||
* Note that you can not import databases using db_sql_live. If you want to import
|
* If you enable this, be sure that the database Anope is configured to use
|
||||||
* databases and use db_sql_live you should import them using db_sql, then shut down
|
* is empty and that another database module to import from is loaded BEFORE
|
||||||
* and start services with db_sql_live.
|
* db_sql. After you enable this and do a database import you MUST disable
|
||||||
|
* it for subsequent restarts. If you want to keep writing a file database
|
||||||
|
* after the SQL import is done you should load db_flatfile AFTER this
|
||||||
|
* module.
|
||||||
|
*
|
||||||
|
* Note that you can not import databases using db_sql_live. If you want to
|
||||||
|
* import databases and use db_sql_live you should import them using db_sql,
|
||||||
|
* then shut down and start Anope with db_sql_live.
|
||||||
*/
|
*/
|
||||||
import = false
|
import = no
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 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
|
||||||
@@ -1187,55 +1224,65 @@ module
|
|||||||
/*
|
/*
|
||||||
* [RECOMMENDED] Encryption modules.
|
* [RECOMMENDED] Encryption modules.
|
||||||
*
|
*
|
||||||
* The encryption modules are used when dealing with passwords. This determines how
|
* The encryption modules are used when dealing with passwords. This determines
|
||||||
* the passwords are stored in the databases, and does not add any security as
|
* how the passwords are stored in the databases.
|
||||||
* far as transmitting passwords over the network goes.
|
|
||||||
*
|
|
||||||
* Without any encryption modules loaded users will not be able to authenticate unless
|
|
||||||
* there is another module loaded that provides authentication checking, such as
|
|
||||||
* m_ldap_authentication or m_sql_authentication.
|
|
||||||
*
|
|
||||||
* With enc_none, passwords will be stored in plain text, allowing for passwords
|
|
||||||
* to be recovered later but it isn't secure and therefore is not recommended.
|
|
||||||
*
|
|
||||||
* The other encryption modules use one-way encryption, so the passwords can not
|
|
||||||
* be recovered later if those are used.
|
|
||||||
*
|
|
||||||
* The first encryption module loaded is the primary encryption module. All new passwords are
|
|
||||||
* encrypted by this module. Old passwords stored in another encryption method are
|
|
||||||
* 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
|
|
||||||
* versions prior to Anope 1.7.17. If your databases were made using that module,
|
|
||||||
* use this and not enc_md5.
|
|
||||||
*
|
|
||||||
* 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.
|
|
||||||
*
|
*
|
||||||
|
* The first encryption module loaded is the primary encryption module. All new
|
||||||
|
* passwords are encrypted by this module. Old passwords encrypted with another
|
||||||
|
* encryption method are automatically re-encrypted with the primary encryption
|
||||||
|
* module the next time the user identifies.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#module { name = "enc_bcrypt" }
|
/*
|
||||||
module { name = "enc_sha256" }
|
* enc_bcrypt
|
||||||
|
*
|
||||||
|
* Provides support for encrypting passwords using the Bcrypt algorithm. See
|
||||||
|
* https://en.wikipedia.org/wiki/Bcrypt for more information.
|
||||||
|
*/
|
||||||
|
#module
|
||||||
|
{
|
||||||
|
name = "enc_bcrypt"
|
||||||
|
|
||||||
|
/** The number of Bcrypt rounds to perform on passwords. Can be set to any
|
||||||
|
* number between 10 and 32 but higher numbers are more CPU intensive and
|
||||||
|
* may impact performance.
|
||||||
|
*/
|
||||||
|
#rounds = 10
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* [RECOMMENDED] enc_sha256
|
||||||
|
*
|
||||||
|
* Provides support for encrypting passwords using the SHA-2 algorithm with a
|
||||||
|
* salted initialization vector. See https://en.wikipedia.org/wiki/SHA-2 for
|
||||||
|
* more information.
|
||||||
|
*/
|
||||||
|
module
|
||||||
|
{
|
||||||
|
name = "enc_sha256"
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* [DEPRECATED] enc_md5, enc_none, enc_old, enc_sha1
|
||||||
|
*
|
||||||
|
* Provides support for passwords encrypted using encryption methods from older
|
||||||
|
* versions of Anope. These methods are no longer considered secure and will be
|
||||||
|
* removed in a future version of Anope. Only load them if you are upgrading
|
||||||
|
* from a previous version of Anope that used them.
|
||||||
|
*
|
||||||
|
* enc_md5: Verifies passwords encrypted with the MD5 algorithm
|
||||||
|
* enc_none: Verifies passwords that are not encrypted
|
||||||
|
* enc_sha1: Verifies passwords encrypted with the SHA1 algorithm
|
||||||
|
* enc_old: Verifies passwords encrypted with the broken MD5 algorithm used
|
||||||
|
* before 1.7.17.
|
||||||
|
*
|
||||||
|
* You must load another encryption method before this to re-encrypt passwords
|
||||||
|
* with when a user logs in.
|
||||||
|
*/
|
||||||
#module { name = "enc_md5" }
|
#module { name = "enc_md5" }
|
||||||
#module { name = "enc_sha1" }
|
|
||||||
|
|
||||||
/*
|
|
||||||
* When using enc_none, passwords will be stored without encryption. This isn't secure
|
|
||||||
* therefore it is not recommended.
|
|
||||||
*/
|
|
||||||
#module { name = "enc_none" }
|
#module { name = "enc_none" }
|
||||||
|
|
||||||
/*
|
|
||||||
* 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
|
|
||||||
* encryption method.
|
|
||||||
*/
|
|
||||||
#module { name = "enc_old" }
|
#module { name = "enc_old" }
|
||||||
|
#module { name = "enc_sha1" }
|
||||||
|
|
||||||
/* Extra (optional) modules. */
|
/* Extra (optional) modules. */
|
||||||
include
|
include
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ module
|
|||||||
*
|
*
|
||||||
* This directive is optional.
|
* This directive is optional.
|
||||||
*/
|
*/
|
||||||
#globaloncycledown = "Services are restarting, they will be back shortly - please be good while we're gone"
|
#globaloncycledown = "Services are restarting, they will be back shortly - please be good while they're gone"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This is the global message that will be sent when Services (re)join the
|
* This is the global message that will be sent when Services (re)join the
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ module
|
|||||||
/*
|
/*
|
||||||
* If enabled, vhosts are activated on users immediately when they are set.
|
* If enabled, vhosts are activated on users immediately when they are set.
|
||||||
*/
|
*/
|
||||||
activate_on_set = false
|
activate_on_set = no
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -110,12 +110,12 @@ module
|
|||||||
/*
|
/*
|
||||||
* Upon nickserv/group, this option syncs the nick's main vHost to the grouped nick.
|
* Upon nickserv/group, this option syncs the nick's main vHost to the grouped nick.
|
||||||
*/
|
*/
|
||||||
syncongroup = false
|
syncongroup = no
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This makes vhosts act as if they are per account.
|
* This makes vhosts act as if they are per account.
|
||||||
*/
|
*/
|
||||||
synconset = false
|
synconset = no
|
||||||
}
|
}
|
||||||
command { service = "HostServ"; name = "GROUP"; command = "hostserv/group"; }
|
command { service = "HostServ"; name = "GROUP"; command = "hostserv/group"; }
|
||||||
|
|
||||||
|
|||||||
@@ -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"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -78,8 +78,7 @@ module
|
|||||||
/*
|
/*
|
||||||
* The delay between consecutive uses of the MemoServ SEND command. This can help prevent spam
|
* The delay between consecutive uses of the MemoServ SEND command. This can help prevent spam
|
||||||
* as well as denial-of-service attacks from sending large numbers of memos and filling up disk
|
* as well as denial-of-service attacks from sending large numbers of memos and filling up disk
|
||||||
* space (and memory). The default 3-second wait means a maximum average of 150 bytes of memo
|
* space (and memory).
|
||||||
* per second per user under the current IRC protocol.
|
|
||||||
*
|
*
|
||||||
* This directive is optional, but recommended.
|
* This directive is optional, but recommended.
|
||||||
*/
|
*/
|
||||||
@@ -186,8 +185,6 @@ command { service = "MemoServ"; name = "READ"; command = "memoserv/read"; }
|
|||||||
* Provides the command memoserv/rsend.
|
* Provides the command memoserv/rsend.
|
||||||
*
|
*
|
||||||
* Used to send a memo requiring a receipt be sent back once it is read.
|
* Used to send a memo requiring a receipt be sent back once it is read.
|
||||||
*
|
|
||||||
* Requires configuring memoserv:memoreceipt.
|
|
||||||
*/
|
*/
|
||||||
#module
|
#module
|
||||||
{
|
{
|
||||||
@@ -198,7 +195,7 @@ command { service = "MemoServ"; name = "READ"; command = "memoserv/read"; }
|
|||||||
*
|
*
|
||||||
* This directive is optional.
|
* This directive is optional.
|
||||||
*/
|
*/
|
||||||
operonly = false
|
operonly = no
|
||||||
}
|
}
|
||||||
#command { service = "MemoServ"; name = "RSEND"; command = "memoserv/rsend"; }
|
#command { service = "MemoServ"; name = "RSEND"; command = "memoserv/rsend"; }
|
||||||
|
|
||||||
|
|||||||
+60
-57
@@ -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"
|
||||||
@@ -65,7 +65,7 @@ module { name = "help" }
|
|||||||
/* This should be the names of the public facing nameservers serving the records. */
|
/* This should be the names of the public facing nameservers serving the records. */
|
||||||
nameservers = "ns1.example.com ns2.example.com"
|
nameservers = "ns1.example.com ns2.example.com"
|
||||||
|
|
||||||
/* The time slave servers are allowed to cache. This should be reasonably low
|
/* The time secondary servers are allowed to cache for. This should be reasonably low
|
||||||
* if you want your records to be updated without much delay.
|
* if you want your records to be updated without much delay.
|
||||||
*/
|
*/
|
||||||
refresh = 3600
|
refresh = 3600
|
||||||
@@ -127,9 +127,9 @@ module { name = "help" }
|
|||||||
* %r is the reply 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 no relies are configured, all replies get banned. */
|
/* Replies to ban and their reason. If no replies are configured, all replies get banned. */
|
||||||
reply
|
reply
|
||||||
{
|
{
|
||||||
code = 1
|
code = 1
|
||||||
@@ -171,11 +171,11 @@ module { name = "help" }
|
|||||||
{
|
{
|
||||||
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 localhost from DNSBL checks */
|
||||||
exempt { ip = "127.0.0.1" }
|
exempt { ip = "127.0.0.0/8" }
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -223,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"
|
||||||
@@ -232,7 +233,7 @@ module { name = "help" }
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* m_ldap [EXTRA]
|
* [EXTRA] m_ldap
|
||||||
*
|
*
|
||||||
* This module allows other modules to use LDAP. By itself, this module does nothing useful.
|
* This module allows other modules to use LDAP. By itself, this module does nothing useful.
|
||||||
*/
|
*/
|
||||||
@@ -243,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.
|
||||||
@@ -254,7 +254,7 @@ module { name = "help" }
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* m_ldap_authentication [EXTRA]
|
* [EXTRA] m_ldap_authentication
|
||||||
*
|
*
|
||||||
* This module allows many commands such as IDENTIFY, RELEASE, RECOVER, GHOST, etc. use
|
* This module allows many commands such as IDENTIFY, RELEASE, RECOVER, GHOST, etc. use
|
||||||
* LDAP to authenticate users. Requires m_ldap.
|
* LDAP to authenticate users. Requires m_ldap.
|
||||||
@@ -299,22 +299,22 @@ module { name = "help" }
|
|||||||
password_attribute = "userPassword"
|
password_attribute = "userPassword"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If set, the reason to give the users who try to register with nickserv,
|
* If set, the reason to give the users who try to register with NickServ,
|
||||||
* including nick registration from grouping.
|
* 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.example/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.example"
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* m_ldap_oper [EXTRA]
|
* [EXTRA] m_ldap_oper
|
||||||
*
|
*
|
||||||
* This module dynamically ties users to Anope opertypes when they identify
|
* This module dynamically ties users to Anope opertypes when they identify
|
||||||
* via LDAP group membership. Requires m_ldap.
|
* via LDAP group membership. Requires m_ldap.
|
||||||
@@ -355,7 +355,7 @@ module { name = "help" }
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* m_mysql [EXTRA]
|
* [EXTRA] m_mysql
|
||||||
*
|
*
|
||||||
* This module allows other modules to use MySQL.
|
* This module allows other modules to use MySQL.
|
||||||
*/
|
*/
|
||||||
@@ -374,6 +374,7 @@ module { name = "help" }
|
|||||||
port = 3306
|
port = 3306
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* m_redis
|
* m_redis
|
||||||
*
|
*
|
||||||
@@ -400,14 +401,23 @@ module { name = "help" }
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* m_regex_pcre [EXTRA]
|
* [DEPRECATED] [EXTRA] m_regex_pcre
|
||||||
*
|
*
|
||||||
* Provides the regex engine regex/pcre, which uses the Perl Compatible Regular Expressions library.
|
* Provides the regex engine regex/pcre, which uses version 1 of the Perl Compatible Regular
|
||||||
|
* Expressions library. This can not be loaded at the same time as the m_regex_pcre2 module.
|
||||||
*/
|
*/
|
||||||
#module { name = "m_regex_pcre" }
|
#module { name = "m_regex_pcre" }
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* m_regex_posix [EXTRA]
|
* [EXTRA] m_regex_pcre2
|
||||||
|
*
|
||||||
|
* Provides the regex engine regex/pcre, which uses version 2 of the Perl Compatible Regular
|
||||||
|
* Expressions library. This can not be loaded at the same time as the m_regex_pcre module.
|
||||||
|
*/
|
||||||
|
#module { name = "m_regex_pcre2" }
|
||||||
|
|
||||||
|
/*
|
||||||
|
* [EXTRA] m_regex_posix
|
||||||
*
|
*
|
||||||
* Provides the regex engine regex/posix, which uses the POSIX compliant regular expressions.
|
* Provides the regex engine regex/posix, which uses the POSIX compliant regular expressions.
|
||||||
* This is likely the only regex module you will not need extra libraries for.
|
* This is likely the only regex module you will not need extra libraries for.
|
||||||
@@ -415,7 +425,7 @@ module { name = "help" }
|
|||||||
#module { name = "m_regex_posix" }
|
#module { name = "m_regex_posix" }
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* m_regex_tre [EXTRA]
|
* [EXTRA] m_regex_tre
|
||||||
*
|
*
|
||||||
* Provides the regex engine regex/tre, which uses the TRE regex library.
|
* Provides the regex engine regex/tre, which uses the TRE regex library.
|
||||||
*/
|
*/
|
||||||
@@ -432,13 +442,13 @@ module { name = "help" }
|
|||||||
service = "ChanServ"; name = "CLEAR"; command = "rewrite"
|
service = "ChanServ"; name = "CLEAR"; command = "rewrite"
|
||||||
|
|
||||||
/* Enable m_rewrite. */
|
/* Enable m_rewrite. */
|
||||||
rewrite = true
|
rewrite = yes
|
||||||
|
|
||||||
/* Source message to match. A $ can be used to match anything. */
|
/* Source message to match. A $ can be used to match anything. */
|
||||||
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 *"
|
||||||
@@ -536,38 +546,31 @@ module { name = "help" }
|
|||||||
/*
|
/*
|
||||||
* m_sasl
|
* m_sasl
|
||||||
*
|
*
|
||||||
* Some IRCds allow "SASL" authentication to let users identify to Services
|
* Provides support for authentication to services via IRCv3 SASL. This is a standardised
|
||||||
* during the IRCd user registration process. If this module is loaded, Services will allow
|
* alternative to ns_identify that is supported by several IRCds.
|
||||||
* authenticating users through this mechanism. Supported mechanisms are:
|
|
||||||
* PLAIN, EXTERNAL.
|
|
||||||
*/
|
|
||||||
#module { name = "m_sasl" }
|
|
||||||
|
|
||||||
/*
|
|
||||||
* m_sasl_dh-aes [EXTRA]
|
|
||||||
*
|
*
|
||||||
* Add the DH-AES mechanism to SASL.
|
* You will need to configure your IRCd to use SASL. See the following links for details:
|
||||||
* 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.
|
* InspIRCd: https://docs.inspircd.org/4/modules/sasl/
|
||||||
* Requires m_sasl to be loaded.
|
* UnrealIRCd: https://www.unrealircd.org/docs/SASL#Enabling_SASL_on_the_server
|
||||||
* Requires openssl.
|
|
||||||
*/
|
*/
|
||||||
#module { name = "m_sasl_dh-blowfish" }
|
module
|
||||||
|
{
|
||||||
|
name = "m_sasl"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The nick of the client which operates as the SASL agent.
|
||||||
|
*/
|
||||||
|
#agent = "NickServ"
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* m_ssl_gnutls [EXTRA]
|
* [EXTRA] m_ssl_gnutls
|
||||||
*
|
*
|
||||||
* 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
|
||||||
{
|
{
|
||||||
@@ -600,12 +603,12 @@ module { name = "help" }
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* m_ssl_openssl [EXTRA]
|
* [EXTRA] m_ssl_openssl
|
||||||
*
|
*
|
||||||
* 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
|
||||||
@@ -633,7 +636,7 @@ module { name = "help" }
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* m_sql_authentication [EXTRA]
|
* [EXTRA] m_sql_authentication
|
||||||
*
|
*
|
||||||
* This module allows authenticating users against an external SQL database using a custom
|
* This module allows authenticating users against an external SQL database using a custom
|
||||||
* query.
|
* query.
|
||||||
@@ -674,20 +677,20 @@ 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.example/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.example"
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* m_sql_log [EXTRA]
|
* [EXTRA] m_sql_log
|
||||||
*
|
*
|
||||||
* This module adds an additional target option to log{} blocks
|
* This module adds an additional target option to log{} blocks
|
||||||
* that allows logging Service's logs to SQL. To log to SQL, add
|
* that allows logging Services' logs to SQL. To log to SQL, add
|
||||||
* the SQL service name to log:targets prefixed by sql_log:. For
|
* the SQL service name to log:targets prefixed by sql_log:. For
|
||||||
* example:
|
* example:
|
||||||
*
|
*
|
||||||
@@ -704,7 +707,7 @@ module { name = "help" }
|
|||||||
#module { name = "m_sql_log" }
|
#module { name = "m_sql_log" }
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* m_sql_oper [EXTRA]
|
* [EXTRA] m_sql_oper
|
||||||
*
|
*
|
||||||
* This module allows granting users services operator privileges and possibly IRC Operator
|
* This module allows granting users services operator privileges and possibly IRC Operator
|
||||||
* privileges based on an external SQL database using a custom query.
|
* privileges based on an external SQL database using a custom query.
|
||||||
@@ -730,7 +733,7 @@ module { name = "help" }
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* m_sqlite [EXTRA]
|
* [EXTRA] m_sqlite
|
||||||
*
|
*
|
||||||
* This module allows other modules to use SQLite.
|
* This module allows other modules to use SQLite.
|
||||||
*/
|
*/
|
||||||
@@ -745,7 +748,7 @@ module { name = "help" }
|
|||||||
name = "sqlite/main"
|
name = "sqlite/main"
|
||||||
|
|
||||||
/* The database name, it will be created if it does not exist. */
|
/* The database name, it will be created if it does not exist. */
|
||||||
database = "anope.db"
|
database = "anope.sqlite"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -763,13 +766,13 @@ module { name = "help" }
|
|||||||
name = "webcpanel"
|
name = "webcpanel"
|
||||||
|
|
||||||
/* Web server to use. */
|
/* Web server to use. */
|
||||||
server = "httpd/main";
|
server = "httpd/main"
|
||||||
|
|
||||||
/* Template to use. */
|
/* Template to use. */
|
||||||
template = "default";
|
template = "default"
|
||||||
|
|
||||||
/* Page title. */
|
/* Page title. */
|
||||||
title = "Anope IRC Services";
|
title = "Anope IRC Services"
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
+32
-21
@@ -68,7 +68,7 @@ module
|
|||||||
/*
|
/*
|
||||||
* Force users to give an e-mail address when they register a nick.
|
* Force users to give an e-mail address when they register a nick.
|
||||||
*
|
*
|
||||||
* This directive defaults to "yes" and is recommended to be enabled. This is required if e-mail registration is enabled.
|
* This directive defaults to "yes" and is recommended to be enabled.
|
||||||
*/
|
*/
|
||||||
forceemail = yes
|
forceemail = yes
|
||||||
|
|
||||||
@@ -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.
|
||||||
*/
|
*/
|
||||||
@@ -92,26 +92,29 @@ module
|
|||||||
*
|
*
|
||||||
* The options are:
|
* The options are:
|
||||||
* - killprotect: Kill nick if not identified within 60 seconds
|
* - killprotect: Kill nick if not identified within 60 seconds
|
||||||
* - kill_quick: Kill nick if not identified within 20 seconds, this one overrides the above
|
* - kill_quick: Kill nick if not identified within 20 seconds, this one overrides the killprotect
|
||||||
* option and the above must be specified with this one
|
* option and the killprotect option must be specified with this one
|
||||||
|
* - kill_immed: Kill nick immediately if not identified, this one overrides both the killprotect
|
||||||
|
* and kill_quick options and the killprotect option must be specified with this one
|
||||||
* - 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
|
* - 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
|
||||||
*
|
*
|
||||||
* 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.
|
||||||
*/
|
*/
|
||||||
defaults = "ns_secure ns_private hide_email hide_mask memo_signon memo_receive autoop"
|
defaults = "killprotect ns_secure ns_private hide_email hide_mask memo_signon memo_receive autoop"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The minimum length of time between consecutive uses of NickServ's REGISTER command. This
|
* The minimum length of time between consecutive uses of NickServ's REGISTER command. This
|
||||||
@@ -260,7 +263,7 @@ module
|
|||||||
* being recognized, unless they manually add an address to the access list of their account.
|
* being recognized, unless they manually add an address to the access list of their account.
|
||||||
* This directive is optional.
|
* This directive is optional.
|
||||||
*/
|
*/
|
||||||
addaccessonreg = yes
|
addaccessonreg = no
|
||||||
}
|
}
|
||||||
command { service = "NickServ"; name = "ACCESS"; command = "nickserv/access"; }
|
command { service = "NickServ"; name = "ACCESS"; command = "nickserv/access"; }
|
||||||
|
|
||||||
@@ -332,7 +335,7 @@ module { name = "ns_getemail" }
|
|||||||
command { service = "NickServ"; name = "GETEMAIL"; command = "nickserv/getemail"; permission = "nickserv/getemail"; group = "nickserv/admin"; }
|
command { service = "NickServ"; name = "GETEMAIL"; command = "nickserv/getemail"; permission = "nickserv/getemail"; group = "nickserv/admin"; }
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ns_getpass
|
* [DEPRECATED] ns_getpass
|
||||||
*
|
*
|
||||||
* Provides the command nickserv/getpass.
|
* Provides the command nickserv/getpass.
|
||||||
*
|
*
|
||||||
@@ -381,8 +384,16 @@ command { service = "NickServ"; name = "UNGROUP"; command = "nickserv/ungroup";
|
|||||||
*
|
*
|
||||||
* Used for identifying to accounts.
|
* Used for identifying to accounts.
|
||||||
*/
|
*/
|
||||||
module { name = "ns_identify" }
|
module
|
||||||
command { service = "NickServ"; name = "ID"; command = "nickserv/identify"; hide = true; }
|
{
|
||||||
|
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 = yes; }
|
||||||
command { service = "NickServ"; name = "IDENTIFY"; command = "nickserv/identify"; }
|
command { service = "NickServ"; name = "IDENTIFY"; command = "nickserv/identify"; }
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -390,7 +401,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" }
|
||||||
@@ -448,7 +459,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
|
||||||
}
|
}
|
||||||
@@ -582,12 +593,12 @@ command { service = "NickServ"; name = "SASET NOEXPIRE"; command = "nickserv/sas
|
|||||||
module { name = "ns_set_misc" }
|
module { name = "ns_set_misc" }
|
||||||
command { service = "NickServ"; name = "SET URL"; command = "nickserv/set/misc"; misc_description = _("Associate a URL with your account"); }
|
command { service = "NickServ"; name = "SET URL"; command = "nickserv/set/misc"; misc_description = _("Associate a URL with your account"); }
|
||||||
command { service = "NickServ"; name = "SASET URL"; command = "nickserv/saset/misc"; misc_description = _("Associate a URL with this account"); permission = "nickserv/saset/url"; group = "nickserv/admin"; }
|
command { service = "NickServ"; name = "SASET URL"; command = "nickserv/saset/misc"; misc_description = _("Associate a URL with this account"); permission = "nickserv/saset/url"; group = "nickserv/admin"; }
|
||||||
#command { service = "NickServ"; name = "SET ICQ"; command = "nickserv/set/misc"; misc_description = _("Associate an ICQ account with your account"); }
|
#command { service = "NickServ"; name = "SET DISCORD"; command = "nickserv/set/misc"; misc_description = _("Associate a Discord account with your account"); }
|
||||||
#command { service = "NickServ"; name = "SASET ICQ"; command = "nickserv/saset/misc"; misc_description = _("Associate an ICQ account with this account"); permission = "nickserv/saset/icq"; group = "nickserv/admin"; }
|
#command { service = "NickServ"; name = "SASET DISCORD"; command = "nickserv/saset/misc"; misc_description = _("Associate a Discord account with this account"); permission = "nickserv/saset/discord"; group = "nickserv/admin"; }
|
||||||
#command { service = "NickServ"; name = "SET TWITTER"; command = "nickserv/set/misc"; misc_description = _("Associate a Twitter account with your account"); }
|
#command { service = "NickServ"; name = "SET MASTODON"; command = "nickserv/set/misc"; misc_description = _("Associate a Mastodon account with your account"); }
|
||||||
#command { service = "NickServ"; name = "SASET TWITTER"; command = "nickserv/saset/misc"; misc_description = _("Associate a Twitter account with this account"); permission = "nickserv/saset/twitter"; group = "nickserv/admin"; }
|
#command { service = "NickServ"; name = "SASET MASTODON"; command = "nickserv/saset/misc"; misc_description = _("Associate a Mastodon account with this account"); permission = "nickserv/saset/mastodon"; group = "nickserv/admin"; }
|
||||||
#command { service = "NickServ"; name = "SET FACEBOOK"; command = "nickserv/set/misc"; misc_description = _("Associate a Facebook URL with your account"); }
|
#command { service = "NickServ"; name = "SET TIMEZONE"; command = "nickserv/set/misc"; misc_description = _("Associate a time zone with your account"); }
|
||||||
#command { service = "NickServ"; name = "SASET FACEBOOK"; command = "nickserv/saset/misc"; misc_description = _("Associate a Facebook URL with this account"); permission = "nickserv/saset/facebook"; group = "nickserv/admin"; }
|
#command { service = "NickServ"; name = "SASET TIMEZONE"; command = "nickserv/saset/misc"; misc_description = _("Associate a time zone with this account"); permission = "nickserv/saset/timezone"; group = "nickserv/admin"; }
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ns_status
|
* ns_status
|
||||||
|
|||||||
+15
-17
@@ -100,7 +100,7 @@ module
|
|||||||
killonsqline = yes
|
killonsqline = yes
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds the nickname of the IRC Operator issuing an AKILL to the kill reason.
|
* Adds the nickname of the Services Operator issuing an AKILL to the kill reason.
|
||||||
*
|
*
|
||||||
* This directive is optional.
|
* This directive is optional.
|
||||||
*/
|
*/
|
||||||
@@ -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
|
||||||
@@ -184,8 +184,8 @@ command { service = "OperServ"; name = "CHANKILL"; command = "operserv/chankill"
|
|||||||
* - forcechanmodes: Forces all channels to have the modes given in the later chanmodes directive
|
* - forcechanmodes: Forces all channels to have the modes given in the later chanmodes directive
|
||||||
* - reducedsessions: Reduces the session limit to the value given in the later sessionlimit directive
|
* - reducedsessions: Reduces the session limit to the value given in the later sessionlimit directive
|
||||||
* - nonewclients: KILL any new clients trying to connect
|
* - nonewclients: KILL any new clients trying to connect
|
||||||
* - operonly: Services will ignore all non-IRCops
|
* - operonly: Ignore all non-IRCops
|
||||||
* - silentoperonly: Services will silently ignore all non-IRCops
|
* - silentoperonly: Silently ignore all non-IRCops
|
||||||
* - akillnewclients: AKILL any new clients trying to connect
|
* - akillnewclients: AKILL any new clients trying to connect
|
||||||
* - nonewmemos: No new memos will be sent to block MemoServ attacks
|
* - nonewmemos: No new memos will be sent to block MemoServ attacks
|
||||||
*/
|
*/
|
||||||
@@ -276,15 +276,15 @@ command { service = "OperServ"; name = "CHANKILL"; command = "operserv/chankill"
|
|||||||
* To use this module you must set a nameserver record for services
|
* To use this module you must set a nameserver record for services
|
||||||
* so that DNS queries go to services.
|
* so that DNS queries go to services.
|
||||||
*
|
*
|
||||||
* Alternatively, you may use a slave DNS server to hide service's IP,
|
* Alternatively, you may use a secondary DNS server to hide services' IP,
|
||||||
* provide query caching, and provide better fault tolerance.
|
* provide query caching, and provide better fault tolerance.
|
||||||
*
|
*
|
||||||
* To do this using BIND, configure similar to:
|
* To do this using BIND, configure similar to:
|
||||||
*
|
*
|
||||||
* options { max-refresh-time 60; };
|
* options { max-refresh-time 60; };
|
||||||
* zone "irc.example.com" IN {
|
* zone "irc.example.com" IN {
|
||||||
* type slave;
|
* type secondary;
|
||||||
* masters { 127.0.0.1 port 5353; };
|
* primaries { 127.0.0.1 port 5353; };
|
||||||
* };
|
* };
|
||||||
*
|
*
|
||||||
* Where 127.0.0.1:5353 is the IP and port services are listening on.
|
* Where 127.0.0.1:5353 is the IP and port services are listening on.
|
||||||
@@ -507,15 +507,15 @@ module { name = "os_noop" }
|
|||||||
command { service = "OperServ"; name = "NOOP"; command = "operserv/noop"; permission = "operserv/noop"; }
|
command { service = "OperServ"; name = "NOOP"; command = "operserv/noop"; permission = "operserv/noop"; }
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* os_oline
|
* [DEPRECATED] os_oline
|
||||||
*
|
*
|
||||||
* 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
|
||||||
@@ -544,7 +544,7 @@ command { service = "OperServ"; name = "RELOAD"; command = "operserv/reload"; pe
|
|||||||
*
|
*
|
||||||
* This module enables session limiting. Session limiting prevents users from connecting more than a certain
|
* This module enables session limiting. Session limiting prevents users from connecting more than a certain
|
||||||
* number of times from the same IP at the same time - thus preventing most types of cloning.
|
* number of times from the same IP at the same time - thus preventing most types of cloning.
|
||||||
* Once a host reaches it's session limit, all clients attempting to connect from that host will
|
* Once a host reaches its session limit, all clients attempting to connect from that host will
|
||||||
* be killed. Exceptions to the default session limit can be defined via the exception list.
|
* be killed. Exceptions to the default session limit can be defined via the exception list.
|
||||||
*
|
*
|
||||||
* Used to manage the session limit exception list, and view currently active sessions.
|
* Used to manage the session limit exception list, and view currently active sessions.
|
||||||
@@ -559,7 +559,7 @@ module
|
|||||||
*
|
*
|
||||||
* This directive is required if os_session is loaded.
|
* This directive is required if os_session is loaded.
|
||||||
*/
|
*/
|
||||||
defaultsessionlimit = 3
|
defaultsessionlimit = 5
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The maximum session limit that may be set for a host in an exception.
|
* The maximum session limit that may be set for a host in an exception.
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -65,10 +65,6 @@
|
|||||||
* will typically be disabled. If this is not the case, more
|
* will typically be disabled. If this is not the case, more
|
||||||
* information will be given in the documentation.
|
* information will be given in the documentation.
|
||||||
*
|
*
|
||||||
* [DISCOURAGED]
|
|
||||||
* Indicates a directive which may cause undesirable side effects if
|
|
||||||
* specified.
|
|
||||||
*
|
|
||||||
* [DEPRECATED]
|
* [DEPRECATED]
|
||||||
* Indicates a directive which will disappear in a future version of
|
* Indicates a directive which will disappear in a future version of
|
||||||
* Services, usually because its functionality has been either
|
* Services, usually because its functionality has been either
|
||||||
@@ -80,17 +76,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 services.host define is used in multiple different locations throughout the
|
||||||
* configuration for services clients hostnames.
|
* configuration for the server name and pseudoclient hostnames.
|
||||||
*/
|
*/
|
||||||
define
|
define
|
||||||
{
|
{
|
||||||
name = "services.host"
|
name = "services.host"
|
||||||
value = "services.localhost.net"
|
value = "stats.example.com"
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -110,7 +106,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 +122,37 @@ 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!
|
||||||
|
* <module name="hidechans">
|
||||||
|
* <module name="services_account">
|
||||||
|
* <module name="spanningtree">
|
||||||
|
* <bind address="127.0.0.1" port="7000" type="servers">
|
||||||
|
* <link name="stats.example.com"
|
||||||
* 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.example.com" silent="yes">
|
||||||
* <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.example.com {
|
||||||
* listen 127.0.0.1:7000;
|
* incoming {
|
||||||
|
* mask *@127.0.0.1;
|
||||||
|
* };
|
||||||
|
* password "mypassword";
|
||||||
|
* class servers;
|
||||||
|
* };
|
||||||
|
* ulines { stats.example.com; };
|
||||||
*/
|
*/
|
||||||
uplink
|
uplink
|
||||||
{
|
{
|
||||||
@@ -202,10 +205,10 @@ serverinfo
|
|||||||
* other server names on the rest of your IRC network. Note that it does not have
|
* other server names on the rest of your IRC network. Note that it does not have
|
||||||
* to be an existing hostname, just one that isn't on your network already.
|
* to be an existing hostname, just one that isn't on your network already.
|
||||||
*/
|
*/
|
||||||
name = "stats.localhost.net"
|
name = "stats.example.com"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 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 +234,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"
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -247,19 +250,21 @@ serverinfo
|
|||||||
* You MUST modify this to match the IRCd you run.
|
* You MUST modify this to match the IRCd you run.
|
||||||
*
|
*
|
||||||
* Supported:
|
* Supported:
|
||||||
* - bahamut
|
* - [DEPRECATED] bahamut
|
||||||
* - charybdis
|
* - charybdis
|
||||||
* - hybrid
|
* - hybrid
|
||||||
* - inspircd12
|
* - [DEPRECATED] inspircd12
|
||||||
* - inspircd20
|
* - [DEPRECATED] inspircd20
|
||||||
|
* - inspircd3 (for 3.x and 4.x)
|
||||||
* - ngircd
|
* - ngircd
|
||||||
* - plexus
|
* - plexus
|
||||||
* - ratbox
|
* - ratbox
|
||||||
* - unreal
|
* - [DEPRECATED] unreal (for 3.2.x)
|
||||||
|
* - unreal4 (for 4.x or later)
|
||||||
*/
|
*/
|
||||||
module
|
module
|
||||||
{
|
{
|
||||||
name = "inspircd20"
|
name = "inspircd3"
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -312,7 +317,7 @@ networkinfo
|
|||||||
*
|
*
|
||||||
* It is recommended you DON'T change this.
|
* It is recommended you DON'T change this.
|
||||||
*/
|
*/
|
||||||
vhost_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-"
|
vhost_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-/"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If set to true, allows vHosts to not contain dots (.).
|
* If set to true, allows vHosts to not contain dots (.).
|
||||||
@@ -321,7 +326,7 @@ networkinfo
|
|||||||
*
|
*
|
||||||
* It is recommended you DON'T change this.
|
* It is recommended you DON'T change this.
|
||||||
*/
|
*/
|
||||||
allow_undotted_vhosts = false
|
allow_undotted_vhosts = no
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The characters that are not allowed to be at the very beginning or very ending
|
* The characters that are not allowed to be at the very beginning or very ending
|
||||||
@@ -329,7 +334,7 @@ networkinfo
|
|||||||
*
|
*
|
||||||
* It is recommended you DON'T change this.
|
* It is recommended you DON'T change this.
|
||||||
*/
|
*/
|
||||||
disallow_start_or_end = ".-"
|
disallow_start_or_end = ".-/"
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -365,12 +370,6 @@ options
|
|||||||
*/
|
*/
|
||||||
readtimeout = 5s
|
readtimeout = 5s
|
||||||
|
|
||||||
/*
|
|
||||||
* Sets the interval between sending warning messages for program errors via
|
|
||||||
* WALLOPS/GLOBOPS.
|
|
||||||
*/
|
|
||||||
warningtimeout = 4h
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If set, Services will only show /stats o to IRC Operators. This directive
|
* If set, Services will only show /stats o to IRC Operators. This directive
|
||||||
* is optional.
|
* is optional.
|
||||||
@@ -378,7 +377,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,29 +410,29 @@ 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 = ""
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 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.
|
||||||
*/
|
*/
|
||||||
@@ -461,7 +460,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 +509,3 @@ include
|
|||||||
type = "file"
|
type = "file"
|
||||||
name = "irc2sql.example.conf"
|
name = "irc2sql.example.conf"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
For all bug reports / updates please see http://bugs.anope.org
|
For all bug reports / updates please see https://github.com/anope/anope/issues
|
||||||
|
|||||||
+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
|
||||||
|
|||||||
+2
-2
@@ -1,4 +1,4 @@
|
|||||||
Orginally pulled from: http://www.inspircd.org/wiki/Coding_Guidelines
|
Originally pulled from: https://wiki.inspircd.org/Coding_Guidelines
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -59,7 +59,7 @@ yet follows these. This will be rectified with time.
|
|||||||
4. Braces
|
4. Braces
|
||||||
|
|
||||||
Always put braces opening and closing blocks on separate lines, see the
|
Always put braces opening and closing blocks on separate lines, see the
|
||||||
identation example. For example, place braces like this:
|
indentation example. For example, place braces like this:
|
||||||
if (apples == "green")
|
if (apples == "green")
|
||||||
{
|
{
|
||||||
cout << "Apples are green" << endl;
|
cout << "Apples are green" << endl;
|
||||||
|
|||||||
+283
-18
@@ -1,3 +1,268 @@
|
|||||||
|
Anope Version 2.0.21-git
|
||||||
|
------------------------
|
||||||
|
No significant changes.
|
||||||
|
|
||||||
|
Anope Version 2.0.20
|
||||||
|
--------------------
|
||||||
|
Fixed an escaped value that wasn't escaped enough in chanstats.
|
||||||
|
Fixed not having a handler for the FNAME message on InspIRCd.
|
||||||
|
Fixed os_stats reporting the SGLine expiry time as the SQLine expiry time.
|
||||||
|
Fixed the DNs and search filters not being escaped correctly in the ldap_authentication and ldap_oper modules.
|
||||||
|
Modernised the advice in docs/LANGUAGE regarding the installation of language packs.
|
||||||
|
|
||||||
|
Anope Version 2.0.19
|
||||||
|
--------------------
|
||||||
|
Added a Doxygen config file.
|
||||||
|
Backported various minor config changes from 2.1.
|
||||||
|
Fixed chanserv/enforce enforcing against founders.
|
||||||
|
Fixed creating channel entries in irc2sql.
|
||||||
|
Fixed not respecting the mode state when removing a mode lock.
|
||||||
|
Fixed reading the settings in m_dns.
|
||||||
|
Fixed resetpass confirming accounts when not using email confirmation.
|
||||||
|
Fixed trying to write to a buffered socket when there's no data.
|
||||||
|
Fixed various minor spelling issues.
|
||||||
|
Updated some messages for the language used by modern BIND versions.
|
||||||
|
|
||||||
|
Anope Version 2.0.18
|
||||||
|
--------------------
|
||||||
|
Backported better sendmail error messages from 2.1.
|
||||||
|
Backported the Windows CI fom 2.1.
|
||||||
|
Fixed a CMake error when it encounters a hard to parse header file.
|
||||||
|
Fixed being able to group guest nicknames.
|
||||||
|
Fixed building Anope with CMake 4.
|
||||||
|
Fixed compatibility with MariaDB.
|
||||||
|
Fixed counting email addresses in ns_maxemail.
|
||||||
|
Fixed importing user ICQ and URL data from 1.8.
|
||||||
|
Fixed operserv/ignore not being prioritised first.
|
||||||
|
Fixed resetting the stats with operserv/stats.
|
||||||
|
Updated the Dutch translation.
|
||||||
|
|
||||||
|
Anope Version 2.0.17
|
||||||
|
--------------------
|
||||||
|
Fixed importing large flatfile databases into SQL.
|
||||||
|
Fixed marking channels as permanent.
|
||||||
|
Fixed serialising unset boolean extension items.
|
||||||
|
Fixed the documentation about how to import SQL databases.
|
||||||
|
Fixed the documentation of options:usemail.
|
||||||
|
Fixed the location of the geoipupdate CSV files.
|
||||||
|
Fixed translating memo emails.
|
||||||
|
Fixed unnecessary SQL updates caused by dereferencing user accounts.
|
||||||
|
Increased the size of the chanstats letter and word count columns.
|
||||||
|
Updated the location of the Anope IRC channels.
|
||||||
|
|
||||||
|
Anope Version 2.0.16
|
||||||
|
--------------------
|
||||||
|
Added a workaround for users matching expired sqlines.
|
||||||
|
Fixed a copy/paste error in webcpanel.
|
||||||
|
Fixed a crash in db_flatfile caused by trying to serialize data without a type.
|
||||||
|
Fixed duplicate messages when synconset/syncongroup is set.
|
||||||
|
Fixed expiring channel suspensions.
|
||||||
|
Fixed expiring forbids.
|
||||||
|
Fixed expiring nick suspensions.
|
||||||
|
Fixed feature detection on InspIRCd.
|
||||||
|
Fixed InspIRCd account cloaks causing CHGHOST spam when a user also has a services vhost.
|
||||||
|
Fixed joining users to channels with a key set on InspIRCd.
|
||||||
|
Fixed logging users out fully when their nick gets suspended.
|
||||||
|
Fixed marking boolean columns in SQL as TEXT instead of INT.
|
||||||
|
Fixed matching extbans on InspIRCd and implement missing matchers.
|
||||||
|
Fixed operserv/sqline expiry on UnrealIRCd
|
||||||
|
Fixed respecting --noexpire in cs_suspend and ns_suspend.
|
||||||
|
Fixed sending emails to nicks ending with a backslash.
|
||||||
|
Fixed sending SVSTOPIC when topiclock is loaded on InspIRCd.
|
||||||
|
Fixed some SQL tables taking up too much space on disk.
|
||||||
|
Fixed the default config for channel suspensions.
|
||||||
|
Fixed the TIME message on InspIRCd.
|
||||||
|
Fixed trying to escape SQL data when not connected to MySQL.
|
||||||
|
Fixed {ldap,sql}_authentication creating zombie accounts on expiry.
|
||||||
|
|
||||||
|
Anope Version 2.0.15
|
||||||
|
--------------------
|
||||||
|
Fixed a race condition in changing the nick of a user.
|
||||||
|
Fixed being able to reset the password of suspended accounts.
|
||||||
|
Fixed chanserv/suspend info not being visible to regular users.
|
||||||
|
Fixed removing entries by an alias in chanserv/access and chanserv/xop.
|
||||||
|
Fixed various grammar issues in messages.
|
||||||
|
Made the SASL PLAIN implementation more robust.
|
||||||
|
Updated the Dutch translation.
|
||||||
|
Updated the French translation.
|
||||||
|
Updated the Turkish translation.
|
||||||
|
|
||||||
|
Anope Version 2.0.14
|
||||||
|
--------------------
|
||||||
|
Added support for sqlining channels on UnrealIRCd.
|
||||||
|
Fixed a crash when trying to access config for non-loaded modules.
|
||||||
|
Fixed detection of the InspIRCd nopartmsg module.
|
||||||
|
Fixed not getting memo notifications when authing with SASL.
|
||||||
|
Fixed not serialising dontkickops/dontkickvoices in botserv/kick.
|
||||||
|
Fixed sending emails with the wrong kind of line terminator.
|
||||||
|
Fixed sending log messages from a renamed pseudoclient.
|
||||||
|
Fixed telling users their passcode is incorrect when they need to authenticate in nickserv/confirm.
|
||||||
|
Fixed the Config script freezing on some versions of util-linux.
|
||||||
|
Updated the Windows packaging scripts to use dependencies from Conan.
|
||||||
|
|
||||||
|
Anope Version 2.0.13
|
||||||
|
--------------------
|
||||||
|
Fixed a crash on some compilers when trying to call methods on a null pointer
|
||||||
|
Fixed a crash when encountering an unterminated commented config block
|
||||||
|
Fixed erroneously rejecting spaces in fantasy:name
|
||||||
|
Fixed marking services pseudoclients as an oper on InspIRCd
|
||||||
|
Fixed not checking user@ip as well as user@host when logging into an operator account
|
||||||
|
Fixed setting the vhost/vident during SASL on UnrealIRCd
|
||||||
|
Updated the German translation
|
||||||
|
Updated the Italian translation
|
||||||
|
|
||||||
|
Anope Version 2.0.12
|
||||||
|
--------------------
|
||||||
|
Added account confirmation to the web panel
|
||||||
|
Added the regex_pcre2 module which provides regex/pcre with PCRE2
|
||||||
|
Documented the cs_no_expire channel default
|
||||||
|
Fixed config validation mistakenly allowing spaces in some fields
|
||||||
|
Fixed the bahamut protocol module not knowing about halfops
|
||||||
|
Fixed writing a flatfile database not being atomic
|
||||||
|
Updated the hybrid protocol module for recent protocol changes
|
||||||
|
|
||||||
|
Anope Version 2.0.11
|
||||||
|
--------------------
|
||||||
|
Fixed ldap on OpenLDAP 2.5+
|
||||||
|
Fixed not using utf-8 encoding for outgoing email
|
||||||
|
Fixed ns_resetpass not returning a response for XMLRPC
|
||||||
|
Fixed some message params being sent as <middle> instead of <trailing>
|
||||||
|
Fixed unsetting vhosts on unreal4
|
||||||
|
Fixed username validity checking on ircd-hybrid
|
||||||
|
Send the oper mode for services pseudoclients on InspIRCd
|
||||||
|
Updated the pl_PL translation
|
||||||
|
Updated unreal4 for various protocol changes
|
||||||
|
|
||||||
|
Anope Version 2.0.10
|
||||||
|
--------------------
|
||||||
|
Add support for channel SQLines on InspIRCd
|
||||||
|
Change default protocol module from inspircd20 to inspircd3
|
||||||
|
Change the character set used by chanstats and irc2sql to utf8mb4
|
||||||
|
Fix a ton of typos in messages
|
||||||
|
Fix being able to override MAXLIST on InspIRCd
|
||||||
|
Fix blocking on boot when trying to upgrade SQL databases without account identifiers
|
||||||
|
Fix not flushing the ERROR message on squit
|
||||||
|
Fix using an invalidated iterator when deleting bots
|
||||||
|
Fix various harmless compiler warnings
|
||||||
|
Fix webcpanel not using the forwarded IP
|
||||||
|
Show the account name in nickserv/info
|
||||||
|
|
||||||
|
Anope Version 2.0.9
|
||||||
|
-------------------
|
||||||
|
Fix a regression from 2.0.8 that prevented serialising to MySQL
|
||||||
|
Send account identifiers to InspIRCd on SASL logins too
|
||||||
|
Fix a query bug in irc2sql
|
||||||
|
|
||||||
|
Anope Version 2.0.8
|
||||||
|
-------------------
|
||||||
|
Add +K channel mode for ircd-hybrid
|
||||||
|
Add immutable identifiers to user accounts
|
||||||
|
Fix build on systems that use musl libc
|
||||||
|
Fix help of global/global not showing the correct origin nick
|
||||||
|
Fix not removing vhosts when an nick is dropped
|
||||||
|
Fix parsing channel metadata on InspIRCd 3+
|
||||||
|
Fix parsing kicks on InspIRCd 3+
|
||||||
|
Fix parsing topic changes on InspIRCd 3+
|
||||||
|
Fix topiclock on InspIRCd
|
||||||
|
Modernize the ircd-hybrid protocol module
|
||||||
|
|
||||||
|
|
||||||
|
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
|
||||||
|
Clarify 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 language 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
|
Anope Version 2.0.2
|
||||||
-------------------
|
-------------------
|
||||||
Fix keepmodes preventing the first user of a channel from being deopped
|
Fix keepmodes preventing the first user of a channel from being deopped
|
||||||
@@ -40,19 +305,19 @@ 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
|
||||||
A Added ability to configure what privileges XOP commands give
|
A Added ability to configure what privileges XOP commands give
|
||||||
U Updated Dutch language file, from Robby <robby@chat.be>
|
U Updated Dutch language file, from Robby <robby@chat.be>
|
||||||
U Updated Spanish langauge file, from Isaac Fontal <i_fontal@hotmail.com>
|
U Updated Spanish language file, from Isaac Fontal <i_fontal@hotmail.com>
|
||||||
F Fix build on Solaris and OSX
|
F Fix build on Solaris and OSX
|
||||||
F Fixed setting BotServ's default settings in the config
|
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
|
||||||
@@ -64,7 +329,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
|
||||||
@@ -74,7 +339,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
|
||||||
@@ -93,7 +358,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
|
||||||
@@ -111,7 +376,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
|
||||||
@@ -132,11 +397,11 @@ 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
|
||||||
A Prevent negaitve mode changes, kicks, bans, and autokicks from affecting people with the 'god' user mode (On UnrealIRCd, usermode +q)
|
A Prevent negative mode changes, kicks, bans, and autokicks from affecting people with the 'god' user mode (On UnrealIRCd, usermode +q)
|
||||||
A Added nickserv/auxpex permission
|
A Added nickserv/auxpex permission
|
||||||
A Added nickserv ungroup command
|
A Added nickserv ungroup command
|
||||||
A Renamed the SGLINE to be SNLINE
|
A Renamed the SGLINE to be SNLINE
|
||||||
@@ -148,18 +413,18 @@ A Added m_mysql which uses threads to execute queries
|
|||||||
A Added many subcommand modules for some commands, eg ns_set_autoop, ns_set_email, etc
|
A Added many subcommand modules for some commands, eg ns_set_autoop, ns_set_email, etc
|
||||||
A Added a new logging system that is a bit more flexible
|
A Added a new logging system that is a bit more flexible
|
||||||
A Added cs_set_misc and ns_set_misc to add miscellaneous set commands
|
A Added cs_set_misc and ns_set_misc to add miscellaneous set commands
|
||||||
A Added os_modreload, which allows reloading some modules not normally unloable, like the protocol module
|
A Added os_modreload, which allows reloading some modules not normally unloadable, like the protocol module
|
||||||
A Added FOUNDER access level
|
A Added FOUNDER access level
|
||||||
A Made OperServ, Global, MemoServ, and ChanServ optional
|
A Made OperServ, Global, MemoServ, and ChanServ optional
|
||||||
F Shutting down if a config reload fails
|
F Shutting down if a config reload fails
|
||||||
F Autoid to live through restarts on Unreal
|
F Autoid to live through restarts on Unreal
|
||||||
F Storing vhosts in MySQL
|
F Storing vhosts in MySQL
|
||||||
F Not flushing the anope_extra table before rewriting databaes
|
F Not flushing the anope_extra table before rewriting database
|
||||||
F Anoperc start/stop to send the globaloncycle global, and fixed anoperc rehash to really rehash
|
F Anoperc start/stop to send the globaloncycle global, and fixed anoperc rehash to really rehash
|
||||||
F Fixed a potential crash if HostServ or BotServ was disbled
|
F Fixed a potential crash if HostServ or BotServ was disabled
|
||||||
|
|
||||||
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
|
||||||
@@ -173,14 +438,14 @@ 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
|
||||||
F Crash when users change their host that are identified to a group, but not a nick
|
F Crash when users change their host that are identified to a group, but not a nick
|
||||||
F Host length checking in HS SET(ALL) and HS REQUEST
|
F Host length checking in HS SET(ALL) and HS REQUEST
|
||||||
F Only show if a user is online in NS INFO if they are really identiifed for the group of the nick they are on
|
F Only show if a user is online in NS INFO if they are really identified for the group of the nick they are on
|
||||||
F Crash when using BSSmartJoin
|
F Crash when using BSSmartJoin
|
||||||
F Converting access entries to access from xop when a users access is below voice
|
F Converting access entries to access from xop when a users access is below voice
|
||||||
F A bad pointer passed to the OnDelEvent which could cause some 3rd party modules to crash
|
F A bad pointer passed to the OnDelEvent which could cause some 3rd party modules to crash
|
||||||
@@ -190,7 +455,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.
|
||||||
@@ -231,7 +496,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
|
||||||
|
|||||||
+88
-4
@@ -1,3 +1,87 @@
|
|||||||
|
Anope Version 2.0.21-git
|
||||||
|
------------------------
|
||||||
|
No significant changes.
|
||||||
|
|
||||||
|
Anope Version 2.0.20
|
||||||
|
--------------------
|
||||||
|
No significant changes.
|
||||||
|
|
||||||
|
Anope Version 2.0.19
|
||||||
|
--------------------
|
||||||
|
No significant changes.
|
||||||
|
|
||||||
|
Anope Version 2.0.18
|
||||||
|
--------------------
|
||||||
|
No significant changes.
|
||||||
|
|
||||||
|
Anope Version 2.0.17
|
||||||
|
--------------------
|
||||||
|
No significant changes.
|
||||||
|
|
||||||
|
Anope Version 2.0.16
|
||||||
|
--------------------
|
||||||
|
No significant changes.
|
||||||
|
|
||||||
|
Anope Version 2.0.15
|
||||||
|
--------------------
|
||||||
|
No significant changes.
|
||||||
|
|
||||||
|
Anope Version 2.0.14
|
||||||
|
--------------------
|
||||||
|
Added mail:content_type to allow customizing the content type of emails.
|
||||||
|
|
||||||
|
Anope Version 2.0.13
|
||||||
|
--------------------
|
||||||
|
No significant changes.
|
||||||
|
|
||||||
|
Anope Version 2.0.12
|
||||||
|
--------------------
|
||||||
|
Added the regex_pcre2 module
|
||||||
|
|
||||||
|
Anope Version 2.0.11
|
||||||
|
--------------------
|
||||||
|
No significant changes.
|
||||||
|
|
||||||
|
Anope Version 2.0.10
|
||||||
|
--------------------
|
||||||
|
No significant changes.
|
||||||
|
|
||||||
|
Anope Version 2.0.9
|
||||||
|
-------------------
|
||||||
|
No significant changes.
|
||||||
|
|
||||||
|
Anope Version 2.0.8
|
||||||
|
-------------------
|
||||||
|
Fix ns_register:unconfirmedexpire not being used
|
||||||
|
|
||||||
|
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
|
Anope Version 2.0.2
|
||||||
-------------------
|
-------------------
|
||||||
Add an operserv/oper/modify privilege, required to use oper add and oper del
|
Add an operserv/oper/modify privilege, required to use oper add and oper del
|
||||||
@@ -24,7 +108,7 @@ mail:restrict removed
|
|||||||
|
|
||||||
Anope Version 1.9.9
|
Anope Version 1.9.9
|
||||||
-------------------
|
-------------------
|
||||||
There is not many config changes betewen 1.9.8 and 1.9.9, however many of the
|
There is not many config changes between 1.9.8 and 1.9.9, however many of the
|
||||||
options have been moved around to make more sense, too many to list here,
|
options have been moved around to make more sense, too many to list here,
|
||||||
so get a new config.
|
so get a new config.
|
||||||
|
|
||||||
@@ -85,7 +169,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
|
||||||
@@ -119,13 +203,13 @@ 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
|
||||||
options:database added for the database modules
|
options:database added for the database modules
|
||||||
options:botmodes added to configure modes BotServ bots should use
|
options:botmodes added to configure modes BotServ bots should use
|
||||||
options:userlen added to configure maxiumum ident length
|
options:userlen added to configure maximum ident length
|
||||||
options:hostlen added to configure maximum hostname length
|
options:hostlen added to configure maximum hostname length
|
||||||
options:database added to configure what database modules to use
|
options:database added to configure what database modules to use
|
||||||
options:passlen added to specify the maximum length of passwords
|
options:passlen added to specify the maximum length of passwords
|
||||||
|
|||||||
+1
-2
@@ -90,5 +90,4 @@ Anope DefCon
|
|||||||
6) Support
|
6) Support
|
||||||
|
|
||||||
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.teranova.net.
|
||||||
|
|
||||||
|
|||||||
+313
@@ -0,0 +1,313 @@
|
|||||||
|
DOXYFILE_ENCODING = UTF-8
|
||||||
|
PROJECT_NAME = "Anope"
|
||||||
|
PROJECT_NUMBER = 2.0
|
||||||
|
PROJECT_BRIEF =
|
||||||
|
PROJECT_LOGO =
|
||||||
|
PROJECT_ICON = src/win32/anope-icon.ico
|
||||||
|
OUTPUT_DIRECTORY = docs/doxygen
|
||||||
|
CREATE_SUBDIRS = NO
|
||||||
|
CREATE_SUBDIRS_LEVEL = 8
|
||||||
|
ALLOW_UNICODE_NAMES = NO
|
||||||
|
OUTPUT_LANGUAGE = English
|
||||||
|
BRIEF_MEMBER_DESC = YES
|
||||||
|
REPEAT_BRIEF = YES
|
||||||
|
ABBREVIATE_BRIEF = "The $name class" \
|
||||||
|
"The $name widget" \
|
||||||
|
"The $name file" \
|
||||||
|
is \
|
||||||
|
provides \
|
||||||
|
specifies \
|
||||||
|
contains \
|
||||||
|
represents \
|
||||||
|
a \
|
||||||
|
an \
|
||||||
|
the
|
||||||
|
ALWAYS_DETAILED_SEC = NO
|
||||||
|
INLINE_INHERITED_MEMB = NO
|
||||||
|
FULL_PATH_NAMES = YES
|
||||||
|
STRIP_FROM_PATH =
|
||||||
|
STRIP_FROM_INC_PATH =
|
||||||
|
SHORT_NAMES = NO
|
||||||
|
JAVADOC_AUTOBRIEF = NO
|
||||||
|
JAVADOC_BANNER = NO
|
||||||
|
QT_AUTOBRIEF = NO
|
||||||
|
MULTILINE_CPP_IS_BRIEF = NO
|
||||||
|
PYTHON_DOCSTRING = YES
|
||||||
|
INHERIT_DOCS = YES
|
||||||
|
SEPARATE_MEMBER_PAGES = NO
|
||||||
|
TAB_SIZE = 4
|
||||||
|
ALIASES =
|
||||||
|
OPTIMIZE_OUTPUT_FOR_C = NO
|
||||||
|
OPTIMIZE_OUTPUT_JAVA = NO
|
||||||
|
OPTIMIZE_FOR_FORTRAN = NO
|
||||||
|
OPTIMIZE_OUTPUT_VHDL = NO
|
||||||
|
OPTIMIZE_OUTPUT_SLICE = NO
|
||||||
|
EXTENSION_MAPPING =
|
||||||
|
MARKDOWN_SUPPORT = YES
|
||||||
|
TOC_INCLUDE_HEADINGS = 5
|
||||||
|
MARKDOWN_ID_STYLE = GITHUB
|
||||||
|
AUTOLINK_SUPPORT = YES
|
||||||
|
AUTOLINK_IGNORE_WORDS =
|
||||||
|
BUILTIN_STL_SUPPORT = YES
|
||||||
|
CPP_CLI_SUPPORT = NO
|
||||||
|
SIP_SUPPORT = NO
|
||||||
|
IDL_PROPERTY_SUPPORT = YES
|
||||||
|
DISTRIBUTE_GROUP_DOC = NO
|
||||||
|
GROUP_NESTED_COMPOUNDS = NO
|
||||||
|
SUBGROUPING = YES
|
||||||
|
INLINE_GROUPED_CLASSES = NO
|
||||||
|
INLINE_SIMPLE_STRUCTS = NO
|
||||||
|
TYPEDEF_HIDES_STRUCT = NO
|
||||||
|
LOOKUP_CACHE_SIZE = 0
|
||||||
|
NUM_PROC_THREADS = 0
|
||||||
|
TIMESTAMP = NO
|
||||||
|
EXTRACT_ALL = YES
|
||||||
|
EXTRACT_PRIVATE = NO
|
||||||
|
EXTRACT_PRIV_VIRTUAL = NO
|
||||||
|
EXTRACT_PACKAGE = NO
|
||||||
|
EXTRACT_STATIC = NO
|
||||||
|
EXTRACT_LOCAL_CLASSES = NO
|
||||||
|
EXTRACT_LOCAL_METHODS = NO
|
||||||
|
EXTRACT_ANON_NSPACES = NO
|
||||||
|
RESOLVE_UNNAMED_PARAMS = YES
|
||||||
|
HIDE_UNDOC_MEMBERS = NO
|
||||||
|
HIDE_UNDOC_CLASSES = NO
|
||||||
|
HIDE_UNDOC_NAMESPACES = YES
|
||||||
|
HIDE_FRIEND_COMPOUNDS = NO
|
||||||
|
HIDE_IN_BODY_DOCS = NO
|
||||||
|
INTERNAL_DOCS = NO
|
||||||
|
CASE_SENSE_NAMES = SYSTEM
|
||||||
|
HIDE_SCOPE_NAMES = NO
|
||||||
|
HIDE_COMPOUND_REFERENCE= NO
|
||||||
|
SHOW_HEADERFILE = YES
|
||||||
|
SHOW_INCLUDE_FILES = YES
|
||||||
|
SHOW_GROUPED_MEMB_INC = NO
|
||||||
|
FORCE_LOCAL_INCLUDES = NO
|
||||||
|
INLINE_INFO = YES
|
||||||
|
SORT_MEMBER_DOCS = YES
|
||||||
|
SORT_BRIEF_DOCS = NO
|
||||||
|
SORT_MEMBERS_CTORS_1ST = NO
|
||||||
|
SORT_GROUP_NAMES = NO
|
||||||
|
SORT_BY_SCOPE_NAME = NO
|
||||||
|
STRICT_PROTO_MATCHING = NO
|
||||||
|
GENERATE_TODOLIST = YES
|
||||||
|
GENERATE_TESTLIST = YES
|
||||||
|
GENERATE_BUGLIST = YES
|
||||||
|
GENERATE_DEPRECATEDLIST= YES
|
||||||
|
ENABLED_SECTIONS =
|
||||||
|
MAX_INITIALIZER_LINES = 30
|
||||||
|
SHOW_USED_FILES = YES
|
||||||
|
SHOW_FILES = YES
|
||||||
|
SHOW_NAMESPACES = YES
|
||||||
|
FILE_VERSION_FILTER =
|
||||||
|
LAYOUT_FILE =
|
||||||
|
CITE_BIB_FILES =
|
||||||
|
EXTERNAL_TOOL_PATH =
|
||||||
|
QUIET = NO
|
||||||
|
WARNINGS = YES
|
||||||
|
WARN_IF_UNDOCUMENTED = NO
|
||||||
|
WARN_IF_DOC_ERROR = YES
|
||||||
|
WARN_IF_INCOMPLETE_DOC = YES
|
||||||
|
WARN_NO_PARAMDOC = NO
|
||||||
|
WARN_IF_UNDOC_ENUM_VAL = NO
|
||||||
|
WARN_LAYOUT_FILE = YES
|
||||||
|
WARN_AS_ERROR = NO
|
||||||
|
WARN_FORMAT = "$file:$line: $text"
|
||||||
|
WARN_LINE_FORMAT = "at line $line of file $file"
|
||||||
|
WARN_LOGFILE =
|
||||||
|
INPUT = README.md \
|
||||||
|
include
|
||||||
|
INPUT_ENCODING = UTF-8
|
||||||
|
INPUT_FILE_ENCODING =
|
||||||
|
FILE_PATTERNS =
|
||||||
|
RECURSIVE = YES
|
||||||
|
EXCLUDE =
|
||||||
|
EXCLUDE_SYMLINKS = YES
|
||||||
|
EXCLUDE_PATTERNS =
|
||||||
|
EXCLUDE_SYMBOLS =
|
||||||
|
EXAMPLE_PATH =
|
||||||
|
EXAMPLE_PATTERNS =
|
||||||
|
EXAMPLE_RECURSIVE = NO
|
||||||
|
IMAGE_PATH =
|
||||||
|
INPUT_FILTER =
|
||||||
|
FILTER_PATTERNS =
|
||||||
|
FILTER_SOURCE_FILES = NO
|
||||||
|
FILTER_SOURCE_PATTERNS =
|
||||||
|
USE_MDFILE_AS_MAINPAGE = README.md
|
||||||
|
IMPLICIT_DIR_DOCS = YES
|
||||||
|
FORTRAN_COMMENT_AFTER = 72
|
||||||
|
SOURCE_BROWSER = NO
|
||||||
|
INLINE_SOURCES = NO
|
||||||
|
STRIP_CODE_COMMENTS = YES
|
||||||
|
REFERENCED_BY_RELATION = NO
|
||||||
|
REFERENCES_RELATION = NO
|
||||||
|
REFERENCES_LINK_SOURCE = YES
|
||||||
|
SOURCE_TOOLTIPS = YES
|
||||||
|
USE_HTAGS = NO
|
||||||
|
VERBATIM_HEADERS = YES
|
||||||
|
ALPHABETICAL_INDEX = YES
|
||||||
|
IGNORE_PREFIX =
|
||||||
|
GENERATE_HTML = YES
|
||||||
|
HTML_OUTPUT = html
|
||||||
|
HTML_FILE_EXTENSION = .html
|
||||||
|
HTML_HEADER =
|
||||||
|
HTML_FOOTER =
|
||||||
|
HTML_STYLESHEET =
|
||||||
|
HTML_EXTRA_STYLESHEET =
|
||||||
|
HTML_EXTRA_FILES =
|
||||||
|
HTML_COLORSTYLE = AUTO_LIGHT
|
||||||
|
HTML_COLORSTYLE_HUE = 220
|
||||||
|
HTML_COLORSTYLE_SAT = 100
|
||||||
|
HTML_COLORSTYLE_GAMMA = 80
|
||||||
|
HTML_DYNAMIC_MENUS = YES
|
||||||
|
HTML_DYNAMIC_SECTIONS = NO
|
||||||
|
HTML_CODE_FOLDING = YES
|
||||||
|
HTML_COPY_CLIPBOARD = YES
|
||||||
|
HTML_PROJECT_COOKIE =
|
||||||
|
HTML_INDEX_NUM_ENTRIES = 100
|
||||||
|
GENERATE_DOCSET = NO
|
||||||
|
DOCSET_FEEDNAME = "Doxygen generated documentation"
|
||||||
|
DOCSET_FEEDURL =
|
||||||
|
DOCSET_BUNDLE_ID = org.doxygen.Project
|
||||||
|
DOCSET_PUBLISHER_ID = org.doxygen.Publisher
|
||||||
|
DOCSET_PUBLISHER_NAME = Publisher
|
||||||
|
GENERATE_HTMLHELP = NO
|
||||||
|
CHM_FILE =
|
||||||
|
HHC_LOCATION =
|
||||||
|
GENERATE_CHI = NO
|
||||||
|
CHM_INDEX_ENCODING =
|
||||||
|
BINARY_TOC = NO
|
||||||
|
TOC_EXPAND = NO
|
||||||
|
SITEMAP_URL =
|
||||||
|
GENERATE_QHP = NO
|
||||||
|
QCH_FILE =
|
||||||
|
QHP_NAMESPACE = org.doxygen.Project
|
||||||
|
QHP_VIRTUAL_FOLDER = doc
|
||||||
|
QHP_CUST_FILTER_NAME =
|
||||||
|
QHP_CUST_FILTER_ATTRS =
|
||||||
|
QHP_SECT_FILTER_ATTRS =
|
||||||
|
QHG_LOCATION =
|
||||||
|
GENERATE_ECLIPSEHELP = NO
|
||||||
|
ECLIPSE_DOC_ID = org.doxygen.Project
|
||||||
|
DISABLE_INDEX = NO
|
||||||
|
GENERATE_TREEVIEW = NO
|
||||||
|
FULL_SIDEBAR = NO
|
||||||
|
ENUM_VALUES_PER_LINE = 4
|
||||||
|
SHOW_ENUM_VALUES = NO
|
||||||
|
TREEVIEW_WIDTH = 250
|
||||||
|
EXT_LINKS_IN_WINDOW = NO
|
||||||
|
OBFUSCATE_EMAILS = YES
|
||||||
|
HTML_FORMULA_FORMAT = png
|
||||||
|
FORMULA_FONTSIZE = 10
|
||||||
|
FORMULA_MACROFILE =
|
||||||
|
USE_MATHJAX = NO
|
||||||
|
MATHJAX_VERSION = MathJax_2
|
||||||
|
MATHJAX_FORMAT = HTML-CSS
|
||||||
|
MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
|
||||||
|
MATHJAX_EXTENSIONS =
|
||||||
|
MATHJAX_CODEFILE =
|
||||||
|
SEARCHENGINE = YES
|
||||||
|
SERVER_BASED_SEARCH = NO
|
||||||
|
EXTERNAL_SEARCH = NO
|
||||||
|
SEARCHENGINE_URL =
|
||||||
|
SEARCHDATA_FILE = searchdata.xml
|
||||||
|
EXTERNAL_SEARCH_ID =
|
||||||
|
EXTRA_SEARCH_MAPPINGS =
|
||||||
|
GENERATE_LATEX = NO
|
||||||
|
LATEX_OUTPUT = latex
|
||||||
|
LATEX_CMD_NAME =
|
||||||
|
MAKEINDEX_CMD_NAME = makeindex
|
||||||
|
LATEX_MAKEINDEX_CMD = makeindex
|
||||||
|
COMPACT_LATEX = NO
|
||||||
|
PAPER_TYPE = a4
|
||||||
|
EXTRA_PACKAGES =
|
||||||
|
LATEX_HEADER =
|
||||||
|
LATEX_FOOTER =
|
||||||
|
LATEX_EXTRA_STYLESHEET =
|
||||||
|
LATEX_EXTRA_FILES =
|
||||||
|
PDF_HYPERLINKS = YES
|
||||||
|
USE_PDFLATEX = YES
|
||||||
|
LATEX_BATCHMODE = NO
|
||||||
|
LATEX_HIDE_INDICES = NO
|
||||||
|
LATEX_BIB_STYLE = plainnat
|
||||||
|
LATEX_EMOJI_DIRECTORY =
|
||||||
|
GENERATE_RTF = NO
|
||||||
|
RTF_OUTPUT = rtf
|
||||||
|
COMPACT_RTF = NO
|
||||||
|
RTF_HYPERLINKS = NO
|
||||||
|
RTF_STYLESHEET_FILE =
|
||||||
|
RTF_EXTENSIONS_FILE =
|
||||||
|
RTF_EXTRA_FILES =
|
||||||
|
GENERATE_MAN = NO
|
||||||
|
MAN_OUTPUT = man
|
||||||
|
MAN_EXTENSION = .3
|
||||||
|
MAN_SUBDIR =
|
||||||
|
MAN_LINKS = NO
|
||||||
|
GENERATE_XML = NO
|
||||||
|
XML_OUTPUT = xml
|
||||||
|
XML_PROGRAMLISTING = YES
|
||||||
|
XML_NS_MEMB_FILE_SCOPE = NO
|
||||||
|
GENERATE_DOCBOOK = NO
|
||||||
|
DOCBOOK_OUTPUT = docbook
|
||||||
|
GENERATE_AUTOGEN_DEF = NO
|
||||||
|
GENERATE_SQLITE3 = NO
|
||||||
|
SQLITE3_OUTPUT = sqlite3
|
||||||
|
SQLITE3_RECREATE_DB = YES
|
||||||
|
GENERATE_PERLMOD = NO
|
||||||
|
PERLMOD_LATEX = NO
|
||||||
|
PERLMOD_PRETTY = YES
|
||||||
|
PERLMOD_MAKEVAR_PREFIX =
|
||||||
|
ENABLE_PREPROCESSING = YES
|
||||||
|
MACRO_EXPANSION = YES
|
||||||
|
EXPAND_ONLY_PREDEF = NO
|
||||||
|
SEARCH_INCLUDES = YES
|
||||||
|
INCLUDE_PATH =
|
||||||
|
INCLUDE_FILE_PATTERNS =
|
||||||
|
PREDEFINED = CoreExport=/**/ \
|
||||||
|
ATTR_NOT_NULL(...)=/**/
|
||||||
|
EXPAND_AS_DEFINED =
|
||||||
|
SKIP_FUNCTION_MACROS = YES
|
||||||
|
TAGFILES =
|
||||||
|
GENERATE_TAGFILE =
|
||||||
|
ALLEXTERNALS = NO
|
||||||
|
EXTERNAL_GROUPS = YES
|
||||||
|
EXTERNAL_PAGES = YES
|
||||||
|
HIDE_UNDOC_RELATIONS = YES
|
||||||
|
HAVE_DOT = NO
|
||||||
|
DOT_NUM_THREADS = 0
|
||||||
|
DOT_COMMON_ATTR = "fontname=Helvetica,fontsize=10"
|
||||||
|
DOT_EDGE_ATTR = "labelfontname=Helvetica,labelfontsize=10"
|
||||||
|
DOT_NODE_ATTR = "shape=box,height=0.2,width=0.4"
|
||||||
|
DOT_FONTPATH =
|
||||||
|
CLASS_GRAPH = YES
|
||||||
|
COLLABORATION_GRAPH = YES
|
||||||
|
GROUP_GRAPHS = YES
|
||||||
|
UML_LOOK = NO
|
||||||
|
UML_LIMIT_NUM_FIELDS = 10
|
||||||
|
DOT_UML_DETAILS = NO
|
||||||
|
DOT_WRAP_THRESHOLD = 17
|
||||||
|
TEMPLATE_RELATIONS = NO
|
||||||
|
INCLUDE_GRAPH = YES
|
||||||
|
INCLUDED_BY_GRAPH = YES
|
||||||
|
CALL_GRAPH = NO
|
||||||
|
CALLER_GRAPH = NO
|
||||||
|
GRAPHICAL_HIERARCHY = YES
|
||||||
|
DIRECTORY_GRAPH = YES
|
||||||
|
DIR_GRAPH_MAX_DEPTH = 1
|
||||||
|
DOT_IMAGE_FORMAT = png
|
||||||
|
INTERACTIVE_SVG = NO
|
||||||
|
DOT_PATH =
|
||||||
|
DOTFILE_DIRS =
|
||||||
|
DIA_PATH =
|
||||||
|
DIAFILE_DIRS =
|
||||||
|
PLANTUML_JAR_PATH =
|
||||||
|
PLANTUML_CFG_FILE =
|
||||||
|
PLANTUML_INCLUDE_PATH =
|
||||||
|
PLANTUMLFILE_DIRS =
|
||||||
|
DOT_GRAPH_MAX_NODES = 50
|
||||||
|
MAX_DOT_GRAPH_DEPTH = 0
|
||||||
|
DOT_MULTI_TARGETS = NO
|
||||||
|
GENERATE_LEGEND = YES
|
||||||
|
DOT_CLEANUP = YES
|
||||||
|
MSCGEN_TOOL =
|
||||||
|
MSCFILE_DIRS =
|
||||||
@@ -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
|
||||||
|
|||||||
+5
-9
@@ -19,7 +19,7 @@ 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 requires cmake to build. You can check if CMake is already
|
Anope requires cmake to build. You can check if CMake is already
|
||||||
installed on your system using the command:
|
installed on your system using the command:
|
||||||
@@ -32,7 +32,7 @@ Note: You should also read the README and FAQ files!
|
|||||||
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/
|
||||||
|
|
||||||
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.
|
||||||
@@ -59,8 +59,8 @@ 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.teranova.net. 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.
|
||||||
|
|
||||||
@@ -80,7 +80,7 @@ Note: You should also read the README and FAQ files!
|
|||||||
|
|
||||||
The configuration varies depending on the IRCd, but you will probably need
|
The configuration varies depending on the IRCd, but you will probably need
|
||||||
a link block (also called connect block, or C line), a U line (also called
|
a link block (also called connect block, or C line), a U line (also called
|
||||||
a shared block), and be sure that the IRCd is listneing on the given port
|
a shared block), and be sure that the IRCd is listening on the given port
|
||||||
in the link block.
|
in the link block.
|
||||||
|
|
||||||
Example link configurations can be found in example.conf for some of the
|
Example link configurations can be found in example.conf for some of the
|
||||||
@@ -88,10 +88,6 @@ Note: You should also read the README and FAQ files!
|
|||||||
|
|
||||||
Don't forget to /rehash your IRCd to apply changes.
|
Don't forget to /rehash your IRCd to apply changes.
|
||||||
|
|
||||||
You may also try our interactive link maker, which is located at:
|
|
||||||
|
|
||||||
http://anope.org/ilm.php
|
|
||||||
|
|
||||||
4) Starting Anope
|
4) Starting Anope
|
||||||
|
|
||||||
Go into the directory where binaries were installed (by default, this is
|
Go into the directory where binaries were installed (by default, this is
|
||||||
|
|||||||
+3
-8
@@ -19,7 +19,7 @@ Note : Vous devrez également lire les fichiers README et FAQ !
|
|||||||
La première chose que vous devez faire est d'obtenir le package Anope
|
La première chose que vous devez faire est d'obtenir le package Anope
|
||||||
(si ce 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 nécessite cmake pour être compilé. Vous pouvez vérifier si CMake
|
Anope nécessite cmake pour être compilé. Vous pouvez vérifier si CMake
|
||||||
est déjà installé sur votre système avec la commande :
|
est déjà installé sur votre système avec la commande :
|
||||||
@@ -32,7 +32,7 @@ Note : Vous devrez également lire les fichiers README et FAQ !
|
|||||||
pourrez pas utiliser CMake à moins de l'installer vous-même dans votre
|
pourrez pas utiliser CMake à moins de l'installer 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/
|
||||||
|
|
||||||
Ensuite, décompressez le package dans votre répertoire home, et allez
|
Ensuite, décompressez le package dans votre répertoire home, et allez
|
||||||
dans le répértoire qui vient d'être créé.
|
dans le répértoire qui vient d'être créé.
|
||||||
@@ -64,7 +64,7 @@ Note : Vous devrez également lire les fichiers README et FAQ !
|
|||||||
recommandée, et Anope ne fonctionnera probablement pas !
|
recommandée, et Anope ne fonctionnera probablement pas !
|
||||||
|
|
||||||
Si vous avez besoin d'aide, vous pouvez aller sur le site
|
Si vous avez besoin d'aide, vous pouvez aller sur le site
|
||||||
http://forum.anope.org/ ou le canal #anope sur irc.anope.org.
|
https://forum.anope.org/ ou le canal #anope sur irc.teranova.net.
|
||||||
Fournissez *l'essemble* des erreurs qui apparaîssent, en plus de
|
Fournissez *l'essemble* des erreurs qui apparaîssent, en plus de
|
||||||
toutes informations utiles, comme les versions de votre OS, du
|
toutes informations utiles, comme les versions de votre OS, du
|
||||||
compilateur utilisé et de la librairie C++. Lisez le fichier README
|
compilateur utilisé et de la librairie C++. Lisez le fichier README
|
||||||
@@ -96,11 +96,6 @@ Note : Vous devrez également lire les fichiers README et FAQ !
|
|||||||
|
|
||||||
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 bloc link interactif
|
|
||||||
situé ici :
|
|
||||||
|
|
||||||
http://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
|
Allez dans le répertoire où les fichiers binaires ont été installés
|
||||||
|
|||||||
+21
-14
@@ -1,42 +1,38 @@
|
|||||||
Anope Mutli Language Support
|
Anope Multi Language Support
|
||||||
----------------------------
|
----------------------------
|
||||||
|
|
||||||
1) Building Anope with gettext support
|
1) Building Anope with gettext support
|
||||||
2) Adding a new language
|
2) Adding a new language
|
||||||
3) Using languages with modules
|
3) Using languages with modules
|
||||||
|
4) Updating a language file
|
||||||
|
|
||||||
1) Building Anope with gettext support
|
1) Building Anope with gettext support
|
||||||
|
|
||||||
To build Anope with gettext support, gettext and its development libraries must be installed on the system.
|
To build Anope with gettext support, gettext and its development libraries must be installed on the system.
|
||||||
|
|
||||||
On Debian install the locales-all package.
|
On Debian-based systems install the locales-all package.
|
||||||
|
|
||||||
On Ubuntu run locale-gen for each language you want to enable.
|
On RHEL-based systems run `yum list glibc-langpack-*` and install the languages you want to enable.
|
||||||
For example:
|
|
||||||
locale-gen es_ES.UTF-8
|
|
||||||
|
|
||||||
Then execute:
|
If you have already built Anope you will need to delete the build directory and rebuild from scratch.
|
||||||
dpkg-reconfigure locales
|
|
||||||
|
|
||||||
Building Anope on Windows with gettext support is explained in docs/WIN32.txt
|
Building Anope on Windows with gettext support is explained in docs/WIN32.txt
|
||||||
|
|
||||||
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 file a pull request on GitHub.
|
||||||
(don't forget to mention clearly your (nick)name, your e-mail and the language name). You'll of course get full credit for it.
|
You'll of course get full credit for it.
|
||||||
|
|
||||||
NOTE: There is no guarantee we will use your work so please do not be offended if we say no thanks.
|
3) Using languages with modules
|
||||||
|
|
||||||
3) Using langages with modules
|
|
||||||
|
|
||||||
Module authors can easily add the ability to have their modules translated by adding _() around the strings they
|
Module authors can easily add the ability to have their modules translated by adding _() around the strings they
|
||||||
want translated (messages to the user, etc).
|
want translated (messages to the user, etc).
|
||||||
@@ -51,3 +47,14 @@ Anope Mutli Language Support
|
|||||||
|
|
||||||
All .po and .pot files should be placed in modules/third/language. Additionally an update script is provided there
|
All .po and .pot files should be placed in modules/third/language. Additionally an update script is provided there
|
||||||
that will create .pot files and merge any changes to it with existing .po files.
|
that will create .pot files and merge any changes to it with existing .po files.
|
||||||
|
|
||||||
|
4) Updating a language file
|
||||||
|
|
||||||
|
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).
|
||||||
|
|
||||||
|
Before editing the relevant file in languages/, run `update.sh` in the languages/ folder, i.e. `cd` to it and run
|
||||||
|
./update.sh
|
||||||
|
This will update the language file to contain all strings that need a translation.
|
||||||
|
|
||||||
|
Then commit only the changed .po files in git.
|
||||||
|
|||||||
+4
-4
@@ -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.
|
||||||
@@ -111,18 +111,18 @@ Anope Modules
|
|||||||
Use modules at your own risk, and make sure you get them from a
|
Use modules at your own risk, and make sure you get them from a
|
||||||
reputable source. You might get module support by contacting the module
|
reputable source. You might get module support by contacting the module
|
||||||
author, posting on our online forum, or maybe on our #anope channel
|
author, posting on our online forum, or maybe on our #anope channel
|
||||||
at /server irc.anope.org.
|
at /server irc.teranova.net.
|
||||||
|
|
||||||
7) Information for Developers
|
7) Information for Developers
|
||||||
|
|
||||||
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++
|
||||||
|
|
||||||
|
|||||||
+12
-14
@@ -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-2024 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
|
||||||
|
|
||||||
@@ -94,7 +92,7 @@ Table of Contents
|
|||||||
* Lee Holmes <lethality@anope.org>
|
* Lee Holmes <lethality@anope.org>
|
||||||
* Lucas Nussbaum <lucas@lucas-nussbaum.net>
|
* Lucas Nussbaum <lucas@lucas-nussbaum.net>
|
||||||
* Mark Summers <mark@goopler.net>
|
* Mark Summers <mark@goopler.net>
|
||||||
* Matthew Beeching <jobe@invictachat.net>
|
* Matthew Beeching <jobe@mdbnet.co.uk>
|
||||||
* Naram Qashat <cyberbotx@anope.org>
|
* Naram Qashat <cyberbotx@anope.org>
|
||||||
* Phil Lavin <phil@anope.org>
|
* Phil Lavin <phil@anope.org>
|
||||||
* Pieter Bootsma <geniusdex@anope.org>
|
* Pieter Bootsma <geniusdex@anope.org>
|
||||||
@@ -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,8 +168,8 @@ 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
|
* ircd-hybrid 8.2.23 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
|
||||||
@@ -242,19 +240,19 @@ 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
|
||||||
your question, feel free to post on the website forums or join our irc
|
your question, feel free to post on the website forums or join our irc
|
||||||
channel (irc.anope.org #anope). Once you join our Support channel be as
|
channel (irc.teranova.net #anope). Once you join our Support channel be as
|
||||||
precise as possible when asking a question, because we have no extraordinary
|
precise as possible when asking a question, because we have no extraordinary
|
||||||
powers and can't guess things if they aren't provided.
|
powers and can't guess things if they aren't provided.
|
||||||
|
|
||||||
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://github.com/anope/anope/issues) and - again - be as precise as possible.
|
||||||
whether the bug happens always or under what circumstances, and anything
|
Also say 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. :)
|
||||||
|
|||||||
+7
-7
@@ -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
|
||||||
@@ -32,7 +32,7 @@ Table of Contents
|
|||||||
|
|
||||||
hash - The keys in hash are the actual objects, stored as hashes. For
|
hash - The keys in hash are the actual objects, stored as hashes. For
|
||||||
example, if I had just looked up all BotInfo ids and wanted to iterate
|
example, if I had just looked up all BotInfo ids and wanted to iterate
|
||||||
over all of them, I woulld start by:
|
over all of them, I would start by:
|
||||||
|
|
||||||
redis 127.0.0.1:6379> HGETALL hash:BotInfo:1
|
redis 127.0.0.1:6379> HGETALL hash:BotInfo:1
|
||||||
|
|
||||||
@@ -70,10 +70,10 @@ 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 database once started.
|
||||||
|
|
||||||
You can use this to modify objects in Redis and have them immediately reflected
|
You can use this to modify objects in Redis and have them immediately reflected
|
||||||
back into Anope. Additionally you can use this feature to run multiple Anope
|
back into Anope. Additionally you can use this feature to run multiple Anope
|
||||||
@@ -93,7 +93,7 @@ Table of Contents
|
|||||||
|
|
||||||
The key space ids and value are managed entirely by Anope, you do
|
The key space ids and value are managed entirely by Anope, you do
|
||||||
not (and should not) modify them. Once you modify the object (hash), Anope will
|
not (and should not) modify them. Once you modify the object (hash), Anope will
|
||||||
update them for you to correctly refelect any changes made to the object.
|
update them for you to correctly reflect any changes made to the object.
|
||||||
|
|
||||||
Finally, always use atomic operations. If you are inserting a new object with
|
Finally, always use atomic operations. If you are inserting a new object with
|
||||||
multiple commands, or inserting multiple objects at once, specifically if the
|
multiple commands, or inserting multiple objects at once, specifically if the
|
||||||
@@ -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>
|
||||||
|
|
||||||
|
|||||||
+2
-3
@@ -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.)
|
||||||
|
|
||||||
@@ -159,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>
|
||||||
|
|
||||||
|
|||||||
+5
-2
@@ -7,7 +7,7 @@ checkAuthentication - Takes two parameters, an account name and a password. Chec
|
|||||||
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-2024 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,16 +1,16 @@
|
|||||||
# 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)
|
set(version_BINARY "$<TARGET_FILE:version-bin>")
|
||||||
# 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.h ${CMAKE_CURRENT_BINARY_DIR}/build.h
|
||||||
COMMAND ${version_BINARY} ${Anope_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/version.h ${CMAKE_CURRENT_BINARY_DIR}/build.h
|
COMMAND version-bin ${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)
|
||||||
@@ -61,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 ${CMAKE_CURRENT_BINARY_DIR}/version.h ${CMAKE_CURRENT_BINARY_DIR}/build.h ${PCH_SOURCES_GCH})
|
||||||
|
|||||||
+13
-16
@@ -1,13 +1,12 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2026 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
|
||||||
@@ -79,14 +78,9 @@ class CoreExport ChanAccess : public Serializable
|
|||||||
Serialize::Reference<NickCore> nc;
|
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;
|
||||||
@@ -104,12 +98,14 @@ class CoreExport ChanAccess : public Serializable
|
|||||||
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
|
||||||
@@ -137,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 */
|
||||||
@@ -171,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
|
||||||
|
|
||||||
|
|||||||
+21
-13
@@ -1,13 +1,12 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2026 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
|
||||||
@@ -21,9 +20,11 @@
|
|||||||
|
|
||||||
typedef Anope::hash_map<NickAlias *> nickalias_map;
|
typedef Anope::hash_map<NickAlias *> nickalias_map;
|
||||||
typedef Anope::hash_map<NickCore *> nickcore_map;
|
typedef Anope::hash_map<NickCore *> nickcore_map;
|
||||||
|
typedef TR1NS::unordered_map<uint64_t, NickCore *> nickcoreid_map;
|
||||||
|
|
||||||
extern CoreExport Serialize::Checker<nickalias_map> NickAliasList;
|
extern CoreExport Serialize::Checker<nickalias_map> NickAliasList;
|
||||||
extern CoreExport Serialize::Checker<nickcore_map> NickCoreList;
|
extern CoreExport Serialize::Checker<nickcore_map> NickCoreList;
|
||||||
|
extern CoreExport nickcoreid_map NickCoreIdList;
|
||||||
|
|
||||||
/* A registered nickname.
|
/* A registered nickname.
|
||||||
* It matters that Base is here before Extensible (it is inherited by Serializable)
|
* It matters that Base is here before Extensible (it is inherited by Serializable)
|
||||||
@@ -46,7 +47,7 @@ class CoreExport NickAlias : public Serializable, public Extensible
|
|||||||
/* Account this nick is tied to. Multiple nicks can be tied to a single account. */
|
/* Account this nick is tied to. Multiple nicks can be tied to a single account. */
|
||||||
Serialize::Reference<NickCore> nc;
|
Serialize::Reference<NickCore> nc;
|
||||||
|
|
||||||
/** Constructor
|
/** Constructor
|
||||||
* @param nickname The nick
|
* @param nickname The nick
|
||||||
* @param nickcore The nickcore for this nick
|
* @param nickcore The nickcore for this nick
|
||||||
*/
|
*/
|
||||||
@@ -56,11 +57,11 @@ class CoreExport NickAlias : public Serializable, public Extensible
|
|||||||
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 &);
|
||||||
|
|
||||||
/** Set a vhost for the user
|
/** Set a vhost for the user
|
||||||
* @param ident The ident
|
* @param ident The ident
|
||||||
* @param host The host
|
* @param host The host
|
||||||
* @param creator Who created the vhost
|
* @param creator Who created the vhost
|
||||||
* @param time When the vhost was craated
|
* @param time When the vhost was created
|
||||||
*/
|
*/
|
||||||
void SetVhost(const Anope::string &ident, const Anope::string &host, const Anope::string &creator, time_t created = Anope::CurTime);
|
void SetVhost(const Anope::string &ident, const Anope::string &host, const Anope::string &creator, time_t created = Anope::CurTime);
|
||||||
|
|
||||||
@@ -108,8 +109,10 @@ class CoreExport NickCore : public Serializable, public Extensible
|
|||||||
{
|
{
|
||||||
/* Channels which reference this core in some way (this is on their access list, akick list, is founder, successor, etc) */
|
/* Channels which reference this core in some way (this is on their access list, akick list, is founder, successor, etc) */
|
||||||
Serialize::Checker<std::map<ChannelInfo *, int> > chanaccess;
|
Serialize::Checker<std::map<ChannelInfo *, int> > chanaccess;
|
||||||
|
/* Unique identifier for the account. */
|
||||||
|
uint64_t id;
|
||||||
public:
|
public:
|
||||||
/* Name of the account. Find(display)->nc == this. */
|
/* Name of the account. Find(display)->nc == this. */
|
||||||
Anope::string display;
|
Anope::string display;
|
||||||
/* User password in form of hashm:data */
|
/* User password in form of hashm:data */
|
||||||
Anope::string pass;
|
Anope::string pass;
|
||||||
@@ -127,7 +130,7 @@ class CoreExport NickCore : public Serializable, public Extensible
|
|||||||
*/
|
*/
|
||||||
Serialize::Checker<std::vector<NickAlias *> > aliases;
|
Serialize::Checker<std::vector<NickAlias *> > aliases;
|
||||||
|
|
||||||
/* Set if this user is a services operattor. o->ot must exist. */
|
/* Set if this user is a services operator. o->ot must exist. */
|
||||||
Oper *o;
|
Oper *o;
|
||||||
|
|
||||||
/* Unsaved data */
|
/* Unsaved data */
|
||||||
@@ -141,8 +144,9 @@ class CoreExport NickCore : public Serializable, public Extensible
|
|||||||
|
|
||||||
/** Constructor
|
/** Constructor
|
||||||
* @param display The display nick
|
* @param display The display nick
|
||||||
|
* @param id The account id
|
||||||
*/
|
*/
|
||||||
NickCore(const Anope::string &nickdisplay);
|
NickCore(const Anope::string &nickdisplay, uint64_t nickid = 0);
|
||||||
~NickCore();
|
~NickCore();
|
||||||
|
|
||||||
void Serialize(Serialize::Data &data) const anope_override;
|
void Serialize(Serialize::Data &data) const anope_override;
|
||||||
@@ -179,6 +183,9 @@ class CoreExport NickCore : public Serializable, public Extensible
|
|||||||
*/
|
*/
|
||||||
unsigned GetAccessCount() const;
|
unsigned GetAccessCount() const;
|
||||||
|
|
||||||
|
/** Retrieves the account id for this user */
|
||||||
|
uint64_t GetId();
|
||||||
|
|
||||||
/** Find an entry in the nick's access list
|
/** Find an entry in the nick's access list
|
||||||
*
|
*
|
||||||
* @param entry The nick!ident@host entry to search for
|
* @param entry The nick!ident@host entry to search for
|
||||||
@@ -227,7 +234,7 @@ class CoreExport NickCore : public Serializable, public Extensible
|
|||||||
class CoreExport IdentifyRequest
|
class CoreExport IdentifyRequest
|
||||||
{
|
{
|
||||||
/* Owner of this request, used to cleanup requests if a module is unloaded
|
/* Owner of this request, used to cleanup requests if a module is unloaded
|
||||||
* while a reqyest us pending */
|
* while a request us pending */
|
||||||
Module *owner;
|
Module *owner;
|
||||||
Anope::string account;
|
Anope::string account;
|
||||||
Anope::string password;
|
Anope::string password;
|
||||||
@@ -243,10 +250,11 @@ class CoreExport IdentifyRequest
|
|||||||
virtual ~IdentifyRequest();
|
virtual ~IdentifyRequest();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/* One of these is called when the request goes through */
|
/* One of these is called when the request goes through */
|
||||||
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; }
|
||||||
|
|
||||||
@@ -254,17 +262,17 @@ class CoreExport IdentifyRequest
|
|||||||
* for the request to complete. Multiple modules may hold a request at any time,
|
* for the request to complete. Multiple modules may hold a request at any time,
|
||||||
* but the request is not complete until every module has released it. If you do not
|
* but the request is not complete until every module has released it. If you do not
|
||||||
* require holding this (eg, your password check is done in this thread and immediately)
|
* require holding this (eg, your password check is done in this thread and immediately)
|
||||||
* then you don't need to hold the request before Successing it.
|
* then you don't need to hold the request before calling `Success()`.
|
||||||
* @param m The module holding this request
|
* @param m The module holding this request
|
||||||
*/
|
*/
|
||||||
void Hold(Module *m);
|
void Hold(Module *m);
|
||||||
|
|
||||||
/** Releases a held request
|
/** Releases a held request
|
||||||
* @param m The module releaseing the hold
|
* @param m The module releasing the hold
|
||||||
*/
|
*/
|
||||||
void Release(Module *m);
|
void Release(Module *m);
|
||||||
|
|
||||||
/** Called by modules when this IdentifyRequest has successeded successfully.
|
/** Called by modules when this IdentifyRequest has succeeded.
|
||||||
* If this request is behind held it must still be Released after calling this.
|
* If this request is behind held it must still be Released after calling this.
|
||||||
* @param m The module confirming authentication
|
* @param m The module confirming authentication
|
||||||
*/
|
*/
|
||||||
|
|||||||
+35
-17
@@ -1,13 +1,12 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2026 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
|
||||||
@@ -55,6 +54,9 @@ namespace Anope
|
|||||||
string(const ci::string &_str) : _string(_str.c_str()) { }
|
string(const ci::string &_str) : _string(_str.c_str()) { }
|
||||||
string(const string &_str, size_type pos, size_type n = npos) : _string(_str._string, pos, n) { }
|
string(const string &_str, size_type pos, size_type n = npos) : _string(_str._string, pos, n) { }
|
||||||
template <class InputIterator> string(InputIterator first, InputIterator last) : _string(first, last) { }
|
template <class InputIterator> string(InputIterator first, InputIterator last) : _string(first, last) { }
|
||||||
|
#if __cplusplus >= 201103L
|
||||||
|
string(const string &) = default;
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Assignment operators, so any type of string can be assigned to this class.
|
* Assignment operators, so any type of string can be assigned to this class.
|
||||||
@@ -337,7 +339,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.
|
||||||
*/
|
*/
|
||||||
@@ -361,7 +365,7 @@ namespace Anope
|
|||||||
*/
|
*/
|
||||||
extern CoreExport int Debug;
|
extern CoreExport int Debug;
|
||||||
|
|
||||||
/** Other comand line options.
|
/** Other command line options.
|
||||||
*/
|
*/
|
||||||
extern CoreExport bool ReadOnly, NoFork, NoThird, NoExpire, ProtocolDebug;
|
extern CoreExport bool ReadOnly, NoFork, NoThird, NoExpire, ProtocolDebug;
|
||||||
|
|
||||||
@@ -402,7 +406,7 @@ namespace Anope
|
|||||||
|
|
||||||
/** Used to "fork" the process and go into the background during initial startup
|
/** Used to "fork" the process and go into the background during initial startup
|
||||||
* while we are AtTerm(). The actual fork is not done here, but earlier, and this
|
* while we are AtTerm(). The actual fork is not done here, but earlier, and this
|
||||||
* simply notifys the parent via kill() to exit().
|
* simply notifies the parent via kill() to exit().
|
||||||
*/
|
*/
|
||||||
extern void Fork();
|
extern void Fork();
|
||||||
|
|
||||||
@@ -412,7 +416,7 @@ namespace Anope
|
|||||||
|
|
||||||
/** One of the first functions called, does general initialization such as reading
|
/** One of the first functions called, does general initialization such as reading
|
||||||
* command line args, loading the configuration, doing the initial fork() if necessary,
|
* command line args, loading the configuration, doing the initial fork() if necessary,
|
||||||
* initializating language support, loading modules, and loading databases.
|
* initializing language support, loading modules, and loading databases.
|
||||||
* @throws CoreException if something bad went wrong
|
* @throws CoreException if something bad went wrong
|
||||||
*/
|
*/
|
||||||
extern void Init(int ac, char **av);
|
extern void Init(int ac, char **av);
|
||||||
@@ -469,6 +473,13 @@ namespace Anope
|
|||||||
*/
|
*/
|
||||||
extern CoreExport bool Decrypt(const Anope::string &src, Anope::string &dest);
|
extern CoreExport bool Decrypt(const Anope::string &src, Anope::string &dest);
|
||||||
|
|
||||||
|
/** Hashes a buffer with SipHash-2-4
|
||||||
|
* @param src The start of the buffer to hash
|
||||||
|
* @param src_sz The total number of bytes in the buffer
|
||||||
|
* @param key A 16 byte key to hash the buffer with.
|
||||||
|
*/
|
||||||
|
extern CoreExport uint64_t SipHash24(const void *src, unsigned long src_sz, const char key[16]);
|
||||||
|
|
||||||
/** Returns a sequence of data formatted as the format argument specifies.
|
/** Returns a sequence of data formatted as the format argument specifies.
|
||||||
** After the format parameter, the function expects at least as many
|
** After the format parameter, the function expects at least as many
|
||||||
** additional arguments as specified in format.
|
** additional arguments as specified in format.
|
||||||
@@ -537,13 +548,20 @@ namespace Anope
|
|||||||
*/
|
*/
|
||||||
extern Anope::string Resolve(const Anope::string &host, int type);
|
extern Anope::string Resolve(const Anope::string &host, int type);
|
||||||
|
|
||||||
|
/** Does a blocking dns query and returns all IPs.
|
||||||
|
* @param host host to look up
|
||||||
|
* @param type inet addr type
|
||||||
|
* @return A list of all IPs that the host resolves to
|
||||||
|
*/
|
||||||
|
extern std::vector<Anope::string> ResolveMultiple(const Anope::string &host, int type);
|
||||||
|
|
||||||
/** Generate a string of random letters and numbers
|
/** Generate a string of random letters and numbers
|
||||||
* @param len The length of the string returned
|
* @param len The length of the string returned
|
||||||
*/
|
*/
|
||||||
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.
|
||||||
@@ -554,7 +572,7 @@ class CoreExport sepstream
|
|||||||
/** Original string.
|
/** Original string.
|
||||||
*/
|
*/
|
||||||
Anope::string tokens;
|
Anope::string tokens;
|
||||||
/** Seperator value
|
/** Separator value
|
||||||
*/
|
*/
|
||||||
char sep;
|
char sep;
|
||||||
/** Current string position
|
/** Current string position
|
||||||
@@ -566,7 +584,7 @@ class CoreExport sepstream
|
|||||||
public:
|
public:
|
||||||
/** Create a sepstream and fill it with the provided data
|
/** Create a sepstream and fill it with the provided data
|
||||||
*/
|
*/
|
||||||
sepstream(const Anope::string &source, char seperator, bool allowempty = false);
|
sepstream(const Anope::string &source, char separator, bool allowempty = false);
|
||||||
|
|
||||||
/** Fetch the next token from the stream
|
/** Fetch the next token from the stream
|
||||||
* @param token The next token from the stream is placed here
|
* @param token The next token from the stream is placed here
|
||||||
@@ -576,7 +594,7 @@ class CoreExport sepstream
|
|||||||
|
|
||||||
/** Gets token number 'num' from the stream
|
/** Gets token number 'num' from the stream
|
||||||
* @param token The token is placed here
|
* @param token The token is placed here
|
||||||
* @param num The token number to featch
|
* @param num The token number to fetch
|
||||||
* @return True if the token was able to be fetched
|
* @return True if the token was able to be fetched
|
||||||
*/
|
*/
|
||||||
bool GetToken(Anope::string &token, int num);
|
bool GetToken(Anope::string &token, int num);
|
||||||
@@ -594,7 +612,7 @@ class CoreExport sepstream
|
|||||||
|
|
||||||
/** Gets token number 'num' from the stream and all remaining tokens.
|
/** Gets token number 'num' from the stream and all remaining tokens.
|
||||||
* @param token The token is placed here
|
* @param token The token is placed here
|
||||||
* @param num The token number to featch
|
* @param num The token number to fetch
|
||||||
* @return True if the token was able to be fetched
|
* @return True if the token was able to be fetched
|
||||||
*/
|
*/
|
||||||
bool GetTokenRemainder(Anope::string &token, int num);
|
bool GetTokenRemainder(Anope::string &token, int num);
|
||||||
@@ -615,22 +633,22 @@ 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
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/** Initialize with comma seperator
|
/** Initialize with comma separator
|
||||||
*/
|
*/
|
||||||
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
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/** Initialize with space seperator
|
/** Initialize with space separator
|
||||||
*/
|
*/
|
||||||
spacesepstream(const Anope::string &source) : sepstream(source, ' ') { }
|
spacesepstream(const Anope::string &source) : sepstream(source, ' ') { }
|
||||||
};
|
};
|
||||||
@@ -651,7 +669,7 @@ class CoreException : public std::exception
|
|||||||
*/
|
*/
|
||||||
Anope::string source;
|
Anope::string source;
|
||||||
public:
|
public:
|
||||||
/** Default constructor, just uses the error mesage 'Core threw an exception'.
|
/** Default constructor, just uses the error message 'Core threw an exception'.
|
||||||
*/
|
*/
|
||||||
CoreException() : err("Core threw an exception"), source("The core") { }
|
CoreException() : err("Core threw an exception"), source("The core") { }
|
||||||
/** This constructor can be used to specify an error message before throwing.
|
/** This constructor can be used to specify an error message before throwing.
|
||||||
@@ -683,7 +701,7 @@ class CoreException : public std::exception
|
|||||||
class ModuleException : public CoreException
|
class ModuleException : public CoreException
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/** Default constructor, just uses the error mesage 'Module threw an exception'.
|
/** Default constructor, just uses the error message 'Module threw an exception'.
|
||||||
*/
|
*/
|
||||||
ModuleException() : CoreException("Module threw an exception", "A Module") { }
|
ModuleException() : CoreException("Module threw an exception", "A Module") { }
|
||||||
|
|
||||||
@@ -758,7 +776,7 @@ template<typename T> inline T convertTo(const Anope::string &s, bool failIfLefto
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Casts to be used instead of dynamic_cast, this uses dynamic_cast
|
/** Casts to be used instead of dynamic_cast, this uses dynamic_cast
|
||||||
* for debug builds and static_cast on releass builds
|
* for debug builds and static_cast on release builds
|
||||||
* to speed up the program because dynamic_cast relies on RTTI.
|
* to speed up the program because dynamic_cast relies on RTTI.
|
||||||
*/
|
*/
|
||||||
#ifdef DEBUG_BUILD
|
#ifdef DEBUG_BUILD
|
||||||
|
|||||||
+3
-5
@@ -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-2026 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
|
||||||
@@ -51,7 +50,7 @@ class Reference : public ReferenceBase
|
|||||||
protected:
|
protected:
|
||||||
T *ref;
|
T *ref;
|
||||||
public:
|
public:
|
||||||
Reference() : ref(NULL)
|
Reference() : ref(NULL)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -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-2026 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
|
||||||
|
|||||||
+17
-7
@@ -1,10 +1,9 @@
|
|||||||
/* Channel support
|
/* Channel support
|
||||||
*
|
*
|
||||||
* (C) 2008-2014 Anope Team
|
* (C) 2008-2026 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:
|
||||||
@@ -40,7 +41,7 @@ class CoreExport Channel : public Base, public Extensible
|
|||||||
ModeList modes;
|
ModeList modes;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/* Channel name */
|
/* Channel name */
|
||||||
Anope::string name;
|
Anope::string name;
|
||||||
/* Set if this channel is registered. ci->c == this. Contains information relevant to the registered channel */
|
/* Set if this channel is registered. ci->c == this. Contains information relevant to the registered channel */
|
||||||
Serialize::Reference<ChannelInfo> ci;
|
Serialize::Reference<ChannelInfo> ci;
|
||||||
@@ -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.
|
||||||
*/
|
*/
|
||||||
@@ -138,7 +139,7 @@ class CoreExport Channel : public Base, public Extensible
|
|||||||
/** See if a channel has a mode
|
/** See if a channel has a mode
|
||||||
* @param name The mode name
|
* @param name The mode name
|
||||||
* @return The number of modes set
|
* @return The number of modes set
|
||||||
* @param param The optional mode param
|
* @param param The optional mode param
|
||||||
*/
|
*/
|
||||||
size_t HasMode(const Anope::string &name, const Anope::string ¶m = "");
|
size_t HasMode(const Anope::string &name, const Anope::string ¶m = "");
|
||||||
|
|
||||||
@@ -231,7 +232,7 @@ class CoreExport Channel : public Base, public Extensible
|
|||||||
* @param bi The sender, can be NULL for the service bot for this channel
|
* @param bi The sender, can be NULL for the service bot for this channel
|
||||||
* @param u The user being kicked
|
* @param u The user being kicked
|
||||||
* @param reason The reason for the kick
|
* @param reason The reason for the kick
|
||||||
* @return true if the kick was scucessful, false if a module blocked the kick
|
* @return true if the kick was successful, false if a module blocked the kick
|
||||||
*/
|
*/
|
||||||
bool Kick(BotInfo *bi, User *u, const char *reason = NULL, ...);
|
bool Kick(BotInfo *bi, User *u, const char *reason = NULL, ...);
|
||||||
|
|
||||||
@@ -248,7 +249,7 @@ class CoreExport Channel : public Base, public Extensible
|
|||||||
|
|
||||||
/** 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
|
||||||
* @param plus If set to false (with complete), mode parameters will not be given for modes requring no parameters to be unset
|
* @param plus If set to false (with complete), mode parameters will not be given for modes requiring no parameters to be unset
|
||||||
* @return A mode string
|
* @return A mode string
|
||||||
*/
|
*/
|
||||||
Anope::string GetModes(bool complete, bool plus);
|
Anope::string GetModes(bool complete, bool plus);
|
||||||
@@ -288,6 +289,11 @@ class CoreExport Channel : public Base, public Extensible
|
|||||||
*/
|
*/
|
||||||
bool CheckKick(User *user);
|
bool CheckKick(User *user);
|
||||||
|
|
||||||
|
/** Find which bot should send mode/topic/etc changes for this channel
|
||||||
|
* @return The bot
|
||||||
|
*/
|
||||||
|
BotInfo *WhoSends() const;
|
||||||
|
|
||||||
/** Finds a channel
|
/** Finds a channel
|
||||||
* @param name The channel to find
|
* @param name The channel to find
|
||||||
* @return The channel, if found
|
* @return The channel, if found
|
||||||
@@ -300,6 +306,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
|
||||||
|
|||||||
+9
-7
@@ -1,6 +1,6 @@
|
|||||||
/* Declarations for command data.
|
/* Declarations for command data.
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2026 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,7 +40,7 @@ struct CommandInfo
|
|||||||
bool prepend_channel;
|
bool prepend_channel;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Where the replies from commands go to. User inheits from this and is the normal
|
/* Where the replies from commands go to. User inherits from this and is the normal
|
||||||
* source of a CommandReply
|
* source of a CommandReply
|
||||||
*/
|
*/
|
||||||
struct CoreExport CommandReply
|
struct CoreExport CommandReply
|
||||||
@@ -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) */
|
||||||
@@ -99,7 +101,7 @@ class CoreExport Command : public Service
|
|||||||
bool require_user;
|
bool require_user;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/* Maximum paramaters accepted by this command */
|
/* Maximum parameters accepted by this command */
|
||||||
size_t max_params;
|
size_t max_params;
|
||||||
/* Minimum parameters required to use this command */
|
/* Minimum parameters required to use this command */
|
||||||
size_t min_params;
|
size_t min_params;
|
||||||
@@ -134,11 +136,11 @@ class CoreExport Command : public Service
|
|||||||
bool AllowUnregistered() const;
|
bool AllowUnregistered() const;
|
||||||
bool RequireUser() const;
|
bool RequireUser() const;
|
||||||
|
|
||||||
/** Get the command description
|
/** Get the command description
|
||||||
* @param source The source wanting the command description
|
* @param source The source wanting the command description
|
||||||
* @return The commands description
|
* @return The commands description
|
||||||
*/
|
*/
|
||||||
virtual const Anope::string GetDesc(CommandSource &source) const;
|
virtual const Anope::string GetDesc(CommandSource &source) const;
|
||||||
|
|
||||||
/** Execute this command.
|
/** Execute this command.
|
||||||
* @param source The source
|
* @param source The source
|
||||||
@@ -146,7 +148,7 @@ class CoreExport Command : public Service
|
|||||||
*/
|
*/
|
||||||
virtual void Execute(CommandSource &source, const std::vector<Anope::string> ¶ms) = 0;
|
virtual void Execute(CommandSource &source, const std::vector<Anope::string> ¶ms) = 0;
|
||||||
|
|
||||||
/** Called when HELP is requsted for the client this command is on.
|
/** Called when HELP is requested for the client this command is on.
|
||||||
* @param source The source
|
* @param source The source
|
||||||
*/
|
*/
|
||||||
virtual void OnServHelp(CommandSource &source);
|
virtual void OnServHelp(CommandSource &source);
|
||||||
@@ -176,7 +178,7 @@ class CoreExport Command : public Service
|
|||||||
* 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
|
||||||
* @param bot If found, is set to the bot the command is on, eg NickServ
|
* @param bot If found, is set to the bot the command is on, eg NickServ
|
||||||
* @param name If found, is set to the comand name, eg REGISTER
|
* @param name If found, is set to the command name, eg REGISTER
|
||||||
* @return true if the given command service exists
|
* @return true if the given command service exists
|
||||||
*/
|
*/
|
||||||
static bool FindCommandFromService(const Anope::string &command_service, BotInfo* &bi, Anope::string &name);
|
static bool FindCommandFromService(const Anope::string &command_service, BotInfo* &bi, Anope::string &name);
|
||||||
|
|||||||
+21
-11
@@ -1,13 +1,12 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2026 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
|
||||||
@@ -21,9 +20,11 @@
|
|||||||
|
|
||||||
namespace Configuration
|
namespace Configuration
|
||||||
{
|
{
|
||||||
|
namespace Internal
|
||||||
|
{
|
||||||
class CoreExport Block
|
class CoreExport Block
|
||||||
{
|
{
|
||||||
friend struct Conf;
|
friend struct Configuration::Conf;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
typedef Anope::map<Anope::string> item_map;
|
typedef Anope::map<Anope::string> item_map;
|
||||||
@@ -35,13 +36,17 @@ namespace Configuration
|
|||||||
block_map blocks;
|
block_map blocks;
|
||||||
int linenum;
|
int linenum;
|
||||||
|
|
||||||
public:
|
/* Represents a missing tag. */
|
||||||
Block(const Anope::string &);
|
static Block EmptyBlock;
|
||||||
const Anope::string &GetName() const;
|
|
||||||
int CountBlock(const Anope::string &name);
|
|
||||||
Block* GetBlock(const Anope::string &name, int num = 0);
|
|
||||||
|
|
||||||
template<typename T> inline T Get(const Anope::string &tag)
|
public:
|
||||||
|
Block(const Anope::string &);
|
||||||
|
const Anope::string &GetName() const;
|
||||||
|
int CountBlock(const Anope::string &name) const;
|
||||||
|
const Block* GetBlock(const Anope::string &name, int num = 0) const;
|
||||||
|
Block* GetMutableBlock(const Anope::string &name, int num = 0);
|
||||||
|
|
||||||
|
template<typename T> inline T Get(const Anope::string &tag) const
|
||||||
{
|
{
|
||||||
return this->Get<T>(tag, "");
|
return this->Get<T>(tag, "");
|
||||||
}
|
}
|
||||||
@@ -67,6 +72,10 @@ namespace Configuration
|
|||||||
template<> CoreExport const Anope::string Block::Get(const Anope::string &tag, const Anope::string& def) const;
|
template<> CoreExport const Anope::string Block::Get(const Anope::string &tag, const Anope::string& def) const;
|
||||||
template<> CoreExport time_t Block::Get(const Anope::string &tag, const Anope::string &def) const;
|
template<> CoreExport time_t Block::Get(const Anope::string &tag, const Anope::string &def) const;
|
||||||
template<> CoreExport bool Block::Get(const Anope::string &tag, const Anope::string &def) const;
|
template<> CoreExport bool Block::Get(const Anope::string &tag, const Anope::string &def) const;
|
||||||
|
} // namespace Internal
|
||||||
|
|
||||||
|
typedef const Internal::Block Block;
|
||||||
|
typedef Internal::Block MutableBlock;
|
||||||
|
|
||||||
/** Represents a configuration file
|
/** Represents a configuration file
|
||||||
*/
|
*/
|
||||||
@@ -79,6 +88,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();
|
||||||
@@ -140,7 +150,7 @@ namespace Configuration
|
|||||||
|
|
||||||
BotInfo *GetClient(const Anope::string &name);
|
BotInfo *GetClient(const Anope::string &name);
|
||||||
|
|
||||||
Block *GetCommand(CommandSource &);
|
const Block *GetCommand(CommandSource &);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Uplink
|
struct Uplink
|
||||||
@@ -165,7 +175,7 @@ namespace Configuration
|
|||||||
class ConfigException : public CoreException
|
class ConfigException : public CoreException
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/** Default constructor, just uses the error mesage 'Config threw an exception'.
|
/** Default constructor, just uses the error message 'Config threw an exception'.
|
||||||
*/
|
*/
|
||||||
ConfigException() : CoreException("Config threw an exception", "Config Parser") { }
|
ConfigException() : CoreException("Config threw an exception", "Config Parser") { }
|
||||||
/** This constructor can be used to specify an error message before throwing.
|
/** This constructor can be used to specify an error message before throwing.
|
||||||
|
|||||||
+1
-4
@@ -1,16 +1,14 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2026 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-2026 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;
|
||||||
|
|
||||||
@@ -163,7 +164,7 @@ template<typename T>
|
|||||||
class SerializableExtensibleItem : public PrimitiveExtensibleItem<T>
|
class SerializableExtensibleItem : public PrimitiveExtensibleItem<T>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SerializableExtensibleItem(Module *m, const Anope::string &n) : PrimitiveExtensibleItem<T>(m, n) { }
|
SerializableExtensibleItem(Module *m, const Anope::string &n) : PrimitiveExtensibleItem<T>(m, n) { }
|
||||||
|
|
||||||
void ExtensibleSerialize(const Extensible *e, const Serializable *s, Serialize::Data &data) const anope_override
|
void ExtensibleSerialize(const Extensible *e, const Serializable *s, Serialize::Data &data) const anope_override
|
||||||
{
|
{
|
||||||
@@ -185,11 +186,12 @@ template<>
|
|||||||
class SerializableExtensibleItem<bool> : public PrimitiveExtensibleItem<bool>
|
class SerializableExtensibleItem<bool> : public PrimitiveExtensibleItem<bool>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SerializableExtensibleItem(Module *m, const Anope::string &n) : PrimitiveExtensibleItem<bool>(m, n) { }
|
SerializableExtensibleItem(Module *m, const Anope::string &n) : PrimitiveExtensibleItem<bool>(m, n) { }
|
||||||
|
|
||||||
void ExtensibleSerialize(const Extensible *e, const Serializable *s, Serialize::Data &data) const anope_override
|
void ExtensibleSerialize(const Extensible *e, const Serializable *s, Serialize::Data &data) const anope_override
|
||||||
{
|
{
|
||||||
data[this->name] << true;
|
data.SetType(this->name, Serialize::Data::DT_INT);
|
||||||
|
data[this->name] << this->HasExt(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ExtensibleUnserialize(Extensible *e, Serializable *s, Serialize::Data &data) anope_override
|
void ExtensibleUnserialize(Extensible *e, Serializable *s, Serialize::Data &data) anope_override
|
||||||
|
|||||||
+4
-5
@@ -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-2026 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
|
||||||
@@ -27,7 +26,7 @@ namespace Anope
|
|||||||
{
|
{
|
||||||
class string;
|
class string;
|
||||||
|
|
||||||
/* Casemap in use by Anope. ci::string's comparation functions use this (and thus Anope::string) */
|
/* Casemap in use by Anope. ci::string's comparison functions use this (and thus Anope::string) */
|
||||||
extern std::locale casemap;
|
extern std::locale casemap;
|
||||||
|
|
||||||
extern void CaseMapRebuild();
|
extern void CaseMapRebuild();
|
||||||
@@ -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-2026 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"
|
||||||
@@ -41,7 +40,7 @@ namespace Language
|
|||||||
extern CoreExport const char *Translate(const char *string);
|
extern CoreExport const char *Translate(const char *string);
|
||||||
|
|
||||||
/** Translates a string to the language of the given user.
|
/** Translates a string to the language of the given user.
|
||||||
* @param u The user to transate the string for
|
* @param u The user to translate the string for
|
||||||
* @param string A string to translate
|
* @param string A string to translate
|
||||||
* @return The translated string if found, else the original string.
|
* @return The translated string if found, else the original string.
|
||||||
*/
|
*/
|
||||||
@@ -83,7 +82,7 @@ namespace Language
|
|||||||
#define CHAN_X_SUSPENDED _("Channel %s is currently suspended.")
|
#define CHAN_X_SUSPENDED _("Channel %s is currently suspended.")
|
||||||
#define CHAN_X_NOT_REGISTERED _("Channel \002%s\002 isn't registered.")
|
#define CHAN_X_NOT_REGISTERED _("Channel \002%s\002 isn't registered.")
|
||||||
#define CHAN_X_NOT_IN_USE _("Channel \002%s\002 doesn't exist.")
|
#define CHAN_X_NOT_IN_USE _("Channel \002%s\002 doesn't exist.")
|
||||||
#define NICK_IDENTIFY_REQUIRED _("Password authentication required for that command.")
|
#define NICK_IDENTIFY_REQUIRED _("You must be logged into an account to use that command.")
|
||||||
#define MAIL_X_INVALID _("\002%s\002 is not a valid e-mail address.")
|
#define MAIL_X_INVALID _("\002%s\002 is not a valid e-mail address.")
|
||||||
#define UNKNOWN _("<unknown>")
|
#define UNKNOWN _("<unknown>")
|
||||||
#define NO_EXPIRE _("does not expire")
|
#define NO_EXPIRE _("does not expire")
|
||||||
@@ -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")
|
||||||
|
|
||||||
|
|||||||
+3
-5
@@ -1,13 +1,12 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2026 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
|
||||||
@@ -65,7 +64,7 @@ class CoreExport NumberList
|
|||||||
class CoreExport ListFormatter
|
class CoreExport ListFormatter
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef std::map<Anope::string, Anope::string> ListEntry;
|
typedef std::map<Anope::string, Anope::string> ListEntry;
|
||||||
private:
|
private:
|
||||||
NickCore *nc;
|
NickCore *nc;
|
||||||
std::vector<Anope::string> columns;
|
std::vector<Anope::string> columns;
|
||||||
@@ -93,4 +92,3 @@ class CoreExport InfoFormatter
|
|||||||
};
|
};
|
||||||
|
|
||||||
#endif // LISTS_H
|
#endif // LISTS_H
|
||||||
|
|
||||||
|
|||||||
+5
-7
@@ -1,13 +1,12 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2026 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
|
||||||
@@ -18,9 +17,9 @@
|
|||||||
|
|
||||||
enum LogType
|
enum LogType
|
||||||
{
|
{
|
||||||
/* Used whenever an administrator uses an administrative comand */
|
/* Used whenever an administrator uses an administrative command */
|
||||||
LOG_ADMIN,
|
LOG_ADMIN,
|
||||||
/* Used whenever an administrator overides something, such as adding
|
/* Used whenever an administrator overrides something, such as adding
|
||||||
* access to a channel where they don't have permission to.
|
* access to a channel where they don't have permission to.
|
||||||
*/
|
*/
|
||||||
LOG_OVERRIDE,
|
LOG_OVERRIDE,
|
||||||
@@ -53,7 +52,7 @@ struct LogFile
|
|||||||
class CoreExport Log
|
class CoreExport Log
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/* Bot that should log this message */
|
/* Bot that should log this message */
|
||||||
BotInfo *bi;
|
BotInfo *bi;
|
||||||
/* For commands, the user executing the command, but might not always exist */
|
/* For commands, the user executing the command, but might not always exist */
|
||||||
User *u;
|
User *u;
|
||||||
@@ -114,7 +113,7 @@ class CoreExport Log
|
|||||||
class CoreExport LogInfo
|
class CoreExport LogInfo
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
BotInfo *bot;
|
BotInfo *bot;
|
||||||
std::vector<Anope::string> targets;
|
std::vector<Anope::string> targets;
|
||||||
std::vector<LogFile *> logfiles;
|
std::vector<LogFile *> logfiles;
|
||||||
int last_day;
|
int last_day;
|
||||||
@@ -143,4 +142,3 @@ class CoreExport LogInfo
|
|||||||
};
|
};
|
||||||
|
|
||||||
#endif // LOGGER_H
|
#endif // LOGGER_H
|
||||||
|
|
||||||
|
|||||||
+5
-6
@@ -1,14 +1,12 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2026 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
|
||||||
@@ -28,17 +26,18 @@ namespace Mail
|
|||||||
class Message : public Thread
|
class Message : public Thread
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
Anope::string sendmail_path;
|
Anope::string error;
|
||||||
|
Anope::string sendmail_path;
|
||||||
Anope::string send_from;
|
Anope::string send_from;
|
||||||
Anope::string mail_to;
|
Anope::string mail_to;
|
||||||
Anope::string addr;
|
Anope::string addr;
|
||||||
Anope::string subject;
|
Anope::string subject;
|
||||||
Anope::string message;
|
Anope::string message;
|
||||||
|
Anope::string content_type;
|
||||||
bool dont_quote_addresses;
|
bool dont_quote_addresses;
|
||||||
|
|
||||||
bool success;
|
|
||||||
public:
|
public:
|
||||||
/** Construct this message. Once constructed call Thread::Start to launch the mail sending.
|
/** Construct this message. Once constructed call Thread::Start to launch the mail sending.
|
||||||
* @param sf Config->SendFrom
|
* @param sf Config->SendFrom
|
||||||
* @param mailto Name of person being mailed (u->nick, nc->display, etc)
|
* @param mailto Name of person being mailed (u->nick, nc->display, etc)
|
||||||
* @param addr Destination address to mail
|
* @param addr Destination address to mail
|
||||||
|
|||||||
+4
-4
@@ -1,13 +1,12 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2026 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,9 +18,10 @@
|
|||||||
class CoreExport Memo : public Serializable
|
class CoreExport Memo : public Serializable
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
bool unread;
|
MemoInfo *mi;
|
||||||
|
bool unread;
|
||||||
bool receipt;
|
bool receipt;
|
||||||
Memo();
|
Memo();
|
||||||
~Memo();
|
~Memo();
|
||||||
|
|
||||||
void Serialize(Serialize::Data &data) const anope_override;
|
void Serialize(Serialize::Data &data) const anope_override;
|
||||||
|
|||||||
+2
-4
@@ -1,13 +1,12 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2026 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"
|
||||||
@@ -166,10 +165,9 @@ namespace Message
|
|||||||
|
|
||||||
struct CoreExport Whois : IRCDMessage
|
struct CoreExport Whois : IRCDMessage
|
||||||
{
|
{
|
||||||
Whois(Module *creator, const Anope::string &mname = "WHOIS") : IRCDMessage(creator, mname, 1) { SetFlag(IRCDMESSAGE_SOFT_LIMIT); }
|
Whois(Module *creator, const Anope::string &mname = "WHOIS") : IRCDMessage(creator, mname, 1) { 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;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Message
|
} // namespace Message
|
||||||
|
|
||||||
|
|||||||
+16
-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-2026 Anope Team <team@anope.org>
|
||||||
*
|
*
|
||||||
* Please read COPYING and README for further details.
|
* Please read COPYING and README for further details.
|
||||||
*/
|
*/
|
||||||
@@ -39,8 +39,8 @@ enum ModeClass
|
|||||||
class CoreExport Mode : public Base
|
class CoreExport Mode : public Base
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/* Mode name */
|
/* Mode name */
|
||||||
Anope::string name;
|
Anope::string name;
|
||||||
/* Class of mode this is (user/channel) */
|
/* Class of mode this is (user/channel) */
|
||||||
ModeClass mclass;
|
ModeClass mclass;
|
||||||
/* Mode char for this, eg 'b' */
|
/* Mode char for this, eg 'b' */
|
||||||
@@ -78,7 +78,7 @@ class CoreExport UserMode : public Mode
|
|||||||
class CoreExport UserModeParam : public UserMode
|
class CoreExport UserModeParam : public UserMode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/** constructor
|
/** constructor
|
||||||
* @param name The mode name
|
* @param name The mode name
|
||||||
* @param mc The mode char
|
* @param mc The mode char
|
||||||
*/
|
*/
|
||||||
@@ -96,7 +96,7 @@ 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 */
|
/* channel modes that can possibly unwrap this mode */
|
||||||
std::vector<ChannelMode *> listeners;
|
std::vector<ChannelMode *> listeners;
|
||||||
|
|
||||||
/** constructor
|
/** constructor
|
||||||
@@ -160,7 +160,7 @@ class CoreExport ChannelModeList : public ChannelMode
|
|||||||
virtual void OnDel(Channel *chan, const Anope::string &mask) { }
|
virtual void OnDel(Channel *chan, const Anope::string &mask) { }
|
||||||
};
|
};
|
||||||
|
|
||||||
/** This is a mode with a paramater, eg +k/l. These modes should use/inherit from this
|
/** This is a mode with a parameter, eg +k/l. These modes should use/inherit from this
|
||||||
*/
|
*/
|
||||||
class CoreExport ChannelModeParam : public ChannelMode
|
class CoreExport ChannelModeParam : public ChannelMode
|
||||||
{
|
{
|
||||||
@@ -192,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
|
||||||
@@ -200,7 +200,7 @@ 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),
|
/** A virtual mode. This mode doesn't natively exist on the IRCd (like extbans),
|
||||||
@@ -221,7 +221,7 @@ class CoreExport ChannelModeVirtual : public T
|
|||||||
|
|
||||||
ChannelMode *Wrap(Anope::string ¶m) anope_override;
|
ChannelMode *Wrap(Anope::string ¶m) anope_override;
|
||||||
|
|
||||||
ChannelMode *Unwrap(ChannelMode *cm, Anope::string ¶m) = 0;
|
ChannelMode *Unwrap(ChannelMode *cm, Anope::string ¶m) anope_override = 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 */
|
||||||
@@ -229,9 +229,9 @@ class CoreExport ChannelStatus
|
|||||||
{
|
{
|
||||||
Anope::string modes;
|
Anope::string modes;
|
||||||
public:
|
public:
|
||||||
ChannelStatus();
|
ChannelStatus();
|
||||||
ChannelStatus(const Anope::string &modes);
|
ChannelStatus(const Anope::string &modes);
|
||||||
void AddMode(char c);
|
void AddMode(char c);
|
||||||
void DelMode(char c);
|
void DelMode(char c);
|
||||||
bool HasMode(char c) const;
|
bool HasMode(char c) const;
|
||||||
bool Empty() const;
|
bool Empty() const;
|
||||||
@@ -395,11 +395,12 @@ 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
|
||||||
* @param mode What mode this host is for, can be empty for unknown/no mode
|
* @param mode What mode this host is for, can be empty for unknown/no mode
|
||||||
* @param host A full or poartial nick!ident@host/cidr#real name mask
|
* @param host A full or partial nick!ident@host/cidr#real name mask
|
||||||
*/
|
*/
|
||||||
Entry(const Anope::string &mode, const Anope::string &host);
|
Entry(const Anope::string &mode, const Anope::string &host);
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2026 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.
|
||||||
|
|||||||
+26
-15
@@ -1,13 +1,12 @@
|
|||||||
/* Modular support
|
/* Modular support
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2026 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"
|
||||||
@@ -302,6 +301,11 @@ class CoreExport Module : public Extensible
|
|||||||
* 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
|
||||||
@@ -398,7 +402,6 @@ class CoreExport Module : public Extensible
|
|||||||
virtual EventReturn OnLoadDatabase() { throw NotImplementedException(); }
|
virtual EventReturn OnLoadDatabase() { throw NotImplementedException(); }
|
||||||
|
|
||||||
/** Called when anope needs to check passwords against encryption
|
/** Called when anope needs to check passwords against encryption
|
||||||
* see src/encrypt.c for detailed informations
|
|
||||||
*/
|
*/
|
||||||
virtual EventReturn OnEncrypt(const Anope::string &src, Anope::string &dest) { throw NotImplementedException(); }
|
virtual EventReturn OnEncrypt(const Anope::string &src, Anope::string &dest) { throw NotImplementedException(); }
|
||||||
virtual EventReturn OnDecrypt(const Anope::string &hashm, const Anope::string &src, Anope::string &dest) { throw NotImplementedException(); }
|
virtual EventReturn OnDecrypt(const Anope::string &hashm, const Anope::string &src, Anope::string &dest) { throw NotImplementedException(); }
|
||||||
@@ -503,7 +506,7 @@ class CoreExport Module : public Extensible
|
|||||||
*/
|
*/
|
||||||
virtual void OnChanExpire(ChannelInfo *ci) { throw NotImplementedException(); }
|
virtual void OnChanExpire(ChannelInfo *ci) { throw NotImplementedException(); }
|
||||||
|
|
||||||
/** Called before Anope connecs to its uplink
|
/** Called before Anope connects to its uplink
|
||||||
*/
|
*/
|
||||||
virtual void OnPreServerConnect() { throw NotImplementedException(); }
|
virtual void OnPreServerConnect() { throw NotImplementedException(); }
|
||||||
|
|
||||||
@@ -551,7 +554,7 @@ class CoreExport Module : public Extensible
|
|||||||
|
|
||||||
/** Called before an exception is deleted
|
/** Called before an exception is deleted
|
||||||
* @param source The source deleting it
|
* @param source The source deleting it
|
||||||
* @param ex The exceotion
|
* @param ex The exception
|
||||||
*/
|
*/
|
||||||
virtual void OnExceptionDel(CommandSource &source, Exception *ex) { throw NotImplementedException(); }
|
virtual void OnExceptionDel(CommandSource &source, Exception *ex) { throw NotImplementedException(); }
|
||||||
|
|
||||||
@@ -772,7 +775,7 @@ class CoreExport Module : public Extensible
|
|||||||
*/
|
*/
|
||||||
virtual void OnNickSuspend(NickAlias *na) { throw NotImplementedException(); }
|
virtual void OnNickSuspend(NickAlias *na) { throw NotImplementedException(); }
|
||||||
|
|
||||||
/** Called when a nick is unsuspneded
|
/** Called when a nick is unsuspended
|
||||||
* @param na The nick alias
|
* @param na The nick alias
|
||||||
*/
|
*/
|
||||||
virtual void OnNickUnsuspended(NickAlias *na) { throw NotImplementedException(); }
|
virtual void OnNickUnsuspended(NickAlias *na) { throw NotImplementedException(); }
|
||||||
@@ -935,12 +938,12 @@ class CoreExport Module : public Extensible
|
|||||||
*/
|
*/
|
||||||
virtual void OnUserModeUnset(const MessageSource &setter, User *u, const Anope::string &mname) { throw NotImplementedException(); }
|
virtual void OnUserModeUnset(const MessageSource &setter, User *u, const Anope::string &mname) { throw NotImplementedException(); }
|
||||||
|
|
||||||
/** Called when a channel mode is introducted into Anope
|
/** Called when a channel mode is introduced into Anope
|
||||||
* @param cm The mode
|
* @param cm The mode
|
||||||
*/
|
*/
|
||||||
virtual void OnChannelModeAdd(ChannelMode *cm) { throw NotImplementedException(); }
|
virtual void OnChannelModeAdd(ChannelMode *cm) { throw NotImplementedException(); }
|
||||||
|
|
||||||
/** Called when a user mode is introducted into Anope
|
/** Called when a user mode is introduced into Anope
|
||||||
* @param um The mode
|
* @param um The mode
|
||||||
*/
|
*/
|
||||||
virtual void OnUserModeAdd(UserMode *um) { throw NotImplementedException(); }
|
virtual void OnUserModeAdd(UserMode *um) { throw NotImplementedException(); }
|
||||||
@@ -1016,7 +1019,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
|
||||||
*/
|
*/
|
||||||
@@ -1062,7 +1065,7 @@ class CoreExport Module : public Extensible
|
|||||||
/** Called when a nickserv/set command is used.
|
/** Called when a nickserv/set command is used.
|
||||||
* @param source The source of the command
|
* @param source The source of the command
|
||||||
* @param cmd The command
|
* @param cmd The command
|
||||||
* @param nc The nickcore being modifed
|
* @param nc The nickcore being modified
|
||||||
* @param setting The setting passed to the command. Probably ON/OFF.
|
* @param setting The setting passed to the command. Probably ON/OFF.
|
||||||
* @return EVENT_STOP to halt immediately
|
* @return EVENT_STOP to halt immediately
|
||||||
*/
|
*/
|
||||||
@@ -1076,7 +1079,7 @@ class CoreExport Module : public Extensible
|
|||||||
*/
|
*/
|
||||||
virtual EventReturn OnMessage(MessageSource &source, Anope::string &command, std::vector<Anope::string> ¶m) { throw NotImplementedException(); }
|
virtual EventReturn OnMessage(MessageSource &source, Anope::string &command, std::vector<Anope::string> ¶m) { throw NotImplementedException(); }
|
||||||
|
|
||||||
/** Called to determine if a chnanel mode can be set by a user
|
/** Called to determine if a channel mode can be set by a user
|
||||||
* @param u The user
|
* @param u The user
|
||||||
* @param cm The mode
|
* @param cm The mode
|
||||||
*/
|
*/
|
||||||
@@ -1089,17 +1092,25 @@ class CoreExport Module : public Extensible
|
|||||||
*/
|
*/
|
||||||
virtual void OnExpireTick() { throw NotImplementedException(); }
|
virtual void OnExpireTick() { throw NotImplementedException(); }
|
||||||
|
|
||||||
/** Called when a nick is validated. That is, to determine if a user is permissted
|
/** Called when a nick is validated. That is, to determine if a user is permitted
|
||||||
* to be on the given nick.
|
* to be on the given nick.
|
||||||
* @param u The user
|
* @param u The user
|
||||||
* @param na The nick they are on
|
* @param na The nick they are on
|
||||||
* @return EVENT_STOP to force the user off of the nick
|
* @return EVENT_STOP to force the user off of the nick
|
||||||
*/
|
*/
|
||||||
virtual EventReturn OnNickValidate(User *u, NickAlias *na) { throw NotImplementedException(); }
|
virtual EventReturn OnNickValidate(User *u, NickAlias *na) { throw NotImplementedException(); }
|
||||||
|
|
||||||
|
/** Called when a certain user has to be unbanned on a certain channel.
|
||||||
|
* May be used to send protocol-specific messages.
|
||||||
|
* @param u The user to be unbanned
|
||||||
|
* @param c The channel that user has to be unbanned on
|
||||||
|
*/
|
||||||
|
virtual void OnChannelUnban(User *u, ChannelInfo *ci) { throw NotImplementedException(); }
|
||||||
};
|
};
|
||||||
|
|
||||||
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,
|
||||||
@@ -1120,7 +1131,7 @@ enum Implementation
|
|||||||
I_OnPrivmsg, I_OnLog, I_OnLogMessage, I_OnDnsRequest, I_OnCheckModes, I_OnChannelSync, I_OnSetCorrectModes,
|
I_OnPrivmsg, I_OnLog, I_OnLogMessage, I_OnDnsRequest, I_OnCheckModes, I_OnChannelSync, I_OnSetCorrectModes,
|
||||||
I_OnSerializeCheck, I_OnSerializableConstruct, I_OnSerializableDestruct, I_OnSerializableUpdate,
|
I_OnSerializeCheck, I_OnSerializableConstruct, I_OnSerializableDestruct, I_OnSerializableUpdate,
|
||||||
I_OnSerializeTypeCreate, I_OnSetChannelOption, I_OnSetNickOption, I_OnMessage, I_OnCanSet, I_OnCheckDelete,
|
I_OnSerializeTypeCreate, I_OnSetChannelOption, I_OnSetNickOption, I_OnMessage, I_OnCanSet, I_OnCheckDelete,
|
||||||
I_OnExpireTick, I_OnNickValidate,
|
I_OnExpireTick, I_OnNickValidate, I_OnChannelUnban,
|
||||||
I_SIZE
|
I_SIZE
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1133,7 +1144,7 @@ class CoreExport ModuleManager
|
|||||||
*/
|
*/
|
||||||
static std::vector<Module *> EventHandlers[I_SIZE];
|
static std::vector<Module *> EventHandlers[I_SIZE];
|
||||||
|
|
||||||
/** List of all modules loaded in Anope
|
/** List of all modules loaded in Anope
|
||||||
*/
|
*/
|
||||||
static std::list<Module *> Modules;
|
static std::list<Module *> Modules;
|
||||||
|
|
||||||
@@ -1172,7 +1183,7 @@ class CoreExport ModuleManager
|
|||||||
/** Checks whether this version of Anope is at least major.minor.patch.build
|
/** Checks whether this version of Anope is at least major.minor.patch.build
|
||||||
* Throws a ModuleException if not
|
* Throws a ModuleException if not
|
||||||
* @param major The major version
|
* @param major The major version
|
||||||
* @param minor The minor vesion
|
* @param minor The minor version
|
||||||
* @param patch The patch version
|
* @param patch The patch version
|
||||||
*/
|
*/
|
||||||
static void RequireVersion(int major, int minor, int patch);
|
static void RequireVersion(int major, int minor, int patch);
|
||||||
|
|||||||
@@ -1,14 +1,12 @@
|
|||||||
/* BotServ core functions
|
/* BotServ core functions
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2026 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-2026 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-2026 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-2026 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.
|
||||||
@@ -37,7 +37,6 @@ struct LogSettings : Serialize::Checker<std::vector<LogSetting *> >
|
|||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
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-2026 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.
|
||||||
@@ -74,17 +74,16 @@ struct ModeLocks
|
|||||||
|
|
||||||
/** Get details for a specific mlock
|
/** Get details for a specific mlock
|
||||||
* @param mname The mode name
|
* @param mname The mode name
|
||||||
* @param An optional param to match with
|
* @param An optional param to match with
|
||||||
* @return The MLock, if any
|
* @return The MLock, if any
|
||||||
*/
|
*/
|
||||||
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-2026 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
|
||||||
@@ -140,8 +139,8 @@ namespace DNS
|
|||||||
/* Use result cache if available */
|
/* Use result cache if available */
|
||||||
bool use_cache;
|
bool use_cache;
|
||||||
/* Request id */
|
/* Request id */
|
||||||
unsigned short id;
|
unsigned short id;
|
||||||
/* Creator of this request */
|
/* Creator of this request */
|
||||||
Module *creator;
|
Module *creator;
|
||||||
|
|
||||||
Request(Manager *mgr, Module *c, const Anope::string &addr, QueryType qt, bool cache = false) : Timer(0), Question(addr, qt), manager(mgr),
|
Request(Manager *mgr, Module *c, const Anope::string &addr, QueryType qt, bool cache = false) : Timer(0), Question(addr, qt), manager(mgr),
|
||||||
@@ -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-2026 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
|
||||||
@@ -18,7 +17,7 @@ namespace Encryption
|
|||||||
class Context
|
class Context
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual ~Context() { }
|
virtual ~Context() { }
|
||||||
virtual void Update(const unsigned char *data, size_t len) = 0;
|
virtual void Update(const unsigned char *data, size_t len) = 0;
|
||||||
virtual void Finalize() = 0;
|
virtual void Finalize() = 0;
|
||||||
virtual Hash GetFinalizedHash() = 0;
|
virtual Hash GetFinalizedHash() = 0;
|
||||||
@@ -34,4 +33,3 @@ namespace Encryption
|
|||||||
virtual IV GetDefaultIV() = 0;
|
virtual IV GetDefaultIV() = 0;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+16
-5
@@ -1,3 +1,11 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* (C) 2012-2026 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;
|
||||||
|
|
||||||
@@ -72,7 +80,7 @@ struct HTTPReply
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/* A message from soneone */
|
/* A message from someone */
|
||||||
struct HTTPMessage
|
struct HTTPMessage
|
||||||
{
|
{
|
||||||
std::map<Anope::string, Anope::string> headers;
|
std::map<Anope::string, Anope::string> headers;
|
||||||
@@ -91,7 +99,7 @@ class HTTPPage : public Base
|
|||||||
Anope::string content_type;
|
Anope::string content_type;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
HTTPPage(const Anope::string &u, const Anope::string &ct = "text/html") : url(u), content_type(ct) { }
|
HTTPPage(const Anope::string &u, const Anope::string &ct = "text/html") : url(u), content_type(ct) { }
|
||||||
|
|
||||||
const Anope::string &GetURL() const { return this->url; }
|
const Anope::string &GetURL() const { return this->url; }
|
||||||
|
|
||||||
@@ -129,11 +137,11 @@ class HTTPClient : public ClientSocket, public BinarySocket, public Base
|
|||||||
|
|
||||||
class HTTPProvider : public ListenSocket, public Service
|
class HTTPProvider : public ListenSocket, public Service
|
||||||
{
|
{
|
||||||
Anope::string ip;
|
Anope::string ip;
|
||||||
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];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,11 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* (C) 2011-2026 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
|
||||||
|
|
||||||
@@ -158,6 +166,16 @@ class LDAPProvider : public Service
|
|||||||
* @param attributes The attributes to modify
|
* @param attributes The attributes to modify
|
||||||
*/
|
*/
|
||||||
virtual void Modify(LDAPInterface *i, const Anope::string &base, LDAPMods &attributes) = 0;
|
virtual void Modify(LDAPInterface *i, const Anope::string &base, LDAPMods &attributes) = 0;
|
||||||
|
|
||||||
|
/** Escapes a LDAP string for use in a DN.
|
||||||
|
* @param str The string to escape.
|
||||||
|
*/
|
||||||
|
virtual Anope::string EscapeDN(const Anope::string &str) const = 0;
|
||||||
|
|
||||||
|
/** Escapes a LDAP string for use in a search filter.
|
||||||
|
* @param str The string to escape.
|
||||||
|
*/
|
||||||
|
virtual Anope::string EscapeSF(const Anope::string &str) const = 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-2026 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.
|
||||||
@@ -26,7 +26,7 @@ struct NSCertList
|
|||||||
|
|
||||||
/** Get an entry from the nick's cert list by index
|
/** Get an entry from the nick's cert list by index
|
||||||
*
|
*
|
||||||
* @param entry Index in the certificaate list vector to retrieve
|
* @param entry Index in the certificate list vector to retrieve
|
||||||
* @return The fingerprint entry of the given index if within bounds, an empty string if the vector is empty or the index is out of bounds
|
* @return The fingerprint entry of the given index if within bounds, an empty string if the vector is empty or the index is out of bounds
|
||||||
*
|
*
|
||||||
* Retrieves an entry from the certificate list corresponding to the given index.
|
* Retrieves an entry from the certificate list corresponding to the given index.
|
||||||
@@ -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-2026 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-2026 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-2026 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-2026 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
|
||||||
|
|
||||||
@@ -27,7 +35,7 @@ struct Exception : Serializable
|
|||||||
class SessionService : public Service
|
class SessionService : public Service
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef TR1NS::unordered_map<cidr, Session *, cidr::hash> SessionMap;
|
typedef TR1NS::unordered_map<cidr, Session *, cidr::hash> SessionMap;
|
||||||
typedef std::vector<Exception *> ExceptionVector;
|
typedef std::vector<Exception *> ExceptionVector;
|
||||||
|
|
||||||
SessionService(Module *m) : Service(m, "SessionService", "session") { }
|
SessionService(Module *m) : Service(m, "SessionService", "session") { }
|
||||||
@@ -84,4 +92,3 @@ Serializable* Exception::Unserialize(Serializable *obj, Serialize::Data &data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,11 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* (C) 2011-2026 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-2026 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
|
||||||
|
|
||||||
@@ -8,6 +16,9 @@ class GlobalService : public Service
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Retrieves the bot which sends global messages unless otherwise specified. */
|
||||||
|
virtual Reference<BotInfo> GetDefaultSender() = 0;
|
||||||
|
|
||||||
/** Send out a global message to all users
|
/** Send out a global message to all users
|
||||||
* @param sender Our client which should send the global
|
* @param sender Our client which should send the global
|
||||||
* @param source The sender of the global
|
* @param source The sender of the global
|
||||||
@@ -17,4 +28,3 @@ class GlobalService : public Service
|
|||||||
};
|
};
|
||||||
|
|
||||||
#endif // GLOBAL_H
|
#endif // GLOBAL_H
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,11 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* (C) 2011-2026 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
|
||||||
|
|
||||||
@@ -17,7 +25,7 @@ class MemoServService : public Service
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Sends a memo.
|
/** Sends a memo.
|
||||||
* @param source The source of the memo, can be anythin.
|
* @param source The source of the memo, can be anything.
|
||||||
* @param target The target of the memo, nick or channel.
|
* @param target The target of the memo, nick or channel.
|
||||||
* @param message Memo text
|
* @param message Memo text
|
||||||
* @param force true to force the memo, restrictions/delays etc are not checked
|
* @param force true to force the memo, restrictions/delays etc are not checked
|
||||||
@@ -31,4 +39,3 @@ class MemoServService : public Service
|
|||||||
};
|
};
|
||||||
|
|
||||||
#endif // MEMOSERV_H
|
#endif // MEMOSERV_H
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,11 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* (C) 2011-2026 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-2026 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-2026 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-2026 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-2026 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.
|
||||||
@@ -11,7 +12,7 @@ namespace SQL
|
|||||||
class Data : public Serialize::Data
|
class Data : public Serialize::Data
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef std::map<Anope::string, std::stringstream *> Map;
|
typedef std::map<Anope::string, std::stringstream *> Map;
|
||||||
Map data;
|
Map data;
|
||||||
std::map<Anope::string, Type> types;
|
std::map<Anope::string, Type> types;
|
||||||
|
|
||||||
@@ -141,14 +142,14 @@ namespace SQL
|
|||||||
Anope::string error;
|
Anope::string error;
|
||||||
public:
|
public:
|
||||||
unsigned int id;
|
unsigned int id;
|
||||||
Anope::string finished_query;
|
Anope::string finished_query;
|
||||||
|
|
||||||
Result() : id(0) { }
|
Result() : id(0) { }
|
||||||
Result(unsigned int i, const Query &q, const Anope::string &fq, const Anope::string &err = "") : query(q), error(err), id(i), finished_query(fq) { }
|
Result(unsigned int i, const Query &q, const Anope::string &fq, const Anope::string &err = "") : query(q), error(err), id(i), finished_query(fq) { }
|
||||||
|
|
||||||
inline operator bool() const { return this->error.empty(); }
|
inline operator bool() const { return this->error.empty(); }
|
||||||
|
|
||||||
inline const unsigned int GetID() const { return this->id; }
|
inline unsigned int GetID() const { return this->id; }
|
||||||
inline const Query &GetQuery() const { return this->query; }
|
inline const Query &GetQuery() const { return this->query; }
|
||||||
inline const Anope::string &GetError() const { return this->error; }
|
inline const Anope::string &GetError() const { return this->error; }
|
||||||
|
|
||||||
@@ -213,4 +214,3 @@ namespace SQL
|
|||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,10 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* (C) 2010-2026 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-2026 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-2026 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
|
||||||
@@ -20,7 +28,7 @@ class XMLRPCServiceInterface;
|
|||||||
class XMLRPCEvent
|
class XMLRPCEvent
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual ~XMLRPCEvent() { }
|
virtual ~XMLRPCEvent() { }
|
||||||
virtual bool Run(XMLRPCServiceInterface *iface, HTTPClient *client, XMLRPCRequest &request) = 0;
|
virtual bool Run(XMLRPCServiceInterface *iface, HTTPClient *client, XMLRPCRequest &request) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -37,4 +45,3 @@ class XMLRPCServiceInterface : public Service
|
|||||||
|
|
||||||
virtual void Reply(XMLRPCRequest &request) = 0;
|
virtual void Reply(XMLRPCRequest &request) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -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-2026 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
|
||||||
@@ -67,7 +67,7 @@ class CoreExport OperType
|
|||||||
*/
|
*/
|
||||||
std::set<OperType *> inheritances;
|
std::set<OperType *> inheritances;
|
||||||
public:
|
public:
|
||||||
/** Modes to set when someone identifys using this opertype
|
/** Modes to set when someone identifies using this opertype
|
||||||
*/
|
*/
|
||||||
Anope::string modes;
|
Anope::string modes;
|
||||||
|
|
||||||
|
|||||||
+39
-9
@@ -1,13 +1,12 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) 2003-2014 Anope Team
|
* (C) 2003-2026 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
|
||||||
@@ -16,14 +15,15 @@
|
|||||||
#include "services.h"
|
#include "services.h"
|
||||||
#include "anope.h"
|
#include "anope.h"
|
||||||
#include "service.h"
|
#include "service.h"
|
||||||
|
#include "modes.h"
|
||||||
|
|
||||||
/* Encapsultes the IRCd protocol we are speaking. */
|
/* Encapsulates the IRCd protocol we are speaking. */
|
||||||
class CoreExport IRCDProto : public Service
|
class CoreExport IRCDProto : public Service
|
||||||
{
|
{
|
||||||
Anope::string proto_name;
|
Anope::string proto_name;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
IRCDProto(Module *creator, const Anope::string &proto_name);
|
IRCDProto(Module *creator, const Anope::string &proto_name);
|
||||||
public:
|
public:
|
||||||
virtual ~IRCDProto();
|
virtual ~IRCDProto();
|
||||||
|
|
||||||
@@ -40,7 +40,7 @@ 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 void Parse(const Anope::string &, Anope::string &, Anope::string &, std::vector<Anope::string> &);
|
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);
|
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 */
|
||||||
@@ -55,7 +55,7 @@ class CoreExport IRCDProto : public Service
|
|||||||
bool CanSNLine;
|
bool CanSNLine;
|
||||||
/* Can we ban specific nicknames from being used? */
|
/* Can we ban specific nicknames from being used? */
|
||||||
bool CanSQLine;
|
bool CanSQLine;
|
||||||
/* Can we ban sepcific channel names from being used? */
|
/* Can we ban specific channel names from being used? */
|
||||||
bool CanSQLineChannel;
|
bool CanSQLineChannel;
|
||||||
/* Can we ban by IP? */
|
/* Can we ban by IP? */
|
||||||
bool CanSZLine;
|
bool CanSZLine;
|
||||||
@@ -197,8 +197,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() { }
|
||||||
@@ -228,8 +228,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 &);
|
||||||
@@ -241,6 +242,7 @@ class CoreExport IRCDProto : public Service
|
|||||||
* Defaults to Config->ListSize
|
* Defaults to Config->ListSize
|
||||||
*/
|
*/
|
||||||
virtual unsigned GetMaxListFor(Channel *c);
|
virtual unsigned GetMaxListFor(Channel *c);
|
||||||
|
virtual unsigned GetMaxListFor(Channel *c, ChannelMode *cm);
|
||||||
|
|
||||||
virtual Anope::string NormalizeMask(const Anope::string &mask);
|
virtual Anope::string NormalizeMask(const Anope::string &mask);
|
||||||
};
|
};
|
||||||
@@ -278,11 +280,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.
|
||||||
*
|
*
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user