mirror of
https://github.com/anope/anope.git
synced 2026-06-14 07:24:46 +02:00
Compare commits
306 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a1607f41b6 | |||
| 10901dd05b | |||
| 01177212bd | |||
| 64f83b3ccf | |||
| 172325ee97 | |||
| 969aacbf78 | |||
| 304e6eaabe | |||
| 564b8b8d9d | |||
| 309807c67f | |||
| 5fd1485938 | |||
| 7a741b467c | |||
| d24ae1f961 | |||
| eab5abb351 | |||
| f7b1b1907c | |||
| a563c8fb2f | |||
| def6a6deee | |||
| 1a3f890613 | |||
| d2d89ac412 | |||
| e090eaea65 | |||
| 1dbd7b406f | |||
| 27dde3266c | |||
| f1c3f0d820 | |||
| 0a78656804 | |||
| e2213e3cd2 | |||
| ec9931288b | |||
| 71ec1a93dd | |||
| 245a25877f | |||
| ae071cef75 | |||
| 57b31d43eb | |||
| 43152007c6 | |||
| 91ff17d10f | |||
| 357cd44bea | |||
| 46271fc348 | |||
| d8ca7c63bf | |||
| f7bac0839b | |||
| 862b101935 | |||
| 20d40fdc75 | |||
| 9650a3ffa5 | |||
| 14a957f8a0 | |||
| 8fb31b6441 | |||
| 969258352a | |||
| a6b09c1d9f | |||
| a9021f6284 | |||
| fa33bb2842 | |||
| cb9ab016f5 | |||
| 83e42f2adc | |||
| e0c3069c5f | |||
| 3e6d838285 | |||
| 64dd3c6655 | |||
| 9486cf9ecb | |||
| 0106d0b6bd | |||
| 3779ed916a | |||
| 3f05a42515 | |||
| d0e5a18848 | |||
| 670e73d69d | |||
| 07fffb0b90 | |||
| 1d3ca36768 | |||
| 8559c57cd6 | |||
| 792790a4d4 | |||
| 381d95e6da | |||
| 74556b77c0 | |||
| 91527cdcef | |||
| b9aa534731 | |||
| 658ecee817 | |||
| fb99dc43c9 | |||
| 144029fd61 | |||
| 2a1cd54bc7 | |||
| 0dd4a98e53 | |||
| f1577975a9 | |||
| fa833766a0 | |||
| 783f77d367 | |||
| dc840e9b99 | |||
| 0982becd98 | |||
| f83096c729 | |||
| eb7c9d0a86 | |||
| 8007cc8a3a | |||
| 30ea6365de | |||
| a11155551e | |||
| d45222798b | |||
| edb362eace | |||
| 1e9f1b09f5 | |||
| 16439f52a5 | |||
| 45640c43d3 | |||
| 6ebbec79ea | |||
| 096de4fb25 | |||
| 01946cb467 | |||
| 0e0538408d | |||
| 841b3f689e | |||
| 0315bd31f8 | |||
| 2539f34d3c | |||
| 7eb437b9fe | |||
| 0e0eb38b2a | |||
| 6fca33a2ba | |||
| 66e2dce646 | |||
| 06679e487e | |||
| 54acc25eb3 | |||
| a4c81c72c1 | |||
| 2060bacdea | |||
| 8d1fe0a36f | |||
| 165c0588d4 | |||
| 7c14f76bc8 | |||
| a86e15afe9 | |||
| 2b847c63e9 | |||
| 11b91fdc67 | |||
| 0dda705cdb | |||
| f4d7ae2e12 | |||
| 826e040d41 | |||
| 3ef227aa88 | |||
| f592417ec2 | |||
| ed13cd11ec | |||
| f8a0a645b0 | |||
| 12b0ff0593 | |||
| 13688c595b | |||
| 2b7dd6c2a0 | |||
| c5fc11f5fe | |||
| bf2f151c68 | |||
| 4c64c86ef4 | |||
| cb975f4a6c | |||
| 0383868a29 | |||
| b92711dc15 | |||
| e990259d6d | |||
| 5a4de87df1 | |||
| 9a488327b2 | |||
| f302367fc4 | |||
| 3866b002d6 | |||
| fab8b8b137 | |||
| 80d0e03f64 | |||
| a32ab376db | |||
| f39d94c84e | |||
| ac338266f4 | |||
| 7385580ffa | |||
| f4a0ee30b3 | |||
| bd94cbc25b | |||
| 3a97d196f9 | |||
| 22894e9e09 | |||
| 24f3066224 | |||
| d53c25b043 | |||
| 7dfc8e8ee8 | |||
| 3a9a0ef135 | |||
| e594937c0b | |||
| 085976adf5 | |||
| a2be8c402f | |||
| a29845cc56 | |||
| fac3b85903 | |||
| d1b5797f5d | |||
| f1fa7e1a5f | |||
| a2e9e45e37 | |||
| ee0636ac46 | |||
| ed9ec89061 | |||
| b7c6f8ec7f | |||
| 94f7962e1a | |||
| 3308ab7153 | |||
| 951de6b39d | |||
| 388fe38d00 | |||
| d034a9c36a | |||
| 49064ec67d | |||
| a9fa7edf82 | |||
| 42dd49233c | |||
| 3a422777c5 | |||
| e42f125a85 | |||
| f5a7a5d8bc | |||
| ca7769d8b4 | |||
| e5bd79ba19 | |||
| 804cb9b051 | |||
| 7582b6503f | |||
| cd9ec6fe10 | |||
| 8f60562dfa | |||
| 3bf6cdb6ac | |||
| c01f8cad22 | |||
| cea53460b0 | |||
| d8642972d9 | |||
| 9b26a0dc09 | |||
| 15c66af4e5 | |||
| 6661c3ebdb | |||
| 0c9117abce | |||
| ff17a9af7e | |||
| 1b636ed4ff | |||
| 61b6c92ee2 | |||
| e604e04847 | |||
| 461bc4c87e | |||
| d049bf0d8f | |||
| a53cbd82cc | |||
| 571ff82f69 | |||
| 7ddc6d8be5 | |||
| dd258b36d2 | |||
| 8e59e58987 | |||
| de902c6db3 | |||
| e02967bd4a | |||
| 92bf0c800f | |||
| 40c9226e3a | |||
| e897082f69 | |||
| b67dada56f | |||
| c66f28ed61 | |||
| 87e96d6f52 | |||
| f590c52321 | |||
| 911cc43d9c | |||
| 6ba8f8b264 | |||
| 94f465832f | |||
| 9ab97ae21a | |||
| 246a2c664b | |||
| ad4180e2d6 | |||
| 01906d0b74 | |||
| 005d3f9558 | |||
| a895077b54 | |||
| 7e10fca23b | |||
| b2d258328a | |||
| ef5c945e0b | |||
| 1e0bfbd15a | |||
| cb73ab9d23 | |||
| ac90a6935a | |||
| 766fe138e4 | |||
| dafccc1821 | |||
| ace25983a4 | |||
| bb7b8e27ee | |||
| 72fa53c20e | |||
| eb0c255fad | |||
| 01994c1ba1 | |||
| ec7bc8dd41 | |||
| 6ee50f852e | |||
| 6cd3b56805 | |||
| 27ad395a56 | |||
| c4247b71b2 | |||
| 5a51984db1 | |||
| b75abf9ba3 | |||
| f39c428ac5 | |||
| 60f0b2ff87 | |||
| 6242a60134 | |||
| dd198b89c0 | |||
| 2cfcf3c512 | |||
| 29bd5a7daa | |||
| 975b0cd374 | |||
| a0ebea2049 | |||
| cc8e88aec8 | |||
| 11d47efc7a | |||
| c7154edb4d | |||
| 5559f91fae | |||
| 3dd71f207d | |||
| 7776fb8548 | |||
| 7954542a86 | |||
| a1c45be517 | |||
| bab5a37970 | |||
| da1162f770 | |||
| abc8b4aa4e | |||
| 60c7b5b10f | |||
| a939b821a7 | |||
| 14150647bc | |||
| 1b265bf291 | |||
| ac279a1637 | |||
| 6ed06539be | |||
| b5242e3be0 | |||
| 84ac00e953 | |||
| 822e75b501 | |||
| e2c6825cd2 | |||
| fdcc5b5ee1 | |||
| 4f438917f1 | |||
| 250aecb683 | |||
| 4ca2b60f91 | |||
| e305db41ce | |||
| 6ad63349c1 | |||
| d0646a37dc | |||
| b80e0cb996 | |||
| 5b65c9ce87 | |||
| f07f92e30d | |||
| 594c161622 | |||
| 0570b57a99 | |||
| 727bcf1fde | |||
| 699bee06c3 | |||
| ab337e8de0 | |||
| 381f74a26e | |||
| 471043c5c4 | |||
| 29c8702c35 | |||
| 0b82d74262 | |||
| 5cb5dc197a | |||
| 664ca1bbf2 | |||
| efa7c81ca8 | |||
| 2874513e0a | |||
| 51d9b5056d | |||
| 3c219be3c7 | |||
| cc8f2117f8 | |||
| 230f9e9a35 | |||
| d468567a12 | |||
| d3d36ff73c | |||
| 4897cdf60f | |||
| ef8db98e5c | |||
| d9e57f5651 | |||
| e50c6a5efb | |||
| a331432030 | |||
| ac338268c9 | |||
| 1354bf8815 | |||
| ed1469d3b1 | |||
| 6b8277f152 | |||
| 2d69fea6d2 | |||
| af916f28f4 | |||
| 7c2db57965 | |||
| b13836f3cf | |||
| 2bd483c273 | |||
| 217a375517 | |||
| 97a42e4f7d | |||
| 113237964d | |||
| a3afe44ca6 | |||
| b60b06ad76 | |||
| 902158671a | |||
| 1873d67093 | |||
| 2629a580a1 | |||
| cfc81d5aca | |||
| 72ae5cacd4 |
+35
@@ -0,0 +1,35 @@
|
||||
*.so
|
||||
*.o
|
||||
*.s
|
||||
Makefile
|
||||
Makefile.inc
|
||||
autom4te.cache/
|
||||
config.cache
|
||||
config.log
|
||||
config.status
|
||||
include/sysconf.h
|
||||
include/version.h
|
||||
include/language.h
|
||||
lang/language.h
|
||||
src/bin/anoperc
|
||||
lang/cat
|
||||
lang/de
|
||||
lang/en_us
|
||||
lang/es
|
||||
lang/fr
|
||||
lang/gr
|
||||
lang/hun
|
||||
lang/index
|
||||
lang/it
|
||||
lang/langcheck
|
||||
lang/langcomp
|
||||
lang/nl
|
||||
lang/pl
|
||||
lang/pt
|
||||
lang/ru
|
||||
lang/tr
|
||||
lang/ja_utf8
|
||||
src/services
|
||||
src/tools/anopesmtp
|
||||
src/tools/db-merger
|
||||
src/tools/epona2anope
|
||||
@@ -0,0 +1,3 @@
|
||||
branches:
|
||||
except:
|
||||
- 1.8
|
||||
@@ -1,5 +1,157 @@
|
||||
Anope Version 1.8 SVN
|
||||
Anope Version 1.8.9
|
||||
-------------------
|
||||
06/05 F Fixed modules being loaded regardless of the load abort signal. [#1527]
|
||||
08/16 F Fixed hs_request to show requested ident in memos [#1545]
|
||||
08/16 F Fix kick reason in cs_suspend/cs_forbid if no reason is given [#1544]
|
||||
12/09 F Fix undefined symbol error on Solaris11 [ #00]
|
||||
|
||||
Provided by Michael Wobst - 2013
|
||||
05/25 U Update Hybrid protocol module to support Hybrid 8.1
|
||||
06/21 U Update Hybrid protocol module to support vhosts
|
||||
|
||||
Anope Version 1.8.8
|
||||
-------------------
|
||||
01/29 F Fixed user modes on BotServ bots on Unreal3.2.10 [#1474]
|
||||
02/13 F Do not allow invalid nicknames to be forbidden in ns_forbid [ #00]
|
||||
|
||||
Provided by Ryuunosuke Ayanokouzi - 2013
|
||||
02/17 A Added Japanese language support [ #00]
|
||||
|
||||
Provided by Anope Dev. <team@anope.org> - 2012
|
||||
02/22 F Fixed several grammar errors in docs/ (patch provided by Simba) [ #00]
|
||||
02/25 F Do not allow akill masks to end in @ [#1380]
|
||||
07/14 F Fixed crash with cs_enforce and empty permanent channels [ #00]
|
||||
12/23 A Added Hybrid 8.0 support. (Patch provided by Hybrid Team) [ #00]
|
||||
12/23 R Removed experimental Hybrid 7.0 support. [ #00]
|
||||
|
||||
Provided by Anope Dev. <team@anope.org> - 2011
|
||||
12/31 F Fixed os_svsnick to allow changing the case of a users' nick [#1369]
|
||||
|
||||
Anope Version 1.8.7
|
||||
-------------------
|
||||
08/18 A Added support for Hybrid's channel mode +S [#1319]
|
||||
08/18 A Added support for Hybrid's channel mode +O [#1320]
|
||||
08/21 A Added internal event when a nickcore is dropped. [ #00]
|
||||
08/21 A Added internal event when a nickcore gets a new display nick. [ #00]
|
||||
08/18 R Removed support for Hybrid's (old) channel mode +a [#1318]
|
||||
12/15 C Added API support for SVSJOIN and SVSPART on UltimateIRCd 3. [ #00]
|
||||
05/30 F Fixed removing vhosts on InspIRCd when m_cloaking is unloaded [#1273]
|
||||
07/23 F Fixed a potential crash in the badwords kicker [ #00]
|
||||
08/09 F Fixed deopping the first user to join a channel during a burst [#1287]
|
||||
08/10 F Fixed loading bs_fantasy_owner on InspIRCd 2.0 on startup [ #00]
|
||||
08/21 F Send DROP event when forbidding nicks and channels. [ #00]
|
||||
11/16 F Fixed ident being used instead of vident in some comparisons. [ #00]
|
||||
11/20 F Fixed ignore not matching against users' real host or IP. [ #00]
|
||||
12/06 F Fixed some typos in the spanish language file [ #00]
|
||||
|
||||
Anope Version 1.8.6
|
||||
-------------------
|
||||
10/31 A Added support for plexus3's channel mode +z [#1202]
|
||||
02/23 A Added account tracking support to ratbox protocol module [ #00]
|
||||
03/21 A Added support for Hybrid's m_services and m_change [ #00]
|
||||
03/28 A Added internal events called when a module is loaded/unloaded. [ #00]
|
||||
03/28 A Added internal events called when a command is added/deleted. [ #00]
|
||||
09/11 F Fixed db-convert handling some vhost collisions [ #00]
|
||||
09/14 F Fixed ./configure failing with partial SQL installations [ #00]
|
||||
09/28 F Fixed ForkForMail to always work [ #00]
|
||||
09/28 F Fixed /nickserv saset display to use nicktracking if enabled [#1193]
|
||||
09/28 F Fixed /nickserv group to use nicktracking if enabled [#1194]
|
||||
12/12 F Remove vhost requests from nicks that expire [ #00]
|
||||
12/15 F Fixed /cs enforce #channel to say SET was enforced not (null) [#1213]
|
||||
12/23 F Fixed /cs (un)ban and akick from matching users real hosts/IP [#1079]
|
||||
01/19 F Fixed 'make install' recompiling src/tools [#1227]
|
||||
01/21 F Fixed many incorrect apostrophe usages [#1223]
|
||||
01/28 F Fixed not introducing our clients with usermode k on InspIRCd2.0[ #00]
|
||||
01/29 F Updated german language file. [ #00]
|
||||
02/05 F Fixed wiki URLs in Windows configure script [ #00]
|
||||
02/11 F Fixed build on Mac [ #00]
|
||||
02/23 F Fixed rejoining our clients if they are kicked on a TS6 IRCd [ #00]
|
||||
03/02 F Fixed showing SENDPASS in HELP to users who can't use it [ #00]
|
||||
03/03 F Fixed opping our clients on ratbox when not using TS6 [ #00]
|
||||
03/04 F Fixed setting a users host in InspIRCd when vhost is turned off [ #00]
|
||||
03/24 F Fixed groups display nick showing in HS req memos for aliases. [#1252]
|
||||
04/28 F Fixed missing NS REGISTER reply when ns_register is not loaded. [#1263]
|
||||
05/02 F Fixed crash in enc_md5 on Mac [#1236]
|
||||
|
||||
Anope Version 1.8.5
|
||||
-------------------
|
||||
05/05 A Added an internal event called when a nick is requested [ #00]
|
||||
05/09 A Added an Atheme to Anope database converter [ #00]
|
||||
05/12 A Added logging for stateful commands [ #00]
|
||||
05/22 A Added an internal event called when a nick is ghosted [ #00]
|
||||
05/22 A Added an internal event called when a nick is recovered [ #00]
|
||||
05/23 A Added old nick parameter to EVENT_CHANGE_NICK [ #00]
|
||||
08/13 A Added forking for mail sending on supporting operating systems [ #00]
|
||||
09/05 A Added InspIRCd 2.0 support [ #00]
|
||||
10/31 A Added support for Plexus3's channel mode +z [#1202]
|
||||
04/15 F Fixed os_info to backup its database on Windows [ #00]
|
||||
04/15 F Fixed a potential crash in cs_clear ops when using UnrealIRCd [#1154]
|
||||
04/16 F Fixed missing TS6SID on FJOIN in inspircd12 [ #00]
|
||||
04/19 F Fixed ns_info to show nick expire times to opers not only admins[ #00]
|
||||
04/28 F Fixed a bug that could make some nick requests disappear [ #00]
|
||||
05/18 F Fixed English and grammar in e-mail messages [ #00]
|
||||
05/23 F Fixed SQUITing juped servers on InspIRCd 1.2 [#1165]
|
||||
06/15 F Fixed ./Config to correctly load config.cache [ #00]
|
||||
06/24 F Fixed pseudo-client kills not being detected on some TS6 IRCDs. [ #00]
|
||||
07/01 F Fixed encrypting very long passwords when registering [#1172]
|
||||
08/03 F Fixed tracking users vhosts when there is no vhost mode [#1178]
|
||||
08/05 F Fixed tracking of our clients after nick changing on InspIRCd [#1180]
|
||||
09/10 F Fixed pseudo-clients always getting oper on InspIRCd. [ #00]
|
||||
|
||||
Provided by Han` <Han@mefalcon.org> - 2010
|
||||
08/14 F Updated german language file. [ #00]
|
||||
|
||||
Anope Version 1.8.4
|
||||
-------------------
|
||||
03/10 A Added support for tracking permanent channels [ #00]
|
||||
03/24 A Added logging of deleting and clearing XOP access lists [ #00]
|
||||
02/09 F Fixed marking halfops as deopped, stops unsetting modes by them [#1136]
|
||||
02/18 F Fixed listing unconfirmed nicks with suspended nicks to SA+ [ #00]
|
||||
03/02 F Fixed a bug that could cause access entries to disappear [ #00]
|
||||
03/13 F Fixed maximum hostname checking in HS SET and HS REQUEST [#1138]
|
||||
03/13 F Fixed deleting force dropped nicks from the hs_waiting list [#1139]
|
||||
03/13 F Fixed backing up 3rd party module DBs more than once a day [#1140]
|
||||
03/16 F Fixed os_info to display syntax errors if no command is entered [ #00]
|
||||
03/29 F Fixed defcon to only apply its mode parameters when it's on [#1146]
|
||||
03/29 F Fixed numbering of memos when saved in SQL [#1149]
|
||||
03/30 F Fixed module demos to work correctly on TS6 IRCDs [ #00]
|
||||
04/03 F Fixed saving databases in readonly mode when using anoperc [ #00]
|
||||
|
||||
Anope Version 1.8.3
|
||||
-------------------
|
||||
Provided by Anope Dev. <team@anope.org> - 2009
|
||||
10/05 A Added InspIRCd 1.2 support. [ #00]
|
||||
07/31 F Fixed anope sending umode change using channels' syntax. [ #00]
|
||||
07/31 F Fixed TS6 UUID issue while parsing modechanges. [ #00]
|
||||
08/01 F Fixed several memory leaks in HostServ. [ #00]
|
||||
08/01 F Fixed several memory leaks in HostServ. [ #00]
|
||||
08/03 F Fixed TS6 SID issue when introducing new servers. [ #00]
|
||||
08/19 F Fixed NS SASET displaying wrong language. [#1094]
|
||||
08/24 F Fixed entry_match() failing when given no username. [ #00]
|
||||
08/27 F Fixed NS SUSPEND not being shown to services opers. [#1099]
|
||||
08/27 F Fixed NS UNSUSPEND not being shown to services opers. [#1100]
|
||||
08/27 F Fixed services sending no or wrong help to opers. [#1102]
|
||||
08/27 F Fixed services sending no or wrong help to opers. [#1103]
|
||||
08/27 F Fixed services sending no or wrong help to opers. [#1104]
|
||||
08/29 F Fixed defcon failing to set and remove modes. [#1101]
|
||||
08/30 F Fixed MLOCK superseding DEFCON mode lock. [ #00]
|
||||
09/09 F Fixed number of TS6 compatibility issues. [#1096]
|
||||
10/06 F Fixed CS FORBID not clearing excepts & invites. [#1097]
|
||||
11/25 F Fixed a number of major XOP related issues. [ #00]
|
||||
11/25 F Fixed a bug in CLEAR OPS causing incorrect mode removal. [#1114]
|
||||
12/01 F Fixed tracking of users host when they disable their vhost [#1106]
|
||||
12/20 F Fixed nickcores access list being loaded from SQL with RDB [ #00]
|
||||
01/15 F Fixed BotServ from kicking and banning ULined clients [#1135]
|
||||
|
||||
Provided by Han` <Han@mefalcon.org> - 2009
|
||||
07/28 F Updated german language file. [ #00]
|
||||
07/28 F Added german language support to hs_request.c. [ #00]
|
||||
|
||||
Provided by Yusuf Kurekci <ysfm.20@gmail.com> - 2009
|
||||
08/11 F Updated Turkish language file. [ #00]
|
||||
|
||||
Provided by Christopher N. <saka@epiknet.org> - 2009
|
||||
09/20 F Updated French language file. [ #00]
|
||||
|
||||
Anope Version 1.8.2
|
||||
-------------------
|
||||
|
||||
+77
-2
@@ -1,5 +1,80 @@
|
||||
Anope Version 1.8 SVN
|
||||
---------------------
|
||||
Anope Version 1.8.9
|
||||
-------------------
|
||||
** ADDED CONFIGURATION DIRECTIVES **
|
||||
|
||||
** MODIFIED CONFIGURATION DIRECTIVES **
|
||||
|
||||
** DELETED CONFIGURATION DIRECTIVES **
|
||||
|
||||
Anope Version 1.8.8
|
||||
-------------------
|
||||
** ADDED CONFIGURATION DIRECTIVES **
|
||||
|
||||
** MODIFIED CONFIGURATION DIRECTIVES **
|
||||
|
||||
** DELETED CONFIGURATION DIRECTIVES **
|
||||
|
||||
|
||||
Anope Version 1.8.7
|
||||
-------------------
|
||||
** ADDED CONFIGURATION DIRECTIVES **
|
||||
|
||||
** MODIFIED CONFIGURATION DIRECTIVES **
|
||||
|
||||
** DELETED CONFIGURATION DIRECTIVES **
|
||||
|
||||
|
||||
Anope Version 1.8.6
|
||||
-------------------
|
||||
** ADDED CONFIGURATION DIRECTIVES **
|
||||
|
||||
** MODIFIED CONFIGURATION DIRECTIVES **
|
||||
|
||||
** DELETED CONFIGURATION DIRECTIVES **
|
||||
|
||||
|
||||
Anope Version 1.8.5
|
||||
-------------------
|
||||
** ADDED CONFIGURATION DIRECTIVES **
|
||||
|
||||
# ForkForMail [OPTIONAL]
|
||||
#
|
||||
# When enabled, services will fork when sending mail, which means there is no
|
||||
# services lag from mail. This is only supported on operating systems that allow
|
||||
# the use of forking (eg, not Windows).
|
||||
#
|
||||
|
||||
#ForkForMail
|
||||
|
||||
inspircd20 - IRCDModule
|
||||
|
||||
** MODIFIED CONFIGURATION DIRECTIVES **
|
||||
|
||||
# DefSessionLimit <limit> [REQUIRED]
|
||||
# Default session limit per host. Once a host reaches it's session limit,
|
||||
# all clients attempting to connect from that host will be killed.
|
||||
|
||||
DefSessionLimit 3
|
||||
|
||||
** DELETED CONFIGURATION DIRECTIVES **
|
||||
|
||||
|
||||
Anope Version 1.8.4
|
||||
-------------------
|
||||
** ADDED CONFIGURATION DIRECTIVES **
|
||||
|
||||
** MODIFIED CONFIGURATION DIRECTIVES **
|
||||
|
||||
** DELETED CONFIGURATION DIRECTIVES **
|
||||
|
||||
|
||||
Anope Version 1.8.3
|
||||
-------------------
|
||||
** ADDED CONFIGURATION DIRECTIVES **
|
||||
inspircd12 - IRCDModule
|
||||
** MODIFIED CONFIGURATION DIRECTIVES **
|
||||
|
||||
** DELETED CONFIGURATION DIRECTIVES **
|
||||
|
||||
Anope Version 1.8.2
|
||||
-------------------
|
||||
|
||||
+65
-2
@@ -1,5 +1,68 @@
|
||||
Anope Version 1.8 SVN
|
||||
---------------------
|
||||
Anope Version 1.8.9
|
||||
-------------------
|
||||
*** New Strings:
|
||||
|
||||
*** Mod Strings:
|
||||
|
||||
*** Del Strings:
|
||||
|
||||
|
||||
Anope Version 1.8.8
|
||||
-------------------
|
||||
*** New Strings:
|
||||
|
||||
*** Mod Strings:
|
||||
|
||||
*** Del Strings:
|
||||
|
||||
|
||||
Anope Version 1.8.7
|
||||
-------------------
|
||||
*** New Strings:
|
||||
|
||||
*** Mod Strings:
|
||||
|
||||
*** Del Strings:
|
||||
|
||||
|
||||
Anope Version 1.8.6
|
||||
-------------------
|
||||
*** New Strings:
|
||||
|
||||
*** Mod Strings:
|
||||
|
||||
*** Del Strings:
|
||||
|
||||
|
||||
Anope Version 1.8.5
|
||||
-------------------
|
||||
*** New Strings:
|
||||
|
||||
*** Mod Strings:
|
||||
|
||||
*** Del Strings:
|
||||
|
||||
|
||||
Anope Version 1.8.4
|
||||
-------------------
|
||||
*** New Strings:
|
||||
|
||||
*** Mod Strings:
|
||||
NICK_HELP_LIST
|
||||
|
||||
*** Del Strings:
|
||||
|
||||
|
||||
Anope Version 1.8.3
|
||||
-------------------
|
||||
*** New Strings:
|
||||
|
||||
*** Mod Strings:
|
||||
NEWS_HELP_LOGON
|
||||
NEWS_HELP_OPER
|
||||
NEWS_HELP_RANDOM
|
||||
|
||||
*** Del Strings:
|
||||
|
||||
Anope Version 1.8.2
|
||||
-------------------
|
||||
|
||||
+27
-2
@@ -1,5 +1,30 @@
|
||||
Anope Version 1.8 SVN
|
||||
---------------------
|
||||
Anope Version 1.8.9
|
||||
-------------------
|
||||
- NONE
|
||||
|
||||
Anope Version 1.8.8
|
||||
-------------------
|
||||
- NONE
|
||||
|
||||
Anope Version 1.8.7
|
||||
-------------------
|
||||
- NONE
|
||||
|
||||
Anope Version 1.8.6
|
||||
-------------------
|
||||
- NONE
|
||||
|
||||
Anope Version 1.8.5
|
||||
-------------------
|
||||
- NONE
|
||||
|
||||
Anope Version 1.8.4
|
||||
-------------------
|
||||
- NONE
|
||||
|
||||
Anope Version 1.8.3
|
||||
-------------------
|
||||
ALTER TABLE `anope_ns_access` DROP INDEX `display` ;
|
||||
|
||||
Anope Version 1.8.2
|
||||
-------------------
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#
|
||||
# Configuration script for Services.
|
||||
#
|
||||
# Anope (c) 2003-2007 Anope team
|
||||
# Anope (c) 2003-2014 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# This program is free but copyrighted software; see the file COPYING for
|
||||
@@ -29,7 +29,7 @@ Load_Cache () {
|
||||
if [ -f config.cache -a -r config.cache -a ! "$IGNORE_CACHE" ] ; then
|
||||
echo "Using defaults from config.cache. To ignore, ./Config -nocache"
|
||||
echo ""
|
||||
. config.cache
|
||||
. ./config.cache
|
||||
CAN_QUICK="yes"
|
||||
else
|
||||
CAN_QUICK="no"
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
# Makefile for Anope.
|
||||
#
|
||||
# (C) 2003-2009 Anope Team
|
||||
# (C) 2003-2014 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# This program is free but copyrighted software; see the file COPYING for
|
||||
@@ -44,7 +44,7 @@ spotless:
|
||||
-@erase include\language.h include\version.h *.manifest *~ anope.exe version.sh.exe *.obj anopesmtp.exe
|
||||
-@echo --
|
||||
-@echo NOTICE:
|
||||
-@echo You will need to run cscript /nologo install.js again
|
||||
-@echo You will need to run config.bat again
|
||||
-@echo --
|
||||
|
||||
mypasql:
|
||||
|
||||
+10
-8
@@ -1,6 +1,6 @@
|
||||
dnl autoconf.in for Services.
|
||||
dnl
|
||||
dnl Anope (c) 2003-2007 Anope team
|
||||
dnl Anope (c) 2003-2014 Anope Team
|
||||
dnl Contact us at team@anope.org
|
||||
|
||||
dnl This program is free but copyrighted software; see the file COPYING for
|
||||
@@ -99,8 +99,9 @@ AC_ARG_WITH(mysql, [ --without-mysql Do not use MySQL or attempt to fin
|
||||
fi
|
||||
CFLAGS="$CFLAGS $MYSQL_CFLAGS"
|
||||
LDFLAGS="$LDFLAGS $MYSQL_LDFLAGS"
|
||||
LIBS="$MYSQL_LDFLAGS"
|
||||
echo $ECHO_N "checking if mysql_config produces valid values... $ECHO_C" >&6
|
||||
AC_TRY_RUN([
|
||||
AC_RUN_IFELSE([AC_LANG_SOURCE([[
|
||||
#include <mysql.h>
|
||||
|
||||
int main()
|
||||
@@ -109,7 +110,7 @@ int main()
|
||||
|
||||
return 0;
|
||||
}
|
||||
], ac_cv_mysql_valid=yes, ac_cv_mysql_valid=no)
|
||||
]])],[ac_cv_mysql_valid=yes],[ac_cv_mysql_valid=no],[])
|
||||
echo $ac_cv_mysql_valid >&6
|
||||
if test "$ac_cv_mysql_valid" = "yes"; then
|
||||
AC_DEFINE_UNQUOTED(USE_MYSQL,1,"Use Mysql")
|
||||
@@ -122,12 +123,13 @@ int main()
|
||||
else
|
||||
CFLAGS="$hold_cflags"
|
||||
LDFLAGS="$hold_ldflags"
|
||||
LIBS=""
|
||||
fi
|
||||
fi
|
||||
])
|
||||
|
||||
AC_MSG_CHECKING(whether this is a bit or little endian system)
|
||||
AC_TRY_RUN([
|
||||
AC_RUN_IFELSE([AC_LANG_SOURCE([[
|
||||
int main()
|
||||
{
|
||||
short s = 1;
|
||||
@@ -135,12 +137,12 @@ int main()
|
||||
unsigned char c = *((char*)ptr);
|
||||
return c;
|
||||
}
|
||||
]
|
||||
, AC_DEFINE(BIG_ENDIAN)
|
||||
|
||||
]])],[AC_DEFINE(BIG_ENDIAN)
|
||||
AC_MSG_RESULT(big)
|
||||
, AC_DEFINE(LITTLE_ENDIAN)
|
||||
],[AC_DEFINE(LITTLE_ENDIAN)
|
||||
AC_MSG_RESULT(little)
|
||||
)
|
||||
],[])
|
||||
|
||||
AC_SUBST(ANOPELIBS)
|
||||
AC_SUBST(LDFLAGS)
|
||||
|
||||
+35
-12
@@ -78,8 +78,10 @@
|
||||
# Bahamut 1.4.27 [or later] - "bahamut"
|
||||
# Charybdis 1.0 [or later] - "charybdis"
|
||||
# DreamForge 4.6.7 - "dreamforge"
|
||||
# Hybrid IRCd 7.0 [experimental] - "hybrid"
|
||||
# Hybrid IRCd 8.1 - "hybrid"
|
||||
# InspIRCd 1.1 [beta 8 or later] - "inspircd11"
|
||||
# InspIRCd 1.2 [RC3 or later] - "inspircd12"
|
||||
# InspIRCd 2.0 - "inspircd20"
|
||||
# Plexus 3.0 [or later] - "plexus3"
|
||||
# Plexus 2.0 [or later] - "plexus2"
|
||||
# PTLink 6.15.0 [experimental] - "ptlink"
|
||||
@@ -107,9 +109,10 @@
|
||||
# This determines how the passwords are stored in the databases,
|
||||
# and does not add any security as far as transmitting passwords over
|
||||
# the network goes.
|
||||
#
|
||||
# enc_none provides no password encryption, storing the password in
|
||||
# plain text, this is the most versiatle as passwords can easily be
|
||||
# recovered.
|
||||
# plain text, this is the most versatile as passwords can easily be
|
||||
# recovered but is not secure and therefore not recommended for use.
|
||||
#
|
||||
# NOTE: users of anope's previous (broken) md5 implementation should
|
||||
# select the enc_old option, or things may break.
|
||||
@@ -124,7 +127,7 @@
|
||||
# SHA1 - enc_sha1
|
||||
#
|
||||
|
||||
EncModule "enc_none"
|
||||
EncModule "enc_md5"
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
@@ -192,9 +195,9 @@ ChanCoreModules "cs_help cs_register cs_identify cs_set cs_xop cs_access cs_akic
|
||||
# RemoteServer2 (if defined). If they can't connect to RemoteServer2,
|
||||
# they will use RemoteServer3 (if defined).
|
||||
|
||||
RemoteServer localhost 6667 "mypass"
|
||||
#RemoteServer2 localhost 6667 "mypass"
|
||||
#RemoteServer3 localhost 6667 "mypass"
|
||||
RemoteServer 127.0.0.1 6667 "mypass"
|
||||
#RemoteServer2 127.0.0.1 6667 "mypass"
|
||||
#RemoteServer3 127.0.0.1 6667 "mypass"
|
||||
|
||||
# LocalAddress <hostname> [port] [OPTIONAL]
|
||||
# Specifies the local address to bind to before connecting to the
|
||||
@@ -347,9 +350,19 @@ NetworkName "LocalNet"
|
||||
|
||||
# Numeric [OPTIONAL]
|
||||
# Many ircd identify themselves with a Numeric ID when using this option
|
||||
# consult your ircds documentation before using this
|
||||
# consult your ircds documentation before using this.
|
||||
#
|
||||
# This option is REQUIRED when linking to InspIRCd 1.2. Then this should
|
||||
# contain the services SID and must be in the following form:
|
||||
# [0-9][A-Z0-9][A-Z0-9]
|
||||
# An example is shown below.
|
||||
|
||||
#Numeric "64"
|
||||
|
||||
# TS6 (InspIRCd 1.2+) compliant:
|
||||
|
||||
#Numeric "3AX"
|
||||
|
||||
# NickLen [RECOMMENDED]
|
||||
# Set this to the maximum allowed nick length on your network. Anope does
|
||||
# not support values larger than 31, so setting them makes no sense. Be
|
||||
@@ -611,13 +624,15 @@ UnRestrictSAdmin
|
||||
# can set channel modes and we will not attempt to take them from them
|
||||
# WARNING: do not put your user servers in this option
|
||||
|
||||
UlineServers "stats.your.network proxy.your.network"
|
||||
UlineServers "stats.your.network"
|
||||
|
||||
# UseTS6 [OPTIONAL]
|
||||
#
|
||||
# Modern hybrid ircd like Ratbox 2.0.x support a protocol called TS6.
|
||||
# However this protocol is optional thus our default support is for without
|
||||
# TS6, if you want to take advantage of TS6, enable this option.
|
||||
#
|
||||
# This option is REQUIRED when linking to InspIRCd 1.2.
|
||||
|
||||
#UseTS6
|
||||
|
||||
@@ -688,6 +703,15 @@ MailDelay 5m
|
||||
|
||||
#DontQuoteAddresses
|
||||
|
||||
# ForkForMail [OPTIONAL]
|
||||
#
|
||||
# When enabled, services will fork when sending mail, which means there is no
|
||||
# services lag from mail. This is only supported on operating systems that allow
|
||||
# the use of forking (eg, not Windows).
|
||||
#
|
||||
|
||||
#ForkForMail
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
# NickServ configuration
|
||||
@@ -1281,8 +1305,7 @@ LimitSessions
|
||||
|
||||
# DefSessionLimit <limit> [REQUIRED]
|
||||
# Default session limit per host. Once a host reaches it's session limit,
|
||||
# all clients attempting to connect from that host will be killed. A value
|
||||
# of zero means an unlimited session limit.
|
||||
# all clients attempting to connect from that host will be killed.
|
||||
|
||||
DefSessionLimit 3
|
||||
|
||||
@@ -1476,7 +1499,7 @@ OSOpersOnly
|
||||
# MysqlSock defines the Mysql UNIX socket
|
||||
# MysqlPort defines the Mysql TCP port
|
||||
#
|
||||
#MysqlHost "localhost"
|
||||
#MysqlHost "127.0.0.1"
|
||||
#MysqlUser "Anonymous"
|
||||
#MysqlPass ""
|
||||
#MysqlName "anope"
|
||||
|
||||
+1
-2
@@ -226,8 +226,7 @@ CREATE TABLE anope_ns_access (
|
||||
display varchar(255) NOT NULL default '',
|
||||
access text NOT NULL,
|
||||
active tinyint(1) NOT NULL default '1',
|
||||
PRIMARY KEY (na_id),
|
||||
UNIQUE KEY display (display)
|
||||
PRIMARY KEY (na_id)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
Reported Bugs from Bugzilla: http://bugs.anope.org/
|
||||
Reported Bugs from Tracker: http://bugs.anope.org/
|
||||
---------------------------------------------------
|
||||
|
||||
|
||||
|
||||
+260
-252
@@ -1,339 +1,347 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
675 Mass Ave, Cambridge, MA 02139, USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
|
||||
Preamble
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Lesser General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the entire
|
||||
whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
b) Accompany it with a written offer, valid for at least three years,
|
||||
to give any third party, for a charge no more than your cost of
|
||||
physically performing source distribution, a complete machine-readable
|
||||
copy of the corresponding source code, to be distributed under the terms
|
||||
of Sections 1 and 2 above on a medium customarily used for software
|
||||
interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is allowed
|
||||
only for noncommercial distribution and only if you received the program
|
||||
in object code or executable form with such an offer, in accord with
|
||||
Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent license
|
||||
would not permit royalty-free redistribution of the Program by all those
|
||||
who receive copies directly or indirectly through you, then the only way
|
||||
you could satisfy both it and this License would be to refrain entirely
|
||||
from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is implemented
|
||||
by public license practices. Many people have made generous contributions
|
||||
to the wide range of software distributed through that system in reliance
|
||||
on consistent application of that system; it is up to the author/donor to
|
||||
decide if he or she is willing to distribute software through any other
|
||||
system and a licensee cannot impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
This section is intended to make thoroughly clear what is believed to be
|
||||
a consequence of the rest of this License.
|
||||
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
Appendix: How to Apply These Terms to Your New Programs
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make
|
||||
it free software which everyone can redistribute and change under
|
||||
these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) 19yy <name of author>
|
||||
<one line to give the program's name and an idea of what it does.>
|
||||
Copyright (C) yyyy name of author
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
of the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301, USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) 19yy name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
|
||||
type `show w'. This is free software, and you are welcome
|
||||
to redistribute it under certain conditions; type `show c'
|
||||
for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License.
|
||||
|
||||
|
||||
|
||||
+75
-15
@@ -183,9 +183,9 @@ Anope Internal Events
|
||||
|
||||
EVENT_BOT_BAN
|
||||
A BotServ bot has banned a user, e.g. kickers.
|
||||
av[0] The nick of the user banned.
|
||||
av[1] The Channel the user was banned from.
|
||||
av[2] The mask that was banned.
|
||||
av[0] The nick of the user banned.
|
||||
av[1] The Channel the user was banned from.
|
||||
av[2] The mask that was banned.
|
||||
|
||||
EVENT_BOT_CHANGE
|
||||
The properties of a BotServ bot have been changed.
|
||||
@@ -214,10 +214,10 @@ Anope Internal Events
|
||||
|
||||
EVENT_BOT_FANTASY_NO_ACCESS
|
||||
A fantasy command of the bot has been triggered by someone without
|
||||
access to BotServ FANTASY commands on the channel. This will NOT
|
||||
trigger if someone with access has triggered a fantasy command; use
|
||||
EVENT_BOT_FANTASY for those. Hook to both events to catch both event
|
||||
triggers.
|
||||
access to BotServ FANTASY commands on the channel. This will NOT
|
||||
trigger if someone with access has triggered a fantasy command; use
|
||||
EVENT_BOT_FANTASY for those. Hook to both events to catch both event
|
||||
triggers.
|
||||
av[0] The fantasy command that has been triggered without leading '!'.
|
||||
av[1] The nickname of the user that has triggered the fantasy
|
||||
command.
|
||||
@@ -234,9 +234,9 @@ Anope Internal Events
|
||||
|
||||
EVENT_BOT_KICK
|
||||
A BotServ bot has kicked a user from a channel.
|
||||
av[0] The name of the user that has been kicked.
|
||||
av[1] The name of the channel the user was kicked from.
|
||||
av[2] The reason for the kick.
|
||||
av[0] The name of the user that has been kicked.
|
||||
av[1] The name of the channel the user was kicked from.
|
||||
av[2] The reason for the kick.
|
||||
|
||||
EVENT_BOT_UNASSIGN
|
||||
A BotServ bot is being unassigned from a channel. This event is being
|
||||
@@ -266,6 +266,10 @@ Anope Internal Events
|
||||
A new channel has been registered.
|
||||
av[0] The name of the channel that has been registered.
|
||||
|
||||
EVENT_NICK_REQUESTED
|
||||
A new nick has been requested, and mail has been sent to confirm the nick.
|
||||
av[0] The name of the nick that was requested
|
||||
|
||||
EVENT_CHAN_SUSPENDED
|
||||
A channel has been suspended (ChanServ SUSPEND).
|
||||
av[0] The name of the channel that has been suspended.
|
||||
@@ -275,8 +279,10 @@ Anope Internal Events
|
||||
av[0] The name of the channel that has been unsuspended.
|
||||
|
||||
EVENT_CHANGE_NICK
|
||||
A user has just changed it's nick.
|
||||
av[0] The new nickname of the user.
|
||||
A user has just changed its nick.
|
||||
av[0] The new nickname of the user. Event is called after the user has been changed
|
||||
to this nickname.
|
||||
av[1] The old nickname of the user.
|
||||
|
||||
EVENT_CONNECT
|
||||
This event is emitted when the connection to our uplink hub is being
|
||||
@@ -308,7 +314,7 @@ Anope Internal Events
|
||||
av[0] The new level of DefCon being invoked.
|
||||
|
||||
EVENT_GROUP
|
||||
A user has grouped it's nickname to another user group.
|
||||
A user has grouped its nickname to another user group.
|
||||
av[0] The nickname of the user that joined the group.
|
||||
|
||||
EVENT_JOIN_CHANNEL
|
||||
@@ -338,16 +344,43 @@ Anope Internal Events
|
||||
A user's nick has just been forbidden.
|
||||
av[0] The nickname that has just been forbidden.
|
||||
|
||||
EVENT_CORE_DROPPED
|
||||
A NickCore will be dropped. Usually send when the last alias is dopped.
|
||||
This is send BEFORE the event that confirms deletion of the alias.
|
||||
Note that this event is send before the core data is removed.
|
||||
av[0] The display nickname of the core that is being dropped.
|
||||
|
||||
EVENT_CORE_NEWDISPLAY
|
||||
The display nick of a NickCore is being changed.
|
||||
This is send BEFORE the actual change is made in the database.
|
||||
av[0] The old display nickname of the core.
|
||||
av[1] The new display nickname of the core.
|
||||
|
||||
EVENT_NICK_GHOSTED
|
||||
A user has just been ghosted.
|
||||
av[0] EVENT_START or EVENT_STOP. EVENT_START when the user is about
|
||||
to be removed from the network, EVENT_STOP when this has been
|
||||
done.
|
||||
av[1] The nickname of the user doing the ghosting.
|
||||
av[2] The nickname being ghosted.
|
||||
|
||||
EVENT_NICK_IDENTIFY
|
||||
A user has just identified for it's nickname with NickServ.
|
||||
A user has just identified for its nickname with NickServ.
|
||||
av[0] The nickname of the user that just identified.
|
||||
|
||||
EVENT_NICK_LOGOUT
|
||||
A user has just (been) logged out.
|
||||
av[0] The nickname of the user that has (been) logged out.
|
||||
|
||||
EVENT_NICK_RECOVERED
|
||||
A user's nickname has just been recovered.
|
||||
av[0] EVENT_START or EVENT_STOP. EVENT_START when the user is about
|
||||
to be recovered, EVENT_STOP when this has been done.
|
||||
av[1] The nickname of the user doing the recovery.
|
||||
av[2] The nickname being recovered.
|
||||
|
||||
EVENT_NICK_REGISTERED
|
||||
A new user has just registered it's nickname. This event is being
|
||||
A new user has just registered its nickname. This event is being
|
||||
emitted when the registration is completed, but the user modes have not
|
||||
yet been set.
|
||||
av[0] The nickname of the newly registered user.
|
||||
@@ -414,3 +447,30 @@ Anope Internal Events
|
||||
A user has left the network. This event is emitted before the internal
|
||||
removal is performed, so the user still exists internally.
|
||||
av[0] The nickname of the user leaving the network.
|
||||
|
||||
EVENT_MODLOAD
|
||||
A module has been loaded. This event is emitted after the loading
|
||||
sequence has been finished: AnopeInit() has been called and the
|
||||
module has already been added to the modules table.
|
||||
av[0] Name of the loaded module.
|
||||
|
||||
EVENT_MODUNLOAD
|
||||
A module has been unloaded. This event is emitted when the unloading
|
||||
sequence is almost complete: AnopeFini() has been called and all
|
||||
commands, hooks and callbacks have been removed. The module itself
|
||||
is still in memory however.
|
||||
av[0] Name of the unloaded module.
|
||||
|
||||
EVENT_ADDCOMMAND
|
||||
A command hook has been added to anopes command table.
|
||||
Note that the command may have previously existed and merely a new hook
|
||||
was added before or after an existing command hook.
|
||||
av[0] Name of the module adding the command.
|
||||
av[1] Name of the command hook that was added.
|
||||
|
||||
EVENT_DELCOMMAND
|
||||
A command hook has been removed from anopes command table.
|
||||
Note that the command may still exist in anopes command table if other
|
||||
modules have hooks for the same command.
|
||||
av[0] Name of the module deleting the command.
|
||||
av[1] Name of the command hook that was removed.
|
||||
|
||||
+22
-6
@@ -73,7 +73,8 @@ Note: You should also read the README and FAQ files!
|
||||
section 1. There are however a few specific guidelines:
|
||||
|
||||
* IMPORTANT: Back up your old databases!
|
||||
* If you are upgrading to a new major release, ALWAYS restart a
|
||||
* Check Changes.conf for the new version for small config changes.
|
||||
* If you are upgrading to a new major release, create a
|
||||
fresh configuration file from example.conf.
|
||||
|
||||
3) Setting up the IRCd
|
||||
@@ -115,21 +116,34 @@ Note: You should also read the README and FAQ files!
|
||||
Don't forget to /rehash your IRCd to apply changes.
|
||||
|
||||
A new trend in ircd configuration is popping all over the place, good
|
||||
examples are the latest Hybrid, Unreal and Bahamut, which use a more
|
||||
examples are the latest Hybrid, Unreal, Bahamut & InspIRCd, which use a more
|
||||
"readable" form of configuration. For those, use something like:
|
||||
|
||||
|
||||
UnrealIRCd
|
||||
|
||||
link services.localhost.net
|
||||
{
|
||||
username *;
|
||||
hostname localhost;
|
||||
bind-ip *;
|
||||
port 6667;
|
||||
port 7000;
|
||||
hub *;
|
||||
password-connect "mypass";
|
||||
password-receive "mypass";
|
||||
class servers;
|
||||
};
|
||||
|
||||
InspIRCd
|
||||
|
||||
<link name="services.localhost.net"
|
||||
ipaddr="127.0.0.1"
|
||||
port="7000"
|
||||
allowmask="127.0.0.0/8"
|
||||
sendpass="mypass"
|
||||
recvpass="mypass">
|
||||
|
||||
|
||||
Note that this block-style configuration files differ heavily, depending
|
||||
on the IRCd. Consult the interactive link maker (link is below) for more
|
||||
details on the exact configuration used by your IRCd.
|
||||
@@ -137,7 +151,9 @@ Note: You should also read the README and FAQ files!
|
||||
If you're unable to get a link with your IRCd after reading this section,
|
||||
you might try the interactive link maker, which is located at:
|
||||
|
||||
http://anope.org/ilm.php
|
||||
http://www.anope.org/ilm.php
|
||||
|
||||
Or finally, contact your IRCd Support Community to seek advice.
|
||||
|
||||
4) Starting Anope
|
||||
|
||||
@@ -154,8 +170,8 @@ Note: You should also read the README and FAQ files!
|
||||
to launch Anope with ./services -debug -nofork to see any errors that it
|
||||
encounters, and try to correct them.
|
||||
|
||||
If you need help to solve errors, feel free to subscribe to the Anope
|
||||
mailing list and ask there. See the README file for details.
|
||||
If you need help to solve errors, feel free to visit us on IRC at
|
||||
irc.anope.org #anope and ask there. See the README file for further details.
|
||||
|
||||
5) Setting up a crontab
|
||||
|
||||
|
||||
@@ -15,45 +15,11 @@ How To Add IRCd Support
|
||||
|
||||
A) Make a copy of the .c and .h file of the IRCd that matches the ircd
|
||||
that you are attempting to add support for best.
|
||||
B) Make a backup copy of include/services.h, include/sysconf.h.in
|
||||
C) Make a backup copy of Config and configure.in
|
||||
|
||||
First step in this process is to rename the .c and .h file after the IRCd
|
||||
that you are going to be adding support for. Its recommended that you come
|
||||
up with a name that is clear and easy to understand.
|
||||
|
||||
Now that you have the files that you will need to create your own ircd
|
||||
support, starting with Config. This file is a shell script file; scroll
|
||||
down until you find the list of ircs for the user to select. Indicate
|
||||
the based ircd version which is supported such as a series 1.x or 2.2.x,
|
||||
placing in the comment side an exact version that the support is for or
|
||||
"experimental" if you are not the ircd developer. The next step is to
|
||||
decide how the IRCd will be defined, following the existing examples edit
|
||||
'IRCTYPE_DEF="IRC_RATBOX"' to be the descriptive define for your ircd.
|
||||
|
||||
With the Config file ready to go, edit configure.in and find in there the
|
||||
reference to --with-ircd. You should see the various other ircds, and
|
||||
you will want to add yours in there using the same IRC_ name you came up
|
||||
with above. Important in this step is to make sure that you set the
|
||||
IRCDFILE to the name of the .c file you set in step 1. Once you have the
|
||||
configure.in created you can remove the old configure and at the command
|
||||
prompt type "autconf"; this will generate the new configure file.
|
||||
|
||||
Getting close to actually modify code. Open sysconf.h.in and add two
|
||||
lines for your given ircd, which is similar to this:
|
||||
|
||||
/* "First IRCD type" */
|
||||
#undef IRC_RATBOX
|
||||
|
||||
Open services.h and add a line with the rest of the ircd include files to
|
||||
match the name of the .h file you set in step 1.
|
||||
|
||||
#include "ratbox.h"
|
||||
|
||||
Taking the .c and .h file open them and replace the #ifdef IRC_* with the
|
||||
IRC_ name you set in step two. Ensure that the code comments at the top
|
||||
of the file match the ircd that the code will be for.
|
||||
|
||||
You are now ready to start getting into the code.
|
||||
|
||||
2) Modifying the Header File
|
||||
@@ -65,28 +31,10 @@ How To Add IRCd Support
|
||||
|
||||
Open the .h file and find the section of code with
|
||||
|
||||
#define PROTECT_SET_MODE "+"
|
||||
#define PROTECT_UNSET_MODE "-"
|
||||
#define CS_CMD_PROTECT "PROTECT"
|
||||
#define CS_CMD_DEPROTECT "DEPROTECT"
|
||||
#define FANT_PROTECT_ADD "!protect"
|
||||
#define FANT_PROTECT_DEL "!deprotect"
|
||||
#define LEVEL_PROTECT_WORD "AUTOPROTECT"
|
||||
#define LEVELINFO_PROTECT_WORD "PROTECT"
|
||||
#define LEVELINFO_PROTECTME_WORD "PROTECTME"
|
||||
#define UMODE_a 0x00000001
|
||||
#define UMODE_b 0x00000002
|
||||
|
||||
If the ircd supports a protective/admin (not owner) mode, set the
|
||||
PROTECT_SET_MODE and PROTECT_UNSET_MODE to be that mode. On most ircds
|
||||
it's usermode "a" so you will be setting it to "+a" and "-a". The next
|
||||
two are based more on what this mode is called. When you message ChanServ
|
||||
to get this mode, this is the command you will be using. After this are
|
||||
the fantasy commands which can be used in channel to get these modes. The
|
||||
next three relate to the ACCESS LEVEL list system. Again these are the
|
||||
words to gain these levels in the ACCESS LEVEL system. If your ircd does
|
||||
not have these functions, leave them at what ever value is currently set;
|
||||
the core code will ignore the request of the user.
|
||||
|
||||
Now that this is set, you can define the MODES. All user modes are stored
|
||||
This is where you define the MODES. All user modes are stored
|
||||
with UMODE_ followed by a letter matching the modes case; be careful to
|
||||
use the correct case as this will make it clear when you setup MODES in
|
||||
the .c in a few. Use hex values for the modes so starting at 0x00000001
|
||||
@@ -101,7 +49,10 @@ How To Add IRCd Support
|
||||
|
||||
Finally we come to DEFAULT_MLOCK; this is the mode that services will set
|
||||
by default on channels when they are registered. In general you want this
|
||||
to be what is acceptable by the ircd; in most cases this is "+nt"
|
||||
to be what is acceptable by the ircd; in most cases this is "+ntr". This is
|
||||
expressed by:
|
||||
|
||||
#define DEFAULT_MLOCK CMODE_n | CMODE_t | CMODE_r
|
||||
|
||||
3) The Code
|
||||
|
||||
@@ -113,33 +64,6 @@ How To Add IRCd Support
|
||||
|
||||
The first bit of code you will face is:
|
||||
|
||||
const char version_protocol[] = "Ratbox IRCD";
|
||||
|
||||
This the protocol name which will appear in various places; especially
|
||||
when you do -version at the command prompt, this is where you state the
|
||||
server name. The version is not always needed unless you are showing that
|
||||
the support is for one branch of a ircd family, such as Unreal 3.1 and
|
||||
Unreal 3.2.
|
||||
|
||||
Once you have decided on this little piece of code, you will come to
|
||||
flood mode characters being used for setting and removing. If your IRCd
|
||||
does not support flood modes, you can just use ""; we will be setting if
|
||||
your IRCD supports flooding or not in a little bit.
|
||||
|
||||
const char flood_mode_char_set[] = "+f";
|
||||
const char flood_mode_char_remove[] = "-f";
|
||||
|
||||
The next task that you will face is setting whether the IRCD sends time
|
||||
stamps on modes but does not tell us that it will do so. If it does, set
|
||||
UseTSMODE to 1; if it does not set it to be 0. If you're not sure refer
|
||||
to your IRCd's documentation on how MODE is sent.
|
||||
|
||||
int UseTSMODE = 0;
|
||||
|
||||
Now you've come to the part where you setup your ircd. There are two
|
||||
structs which hold this information; This allows you to quickly setup
|
||||
your specific ircd.
|
||||
|
||||
IRCDVar ircd[] = { }
|
||||
|
||||
This struct contains your basic IRCd functions. Your base source file has
|
||||
@@ -148,7 +72,7 @@ How To Add IRCd Support
|
||||
of each.
|
||||
|
||||
1) Name: This member tells Anope about the IRCD's name. It may contain
|
||||
text about it's name and version. This is used to identify the
|
||||
text about its name and version. This is used to identify the
|
||||
build on startup.
|
||||
|
||||
2) NickServ Mode: This is the user mode set by Anope on NickServ.
|
||||
@@ -273,172 +197,176 @@ How To Add IRCd Support
|
||||
a mode to be set on registration, you should
|
||||
set this to NULL.
|
||||
|
||||
32) Mode on Nick Unregister: What mode to set give users when they cancel
|
||||
32) Mode on Root ID: What modes to set on services roots when they identify
|
||||
|
||||
33) Mode on Admin ID: What modes to set on services admins when they identify
|
||||
|
||||
34) Mode on Oper ID: What modes to set on services opers when they identify
|
||||
|
||||
35) Mode on Nick Unregister: What mode to set give users when they cancel
|
||||
their registration with NickServ. If your
|
||||
IRCd doesn't set a mode for registered users
|
||||
you should set this to NULL.
|
||||
|
||||
33) Mode on Nick Change: What mode to give users when they change their
|
||||
36) Mode on Nick Change: What mode to give users when they change their
|
||||
nick. If your ircd doesn't set a mode, you
|
||||
should set this to NULL.
|
||||
|
||||
34) SGLINE: Does the IRCd support realname (geocs) bans? Use 1 for yes,
|
||||
37) SGLINE: Does the IRCd support realname (geocs) bans? Use 1 for yes,
|
||||
0 for no.
|
||||
|
||||
35) SQLINE: Does the IRCd support nick bans? Use 1 for yes, 0 for no.
|
||||
38) SQLINE: Does the IRCd support nick bans? Use 1 for yes, 0 for no.
|
||||
|
||||
36) SZLINE: Does the IRCd support SZLINES? Use 1 for yes, 0 for no.
|
||||
39) SZLINE: Does the IRCd support SZLINES? Use 1 for yes, 0 for no.
|
||||
|
||||
37) HALFOP: Is channel mode +h for halfop supported by the IRCd? Use 1 for
|
||||
40) HALFOP: Is channel mode +h for halfop supported by the IRCd? Use 1 for
|
||||
yes, 0 for no.
|
||||
|
||||
38) Number of Server Args: When an IRCd connects, this is the number of
|
||||
41) Number of Server Args: When an IRCd connects, this is the number of
|
||||
parameters that are passed.
|
||||
|
||||
39) Join to Set: Services must join a channel to set any modes on that
|
||||
42) Join to Set: Services must join a channel to set any modes on that
|
||||
channel. Use 1 for yes, 0 for no.
|
||||
|
||||
40) Join to Message: Services must join a channel to send any message to
|
||||
43) Join to Message: Services must join a channel to send any message to
|
||||
that channel (cannot override +n). Use 1 for yes,
|
||||
0 for no.
|
||||
|
||||
41) Exceptions: Support for channel exceptions (mode +e). Use 1 for yes,
|
||||
44) Exceptions: Support for channel exceptions (mode +e). Use 1 for yes,
|
||||
0 for no.
|
||||
|
||||
42) TS Topic Forward: Some IRCd's (like UnrealIRCd) like their topic TS
|
||||
45) TS Topic Forward: Some IRCd's (like UnrealIRCd) like their topic TS
|
||||
set forward by +1. Use 1 for yes, 0 for no.
|
||||
|
||||
43) TS Topic Backward: Some IRCd's (mainly older DreamForge-like ones)
|
||||
46) TS Topic Backward: Some IRCd's (mainly older DreamForge-like ones)
|
||||
like their topic TS set back by -1. Use 1 for yes,
|
||||
0 for no.
|
||||
|
||||
44) Protected Umode: UMODE_ define that defines the protected usermod.
|
||||
47) Protected Umode: UMODE_ define that defines the protected usermod.
|
||||
Use 0 for no support, or enter the UMODE_ define.
|
||||
|
||||
45) Admin: Support for channel admins (Mainly used by UltimateIRCd). Use
|
||||
48) Admin: Support for channel admins (Mainly used by UltimateIRCd). Use
|
||||
1 for yes, 0 for no.
|
||||
|
||||
46) SQline Channels: The IRCd's supports banning channel names via
|
||||
49) SQline Channels: The IRCd's supports banning channel names via
|
||||
SQLINES. Use 1 for yes, 0 for no.
|
||||
|
||||
47) Quit On Kill: When we (SVS)KILL a user, does the IRCd send back a
|
||||
50) Quit On Kill: When we (SVS)KILL a user, does the IRCd send back a
|
||||
QUIT message for that user? Use 1 for yes, 0 for no.
|
||||
|
||||
48) SVSMODE -b: We can use SVSMODE to unban hosts from a channel. Use
|
||||
51) SVSMODE -b: We can use SVSMODE to unban hosts from a channel. Use
|
||||
1 for yes, 0 for no.
|
||||
|
||||
49) Protect: Support for channel protect (mode +a, mainly being used by
|
||||
52) Protect: Support for channel protect (mode +a, mainly being used by
|
||||
UnrealIRCd and ViagraIRCd). Use 1 for yes, 0 for no.
|
||||
|
||||
50) Reverse: We can do a reverse check when unbanning. For use with
|
||||
53) Reverse: We can do a reverse check when unbanning. For use with
|
||||
DreamForge based IRCd's. Use 1 for yes, 0 for no.
|
||||
|
||||
51) Register Channels: Supports sending a channelmode for registered
|
||||
54) Register Channels: Supports sending a channelmode for registered
|
||||
channels. Use 1 for yes, 0 for no.
|
||||
|
||||
52) Registered Mode: Channelmode to set on registered channels, see the
|
||||
55) Registered Mode: Channelmode to set on registered channels, see the
|
||||
option above. Use 1 for yes, 0 for no.
|
||||
|
||||
53) vIdent: Support for including a user's ident in their vHost. Use
|
||||
56) vIdent: Support for including a user's ident in their vHost. Use
|
||||
1 for yes, 0 for no.
|
||||
|
||||
54) SVSHOLD: Support for temporarily 'holding' a nick, instead of using
|
||||
57) SVSHOLD: Support for temporarily 'holding' a nick, instead of using
|
||||
a nick enforcer client. Use 1 for yes, 0 for no.
|
||||
|
||||
55) TS on MODE: We need to send a timestamp when modes are being changed.
|
||||
58) TS on MODE: We need to send a timestamp when modes are being changed.
|
||||
Use 1 for yes, 0 for no.
|
||||
|
||||
56) NICKIP: The IP address of new users is being sent along with their
|
||||
59) NICKIP: The IP address of new users is being sent along with their
|
||||
hostname when new users are being introduced on the network.
|
||||
Use 1 for yes, 0 for no.
|
||||
|
||||
57) Umode: We can use OperServ to change a user's mode. Use 1 for yes,
|
||||
60) Omode: We can use OperServ to change a user's mode. Use 1 for yes,
|
||||
0 for no.
|
||||
|
||||
58) O:LINE: We can use OperServ to give some user a temporary O:LINE.
|
||||
Use 1 for yes, 0 for no.
|
||||
|
||||
59) Vhost On Nick: On NICK the IRCd sends the VHOST. Use 1 for yes,
|
||||
61) Umode: We can use OperServ to change a user's mode. Use 1 for yes,
|
||||
0 for no.
|
||||
|
||||
62) Vhost On Nick: On NICK the IRCd sends the VHOST. Use 1 for yes,
|
||||
0 for no.
|
||||
|
||||
60) Change Realname: Change real name. Use 1 for yes, 0 for no.
|
||||
63) Change Realname: Change real name. Use 1 for yes, 0 for no.
|
||||
|
||||
61) Extra Help: If the IRCd has more help for functions in ChanServ than
|
||||
the default help, you should put the language string
|
||||
identifier here. Use 0 for no extra help.
|
||||
64) No Knock: CMODE_ that defines NO KNOCK. Use 0 for no support.
|
||||
|
||||
62) No Knock: CMODE_ that defines NO KNOCK. Use 0 for no support.
|
||||
65) Admin Only: CMODE_ that defines Admin Only. Use 0 for no support.
|
||||
|
||||
63) Admin Only: CMODE_ that defines Admin Only. Use 0 for no support.
|
||||
66) Default MLock: Default channelmodes for MLOCK. Use 0 for no modes.
|
||||
|
||||
64) Default MLock: Default channelmodes for MLOCK. Use 0 for no modes.
|
||||
|
||||
65) Vhost Umode: UMODE_ that indicates if the user currently has a vHost.
|
||||
67) Vhost Umode: UMODE_ that indicates if the user currently has a vHost.
|
||||
Use 0 for no support.
|
||||
|
||||
66) Flood Mode: The IRCd has a channelmode for blocking floods. Use 1 for
|
||||
68) Flood Mode: The IRCd has a channelmode for blocking floods. Use 1 for
|
||||
yes, 0 for no.
|
||||
|
||||
67) Link Mode: The IRCd has a channelmode for linking a channel to some
|
||||
69) Link Mode: The IRCd has a channelmode for linking a channel to some
|
||||
other channel. Use 1 for yes, 0 for no.
|
||||
|
||||
68) CMode F: CMODE_ that defines flood mode. Use 0 for no support.
|
||||
70) CMode F: CMODE_ that defines flood mode. Use 0 for no support.
|
||||
|
||||
69) CMode L: CMODE_ that defines link mode. Use 0 for no support.
|
||||
71) CMode L: CMODE_ that defines link mode. Use 0 for no support.
|
||||
|
||||
70) Check Nick ID: Should we check if a user should remain identified when
|
||||
72) Check Nick ID: Should we check if a user should remain identified when
|
||||
changing their nick? This is for IRCd's that remove
|
||||
their registered-user mode when someone changes their
|
||||
nick (like Bahamut does).
|
||||
Use 1 for yes, 0 for no.
|
||||
|
||||
71) No Knock Requires +i: Does the No Knock channel mode require invite
|
||||
73) No Knock Requires +i: Does the No Knock channel mode require invite
|
||||
only channels? Use 1 for yes, 0 for no.
|
||||
|
||||
72) Chan Modes: If sent in CAPAB/PROTOCOL, we store it in here. This is
|
||||
74) Chan Modes: If sent in CAPAB/PROTOCOL, we store it in here. This is
|
||||
NULL by default.
|
||||
|
||||
73) Tokens: Can we use tokens to talk to the IRCd? Use 1 for yes,
|
||||
75) Tokens: Can we use tokens to talk to the IRCd? Use 1 for yes,
|
||||
0 for no.
|
||||
|
||||
74) Token Case Senstive: Are the IRCd's TOKENS/COMMANDS case sensitive?
|
||||
76) Token Case Senstive: Are the IRCd's TOKENS/COMMANDS case sensitive?
|
||||
Use 1 for yes, 0 for no.
|
||||
|
||||
75) base64 SJOIN TS: Are the timestamps sent with a SJOIN in base64? Use
|
||||
77) base64 SJOIN TS: Are the timestamps sent with a SJOIN in base64? Use
|
||||
1 for yes, 0 for no.
|
||||
|
||||
76) Supports +I: Does the IRCd support channelmode +I? Use 1 for yes,
|
||||
78) Supports +I: Does the IRCd support channelmode +I? Use 1 for yes,
|
||||
0 for no.
|
||||
|
||||
77) SJOIN Ban Char: Character used to identify bans. Use ''.
|
||||
79) SJOIN Ban Char: Character used to identify bans. Use ''.
|
||||
|
||||
78) SJOIN Except Char: Character used to identify exceptions. use ''.
|
||||
80) SJOIN Except Char: Character used to identify exceptions. Use ''.
|
||||
|
||||
79) SVSMODE UCMODE: Can we clear user channel modes with SVSMODE? Use
|
||||
81) SJOIN Invex Char: Character used to identify invexes. Use ''.
|
||||
|
||||
82) SVSMODE UCMODE: Can we clear user channel modes with SVSMODE? Use
|
||||
1 for yes, 0 for no.
|
||||
|
||||
80) SGline Enforce: Does the IRCd enforce SGLINES for us or do we need to
|
||||
83) SGline Enforce: Does the IRCd enforce SGLINES for us or do we need to
|
||||
do so? Use 1 for yes, 0 for no.
|
||||
|
||||
81) Vhost Character: The character used to represent the vHost mode, if
|
||||
84) Vhost Character: The character used to represent the vHost mode, if
|
||||
this is supported by the IRCd.
|
||||
|
||||
82) TS6: Does the IRCd support TS6? Use 1 for yes, 0 for no.
|
||||
85) TS6: Does the IRCd support TS6? Use 1 for yes, 0 for no.
|
||||
|
||||
83) UMode +h: Does the IRCd support usermode +h for helpers?
|
||||
86) UMode +h: Does the IRCd support usermode +h for helpers?
|
||||
Use 1 for yes, 0 for no.
|
||||
|
||||
84) P10: Is this IRCd a P10-style IRCd? Use 1 for yes, 0 for no.
|
||||
87) P10: Is this IRCd a P10-style IRCd? Use 1 for yes, 0 for no.
|
||||
|
||||
85) Character Set: Unreal passes the character set during PROTOCTL,
|
||||
88) Character Set: Unreal passes the character set during PROTOCTL,
|
||||
the value is stored here. Set this NULL to start.
|
||||
|
||||
86) Reports sync: Does the IRCd report when it's in sync (or done bursting,
|
||||
89) Reports sync: Does the IRCd report when it's in sync (or done bursting,
|
||||
depending on how you want to say it)? Remember to set
|
||||
the sync state for servers correctly if it does.
|
||||
Use 1 for yes, 0 for no.
|
||||
|
||||
87) Channel CIDR: Set to 1 if channel bans, excepts and invites
|
||||
90) Channel CIDR: Set to 1 if channel bans, excepts and invites
|
||||
support CIDR masks. Expected syntax: *!*@ip/mask.
|
||||
When set to 1, anope will only parse strict CIDR masks.
|
||||
IRCd's that try to correct invalid CIDR's (like nefarious)
|
||||
@@ -446,10 +374,14 @@ How To Add IRCd Support
|
||||
Contact the anope Dev Team if this is the case.
|
||||
Set to 0 if CIDR's are not supported by your IRCd.
|
||||
|
||||
88) Throttle Mode: The IRCd has a channelmode for throttling joins per-user.
|
||||
91) Throttle Mode: The IRCd has a channelmode for throttling joins per-user.
|
||||
Use 1 for yes, 0 for no.
|
||||
|
||||
89) CMode j: CMODE_ that defines throttle mode. Use 0 for no support.
|
||||
92) CMode j: CMODE_ that defines throttle mode. Use 0 for no support.
|
||||
|
||||
93) Delayed client introduction: Delay the introduction of services pseudo-
|
||||
client till after we have received the uplinks
|
||||
CAPAB.
|
||||
|
||||
So we've had this long list. Now there's a second struct to fill. This
|
||||
struct isn't as long as the previous one though, so we'll handle it quite
|
||||
@@ -533,7 +465,7 @@ How To Add IRCd Support
|
||||
void moduleAddIRCDMsgs(void)
|
||||
{
|
||||
m = createMessage("NICK", anope_event_nick);
|
||||
addCoreMessage(IRCD,m);
|
||||
addCoreMessage(IRCD, m);
|
||||
}
|
||||
|
||||
Each event should have a event handler if its important enough to be
|
||||
@@ -569,30 +501,19 @@ How To Add IRCd Support
|
||||
to read these lines and set itself up to to handle these events better.
|
||||
When adding support for your ircd, take the following steps.
|
||||
|
||||
1) In the ircd.c find the function anope_cmd_capab(); this function will
|
||||
send the CAPAB/PROTOCTL line (consult your ircd documentation for
|
||||
which to send). In a single line type in the tokens that anope must
|
||||
send. Here is an example of Hybrid's capab line:
|
||||
|
||||
/* CAPAB */
|
||||
void anope_cmd_capab()
|
||||
{
|
||||
send_cmd(NULL, "CAPAB TS5 EX IE HOPS HUB AOPS");
|
||||
}
|
||||
|
||||
2) In the ircd.h file make sure to place the defines (see below) that
|
||||
1) In the ircd.h file make sure to place the defines (see below) that
|
||||
match your IRCd's tokens; only use the ones that matter to your ircd.
|
||||
Should your IRCd add new features not covered in the defined, please
|
||||
contact the Anope Dev team before doing so. See README for information
|
||||
on how to contact the Anope team.
|
||||
|
||||
3) Ensure that the CAPAB/PROTOCTL event his handled correctly.
|
||||
2) Ensure that the CAPAB/PROTOCTL event his handled correctly.
|
||||
|
||||
A) In the function "moduleAddIRCDMsgs" making sure that you have the
|
||||
following two lines:
|
||||
|
||||
m = createMessage("CAPAB", anope_event_capab);
|
||||
addCoreMessage(IRCD,m);
|
||||
addCoreMessage(IRCD, m);
|
||||
|
||||
B) Add the function to handle the event
|
||||
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@ Anope MySQL Support
|
||||
core, we decided to save it for 2.0. However, having your db's easily
|
||||
accessible on your website is still a great feature.
|
||||
|
||||
PHASE 1:Anope will be able to save all it's databases to MySQL. It will
|
||||
PHASE 1:Anope will be able to save all its databases to MySQL. It will
|
||||
happen in conjunction with the current FFF databases. This first step is
|
||||
nothing more than a MySQL dump of the databases (i.e. read-only), since
|
||||
Anope will not (for now) read from Mysql. (COMPLETED)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
Highlighted News in Anope 1.8
|
||||
============================================
|
||||
* Added optional mail forking on non Windows OS
|
||||
* Added a new and improved ./Config script.
|
||||
* Added MySQL phase 2 implementation (see docs/MYSQL).
|
||||
* Added NickServ registration delays.
|
||||
@@ -21,7 +22,7 @@ Highlighted News in Anope 1.8
|
||||
- Charybdis 1.0 or later
|
||||
- DreamForge 4.6.7
|
||||
- Hybrid 7 or later
|
||||
- InspIRCd 1.0 or later (including 1.1)
|
||||
- InspIRCd 1.x and 2.0
|
||||
- Plexus 2.0 or later (including 3.0)
|
||||
- PTLink 6.15 or later
|
||||
- RageIRCd 2.0 or later
|
||||
|
||||
+1
-1
@@ -167,7 +167,7 @@ Provided by Anope Dev. <team@anope.org>
|
||||
2003/07/20 Fixed chanserv badword MySQL issue
|
||||
2003/08/30 Allow for E/F lines when handling akilled host's joining the network
|
||||
2003/07/25 Added External socket support (*VERY* EXPERIMENTAL)
|
||||
2003/07/20 Made MySQL ns_id, na_id and ci_id useful by preserving it's value across updates
|
||||
2003/07/20 Made MySQL ns_id, na_id and ci_id useful by preserving its value across updates
|
||||
2003/07/20 Some MySQL Optimizations (MySQL 3.23.32+ required)
|
||||
|
||||
Provided by DrStein
|
||||
|
||||
+2
-2
@@ -6,9 +6,9 @@ Anope Proxy Detector
|
||||
|
||||
1) Introduction
|
||||
|
||||
Anope has had a built-in proxy detector since it's first version. Recently,
|
||||
Anope has had a built-in proxy detector since its first version. Recently,
|
||||
however, this built-in proxy detector has been removed. This was because
|
||||
the Anope team found that the proxy detector was showing it's age, and the
|
||||
the Anope team found that the proxy detector was showing its age, and the
|
||||
time needed to restore it to a good state wasn't worth it, also considering
|
||||
that there are currently good alternatives out there which do the job as
|
||||
good as it can be done already.
|
||||
|
||||
+61
-12
@@ -1,7 +1,7 @@
|
||||
Anope -- a set of IRC services for IRC networks
|
||||
-----------------------------------------------
|
||||
Anope - a set of IRC services for IRC networks
|
||||
----------------------------------------------
|
||||
|
||||
Anope is 2003-2009 Anope Team <team@anope.org>.
|
||||
Anope is 2003-2014 Anope Team <team@anope.org>.
|
||||
Based on Epona 2000-2002 PegSoft <epona@pegsoft.net>.
|
||||
Based on Services 1996-1999 Andrew Church <achurch@achurch.org>.
|
||||
|
||||
@@ -19,7 +19,8 @@ Table of Contents
|
||||
3) Installation
|
||||
4) Command Line Options
|
||||
5) Messages Translation
|
||||
6) Contact and Mailing List
|
||||
6) Adding Your Translation Into The Source
|
||||
7) Contact and Mailing List
|
||||
|
||||
1) Credits
|
||||
|
||||
@@ -91,12 +92,16 @@ Table of Contents
|
||||
* Jens Voss <dukepyrolator@anope.org>
|
||||
* JH <jh@irc-chat.net>
|
||||
* Joris Vink <joris@anope.org>
|
||||
* Lee Holmes <lethality@anope.org>
|
||||
* Lucas Nussbaum <lucas@lucas-nussbaum.net>
|
||||
* Mark Summers <mark@goopler.net>
|
||||
* Matthew Beeching <jobe@invictachat.net>
|
||||
* Naram Qashat <cyberbotx@anope.org>
|
||||
* Phil Lavin <phil@anope.org>
|
||||
* Pieter Bootsma <geniusdex@anope.org>
|
||||
* Robin Burchell <w00t@inspircd.org>
|
||||
* Sean Roe <therock247uk@anope.org>
|
||||
* Sebastian V <hal9000@anope.org>
|
||||
* Thomas Juberg Stensås <ShadowMaster@Shadow-Realm.org>
|
||||
* Trystan .S Lee <trystan@nomadirc.net>
|
||||
* openglx <openglx@brasnerd.com.br>
|
||||
@@ -105,10 +110,12 @@ Table of Contents
|
||||
|
||||
* GeniusDex <geniusdex@anope.org> (nl.l)
|
||||
* Kein <kein-of@yandex.ru> (ru.l)
|
||||
* Stuff <the.stuff@gmx.de> (de.l)
|
||||
* Maik Funke <Han@mefalcon.org> (de.l)
|
||||
* Gabriel Acevedo H. <drstein@anope.org> (es.l)
|
||||
* Janos Kapitany <sarkanyka@cjbchat.hu> (hun.l)
|
||||
* Szymon S'wierkosz <szymek@adres.pl> (pl.l)
|
||||
* Christopher N. <saka@epiknet.org> (fr.l)
|
||||
* Yusuf Kurekci <ysfm.20@gmail.com> (tr.l)
|
||||
|
||||
Anope uses the strlcat() and strlcpy() functions from OpenSSH 2.5.1p2.
|
||||
These functions are copyrighted by Todd C. Miller:
|
||||
@@ -195,8 +202,8 @@ Table of Contents
|
||||
* Bahamut 1.4.27 or later (including 1.8)
|
||||
* Charybdis 1.0 or later
|
||||
* DreamForge 4.6.7
|
||||
* Hybrid 7 or later
|
||||
* InspIRCd 1.0 or later (including 1.1)
|
||||
* Hybrid 8.1 or later
|
||||
* InspIRCd 1.x, and 2.0
|
||||
* Plexus 2.0 or later (including 3.0)
|
||||
* PTlink 6.15 or later
|
||||
* RageIRCd 2.0 beta-6 or later
|
||||
@@ -339,10 +346,9 @@ Table of Contents
|
||||
by most speakers of that language ;)).
|
||||
|
||||
* When this is done, you have two solutions: either patch Services
|
||||
source code so they take in account the new language file
|
||||
(basically, you'll have to modify lang/Makefile, language.c and
|
||||
maybe services.h), or send us the translated file so we can make
|
||||
the patch and include your language in the next Anope release.
|
||||
source code so they take in account the new language file (section 6),
|
||||
or send us the translated file so we can make the patch and include
|
||||
your language in the next Anope release.
|
||||
|
||||
* Note that there is a language tool on bin/langtool.pl that can aid
|
||||
the verification process on newly created language files. Try to
|
||||
@@ -358,7 +364,50 @@ Table of Contents
|
||||
credit for it, and will even get future final major releases before
|
||||
anyone else to complete the translation!... ;)
|
||||
|
||||
6) Contact
|
||||
6) Adding Your Translation Into The Source
|
||||
|
||||
First, get the latest version of Anope. This can be done by doing
|
||||
'git clone git://github.com/anope/anope anope-stable'
|
||||
|
||||
Second, Place your language file in lang/, and type 'git add file.l`. Where file is
|
||||
your language file.
|
||||
|
||||
Next, edit lang/Makefile(.win32) and add your file into both the LANGOBJS variable and
|
||||
the LANGSRCS variable (alphabetically please). Then, go down and add an entry for
|
||||
it similar the others, eg:
|
||||
en_us: en_us.l langcomp index
|
||||
./langcomp $@.l
|
||||
(which creates the english language file)
|
||||
|
||||
Now, edit include/services.h and search for "#define LANG_EN_US", and add your language to
|
||||
the bottom of the list, eg:
|
||||
#define LANG_BLAH 16 /* Blah language! */
|
||||
(given the language above its number is 15).
|
||||
Then change the NUM_LANGS to one more than it currently is (in this case, 17)
|
||||
and add one to USED_LANGS.
|
||||
|
||||
Finially, edit src/language.c and add your language to the bottom of the array there, eg:
|
||||
...
|
||||
LANG_HUN, /* Hungarian */
|
||||
LANG_PL, /* Polish */
|
||||
LANG_BLAH, /* Blah language! */
|
||||
};
|
||||
then, go down and add it with the others using load_lang(), eg:
|
||||
...
|
||||
load_lang(LANG_HUN, "hun");
|
||||
load_lang(LANG_PL, "pl");
|
||||
load_lang(LANG_BLAH, "blah");
|
||||
|
||||
Now use 'git diff HEAD > language.diff` to get the changes you made, and if it looks good (test it)
|
||||
email it to team@anope.org!
|
||||
|
||||
Please be aware we will only include a new language if there is sufficient demand for it.
|
||||
|
||||
Please do not be disappointed if we do not include your language within Anope.
|
||||
|
||||
Check Changes.lang in order for your language to continue to work on your copy of Anope upgrades.
|
||||
|
||||
7) Contact
|
||||
|
||||
For announcements and discussions about Anope, please visit our
|
||||
Portal and Forums at http://www.anope.org/ -- make sure you register
|
||||
|
||||
+12
-19
@@ -20,32 +20,25 @@ Anope for Windows
|
||||
* Current Anope source:
|
||||
http://sourceforge.net/project/showfiles.php?group_id=94081
|
||||
|
||||
If you have Visual C++ 6, 7 (.NET 2002/2003) or 8 (2005) skip ahead to step 2, else you
|
||||
If you have Visual C++ 2008, 2010, or 2012 skip ahead to step 2, else you
|
||||
need to download the following free components from Microsoft. Once
|
||||
downloaded, install these packages.
|
||||
downloaded, install one of the following, for best results use MS VC 2010.
|
||||
|
||||
* Microsoft Visual C++ 2008 Express Edition:
|
||||
http://www.microsoft.com/express/vc/
|
||||
* Microsoft Visual C++ 2010 Express
|
||||
http://www.microsoft.com/visualstudio/eng/products/visual-studio-2010-express
|
||||
|
||||
or
|
||||
|
||||
* Microsoft Visual C++ 2005 Express Edition:
|
||||
http://msdn.microsoft.com/vstudio/express/visualc/download/
|
||||
|
||||
then download and install:
|
||||
* Microsoft Visual C++ 2008 Express Edition:
|
||||
http://www.microsoft.com/en-us/download/details.aspx?id=14597
|
||||
|
||||
* Microsoft Windows PlatformSDK: (Requires WGA validation)
|
||||
http://www.microsoft.com/downloads/details.aspx?FamilyId=0BAF2B35-C656-4969-ACE8-E4C0C0716ADB&displaylang=en
|
||||
* Microsoft Windows Platform SDK: (Requires WGA validation)
|
||||
http://www.microsoft.com/en-us/download/details.aspx?id=3138
|
||||
|
||||
(NOTE: Although this says for Windows Server 2003, it does infact work on all supported
|
||||
versions of Windows. When installing, you should select the Custom option, and ensure
|
||||
that only the top selection, and the bottom selection are checked. This will cut down
|
||||
install time dramatically)
|
||||
* MySQL for Windows (only needed if building with MySQL enabled):
|
||||
http://dev.mysql.com/
|
||||
|
||||
* MySQL for Windows (only needed if building with MySQL enabled):
|
||||
http://dev.mysql.com/
|
||||
|
||||
(NOTE: Anope can be compiled against MySQL Version 3.23 and above)
|
||||
(NOTE: Anope can be compiled against MySQL Version 3.23 and above)
|
||||
|
||||
|
||||
2) Unpack the Anope tarball with your favorite uncompression program
|
||||
@@ -61,7 +54,7 @@ Anope for Windows
|
||||
|
||||
e.g.
|
||||
|
||||
cd c:\anope-trunk
|
||||
cd c:\anope-stable
|
||||
|
||||
4) You now need to configure Anope to your requirements. At the prompt type:
|
||||
|
||||
|
||||
+2
-3
@@ -1,14 +1,13 @@
|
||||
/* Declarations for command data.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
+2
-3
@@ -1,14 +1,13 @@
|
||||
/* Services configuration.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
+2
-3
@@ -1,14 +1,13 @@
|
||||
/* Database file descriptor structure and file handling routine prototypes.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
+2
-3
@@ -1,15 +1,14 @@
|
||||
/* Set default values for any constants that should be in include files but
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
/* depricated.h
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
|
||||
+2
-4
@@ -1,20 +1,18 @@
|
||||
/* Include file for high-level encryption routines.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
typedef struct encryption_ {
|
||||
int (*encrypt)(const char *src, int len, char *dest, int size);
|
||||
int (*encrypt_in_place)(char *buf, int size);
|
||||
int (*encrypt_check_len)(int passlen, int bufsize);
|
||||
int (*decrypt)(const char *src, char *dest, int size);
|
||||
int (*check_password)(const char *plaintext, const char *password);
|
||||
|
||||
+11
-3
@@ -1,14 +1,13 @@
|
||||
/* Prototypes and external variable declarations.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -42,11 +41,16 @@
|
||||
#define EVENT_SHUTDOWN "shutdown"
|
||||
#define EVENT_SIGNAL "signal"
|
||||
#define EVENT_NICK_REGISTERED "nick_registered"
|
||||
#define EVENT_NICK_REQUESTED "nick_requested"
|
||||
#define EVENT_NICK_DROPPED "nick_dropped"
|
||||
#define EVENT_NICK_FORBIDDEN "nick_forbidden"
|
||||
#define EVENT_NICK_EXPIRE "nick_expire"
|
||||
#define EVENT_CORE_DROPPED "nickcore_dropped"
|
||||
#define EVENT_CORE_NEWDISPLAY "nickcore_newdisplay"
|
||||
#define EVENT_CHANGE_NICK "change_nick"
|
||||
#define EVENT_USER_LOGOFF "user_logoff"
|
||||
#define EVENT_NICK_GHOSTED "nick_ghosted"
|
||||
#define EVENT_NICK_RECOVERED "nick_recovered"
|
||||
#define EVENT_GROUP "nick_group"
|
||||
#define EVENT_NICK_IDENTIFY "nick_id"
|
||||
#define EVENT_SERVER_SQUIT "server_squit"
|
||||
@@ -62,3 +66,7 @@
|
||||
#define EVENT_ACCESS_CLEAR "access_clear"
|
||||
#define EVENT_NICK_LOGOUT "nick_logout"
|
||||
#define EVENT_CHAN_KICK "chan_kick"
|
||||
#define EVENT_MODLOAD "modload"
|
||||
#define EVENT_MODUNLOAD "modunload"
|
||||
#define EVENT_ADDCOMMAND "addcommand"
|
||||
#define EVENT_DELCOMMAND "delcommand"
|
||||
|
||||
+18
-26
@@ -1,14 +1,13 @@
|
||||
/* Prototypes and external variable declarations.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -57,6 +56,7 @@ E void kill_user(char *source, char *user, char *reason);
|
||||
E void bad_password(User * u);
|
||||
E void sqline(char *mask, char *reason);
|
||||
E void common_unban(ChannelInfo * ci, char *nick);
|
||||
E void common_unban_full(ChannelInfo * ci, char *nick, boolean full);
|
||||
E void common_svsmode(User * u, char *modes, char *arg);
|
||||
|
||||
/**** botserv.c ****/
|
||||
@@ -109,6 +109,8 @@ E char *get_throttle(Channel * chan);
|
||||
E void set_throttle(Channel * chan, char *value);
|
||||
E char *get_redirect(Channel * chan);
|
||||
E void set_redirect(Channel * chan, char *value);
|
||||
E char *get_unkwn(Channel * chan);
|
||||
E void set_unkwn(Channel *chan, char *value);
|
||||
|
||||
|
||||
E void get_channel_stats(long *nrec, long *memuse);
|
||||
@@ -153,6 +155,7 @@ E int entry_match_mask(Entry *e, char *mask, uint32 ip);
|
||||
E Entry *elist_match(EList *list, char *nick, char *user, char *host, uint32 ip);
|
||||
E Entry *elist_match_mask(EList *list, char *mask, uint32 ip);
|
||||
E Entry *elist_match_user(EList *list, User *u);
|
||||
E Entry *elist_match_user_full(EList *list, User *u, boolean full);
|
||||
E Entry *elist_find_mask(EList *list, char *mask);
|
||||
E long get_memuse(EList *list);
|
||||
|
||||
@@ -215,11 +218,14 @@ E char *cs_get_limit(ChannelInfo * ci);
|
||||
E void cs_set_limit(ChannelInfo * ci, char *value);
|
||||
E char *cs_get_redirect(ChannelInfo * ci);
|
||||
E void cs_set_redirect(ChannelInfo * ci, char *value);
|
||||
E char *cs_get_unkwn(ChannelInfo * ci);
|
||||
E void cs_set_unkwn(ChannelInfo * ci, char *value);
|
||||
|
||||
E int levelinfo_maxwidth;
|
||||
E ChannelInfo *makechan(const char *chan);
|
||||
E int is_identified(User * user, ChannelInfo * ci);
|
||||
E char *get_mlock_modes(ChannelInfo * ci, int complete);
|
||||
E void CleanAccess(ChannelInfo *ci);
|
||||
|
||||
/**** compat.c ****/
|
||||
|
||||
@@ -366,6 +372,7 @@ E char *SendFrom;
|
||||
E int RestrictMail;
|
||||
E int MailDelay;
|
||||
E int DontQuoteAddresses;
|
||||
E int ForkForMail;
|
||||
|
||||
E int NSDefFlags;
|
||||
E int NSDefLanguage;
|
||||
@@ -525,7 +532,6 @@ E int rdb_save_ns_alias(NickAlias * na);
|
||||
E int rdb_save_ns_req(NickRequest * nr);
|
||||
E int rdb_save_cs_info(ChannelInfo * ci);
|
||||
E int rdb_save_bs_core(BotInfo * bi);
|
||||
E int rdb_save_bs_rdb_core(BotInfo * bi);
|
||||
E int rdb_save_hs_core(HostCore * hc);
|
||||
E int rdb_save_os_db(unsigned int maxucnt, unsigned int maxutime,
|
||||
SList * ak, SList * sgl, SList * sql, SList * szl);
|
||||
@@ -569,20 +575,14 @@ E char *DefConOffMessage;
|
||||
E long unsigned int UserKey1;
|
||||
E long unsigned int UserKey2;
|
||||
E long unsigned int UserKey3;
|
||||
/**** converter.c ****/
|
||||
|
||||
E int convert_ircservices_44(void);
|
||||
|
||||
/**** encrypt.c ****/
|
||||
E char *EncModule;
|
||||
E void initEncryption();
|
||||
E int enc_encrypt(const char *src, int len, char *dest, int size);
|
||||
E int enc_encrypt_in_place(char *buf, int size);
|
||||
E int enc_encrypt_check_len(int passlen, int bufsize);
|
||||
E int enc_decrypt(const char *src, char *dest, int size);
|
||||
E int enc_check_password(const char *plaintext, const char *password);
|
||||
E void encmodule_encrypt(int (*func)(const char *src, int len, char *dest, int size));
|
||||
E void encmodule_encrypt_in_place(int (*func)(char *buf, int size));
|
||||
E void encmodule_encrypt_check_len(int (*func)(int passlen, int bufsize));
|
||||
E void encmodule_decrypt(int (*func)(const char *src, char *dest, int size));
|
||||
E void encmodule_check_password(int (*func)(const char *plaintext, const char *password));
|
||||
@@ -611,6 +611,7 @@ E void set_lastmask(User * u);
|
||||
E void introduce_user(const char *user);
|
||||
E int init_primary(int ac, char **av);
|
||||
E int init_secondary(int ac, char **av);
|
||||
E void init_tertiary();
|
||||
E int servernum;
|
||||
|
||||
/**** ircd.c ****/
|
||||
@@ -667,6 +668,7 @@ E void pmodule_cmd_chg_nick(void (*func) (char *oldnick, char *newnick));
|
||||
E void pmodule_cmd_svsnick(void (*func) (char *source, char *guest, time_t when));
|
||||
E void pmodule_cmd_vhost_on(void (*func) (char *nick, char *vIdent, char *vhost));
|
||||
E void pmodule_cmd_connect(void (*func) (int servernum));
|
||||
E void pmodule_cmd_bob(void (*func) ());
|
||||
E void pmodule_cmd_svshold(void (*func) (char *nick));
|
||||
E void pmodule_cmd_release_svshold(void (*func) (char *nick));
|
||||
E void pmodule_cmd_unsgline(void (*func) (char *mask));
|
||||
@@ -689,6 +691,7 @@ E void pmodule_set_umode(void (*func) (User * user, int ac, char **av));
|
||||
E void pmodule_valid_nick(int (*func) (char *nick));
|
||||
E void pmodule_valid_chan(int (*func) (char *chan));
|
||||
E void pmodule_flood_mode_check(int (*func) (char *value));
|
||||
E void pmodule_jointhrottle_mode_check(int (*func) (char *value));
|
||||
E void pmodule_ircd_var(IRCDVar * ircdvar);
|
||||
E void pmodule_ircd_cap(IRCDCAPAB * cap);
|
||||
E void pmodule_ircd_version(char *version);
|
||||
@@ -707,7 +710,7 @@ E void pmodule_secret_cmode(int mode);
|
||||
E void pmodule_private_cmode(int mode);
|
||||
E void pmodule_key_mode(int mode);
|
||||
E void pmodule_limit_mode(int mode);
|
||||
E void pmodule_jointhrottle_mode_check(int (*func) (char *value));
|
||||
E void pmodule_permchan_mode(int mode);
|
||||
|
||||
E int anope_get_secret_mode();
|
||||
E int anope_get_invite_mode();
|
||||
@@ -716,6 +719,7 @@ E int anope_get_limit_mode();
|
||||
E int anope_get_private_mode();
|
||||
E int anope_get_invis_mode();
|
||||
E int anope_get_oper_mode();
|
||||
E int anope_get_permchan_mode();
|
||||
|
||||
/**** language.c ****/
|
||||
|
||||
@@ -813,6 +817,7 @@ E void memoserv(User * u, char *buf);
|
||||
E void check_memos(User * u);
|
||||
E MemoInfo *getmemoinfo(const char *name, int *ischan, int *isforbid);
|
||||
E void memo_send(User * u, char *name, char *text, int z);
|
||||
E void memo_send_from(User * u, char *name, char *text, int z, char *source);
|
||||
E int delmemo(MemoInfo * mi, int num);
|
||||
|
||||
/**** messages.c ****/
|
||||
@@ -1173,6 +1178,7 @@ E int is_excepted(ChannelInfo * ci, User * user);
|
||||
E int is_excepted_mask(ChannelInfo * ci, char *mask);
|
||||
|
||||
E int match_usermask(const char *mask, User * user);
|
||||
E int match_usermask_full(const char *mask, User * user, boolean full);
|
||||
E int match_userip(const char *mask, User * user, char *host);
|
||||
E void split_usermask(const char *mask, char **nick, char **user,
|
||||
char **host);
|
||||
@@ -1239,22 +1245,17 @@ E void anope_cmd_376(char *source); /* 376 */
|
||||
E void anope_cmd_391(char *source, char *timestr); /* 391 */
|
||||
E void anope_cmd_401(char *source, char *who); /* 401 */
|
||||
E void anope_cmd_akill(char *user, char *host, char *who, time_t when, time_t expires, char *reason); /* AKILL */
|
||||
E void anope_cmd_capab(); /* CAPAB */
|
||||
E void anope_cmd_chghost(char *nick, char *vhost); /* CHGHOST */
|
||||
E void anope_cmd_chgident(char *nick, char *vIdent); /* CHGIDENT */
|
||||
E void anope_cmd_vhost_on(char *nick, char *vIdent, char *vhost); /* CHGHOST + CHGIDENT */
|
||||
E void anope_cmd_vhost_off(User *u);
|
||||
E void anope_cmd_connect(int servernum); /* Connect */
|
||||
E void anope_cmd_ea(); /* EA */
|
||||
E void anope_cmd_bob();
|
||||
E void anope_cmd_global(char *source, const char *fmt, ...); /* GLOBOPS */
|
||||
E void anope_cmd_invite(char *source, char *chan, char *nick); /* INVITE */
|
||||
E void anope_cmd_join(char *user, char *channel, time_t chantime); /* JOIN */
|
||||
E void anope_cmd_kick(char *source, char *chan, char *user, const char *fmt, ...); /* KICK */
|
||||
E void anope_cmd_mode(char *source, char *dest, const char *fmt, ...); /* MODE */
|
||||
E void anope_cmd_tmode(char *source, char *dest, const char *fmt, ...); /* TMODE */
|
||||
E void anope_cmd_unban(char *name, char *nick); /* MODE -b */
|
||||
E void anope_cmd_bot_chan_mode(char *nick, char *chan); /* MODE BotServ */
|
||||
E void anope_cmd_netinfo(int ac, char **av); /* NETINFO */
|
||||
E void anope_cmd_nick(char *nick, char *name, char *mode); /* NICK */
|
||||
E void anope_cmd_chg_nick(char *oldnick, char *newnick); /* NICK */
|
||||
E void anope_cmd_bot_nick(char *nick, char *user,char *host,char *real,char *modes); /* NICK */
|
||||
@@ -1264,25 +1265,19 @@ E void anope_cmd_notice_ops(char *source, char *dest, const char *fmt, ...);
|
||||
E void anope_cmd_notice2(char *source, char *dest, char *msg); /* NOTICE */
|
||||
E void anope_cmd_serv_notice(char *source, char *dest, char *msg); /* NOTICE */
|
||||
E void anope_cmd_part(char *nick, char *chan, const char *fmt, ...); /* PART */
|
||||
E void anope_cmd_pass(char *pass); /* PASS */
|
||||
E void anope_cmd_pong(char *servname, char *who); /* PONG */
|
||||
E void anope_cmd_privmsg(char *source, char *dest, const char *fmt, ...); /* PRIVMSG */
|
||||
E void anope_cmd_action(char *source, char *dest, const char *fmt, ...); /* PRIVMSG */
|
||||
E void anope_cmd_privmsg2(char *source, char *dest, char *msg); /* PRIVMSG */
|
||||
E void anope_cmd_serv_privmsg(char *source, char *dest, char *msg); /* PRIVMSG */
|
||||
E void anope_cmd_protoctl(); /* PROTOCTL */
|
||||
E void anope_cmd_quit(char *source, const char *fmt, ...); /* QUIT */
|
||||
E void anope_cmd_remove_akill(char *user, char *host); /* RAKILL */
|
||||
E void anope_cmd_server(char *servname, int hop, char *descript); /* SERVER */
|
||||
E void anope_cmd_sgline(char *mask, char *reason); /* SGLINE */
|
||||
E void anope_cmd_sqline(char *mask, char *reason); /* SQLINE */
|
||||
E void anope_cmd_szline(char *mask, char *reason, char *whom); /* SZLINE */
|
||||
E void anope_cmd_squit(char *servname, char *message); /* SQUIT */
|
||||
E void anope_cmd_svinfo(); /* SVINFO */
|
||||
E void anope_cmd_svsadmin(char *server, int set); /* SVSADMIN */
|
||||
E void anope_cmd_svshold(char *nick); /* SVSHOLD */
|
||||
E void anope_cmd_release_svshold(char *nick); /* SVSHOLD */
|
||||
E void anope_cmd_svsinfo(); /* SVSINFO */
|
||||
E void anope_cmd_svsjoin(char *source, char *nick,char *chan, char *param); /* SVSJOIN */
|
||||
E void anope_cmd_svskill(char *source,char *user, const char *fmt, ...); /* SVSKILL */
|
||||
E void anope_cmd_svsmode(User * u, int ac, char **av); /* SVSMODE */
|
||||
@@ -1297,8 +1292,6 @@ E void anope_cmd_unsgline(char *mask); /* UNSGLINE */
|
||||
E void anope_cmd_unsqline(char *user); /* UNSQLINE */
|
||||
E void anope_cmd_unszline(char *mask); /* UNSZLINE */
|
||||
E void anope_cmd_eob(); /* EOB - end of burst */
|
||||
E void anope_cmd_burst(); /* BURST - use eob to send burst 0 */
|
||||
E void anope_cmd_svswatch(char *sender, char *nick, char *parm);
|
||||
E void anope_cmd_ctcp(char *source, char *dest, const char *fmt, ...); /* CTCP */
|
||||
|
||||
EI int anope_event_482(char *source, int ac, char **av);
|
||||
@@ -1346,7 +1339,6 @@ EI int anope_event_eob(char *source, int ac, char **av);
|
||||
EI int anope_event_pass(char *source, int ac, char **av);
|
||||
EI int anope_event_netinfo(char *source, int ac, char **av);
|
||||
EI int anope_event_error(char *source, int ac, char **av);
|
||||
EI int anope_event_eb(char *source, int ac, char **av);
|
||||
EI int anope_event_netctrl(char *source, int ac, char **av);
|
||||
EI int anope_event_notice(char *source, int ac, char **av);
|
||||
EI int anope_event_snotice(char *source, int ac, char **av);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Make file for Win32
|
||||
#
|
||||
# (C) 2003-2009 Anope Team
|
||||
# (C) 2003-2014 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Please read COPYING and README for further details.
|
||||
@@ -8,7 +8,6 @@
|
||||
# Based on the original code of Epona by Lara.
|
||||
# Based on the original code of Services by Andy Church.
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
|
||||
###########################################################################
|
||||
|
||||
+2
-3
@@ -1,14 +1,13 @@
|
||||
/* Declarations of IRC message structures, variables, and functions.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
+3
-4
@@ -1,14 +1,13 @@
|
||||
/* Modular support
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef MODULES_H
|
||||
@@ -313,7 +312,7 @@ MDE int moduleAddCommand(CommandHash *cmdTable[], Command *c, int pos);
|
||||
MDE int addCommand(CommandHash *cmdTable[], Command *c,int pos);
|
||||
MDE int delCommand(CommandHash *cmdTable[], Command *c,char *mod_name); /* Del a command from a cmd table */
|
||||
MDE int moduleDelCommand(CommandHash *cmdTable[],char *name); /* Del a command from a cmd table */
|
||||
Command *findCommand(CommandHash *cmdTable[], const char *name); /* Find a command */
|
||||
MDE Command *findCommand(CommandHash *cmdTable[], const char *name); /* Find a command */
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
+2
-3
@@ -1,14 +1,13 @@
|
||||
/* Include extra includes needed by most/all pseudo-clients.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
+29
-9
@@ -1,9 +1,9 @@
|
||||
/*
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
@@ -87,6 +87,7 @@
|
||||
#include <winsock.h>
|
||||
#include <windows.h>
|
||||
#endif
|
||||
#define h_addr h_addr_list[0] /* for backwards compatability, see man gethostbyname */
|
||||
|
||||
#include <sys/stat.h> /* for umask() on some systems */
|
||||
#include <sys/types.h>
|
||||
@@ -265,6 +266,10 @@ typedef enum { false, true } boolean;
|
||||
|
||||
/* Protocol tweaks */
|
||||
|
||||
/* If the IRCd supports TS6 / p10 and it s being used, this selects the uid instead of the nick.. */
|
||||
#define GET_USER(u) ((ircd->p10 || (UseTS6 && ircd->ts6)) ? (u->uid ? u->uid : u->nick) : u->nick)
|
||||
#define GET_BOT(bot) ((ircd->p10 || (UseTS6 && ircd->ts6)) ? (find_uid(bot) ? find_uid(bot)->uid : bot) : bot)
|
||||
|
||||
typedef struct ircdvars_ IRCDVar;
|
||||
typedef struct ircdcapab_ IRCDCAPAB;
|
||||
|
||||
@@ -319,7 +324,12 @@ struct ircdvars_ {
|
||||
int admin; /* Has Admin */
|
||||
int chansqline; /* Supports Channel Sqlines */
|
||||
int quitonkill; /* IRCD sends QUIT when kill */
|
||||
int svsmode_unban; /* svsmode can be used to unban */
|
||||
int svsmode_unban; /* svsmode can be used to unban
|
||||
* Note the core no longer uses
|
||||
* this because it can lead to
|
||||
* users gaining other users IPs.
|
||||
* It is kept for API compatability.
|
||||
*/
|
||||
int protect; /* Has protect modes */
|
||||
int reversekickcheck; /* Can reverse ban check */
|
||||
int chanreg; /* channel mode +r for register */
|
||||
@@ -359,10 +369,11 @@ struct ircdvars_ {
|
||||
char *nickchars; /* character set */
|
||||
int sync; /* reports sync state */
|
||||
int cidrchanbei; /* channel bans/excepts/invites support CIDR (syntax: +b *!*@192.168.0.0/15)
|
||||
* 0 for no support, 1 for strict cidr support, anything else
|
||||
* for ircd specific support (nefarious only cares about first /mask) */
|
||||
int jmode; /* +j join throttle */
|
||||
uint32 chan_jmode; /* Mode */
|
||||
* 0 for no support, 1 for strict cidr support, anything else
|
||||
* for ircd specific support (nefarious only cares about first /mask) */
|
||||
int jmode; /* +j join throttle */
|
||||
uint32 chan_jmode; /* Mode */
|
||||
int delay_cl_intro; /*Delay client introduction till after receiving CAPAB. */
|
||||
};
|
||||
|
||||
struct ircdcapab_ {
|
||||
@@ -485,6 +496,8 @@ struct memo_ {
|
||||
ModuleData *moduleData; /* Module saved data attached to the Memo */
|
||||
#ifdef USE_MYSQL
|
||||
uint32 id; /* Database ID; see mysql.c */
|
||||
#else
|
||||
uint32 notused; /* ABI compat with no mysql */
|
||||
#endif
|
||||
};
|
||||
|
||||
@@ -865,6 +878,7 @@ struct user_ {
|
||||
char *host; /* User's real hostname */
|
||||
char *hostip; /* User's IP number */
|
||||
char *vhost; /* User's virtual hostname */
|
||||
char *chost; /* User's cloaked hostname */
|
||||
char *vident; /* User's virtual ident */
|
||||
char *realname; /* Realname */
|
||||
Server *server; /* Server user is connected to */
|
||||
@@ -1052,6 +1066,9 @@ typedef struct ignore_data {
|
||||
|
||||
struct mailinfo_ {
|
||||
FILE *pipe;
|
||||
/* Used only with mail forking */
|
||||
FILE *writepipe;
|
||||
FILE *readpipe;
|
||||
User *sender;
|
||||
NickCore *recipient;
|
||||
NickRequest *recip;
|
||||
@@ -1191,6 +1208,7 @@ typedef struct ircd_proto_ {
|
||||
void (*ircd_cmd_svsnick)(char *source, char *guest, time_t when);
|
||||
void (*ircd_cmd_vhost_on)(char *nick, char *vIdent, char *vhost);
|
||||
void (*ircd_cmd_connect)(int servernum);
|
||||
void (*ircd_cmd_bob)();
|
||||
void (*ircd_cmd_svshold)(char *nick);
|
||||
void (*ircd_cmd_release_svshold)(char *nick);
|
||||
void (*ircd_cmd_unsgline)(char *mask);
|
||||
@@ -1224,6 +1242,7 @@ typedef struct ircd_modes_ {
|
||||
int chan_private;
|
||||
int chan_key;
|
||||
int chan_limit;
|
||||
int chan_perm;
|
||||
} IRCDModes;
|
||||
|
||||
|
||||
@@ -1309,9 +1328,10 @@ typedef struct ircd_modes_ {
|
||||
#define LANG_RU 13 /* Russian */
|
||||
#define LANG_HUN 14 /* Hungarian */
|
||||
#define LANG_PL 15 /* Polish */
|
||||
#define LANG_JA_UTF8 16 /* Japanese (UTF-8 encoding) */
|
||||
|
||||
#define NUM_LANGS 16 /* Number of languages */
|
||||
#define USED_LANGS 13 /* Number of languages provided */
|
||||
#define NUM_LANGS 17 /* Number of languages */
|
||||
#define USED_LANGS 14 /* Number of languages provided */
|
||||
|
||||
|
||||
#define DEF_LANGUAGE LANG_EN_US
|
||||
|
||||
+2
-3
@@ -1,14 +1,13 @@
|
||||
/* Header for Services list handler.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
+2
-2
@@ -1,9 +1,9 @@
|
||||
/*
|
||||
*
|
||||
* (C) 2004-2008 Anope Team
|
||||
* (C) 2004-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
|
||||
+2
-3
@@ -1,14 +1,13 @@
|
||||
/* Time-delay routine include stuff.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
+1
-1
@@ -27,7 +27,7 @@ fi
|
||||
cat >version.h <<EOF
|
||||
/* Version information for Services.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and CREDITS for further details.
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
/* version file handler for win32.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
@@ -161,6 +161,8 @@ void write_version(FILE * fd)
|
||||
char buf[1024];
|
||||
short until_eof = 0;
|
||||
|
||||
if (!fdin)
|
||||
return;
|
||||
while (fgets(buf, 1023, fdin)) {
|
||||
strip(buf);
|
||||
|
||||
@@ -173,7 +175,7 @@ void write_version(FILE * fd)
|
||||
if (!strcmp(buf, "cat >version.h <<EOF"))
|
||||
until_eof = 1;
|
||||
}
|
||||
|
||||
fclose(fdin);
|
||||
}
|
||||
|
||||
void parse_line(FILE * fd, char *line)
|
||||
|
||||
+89
-54
@@ -1,7 +1,7 @@
|
||||
//
|
||||
// install.js - Windows Configuration
|
||||
//
|
||||
// (C) 2003-2009 Anope Team
|
||||
// (C) 2003-2014 Anope Team
|
||||
// Contact us at team@anope.org
|
||||
//
|
||||
// This program is free but copyrighted software; see the file COPYING for
|
||||
@@ -10,7 +10,6 @@
|
||||
// Based on the original code of Epona by Lara.
|
||||
// Based on the original code of Services by Andy Church.
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
|
||||
var anopeVersion = "Unknown";
|
||||
@@ -59,8 +58,8 @@ var installerQuestions = [
|
||||
f.WriteLine("MYSQL_C=mysql.c");
|
||||
f.WriteLine("MYSQL_O=mysql.obj");
|
||||
f.WriteLine("BASE_CFLAGS=/D USE_MYSQL /D USE_RDB $(BASE_CFLAGS) /D HAVE_MYSQL_MYSQL_H");
|
||||
f.WriteLine("MYPASQL_BUILD=$(CC) /LD $(MYSQL_INC_PATH) src\\mypasql.c /link $(MYSQL_LIB_PATH) $(LFLAGS) /DEF:src\mypasql.def libmysql.lib zlib.lib ws2_32.lib advapi32.lib /NODEFAULTLIB:LIBCMTD.lib");
|
||||
f.WriteLine("LIBS=$(LIBS) libmysql.lib zlib.lib");
|
||||
f.WriteLine("MYPASQL_BUILD=$(CC) /LD $(MYSQL_INC_PATH) src\\mypasql.c /link $(MYSQL_LIB_PATH) $(LFLAGS) /DEF:src\mypasql.def libmysql.lib ws2_32.lib advapi32.lib /NODEFAULTLIB:LIBCMTD.lib");
|
||||
f.WriteLine("LIBS=$(LIBS) libmysql.lib");
|
||||
}
|
||||
else {
|
||||
f.WriteLine("USE_MYSQL=0");
|
||||
@@ -72,7 +71,68 @@ var installerQuestions = [
|
||||
|
||||
var buildPackages = [
|
||||
{
|
||||
'name' : 'Microsoft Visual Studio 2008 (New PSDK)',
|
||||
'name' : 'Microsoft Visual Studio 2012',
|
||||
'libpaths' : [
|
||||
'Program Files\\Microsoft Visual Studio 11.0\\VC\\lib',
|
||||
'Program Files (x86)\\Microsoft Visual Studio 11.0\\VC\\lib',
|
||||
'Program Files\\Microsoft SDKs\\Windows\\v7.0\\Lib',
|
||||
'Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0\\Lib',
|
||||
],
|
||||
'incpaths': [
|
||||
'Program Files\\Microsoft Visual Studio 11.0\\VC\\include',
|
||||
'Program Files (x86)\\Microsoft Visual Studio 11.0\\VC\\include',
|
||||
'Program Files\\Microsoft SDKs\\Windows\\v7.0\\Include',
|
||||
'Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0\\Include',
|
||||
],
|
||||
'nmake' : [
|
||||
'Program Files\\Microsoft Visual Studio 11.0\\VC\\bin',
|
||||
'Program Files (x86)\\Microsoft Visual Studio 11.0\\VC\\bin',
|
||||
],
|
||||
'additional_switches' : [ '/w' ],
|
||||
'installedDrive' : 'C'
|
||||
},
|
||||
{
|
||||
'name' : 'Microsoft Visual Studio 2010 (64bit)',
|
||||
'libpaths' : [
|
||||
'Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\lib',
|
||||
'Program Files\\Microsoft SDKs\\Windows\\v7.1\\Lib',
|
||||
'Program Files\\Microsoft SDKs\\Windows\\v7.0\\Lib',
|
||||
'Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0A\\Lib'
|
||||
],
|
||||
'incpaths': [
|
||||
'Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\include',
|
||||
'Program Files\\Microsoft SDKs\\Windows\\v7.1\\Include',
|
||||
'Program Files\\Microsoft SDKs\\Windows\\v7.0\\Include',
|
||||
'Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0A\\Include'
|
||||
],
|
||||
'nmake' : [
|
||||
'Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\bin',
|
||||
],
|
||||
'additional_switches' : [ '/w' ],
|
||||
'installedDrive' : 'C'
|
||||
},
|
||||
{
|
||||
'name' : 'Microsoft Visual Studio 2010',
|
||||
'libpaths' : [
|
||||
'Program Files\\Microsoft Visual Studio 10.0\\VC\\lib',
|
||||
'Program Files\\Microsoft SDKs\\Windows\\v7.1\\Lib',
|
||||
'Program Files\\Microsoft SDKs\\Windows\\v7.0\\Lib',
|
||||
'Program Files\\Microsoft SDKs\\Windows\\v7.0A\\Lib'
|
||||
],
|
||||
'incpaths' : [
|
||||
'Program Files\\Microsoft Visual Studio 10.0\\VC\\include',
|
||||
'Program Files\\Microsoft SDKs\\Windows\\v7.1\\Include',
|
||||
'Program Files\\Microsoft SDKs\\Windows\\v7.0\\Include',
|
||||
'Program Files\\Microsoft SDKs\\Windows\\v7.0A\\Include'
|
||||
],
|
||||
'nmake' : [
|
||||
'Program Files\\Microsoft Visual Studio 10.0\\VC\\bin',
|
||||
],
|
||||
'additional_switches' : [ '/w' ],
|
||||
'installedDrive' : 'C'
|
||||
},
|
||||
{
|
||||
'name' : 'Microsoft Visual Studio 2008',
|
||||
'libpaths' : [
|
||||
'Program Files\\Microsoft Visual Studio 9.0\\VC\\Lib',
|
||||
'Program Files\\Microsoft Platform SDK for Windows Server 2003 R2\\Lib'
|
||||
@@ -82,13 +142,13 @@ var buildPackages = [
|
||||
'Program Files\\Microsoft Platform SDK for Windows Server 2003 R2\\Include'
|
||||
],
|
||||
'nmake' : [
|
||||
'Program Files\\Microsoft Platform SDK for Windows Server 2003 R2\\Bin',
|
||||
'Program Files\\Microsoft Platform SDK for Windows Server 2003 R2\\Bin',
|
||||
],
|
||||
'additional_switches' : [ '/w' ],
|
||||
'installedDrive' : 'C'
|
||||
},
|
||||
{
|
||||
'name' : 'Microsoft Visual Studio 2008 (64bit) (New PSDK)',
|
||||
{
|
||||
'name' : 'Microsoft Visual Studio 2008 (64bit)',
|
||||
'libpaths' : [
|
||||
'Program Files (x86)\\Microsoft Visual Studio 9.0\\VC\\Lib',
|
||||
'Program Files\\Microsoft Platform SDK for Windows Server 2003 R2\\Lib'
|
||||
@@ -105,7 +165,7 @@ var buildPackages = [
|
||||
},
|
||||
|
||||
{
|
||||
'name' : 'Microsoft Visual Studio 2005 (New PSDK)',
|
||||
'name' : 'Microsoft Visual Studio 2005',
|
||||
'libpaths' : [
|
||||
'Program Files\\Microsoft Visual Studio 8\\VC\\Lib',
|
||||
'Program Files\\Microsoft Platform SDK for Windows Server 2003 R2\\Lib'
|
||||
@@ -120,8 +180,8 @@ var buildPackages = [
|
||||
],
|
||||
'additional_switches' : [
|
||||
'/w'
|
||||
],
|
||||
'installedDrive' : 'C'
|
||||
],
|
||||
'installedDrive' : 'C'
|
||||
},
|
||||
{
|
||||
'name' : 'Microsoft Visual Studio 2005 (Old PSDK)',
|
||||
@@ -139,50 +199,26 @@ var buildPackages = [
|
||||
],
|
||||
'additional_switches' : [
|
||||
'/w'
|
||||
],
|
||||
'installedDrive' : 'C'
|
||||
},
|
||||
|
||||
{
|
||||
'name' : 'Microsoft Visual Studio .NET 2003',
|
||||
'libpaths' : [
|
||||
'Program Files\\Microsoft Visual Studio .NET 2003\\VC7\\Lib',
|
||||
'Program Files\\Microsoft Visual Studio .NET 2003\\PlatformSDK\\Lib'
|
||||
],
|
||||
'incpaths' : [
|
||||
'Program Files\\Microsoft Visual Studio .NET 2003\\VC7\\Include',
|
||||
'Program Files\\Microsoft Visual Studio .NET 2003\\PlatformSDK\\Include'
|
||||
],
|
||||
'nmake' : [
|
||||
'Program Files\\Microsoft Visual Studio .NET 2003\\VC7\\Bin',
|
||||
''
|
||||
],
|
||||
'additional_switches' : false,
|
||||
'installedDrive' : 'C'
|
||||
},
|
||||
|
||||
{
|
||||
'name' : 'Microsoft Visual Studio 98',
|
||||
'libpaths' : [
|
||||
'Program Files\\Microsoft Visual Studio\\VC98\\Lib'
|
||||
],
|
||||
'incpaths' : [
|
||||
'Program Files\\Microsoft Visual Studio\\VC98\\Include'
|
||||
],
|
||||
'nmake' : [
|
||||
'Program Files\\Microsoft Visual Studio\\VC98\\Bin',
|
||||
''
|
||||
],
|
||||
'additional_switches' : [
|
||||
'/QIfist'
|
||||
],
|
||||
'installedDrive' : 'C'
|
||||
],
|
||||
'installedDrive' : 'C'
|
||||
}
|
||||
|
||||
];
|
||||
|
||||
|
||||
var mysqlVersions = [
|
||||
|
||||
{
|
||||
'name' : 'MySQL 5.5',
|
||||
'libpaths' : [
|
||||
'Program Files\\MySQL\\MySQL Server 5.5\\Lib'
|
||||
],
|
||||
'incpaths' : [
|
||||
'Program Files\\MySQL\\MySQL Server 5.5\\Include'
|
||||
],
|
||||
'dllfile' : 'Program Files\\MySQL\\MySQL Server 5.5\\bin\\libmysql.dll',
|
||||
'installedDrive' : 'C'
|
||||
},
|
||||
|
||||
{
|
||||
'name' : 'MySQL 5.1',
|
||||
'libpaths' : [
|
||||
@@ -191,7 +227,7 @@ var buildPackages = [
|
||||
'incpaths' : [
|
||||
'Program Files\\MySQL\\MySQL Server 5.1\\Include'
|
||||
],
|
||||
'dllfile' : 'Program Files\\MySQL\\MySQL Server 5.1\\bin\\libmsyql.dll',
|
||||
'dllfile' : 'Program Files\\MySQL\\MySQL Server 5.1\\bin\\libmysql.dll',
|
||||
'installedDrive' : 'C'
|
||||
},
|
||||
|
||||
@@ -316,7 +352,7 @@ var buildPackages = [
|
||||
if (!findCompiler()) {
|
||||
WScript.Echo("\nERROR: No suitable build tools were found!");
|
||||
WScript.Echo("Please ensure you have downloaded and installed a version of Visual C++ and/or PlatformSDK.\n");
|
||||
WScript.Echo("For more information on the tools needed to build Anope on Windows, see:\nhttp://anope.info/wiki/Windows#Compiling\n");
|
||||
WScript.Echo("For more information on the tools needed to build Anope on Windows, see:\nhttp://wiki.anope.org/index.php/Windows:1.8#Compiling\n");
|
||||
}
|
||||
else {
|
||||
WScript.Echo("\nBuild tools were found successfully!\n");
|
||||
@@ -510,8 +546,7 @@ var buildPackages = [
|
||||
if (noPSDK) {
|
||||
WScript.Echo("Some of the build tools were detected on your computer, but the essential PlatformSDK components were missing.");
|
||||
WScript.Echo("You will need to download the PlatformSDK from the URL below, ensuring that the Core Windows files, and Debugging Tools are installed.");
|
||||
WScript.Echo("For more details on installing the PlatformSDK, visit http://anope.info/wiki/Windows#Compiling\n");
|
||||
WScript.Echo("PSDK: http://download.microsoft.com/download/a/5/f/a5f0d781-e201-4ab6-8c6a-9bb4efed1e1a/PSDK-x86.exe\n");
|
||||
WScript.Echo("For more details on installing the PlatformSDK, visit http://wiki.anope.org/index.php/Windows:1.8#Compiling\n");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
+4
-2
@@ -6,8 +6,8 @@ MAKEARGS = 'CFLAGS=${CFLAGS}' 'CC=${CC}' 'ANOPELIBS=${ANOPELIBS}' \
|
||||
'TOUCH=${TOUCH}' 'SHELL=${SHELL}' 'DATDEST=${DATDEST}' \
|
||||
'RUNGROUP=${RUNGROUP}' 'USE_MODULES=${USE_MODULES}'
|
||||
|
||||
LANGOBJS = cat de en_us es fr gr hun it nl pl pt ru tr
|
||||
LANGSRCS = cat.l de.l en_us.l es.l fr.l gr.l hun.l it.l nl.l pl.l pt.l ru.l tr.l
|
||||
LANGOBJS = cat de en_us es fr gr hun it ja_utf8 nl pl pt ru tr
|
||||
LANGSRCS = cat.l de.l en_us.l es.l fr.l gr.l hun.l it.l ja_utf8.l nl.l pl.l pt.l ru.l tr.l
|
||||
|
||||
LANGCOMP = ./langcomp
|
||||
#LANGCOMP = ./langcomp -w
|
||||
@@ -59,6 +59,8 @@ hun: hun.l langcomp index
|
||||
./langcomp $@.l
|
||||
it: it.l langcomp index
|
||||
./langcomp $@.l
|
||||
ja_utf8: ja_utf8.l langcomp index
|
||||
./langcomp $@.l
|
||||
nl: nl.l langcomp index
|
||||
./langcomp $@.l
|
||||
pl: pl.l langcomp index
|
||||
|
||||
+5
-2
@@ -3,8 +3,8 @@
|
||||
include ../Makefile.inc.win32
|
||||
|
||||
|
||||
LANGOBJS = cat de en_us es fr hun gr nl pl pt tr it ru
|
||||
LANGSRCS = cat de en_us.l es fr.l hun.l gr.l nl.l pl.l pt.l tr.l it.l ru.l
|
||||
LANGOBJS = cat de en_us es fr hun gr nl pl pt tr it ja_utf8 ru
|
||||
LANGSRCS = cat de en_us.l es fr.l hun.l gr.l nl.l pl.l pt.l tr.l it.l ja_utf8.l ru.l
|
||||
|
||||
LANGCOMP = ./langcomp
|
||||
#LANGCOMP = ./langcomp -w
|
||||
@@ -26,6 +26,7 @@ install: all
|
||||
-copy pt ..\$(DATDEST)\languages
|
||||
-copy tr ..\$(DATDEST)\languages
|
||||
-copy it ..\$(DATDEST)\languages
|
||||
-copy ja_utf8 ..\$(DATDEST)\languages
|
||||
-copy ru ..\$(DATDEST)\languages
|
||||
|
||||
clean:
|
||||
@@ -59,6 +60,8 @@ tr: tr.l langtool.exe langcomp.exe index
|
||||
langcomp $@.l
|
||||
it: it.l langtool.exe langcomp.exe index
|
||||
langcomp $@.l
|
||||
ja_utf8: ja_utf8.l langtool.exe langcomp.exe index
|
||||
langcomp $@.l
|
||||
ru: ru.l langtool.exe langcomp.exe index
|
||||
langcomp $@.l
|
||||
|
||||
|
||||
+15
-21
@@ -1,9 +1,9 @@
|
||||
# Catalan Language File.
|
||||
#
|
||||
# (C) 2003-2009 Anope Team
|
||||
# (C) 2003-2014 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Please read COPYING and README for furhter details.
|
||||
# Please read COPYING and README for further details.
|
||||
#
|
||||
# Based on the original code of Epona by Lara.
|
||||
# Based on the original code of Services by Andy Church.
|
||||
@@ -679,7 +679,7 @@ NICK_SASET_HIDE_STATUS_OFF
|
||||
|
||||
# SASET MSG responses
|
||||
NICK_SASET_MSG_SYNTAX
|
||||
SSAET nickname PRIVATE {ON | OFF}
|
||||
SSAET nickname MSG {ON | OFF}
|
||||
NICK_SASET_MSG_ON
|
||||
Services will now reply to %s with messages.
|
||||
NICK_SASET_MSG_OFF
|
||||
@@ -707,7 +707,7 @@ NICK_SASET_LANGUAGE_SYNTAX
|
||||
NICK_SASET_LANGUAGE_UNKNOWN
|
||||
Unknown language number %d. Type %R%s HELP SET LANGUAGE for a list of languages.
|
||||
NICK_SASET_LANGUAGE_CHANGED
|
||||
Language changed to Catalan.
|
||||
Language for %s changed to %s.
|
||||
|
||||
|
||||
# ACCESS responses
|
||||
@@ -3287,7 +3287,7 @@ OPER_HELP_DEFCON
|
||||
Syntax: DEFCON [1|2|3|4|5]
|
||||
|
||||
The defcon system can be used to implement a pre-defined
|
||||
set of restrictions to services useful during an attemtped
|
||||
set of restrictions to services useful during an attempted
|
||||
attack on the network.
|
||||
|
||||
OPER_HELP_DEFCON_NO_NEW_CHANNELS
|
||||
@@ -3423,14 +3423,12 @@ NEWS_HELP_LOGON
|
||||
|
||||
Edits or displays the list of logon news messages. When a
|
||||
user connects to the network, these messages will be sent
|
||||
to them. (However, no more than %s messages will be
|
||||
to them. (However, no more than %d messages will be
|
||||
sent in order to avoid flooding the user. If there are
|
||||
more news messages, only the most recent will be sent.)
|
||||
NewsCount can be configured in services.conf.
|
||||
|
||||
LOGONNEWS LIST may be used by any IRC operator to list the
|
||||
current news messages. ADD and DEL may only be used by
|
||||
Services admins.
|
||||
LOGONNEWS may only be used by Services admins.
|
||||
|
||||
NEWS_HELP_OPER
|
||||
Syntax: OPERNEWS ADD text
|
||||
@@ -3439,14 +3437,12 @@ NEWS_HELP_OPER
|
||||
|
||||
Edits or displays the list of oper news messages. When a
|
||||
user opers up (with the /OPER command), these messages will
|
||||
be sent to them. (However, no more than %s messages will
|
||||
be sent to them. (However, no more than %d messages will
|
||||
be sent in order to avoid flooding the user. If there are
|
||||
more news messages, only the most recent will be sent.)
|
||||
NewsCount can be configured in services.conf.
|
||||
|
||||
OPERNEWS LIST may be used by any IRC operator to list the
|
||||
current oper news messages. ADD and DEL may only be used by
|
||||
Services admins.
|
||||
OPERNEWS may only be used by Services admins.
|
||||
|
||||
NEWS_HELP_RANDOM
|
||||
Sintaxis: RANDOMNEWS ADD text
|
||||
@@ -3457,9 +3453,7 @@ NEWS_HELP_RANDOM
|
||||
Quant un usuari es connecta a la xarxa, un (i nomès un) dels
|
||||
missatges a l'atzar sera escollit i enviat a ells.
|
||||
|
||||
RANDOMNEWS LIST pot ser utilitzat per qualsevol operador
|
||||
d'IRC per llistar la llista de notícies actual. ADD i DEL
|
||||
nomès pot ser utilitzats per administradors de serveis.
|
||||
RANDOMNEWS may only be used by Services admins.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
@@ -5705,7 +5699,7 @@ OPER_HELP_CMD_SHUTDOWN
|
||||
OPER_HELP_CMD_DEFCON
|
||||
DEFCON Manipulate the DefCon system
|
||||
OPER_HELP_CMD_CHANKILL
|
||||
CHANKILL Kill all users on a specific channel
|
||||
CHANKILL AKILL all users on a specific channel
|
||||
OPER_HELP_CMD_OLINE
|
||||
OLINE Give Operflags to a certain user
|
||||
OPER_HELP_CMD_UMODE
|
||||
@@ -6733,9 +6727,9 @@ HOST_SET_IDENTTOOLONG
|
||||
HOST_NOREG
|
||||
User %s not found in the nickserv db.
|
||||
HOST_SET_SYNTAX
|
||||
Syntax %R%s set <nick> <hostmask>.
|
||||
SET <nick> <hostmask>.
|
||||
HOST_SETALL_SYNTAX
|
||||
Syntax %R%s setall <nick> <hostmask>.
|
||||
SETALL <nick> <hostmask>.
|
||||
HOST_DENIED
|
||||
Access Denied.
|
||||
HOST_NOT_ASSIGNED
|
||||
@@ -6771,9 +6765,9 @@ HOST_NO_VIDENT
|
||||
#
|
||||
###########################################################################
|
||||
HOST_GROUP
|
||||
All vhost's in the group %s have been set to %s
|
||||
All vhosts in the group %s have been set to %s
|
||||
HOST_IDENT_GROUP
|
||||
All vhost's in the group %s have been set to %s@%s
|
||||
All vhosts in the group %s have been set to %s@%s
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
# Deutsches Language file.
|
||||
#
|
||||
# (C) 2003-2009 Anope Team
|
||||
# (C) 2003-2014 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Please read COPYING and README for furhter details.
|
||||
# Please read COPYING and README for further details.
|
||||
#
|
||||
# Based on the original code of Epona by Lara.
|
||||
# Based on the original code of Services by Andy Church.
|
||||
@@ -11,6 +11,9 @@
|
||||
# Translated by chemical <chem@gmx.net>,shine <dh@shinewelt.de> bis 28.02.2003
|
||||
# - Solltest du irgendwelche Rechtschreibfehler oder sonstige
|
||||
# Verbesserungsvorschläge haben, immer her damit!
|
||||
#
|
||||
# INFO ::: Letzte Änderung: 29.01.2011 -- Han` -- Han@mefalcon.org --
|
||||
#
|
||||
##########################################################################
|
||||
#
|
||||
# This program is free but copyrighted software; see the file COPYING for
|
||||
@@ -47,13 +50,6 @@
|
||||
# (including empty lines). This has to be a tab, not spaces.
|
||||
##########################################################################
|
||||
#
|
||||
# INFO ::: Letzte Änderung: 05.07.2009 -- Han` -- Han@mefalcon.org --
|
||||
#
|
||||
##########################################################################
|
||||
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
# Name of this language
|
||||
#
|
||||
###########################################################################
|
||||
@@ -317,10 +313,13 @@ END_OF_ANY_LIST
|
||||
|
||||
# Automatic messages
|
||||
LIST_INCORRECT_RANGE
|
||||
Incorrect range specified. The correct syntax is #from-to.
|
||||
Du hast einen fehlerhaften Bereich angegeben.
|
||||
Die richtige Schreibweise ist #von-bis.
|
||||
Beispiel: #1-50 oder #1-100
|
||||
CS_LIST_INCORRECT_RANGE
|
||||
To search for channels starting with #, search for the channel
|
||||
name without the #-sign prepended (anope instead of #anope).
|
||||
Um nach Channeln zu suchen die mit # beginnen, suche nach Channelnamen
|
||||
ohne das #-Symbol voranszutellen (anope anstatt #anope).
|
||||
Wildcards können verwendet werden.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
@@ -693,7 +692,7 @@ NICK_SASET_HIDE_STATUS_OFF
|
||||
|
||||
# SASET MSG responses
|
||||
NICK_SASET_MSG_SYNTAX
|
||||
SASET nickname PRIVATE {ON | OFF}
|
||||
SASET nickname MSG {ON | OFF}
|
||||
NICK_SASET_MSG_ON
|
||||
Die Services werden jetzt %s mit messages antworten.
|
||||
NICK_SASET_MSG_OFF
|
||||
@@ -722,7 +721,7 @@ NICK_SASET_LANGUAGE_UNKNOWN
|
||||
Unbekannte Sprachen-Nummer %d.
|
||||
Tippe %R%s HELP SET LANGUAGE um eine Liste aller verfügbaren Sprachen zu erhalten.
|
||||
NICK_SASET_LANGUAGE_CHANGED
|
||||
Sprache wurde geändert zu Deutsch.
|
||||
Language for %s changed to %s.
|
||||
|
||||
|
||||
# ACCESS responses
|
||||
@@ -787,7 +786,7 @@ NICK_INFO_EMAIL
|
||||
NICK_INFO_VHOST
|
||||
vHost: %s
|
||||
NICK_INFO_VHOST2
|
||||
vHost: %s@%s
|
||||
vHost: %s@%s
|
||||
NICK_INFO_ICQ
|
||||
ICQ #: %d
|
||||
NICK_INFO_GREET
|
||||
@@ -857,7 +856,7 @@ NICK_GLIST_FOOTER
|
||||
NICK_GLIST_REPLY
|
||||
%c%s
|
||||
NICK_GLIST_REPLY_ADMIN
|
||||
%c%s (wird in %s auslaufen)
|
||||
%c%s (wird am %s auslaufen)
|
||||
|
||||
# RECOVER responses
|
||||
NICK_RECOVER_SYNTAX
|
||||
@@ -1129,6 +1128,8 @@ CHAN_LOGOUT_SUCCEEDED
|
||||
Der User %s wurde vom Channel %s ausgeloggt.
|
||||
CHAN_LOGOUT_ALL_SUCCEEDED
|
||||
Alle identifizierten User wurden vom Channel ausgeloggt %s (außer dem Channel Founder).
|
||||
CHAN_LOGOUT_FOUNDER_FAILED
|
||||
You may not log out of %s (you are founder).
|
||||
|
||||
# DROP responses
|
||||
CHAN_DROP_SYNTAX
|
||||
@@ -2618,7 +2619,7 @@ OPER_SVSNICK_NEWNICK
|
||||
OPER_ADMIN_SYNTAX
|
||||
ADMIN {ADD|DEL|LIST|CLEAR} [Nickname | entry-liste]
|
||||
OPER_ADMIN_SKELETON
|
||||
Services sind im Basis-Modus. Das ADMIN-Befehl ist nicht verfügbar.
|
||||
Services sind im Basis-Modus. Der ADMIN-Befehl ist nicht verfügbar.
|
||||
OPER_ADMIN_EXISTS
|
||||
%s existiert bereits auf der Services Administratoren-Liste.
|
||||
OPER_ADMIN_REACHED_LIMIT
|
||||
@@ -3242,7 +3243,7 @@ OPER_HELP_STAFF
|
||||
OPER_HELP_DEFCON
|
||||
Syntax: DEFCON [1|2|3|4|5]
|
||||
|
||||
Das Defcon-System kann benutzt werden, um vordefinierte Einstellung
|
||||
Das Defcon-System kann benutzt werden, um vordefinierte Einstellung
|
||||
von einschränkungen der Services einzubinden - nützlich während
|
||||
versuchter Angriffe auf das Netzwerk.
|
||||
|
||||
@@ -3372,15 +3373,12 @@ NEWS_HELP_LOGON
|
||||
|
||||
Zeigt oder bearbeitet die Liste der LogonNews.
|
||||
Nach der Verbindung des Users werden diese Nachrichten
|
||||
angezeigt. (Es werden jedoch nur max. %s angezeigt, um ein
|
||||
angezeigt. (Es werden jedoch nur max. %d angezeigt, um ein
|
||||
Flooding des Users zu verhindern. Wenn mehr News
|
||||
existieren, werden nur die neuesten angezeigt.)
|
||||
Die Anzahl der News können in der services.conf festgelegt werden.
|
||||
|
||||
LOGONNEWS LIST kann von jedem IRC Operator benutzt werden
|
||||
um die aktuelle Liste der Logon News anzeigen zu lassen.
|
||||
ADD oder DEL können allerdings nur von Services Admins
|
||||
ausgeführt werden.
|
||||
Diese Funktion ist beschränkt auf die Services Administartoren.
|
||||
|
||||
NEWS_HELP_OPER
|
||||
Syntax: OPERNEWS ADD Text
|
||||
@@ -3390,15 +3388,12 @@ NEWS_HELP_OPER
|
||||
Zeigt oder bearbeitet die Liste der Oper-News.Nachdem
|
||||
sich ein User die Oper-Flags gesetzt hat (mit dem
|
||||
/OPER Befehl) werden ihm diese Nachrichten angezeigt.
|
||||
(Es werden jedoch nur max. %s Nachrichten angezeigt, um ein
|
||||
(Es werden jedoch nur max. %d Nachrichten angezeigt, um ein
|
||||
Flooding des Users zu verhindern. Wenn mehr News
|
||||
existieren, werden nur die neüsten angezeigt.)
|
||||
Die Anzahl der News können in der services.conf festgelegt werden.
|
||||
|
||||
OPERNEWS LIST kann von jedem IRC Operator benutzt werden
|
||||
um die aktuelle Liste der Oper-News anzeigen zu lassen.
|
||||
ADD oder DEL können allerdings nur von Services Admins
|
||||
ausgeführt werden.
|
||||
Diese Funktion ist beschränkt auf die Services Administartoren.
|
||||
|
||||
NEWS_HELP_RANDOM
|
||||
Syntax: RANDOMNEWS ADD Text
|
||||
@@ -3409,9 +3404,7 @@ NEWS_HELP_RANDOM
|
||||
Wenn ein User zum Network verbindet, wird eine (und nur eine!) dieser
|
||||
RandomNews Nachrichten zufällig gewählt und an den User gesendet.
|
||||
|
||||
RANDOMNEWS LIST kann von jedem IRC Operator genutzt werden um die
|
||||
aktuellen News Nachrichten aufzulisten. ADD und DEL können nur von
|
||||
Services Administratoren genutzt werden.
|
||||
Diese Funktion ist beschränkt auf die Services Administartoren.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
@@ -3763,7 +3756,7 @@ NICK_HELP_SET_GREET
|
||||
gesendet, wenn du in einen Channel eintrittst, der
|
||||
die GREET Option eingeschaltet hat. Vorausgesetzt
|
||||
du hast den nötigen Zugriffslevel in der Access-Liste
|
||||
des Channels.
|
||||
des Channels.
|
||||
|
||||
NICK_HELP_SET_KILL
|
||||
Syntax: SET KILL {ON | QUICK | IMMED | OFF}
|
||||
@@ -4049,7 +4042,7 @@ NICK_HELP_GHOST
|
||||
wenn dein Computer abstürtzt oder deine Internet-
|
||||
Verbindung zusammenbricht, wenn du im IRC bist.
|
||||
|
||||
Wenn du das GHOST Befehk benutzen willst,muss
|
||||
Wenn du das GHOST Befehl benutzen willst,muss
|
||||
deine aktuelle Hostmaske (siehe /WHOIS) in der
|
||||
Zugriffsliste des entsprechenden Nicknamens oder
|
||||
in der Gruppe des Nicknamens sein.Weiterhin musst
|
||||
@@ -4113,7 +4106,7 @@ NICK_HELP_ALIST
|
||||
NICK_HELP_GLIST
|
||||
Syntax: GLIST
|
||||
|
||||
Zeigt alle Nicknamen die in deiner Gruppe enthalten sind.
|
||||
Zeigt alle Nicknamen die in deiner Gruppe enthalten sind.
|
||||
|
||||
NICK_HELP_STATUS
|
||||
Syntax: STATUS Nickname
|
||||
@@ -4276,7 +4269,7 @@ NICK_SERVADMIN_HELP_GETPASS
|
||||
NICK_SERVADMIN_HELP_GETEMAIL
|
||||
Syntax: GETEMAIL user@emailhost
|
||||
|
||||
Gibt die passenden Nicknamen auf, welche die gegebene eMail benutzen.
|
||||
Gibt die passenden Nicknamen an, welche die angegebene eMail benutzen.
|
||||
Beachte, dass du keine wildcards für den User oder emailhost
|
||||
verwenden kannst. Immer, wenn dieser Befehl benutzt wird, wird
|
||||
eine Nachricht mit dem Nickname der Person mitgeloggt.
|
||||
@@ -4351,7 +4344,7 @@ CHAN_HELP_CMD_CLEAR
|
||||
CLEAR Entfernt bestimmte Einstellungen des angegebenen Channel
|
||||
CHAN_HELP_CMD_DEVOICE
|
||||
DEVOICE Enfernt den Voice-Status des angegebenen Nicknamens
|
||||
in einen Channel
|
||||
in einem Channel
|
||||
CHAN_HELP_CMD_GETKEY
|
||||
GETKEY Gibt das Channel-Passwort wieder
|
||||
CHAN_HELP_CMD_INFO
|
||||
@@ -4361,43 +4354,43 @@ CHAN_HELP_CMD_INVITE
|
||||
CHAN_HELP_CMD_KICK
|
||||
KICK Kickt den angegebenen Nicknamen aus einen Channel
|
||||
CHAN_HELP_CMD_LIST
|
||||
LIST Listet alle registrieten Channels des angegebene Muster
|
||||
LIST Listet alle registrierten Channels des angegebene Muster
|
||||
CHAN_HELP_CMD_LOGOUT
|
||||
LOGOUT Das Befehl wir den angegegenen Nickname abmelden
|
||||
LOGOUT Meldet den angegebenen Nicknamen ab
|
||||
CHAN_HELP_CMD_OP
|
||||
OP Gibt den angegebenen Nicknamen Op-Status in einen Channel
|
||||
OP Gibt dem angegebenen Nicknamen Op-Status in einem Channel
|
||||
CHAN_HELP_CMD_TOPIC
|
||||
TOPIC Ändert den Topic des angegebenen Channels
|
||||
CHAN_HELP_CMD_UNBAN
|
||||
UNBAN Enfernt den oder die ban(s) die dich betreffen aus einen Channel
|
||||
UNBAN Enfernt den oder die Bann(s) die Dich betreffen aus einem Channel
|
||||
CHAN_HELP_CMD_VOICE
|
||||
VOICE Gibt den angegebenen User Voice-Status in einen Channel
|
||||
VOICE Gibt dem angegebenen User Voice-Status in einem Channel
|
||||
CHAN_HELP_CMD_VOP
|
||||
VOP Verwaltet die VOP-Liste von einen Channel
|
||||
VOP Verwaltet die VOP-Liste eines Channels
|
||||
CHAN_HELP_CMD_DEHALFOP
|
||||
DEHALFOP Enfernt den HalfOP-Status des angegebenen Nicknamens
|
||||
in einen Channel
|
||||
in einem Channel
|
||||
CHAN_HELP_CMD_DEOWNER
|
||||
DEOWNER Entfernt dein Founder (Gründer) Status in einen Channel
|
||||
DEOWNER Entfernt Deinen Founder (Gründer) Status in einem Channel
|
||||
CHAN_HELP_CMD_DEPROTECT
|
||||
DEPROTECT Entfernt den schutz des angegebenen Nicknamens
|
||||
in einen Channel
|
||||
DEPROTECT Entfernt den Schutz des angegebenen Nicknamens
|
||||
in einem Channel
|
||||
CHAN_HELP_CMD_HALFOP
|
||||
HALFOP Gibt den angegebenen User HalfOP-Status in einen Channel
|
||||
HALFOP Gibt dem angegebenen User HalfOP-Status in einem Channel
|
||||
CHAN_HELP_CMD_HOP
|
||||
HOP Verwaltet die HOP-Liste von einen Channel
|
||||
CHAN_HELP_CMD_OWNER
|
||||
OWNER Gibt dir Founder (Gründer) Staus in einen Channel
|
||||
OWNER Gibt Dir Founder (Gründer) Status in einem Channel
|
||||
CHAN_HELP_CMD_PROTECT
|
||||
PROTECT Schützt den angegebenen Nicknamen in einen Channel
|
||||
PROTECT Schützt den angegebenen Nicknamen in einem Channel
|
||||
CHAN_HELP_CMD_ADMIN
|
||||
ADMIN Schützt den angegebenen Nicknamen in einen Channel
|
||||
ADMIN Schützt den angegebenen Nicknamen in einem Channel
|
||||
CHAN_HELP_CMD_DEADMIN
|
||||
DEADMIN Entfernt den Schutz des angegebenen Nicknamens
|
||||
in einen Channel
|
||||
in einem Channel
|
||||
CHAN_HELP_CMD_DEOP
|
||||
DEOP Enfernt den OP-Status des angegebenen Nicknamens
|
||||
in einen Channel
|
||||
in einem Channel
|
||||
|
||||
CHAN_HELP
|
||||
Mit Hilfe von %S kann man Channel registrieren und
|
||||
@@ -4425,7 +4418,7 @@ CHAN_HELP_REGISTER
|
||||
einstellst, erlaubt es später anderen Änderungen
|
||||
am Channel durchzuführen.Der letzte Parameter, der
|
||||
angegeben werden MUSS,sollte eine allgemeine
|
||||
Beschreibung des Channels bzw dessen Zweck beinhalten.
|
||||
Beschreibung des Channels bzw dessen Zweck beinhalten.
|
||||
|
||||
Wenn du einen Channel registrierst, wird dein Nickname
|
||||
als Founder (Gründer) eingetragen. Der Channel-Founder
|
||||
@@ -4438,7 +4431,7 @@ CHAN_HELP_REGISTER
|
||||
|
||||
Hinweis: Für das Registrieren eines Channels musst du
|
||||
einen registrierten und identifizierten Nickname benutzen.
|
||||
Hast du dies noch nicht getan, tippe %R%s HELP REGISTER
|
||||
Hast du dies noch nicht getan, tippe %R%s HELP REGISTER
|
||||
um weitere Informationen darüber zu erhalten.
|
||||
|
||||
CHAN_HELP_IDENTIFY
|
||||
@@ -4602,7 +4595,7 @@ CHAN_HELP_SET_MLOCK
|
||||
|
||||
Die Modes die gelockt werden können sind von dein IRCD abhängig.
|
||||
Jede einzelne dieser Modes kann ein/aus oder gar nicht gelockt werden.
|
||||
Der Modi Parameter ist genauso aufgebaut wie das jeweilige /MODE Befehl.
|
||||
Der Modi Parameter ist genauso aufgebaut wie das jeweilige /MODE Befehl.
|
||||
Dies bedeutet, Modi die durch ein + gekennzeichnet sind, sind aktiviert,
|
||||
durch ein - sind sie deaktiviert.
|
||||
|
||||
@@ -5244,7 +5237,7 @@ CHAN_HELP_CLEAR
|
||||
(z.B. Modi i,k,l,m,n,p,s und t)
|
||||
BANS Entfernt alle Bans in dem Channel
|
||||
EXCEPTS Entfernt alle Excepts in dem Channel
|
||||
INVITES Clears all invites on the channel
|
||||
INVITES Löscht alle Einladungen im Channel.
|
||||
OPS Entfernt jeden Operator-Status (mode +o)
|
||||
in dem Channel.
|
||||
HOPS Entfernt jeden Halfoperator-Status (mode +h)
|
||||
@@ -5308,7 +5301,7 @@ CHAN_SERVADMIN_HELP_DROP
|
||||
|
||||
Entfernt die Registrierung des angegebenen Channels aus
|
||||
der Datenbank. Zusätzlich werden Zugriffslisten,
|
||||
Einstellungen usw mit aus der Datenbank entfernt.
|
||||
Einstellungen usw mit aus der Datenbank entfernt.
|
||||
|
||||
Nur Services Administratoren können Channel DROPEN,
|
||||
(löschen) ohne sich vorher gegenüber dem Channel als
|
||||
@@ -5723,7 +5716,7 @@ OPER_HELP_CMD_SHUTDOWN
|
||||
OPER_HELP_CMD_DEFCON
|
||||
DEFCON Ändert das DefCon System
|
||||
OPER_HELP_CMD_CHANKILL
|
||||
CHANKILL Killt alle User des angegebenen Channels
|
||||
CHANKILL Setzt einen AKILL auf alle User des angegebenen Channels.
|
||||
OPER_HELP_CMD_OLINE
|
||||
OLINE Einem User "Operflags" setzen
|
||||
OPER_HELP_CMD_UMODE
|
||||
@@ -6128,14 +6121,12 @@ OPER_HELP_SET
|
||||
Ändert globale Einstellungen der Services Optionen.
|
||||
Diese Optionen lassen sich ändern:
|
||||
|
||||
READONLY Nur-Lese Modus der Datenbank an
|
||||
oder aus
|
||||
READONLY Nur-Lese Modus der Datenbank an oder aus
|
||||
LOGCHAN Zeigt Logmessages in einem Chan
|
||||
DEBUG Debug-Modus der Services an oder aus
|
||||
NOEXPIRE Auslauf-Modus der Services
|
||||
an oder aus
|
||||
NOEXPIRE Auslauf-Modus der Services an oder aus
|
||||
SUPERADMIN Den Super-Admin Modus an oder aus
|
||||
SQL SQL-Modus an oder aus
|
||||
SQL SQL-Modus an oder aus
|
||||
IGNORE Ignore-Modus an oder aus
|
||||
LIST Optionen-Liste
|
||||
|
||||
@@ -6292,7 +6283,7 @@ OPER_HELP_RESTART
|
||||
|
||||
Die Services werden sich bei diesem Befehl beenden,
|
||||
die Datenbanken speichern, und danach neustarten
|
||||
(die ausführbare Datei erneut aufrufen).
|
||||
(die ausführbare Datei erneut aufrufen).
|
||||
|
||||
OPER_HELP_CHANLIST
|
||||
Syntax: CHANLIST [{Muster | Nickname} [SECRET]]
|
||||
@@ -6363,20 +6354,20 @@ BOT_HELP_CMD_BADWORDS
|
||||
BOT_HELP_CMD_ACT
|
||||
ACT Veranlaßt den Bot ein "/me" Befehl ausführen
|
||||
BOT_HELP_CMD_INFO
|
||||
INFO Erlaubt dir Informationen über ein BotServ ServicesBot zu sehen
|
||||
INFO Erlaubt Dir, Informationen über einen ServicesBot anzuzeigen
|
||||
BOT_HELP_CMD_SAY
|
||||
SAY Veranlaßt ein Bot ein Text in einen Channel zu sagen
|
||||
SAY Veranlaßt den Bot etwas in einem Channel zu sagen
|
||||
BOT_HELP_CMD_UNASSIGN
|
||||
UNASSIGN Entfernt ein ServicesBot von einen Channel
|
||||
UNASSIGN Entfernt ein ServicesBot von einem Channel
|
||||
BOT_HELP_CMD_BOT
|
||||
BOT Verwaltung von Bots
|
||||
|
||||
BOT_HELP
|
||||
%S ist dafür geschaffen, Bots in Channels
|
||||
%S ist dafür geschaffen, Bots in Channels
|
||||
einzubringen. Geschaffen wurde er für User, die
|
||||
selbst keinen Bot ausfetzen können, oder auch Netzwerke,
|
||||
die Bots verbieten. Mögliche Befehle siehe unten,
|
||||
die Syntax ist %R%S Befehl.
|
||||
die Bots verbieten. Mögliche Befehle siehe unten,
|
||||
die Syntax ist %R%S Befehl.
|
||||
|
||||
Für weitere Hilfe zu einem bestimmten Befehl
|
||||
tippe %R%S HELP Befehl
|
||||
@@ -6738,9 +6729,9 @@ HOST_SET_IDENTTOOLONG
|
||||
HOST_NOREG
|
||||
User %s wurde nicht in der NickServ Datenbank gefunden.
|
||||
HOST_SET_SYNTAX
|
||||
Syntax %R%s SET Nickname Hostmaske.
|
||||
SET <Nickname> <Hostmaske>.
|
||||
HOST_SETALL_SYNTAX
|
||||
Syntax %R%s SETALL Nickname Hostmaske.
|
||||
SETALL <Nickname> <Hostmaske>.
|
||||
HOST_DENIED
|
||||
Zugriff verweigert.
|
||||
HOST_NOT_ASSIGNED
|
||||
@@ -6758,9 +6749,9 @@ HOST_DEL
|
||||
HOST_DEL_SYNTAX
|
||||
DEL Nickname.
|
||||
HOST_OFF
|
||||
Your vhost was removed and the normal cloaking restored.
|
||||
Dein vHost wurde deaktiviert und die normale Host-Verschlüsselung wiederhergestellt.
|
||||
HOST_OFF_UNREAL
|
||||
Dein vHost wurde gelöscht. Um die normale Host-Verschlüsselung zu reaktivieren, tippe /mode %s +%s
|
||||
Dein vHost wurde deaktiviert. Um die normale Host-Verschlüsselung zu reaktivieren, tippe /mode %s +%s
|
||||
HOST_NO_VIDENT
|
||||
Dein IRCd unterstützt keine vIdents. Falls das inkorrekt sein sollte, melde das bitte als einen Bug.
|
||||
HOST_GROUP
|
||||
|
||||
+47
-49
@@ -1,6 +1,6 @@
|
||||
# United States English language file.
|
||||
#
|
||||
# (C) 2003-2009 Anope Team
|
||||
# (C) 2003-2014 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Please read COPYING and README for further details.
|
||||
@@ -664,7 +664,7 @@ NICK_SASET_HIDE_STATUS_OFF
|
||||
|
||||
# SASET MSG responses
|
||||
NICK_SASET_MSG_SYNTAX
|
||||
SASAET nickname PRIVATE {ON | OFF}
|
||||
SASET nickname MSG {ON | OFF}
|
||||
NICK_SASET_MSG_ON
|
||||
Services will now reply to %s with messages.
|
||||
NICK_SASET_MSG_OFF
|
||||
@@ -692,7 +692,7 @@ NICK_SASET_LANGUAGE_SYNTAX
|
||||
NICK_SASET_LANGUAGE_UNKNOWN
|
||||
Unknown language number %d. Type %R%s HELP SET LANGUAGE for a list of languages.
|
||||
NICK_SASET_LANGUAGE_CHANGED
|
||||
Language changed to English.
|
||||
Language for %s changed to %s.
|
||||
|
||||
|
||||
# ACCESS responses
|
||||
@@ -879,13 +879,13 @@ NICK_SENDPASS_HEAD
|
||||
NICK_SENDPASS_LINE_1
|
||||
You have requested to receive the password of nickname %s by e-mail.
|
||||
NICK_SENDPASS_LINE_2
|
||||
The password is %s for security purposes, you should change it as soon as you receive this mail.
|
||||
The password is %s. For security reasons, you should change it as soon as possible.
|
||||
NICK_SENDPASS_LINE_3
|
||||
If you don't know why this mail is sent to you, please ignore it silently.
|
||||
If you don't know why this email has been sent to you, please ignore it.
|
||||
NICK_SENDPASS_LINE_4
|
||||
PLEASE DON'T ANSWER TO THIS MAIL!
|
||||
This mailbox is not monitored. Replies to this e-mail will NOT be responded to.
|
||||
NICK_SENDPASS_LINE_5
|
||||
%s administrators.
|
||||
Thanks for using %s
|
||||
NICK_SENDPASS_OK
|
||||
Password of %s has been sent.
|
||||
|
||||
@@ -935,15 +935,15 @@ NICK_REG_MAIL_SUBJECT
|
||||
NICK_REG_MAIL_HEAD
|
||||
Hi,
|
||||
NICK_REG_MAIL_LINE_1
|
||||
You have requested to register the following nickname %s.
|
||||
You have requested to register the nickname "%s".
|
||||
NICK_REG_MAIL_LINE_2
|
||||
Please type " %R%s confirm %s " to complete registration.
|
||||
Please type " %R%s confirm %s " into your IRC client to complete the registration.
|
||||
NICK_REG_MAIL_LINE_3
|
||||
If you don't know why this mail is sent to you, please ignore it silently.
|
||||
If you don't know why this mail has been sent to you, please ignore it.
|
||||
NICK_REG_MAIL_LINE_4
|
||||
PLEASE DON'T ANSWER TO THIS MAIL!
|
||||
This mailbox is not monitored. Replies to this e-mail will NOT get responded to.
|
||||
NICK_REG_MAIL_LINE_5
|
||||
%s administrators.
|
||||
Thanks for using %s
|
||||
NICK_GETPASS_PASSCODE_IS
|
||||
Passcode for %s is %s.
|
||||
NICK_FORCE_REG
|
||||
@@ -1680,13 +1680,13 @@ CHAN_SENDPASS_HEAD
|
||||
CHAN_SENDPASS_LINE_1
|
||||
You have requested to receive the password of channel %s by e-mail.
|
||||
CHAN_SENDPASS_LINE_2
|
||||
The password is %s. For security reasons, you should change it as soon as you receive this mail.
|
||||
The password is %s. For security reasons, you should change it as soon as possible.
|
||||
CHAN_SENDPASS_LINE_3
|
||||
If you don't know why this mail is sent to you, please ignore it silently.
|
||||
If you don't know why this mail has been sent to you, please ignore it.
|
||||
CHAN_SENDPASS_LINE_4
|
||||
PLEASE DON'T ANSWER TO THIS MAIL!
|
||||
This mailbox is not monitored. Replies to this e-mail will NOT be responded to.
|
||||
CHAN_SENDPASS_LINE_5
|
||||
%s administrators.
|
||||
Thanks for using %s
|
||||
CHAN_SENDPASS_OK
|
||||
Password of %s has been sent.
|
||||
|
||||
@@ -1970,9 +1970,9 @@ MEMO_MAIL_SUBJECT
|
||||
MEMO_MAIL_TEXT1
|
||||
Hi %s
|
||||
MEMO_MAIL_TEXT2
|
||||
You've just received a new memo from %s. This is memo number %d.
|
||||
You have just received a new memo from %s. This is memo number %d.
|
||||
MEMO_MAIL_TEXT3
|
||||
Memo Text:
|
||||
The text of the memo is:
|
||||
|
||||
# RSEND responses
|
||||
MEMO_RSEND_PLEASE_WAIT
|
||||
@@ -2018,7 +2018,7 @@ BOT_NOT_ON_CHANNEL
|
||||
|
||||
# Kick reasons (must be a single line)
|
||||
BOT_REASON_BADWORD
|
||||
Don't use the word \"%s\" on this channel!
|
||||
Don't use the word "%s" on this channel!
|
||||
BOT_REASON_BADWORD_GENTLE
|
||||
Watch your language!
|
||||
BOT_REASON_BOLD
|
||||
@@ -3283,14 +3283,12 @@ NEWS_HELP_LOGON
|
||||
|
||||
Edits or displays the list of logon news messages. When a
|
||||
user connects to the network, these messages will be sent
|
||||
to them. (However, no more than %s messages will be
|
||||
to them. (However, no more than %d messages will be
|
||||
sent in order to avoid flooding the user. If there are
|
||||
more news messages, only the most recent will be sent.)
|
||||
NewsCount can be configured in services.conf.
|
||||
|
||||
LOGONNEWS LIST may be used by any IRC operator to list the
|
||||
current news messages. ADD and DEL may only be used by
|
||||
Services admins.
|
||||
LOGONNEWS may only be used by Services admins.
|
||||
|
||||
NEWS_HELP_OPER
|
||||
Syntax: OPERNEWS ADD text
|
||||
@@ -3299,14 +3297,12 @@ NEWS_HELP_OPER
|
||||
|
||||
Edits or displays the list of oper news messages. When a
|
||||
user opers up (with the /OPER command), these messages will
|
||||
be sent to them. (However, no more than %s messages will
|
||||
be sent to them. (However, no more than %d messages will
|
||||
be sent in order to avoid flooding the user. If there are
|
||||
more news messages, only the most recent will be sent.)
|
||||
NewsCount can be configured in services.conf.
|
||||
|
||||
OPERNEWS LIST may be used by any IRC operator to list the
|
||||
current oper news messages. ADD and DEL may only be used by
|
||||
Services admins.
|
||||
OPERNEWS may only be used by Services admins.
|
||||
|
||||
NEWS_HELP_RANDOM
|
||||
Syntax: RANDOMNEWS ADD text
|
||||
@@ -3317,9 +3313,7 @@ NEWS_HELP_RANDOM
|
||||
user connects to the network, one (and only one) of the
|
||||
random news will be randomly chosen and sent to them.
|
||||
|
||||
RANDOMNEWS LIST may be used by any IRC operator to list the
|
||||
current news messages. ADD and DEL may only be used by
|
||||
Services admins.
|
||||
RANDOMNEWS may only be used by Services admins.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
@@ -3906,6 +3900,7 @@ NICK_HELP_LIST
|
||||
Lists all registered nicknames which match the given
|
||||
pattern, in nick!user@host format. Nicks with the
|
||||
PRIVATE option set will not be displayed.
|
||||
Note that a pattern preceding with a '#' specifies a range.
|
||||
|
||||
Examples:
|
||||
|
||||
@@ -3919,6 +3914,9 @@ NICK_HELP_LIST
|
||||
LIST *!*@*.bar.org
|
||||
Lists all nicks owned by users in the bar.org
|
||||
domain.
|
||||
|
||||
LIST #50-100
|
||||
Lists nicks numbers 50-100
|
||||
|
||||
NICK_HELP_ALIST
|
||||
Syntax: ALIST [level]
|
||||
@@ -4417,8 +4415,8 @@ CHAN_HELP_SET_PEACE
|
||||
Syntax: SET channel PEACE {ON | OFF}
|
||||
|
||||
Enables or disables the peace option for a channel.
|
||||
When peace is set, an user won't be able to kick,
|
||||
ban or remove a channel status of an user that has
|
||||
When peace is set, a user won't be able to kick,
|
||||
ban or remove a channel status of a user that has
|
||||
a level superior or equal to his via %S commands.
|
||||
|
||||
CHAN_HELP_SET_PRIVATE
|
||||
@@ -5422,7 +5420,7 @@ OPER_HELP_CMD_SHUTDOWN
|
||||
OPER_HELP_CMD_DEFCON
|
||||
DEFCON Manipulate the DefCon system
|
||||
OPER_HELP_CMD_CHANKILL
|
||||
CHANKILL Kill all users on a specific channel
|
||||
CHANKILL AKILL all users on a specific channel
|
||||
OPER_HELP_CMD_OLINE
|
||||
OLINE Give Operflags to a certain user
|
||||
OPER_HELP_CMD_UMODE
|
||||
@@ -6152,7 +6150,7 @@ BOT_HELP_KICK_BOLDS
|
||||
Sets the bolds kicker on or off. When enabled, this
|
||||
option tells the bot to kick users who use bolds.
|
||||
|
||||
ttb is the number of times an user can be kicked
|
||||
ttb is the number of times a user can be kicked
|
||||
before it get banned. Don't give ttb to disable
|
||||
the ban system once activated.
|
||||
|
||||
@@ -6162,7 +6160,7 @@ BOT_HELP_KICK_COLORS
|
||||
Sets the colors kicker on or off. When enabled, this
|
||||
option tells the bot to kick users who use colors.
|
||||
|
||||
ttb is the number of times an user can be kicked
|
||||
ttb is the number of times a user can be kicked
|
||||
before it get banned. Don't give ttb to disable
|
||||
the ban system once activated.
|
||||
|
||||
@@ -6172,7 +6170,7 @@ BOT_HELP_KICK_REVERSES
|
||||
Sets the reverses kicker on or off. When enabled, this
|
||||
option tells the bot to kick users who use reverses.
|
||||
|
||||
ttb is the number of times an user can be kicked
|
||||
ttb is the number of times a user can be kicked
|
||||
before it get banned. Don't give ttb to disable
|
||||
the ban system once activated.
|
||||
|
||||
@@ -6182,7 +6180,7 @@ BOT_HELP_KICK_UNDERLINES
|
||||
Sets the underlines kicker on or off. When enabled, this
|
||||
option tells the bot to kick users who use underlines.
|
||||
|
||||
ttb is the number of times an user can be kicked
|
||||
ttb is the number of times a user can be kicked
|
||||
before it get banned. Don't give ttb to disable
|
||||
the ban system once activated.
|
||||
|
||||
@@ -6198,7 +6196,7 @@ BOT_HELP_KICK_CAPS
|
||||
text line (if not given, it defaults to 10 characters
|
||||
and 25%%).
|
||||
|
||||
ttb is the number of times an user can be kicked
|
||||
ttb is the number of times a user can be kicked
|
||||
before it get banned. Don't give ttb to disable
|
||||
the ban system once activated.
|
||||
|
||||
@@ -6210,7 +6208,7 @@ BOT_HELP_KICK_FLOOD
|
||||
the channel using at least ln lines in secs seconds
|
||||
(if not given, it defaults to 6 lines in 10 seconds).
|
||||
|
||||
ttb is the number of times an user can be kicked
|
||||
ttb is the number of times a user can be kicked
|
||||
before it get banned. Don't give ttb to disable
|
||||
the ban system once activated.
|
||||
|
||||
@@ -6222,7 +6220,7 @@ BOT_HELP_KICK_REPEAT
|
||||
themselves num times (if num is not given, it
|
||||
defaults to 3).
|
||||
|
||||
ttb is the number of times an user can be kicked
|
||||
ttb is the number of times a user can be kicked
|
||||
before it get banned. Don't give ttb to disable
|
||||
the ban system once activated.
|
||||
|
||||
@@ -6237,7 +6235,7 @@ BOT_HELP_KICK_BADWORDS
|
||||
BADWORDS command. Type %R%S HELP BADWORDS for
|
||||
more information.
|
||||
|
||||
ttb is the number of times an user can be kicked
|
||||
ttb is the number of times a user can be kicked
|
||||
before it get banned. Don't give ttb to disable
|
||||
the ban system once activated.
|
||||
|
||||
@@ -6254,12 +6252,12 @@ BOT_HELP_BADWORDS
|
||||
|
||||
The BADWORDS ADD command adds the given word to the
|
||||
badword list. If SINGLE is specified, a kick will be
|
||||
done only if an user says the entire word. If START is
|
||||
specified, a kick will be done if an user says a word
|
||||
done only if a user says the entire word. If START is
|
||||
specified, a kick will be done if a user says a word
|
||||
that starts with word. If END is specified, a kick
|
||||
will be done if an user says a word that ends with
|
||||
will be done if a user says a word that ends with
|
||||
word. If you don't specify anything, a kick will
|
||||
be issued every time word is said by an user.
|
||||
be issued every time word is said by a user.
|
||||
|
||||
The BADWORDS DEL command removes the given word from the
|
||||
bad words list. If a list of entry numbers is given, those
|
||||
@@ -6366,9 +6364,9 @@ HOST_SET_IDENTTOOLONG
|
||||
HOST_NOREG
|
||||
User %s not found in the nickserv db.
|
||||
HOST_SET_SYNTAX
|
||||
Syntax %R%s set <nick> <hostmask>.
|
||||
SET <nick> <hostmask>.
|
||||
HOST_SETALL_SYNTAX
|
||||
Syntax %R%s setall <nick> <hostmask>.
|
||||
SETALL <nick> <hostmask>.
|
||||
HOST_DENIED
|
||||
Access Denied.
|
||||
HOST_NOT_ASSIGNED
|
||||
@@ -6392,9 +6390,9 @@ HOST_OFF_UNREAL
|
||||
HOST_NO_VIDENT
|
||||
Your IRCD does not support vIdent's, if this is incorrect, please report this as a possible bug
|
||||
HOST_GROUP
|
||||
All vhost's in the group %s have been set to %s
|
||||
All vhosts in the group %s have been set to %s
|
||||
HOST_IDENT_GROUP
|
||||
All vhost's in the group %s have been set to %s@%s
|
||||
All vhosts in the group %s have been set to %s@%s
|
||||
HOST_LIST_FOOTER
|
||||
Displayed all records (Count: %d)
|
||||
HOST_LIST_RANGE_FOOTER
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
# Spanish Language File.
|
||||
#
|
||||
# (C) 2003-2009 Anope Team
|
||||
# (C) 2003-2014 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Please read COPYING and README for furhter details.
|
||||
# Please read COPYING and README for further details.
|
||||
#
|
||||
# Based on the original code of Epona by Lara.
|
||||
# Based on the original code of Services by Andy Church.
|
||||
@@ -473,9 +473,9 @@ NICK_SET_PASSWORD_CHANGED_TO
|
||||
NICK_SET_LANGUAGE_SYNTAX
|
||||
SET LANGUAGE numero
|
||||
NICK_SET_LANGUAGE_UNKNOWN
|
||||
Numero de lenguage %d desconocido. Tipea %R%s HELP SET LANGUAGE para una lista de lenguages.
|
||||
Numero de lenguaje %d desconocido. Tipea %R%s HELP SET LANGUAGE para una lista de lenguajes.
|
||||
NICK_SET_LANGUAGE_CHANGED
|
||||
Lenguage cambiado a Español.
|
||||
Lenguaje cambiado a Español.
|
||||
|
||||
# SET URL responses
|
||||
NICK_SET_URL_CHANGED
|
||||
@@ -683,7 +683,7 @@ NICK_SASET_HIDE_STATUS_OFF
|
||||
|
||||
# SASET MSG responses
|
||||
NICK_SASET_MSG_SYNTAX
|
||||
SSAET nickname PRIVATE {ON | OFF}
|
||||
SSAET nickname MSG {ON | OFF}
|
||||
NICK_SASET_MSG_ON
|
||||
Services will now reply to %s with messages.
|
||||
NICK_SASET_MSG_OFF
|
||||
@@ -711,7 +711,7 @@ NICK_SASET_LANGUAGE_SYNTAX
|
||||
NICK_SASET_LANGUAGE_UNKNOWN
|
||||
Unknown language number %d. Type %R%s HELP SET LANGUAGE for a list of languages.
|
||||
NICK_SASET_LANGUAGE_CHANGED
|
||||
Language changed to Spanish.
|
||||
Language for %s changed to %s.
|
||||
|
||||
|
||||
# ACCESS responses
|
||||
@@ -3397,14 +3397,12 @@ NEWS_HELP_LOGON
|
||||
|
||||
Edits or displays the list of logon news messages. When a
|
||||
user connects to the network, these messages will be sent
|
||||
to them. (However, no more than %s messages will be
|
||||
to them. (However, no more than %d messages will be
|
||||
sent in order to avoid flooding the user. If there are
|
||||
more news messages, only the most recent will be sent.)
|
||||
NewsCount can be configured in services.conf.
|
||||
|
||||
LOGONNEWS LIST may be used by any IRC operator to list the
|
||||
current news messages. ADD and DEL may only be used by
|
||||
Services admins.
|
||||
LOGONNEWS may only be used by Services admins.
|
||||
|
||||
NEWS_HELP_OPER
|
||||
Syntax: OPERNEWS ADD text
|
||||
@@ -3413,14 +3411,12 @@ NEWS_HELP_OPER
|
||||
|
||||
Edits or displays the list of oper news messages. When a
|
||||
user opers up (with the /OPER command), these messages will
|
||||
be sent to them. (However, no more than %s messages will
|
||||
be sent to them. (However, no more than %d messages will
|
||||
be sent in order to avoid flooding the user. If there are
|
||||
more news messages, only the most recent will be sent.)
|
||||
NewsCount can be configured in services.conf.
|
||||
|
||||
OPERNEWS LIST may be used by any IRC operator to list the
|
||||
current oper news messages. ADD and DEL may only be used by
|
||||
Services admins.
|
||||
OPERNEWS may only be used by Services admins.
|
||||
|
||||
NEWS_HELP_RANDOM
|
||||
Sintaxis: RANDOMNEWS ADD texto
|
||||
@@ -3431,9 +3427,7 @@ NEWS_HELP_RANDOM
|
||||
Cuando un usuario se conecta a la red, uno (y solo uno) de los
|
||||
mensajes al azar sera elejido y enviado a ellos.
|
||||
|
||||
RANDOMNEWS LIST puede ser usado por cualquier operador de
|
||||
IRC para listar la lista de noticias actual. ADD y DEL
|
||||
solo pueden ser usados por administradores de Servicios.
|
||||
RANDOMNEWS may only be used by Services admins.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
@@ -5670,7 +5664,7 @@ OPER_HELP_CMD_SHUTDOWN
|
||||
OPER_HELP_CMD_DEFCON
|
||||
DEFCON Manipulate the DefCon system
|
||||
OPER_HELP_CMD_CHANKILL
|
||||
CHANKILL Kill all users on a specific channel
|
||||
CHANKILL AKILL all users on a specific channel
|
||||
OPER_HELP_CMD_OLINE
|
||||
OLINE Otorga privilegios IRCOP temporarios
|
||||
OPER_HELP_CMD_UMODE
|
||||
@@ -6702,9 +6696,9 @@ HOST_SET_IDENTTOOLONG
|
||||
HOST_NOREG
|
||||
Usuario %s no encontrado en la base de datos de nickserv.
|
||||
HOST_SET_SYNTAX
|
||||
Sintaxis %R%s set <nick> <hostmask>.
|
||||
SET <nick> <hostmask>.
|
||||
HOST_SETALL_SYNTAX
|
||||
Sintaxis %R%s setall <nick> <hostmask>.
|
||||
SETALL <nick> <hostmask>.
|
||||
HOST_DENIED
|
||||
Acceso Denegado.
|
||||
HOST_NOT_ASSIGNED
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
# Greek language file.
|
||||
#
|
||||
# (C) 2003-2009 Anope Team
|
||||
# (C) 2003-2014 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Please read COPYING and README for furhter details.
|
||||
# Please read COPYING and README for further details.
|
||||
#
|
||||
# Based on the original code of Epona by Lara.
|
||||
# Based on the original code of Services by Andy Church.
|
||||
@@ -677,7 +677,7 @@ NICK_SASET_HIDE_STATUS_OFF
|
||||
|
||||
# SASET MSG responses
|
||||
NICK_SASET_MSG_SYNTAX
|
||||
SSAET nickname PRIVATE {ON | OFF}
|
||||
SSAET nickname MSG {ON | OFF}
|
||||
NICK_SASET_MSG_ON
|
||||
Services will now reply to %s with messages.
|
||||
NICK_SASET_MSG_OFF
|
||||
@@ -705,7 +705,7 @@ NICK_SASET_LANGUAGE_SYNTAX
|
||||
NICK_SASET_LANGUAGE_UNKNOWN
|
||||
Unknown language number %d. Type %R%s HELP SET LANGUAGE for a list of languages.
|
||||
NICK_SASET_LANGUAGE_CHANGED
|
||||
Language changed to Greek.
|
||||
Language for %s changed to %s.
|
||||
|
||||
|
||||
# ACCESS responses
|
||||
@@ -3279,7 +3279,7 @@ OPER_HELP_DEFCON
|
||||
Syntax: DEFCON [1|2|3|4|5]
|
||||
|
||||
The defcon system can be used to implement a pre-defined
|
||||
set of restrictions to services useful during an attemtped
|
||||
set of restrictions to services useful during an attempted
|
||||
attack on the network.
|
||||
|
||||
OPER_HELP_DEFCON_NO_NEW_CHANNELS
|
||||
@@ -3415,14 +3415,12 @@ NEWS_HELP_LOGON
|
||||
|
||||
Edits or displays the list of logon news messages. When a
|
||||
user connects to the network, these messages will be sent
|
||||
to them. (However, no more than %s messages will be
|
||||
to them. (However, no more than %d messages will be
|
||||
sent in order to avoid flooding the user. If there are
|
||||
more news messages, only the most recent will be sent.)
|
||||
NewsCount can be configured in services.conf.
|
||||
|
||||
LOGONNEWS LIST may be used by any IRC operator to list the
|
||||
current news messages. ADD and DEL may only be used by
|
||||
Services admins.
|
||||
LOGONNEWS may only be used by Services admins.
|
||||
|
||||
NEWS_HELP_OPER
|
||||
Syntax: OPERNEWS ADD text
|
||||
@@ -3431,14 +3429,12 @@ NEWS_HELP_OPER
|
||||
|
||||
Edits or displays the list of oper news messages. When a
|
||||
user opers up (with the /OPER command), these messages will
|
||||
be sent to them. (However, no more than %s messages will
|
||||
be sent to them. (However, no more than %d messages will
|
||||
be sent in order to avoid flooding the user. If there are
|
||||
more news messages, only the most recent will be sent.)
|
||||
NewsCount can be configured in services.conf.
|
||||
|
||||
OPERNEWS LIST may be used by any IRC operator to list the
|
||||
current oper news messages. ADD and DEL may only be used by
|
||||
Services admins.
|
||||
OPERNEWS may only be used by Services admins.
|
||||
|
||||
NEWS_HELP_RANDOM
|
||||
Óýíôáîç: RANDOMNEWS ADD ðåñéå÷üìåíá
|
||||
@@ -3449,9 +3445,7 @@ NEWS_HELP_RANDOM
|
||||
¼ôáí Ýíáò ÷ñÞóôçò óõíäåèåß óôï äßêôõï, Ýíá (êáé ìüíï Ýíá) áðü ôá
|
||||
ìçíýìáôá èá åðéëå÷èåß ôõ÷áßá êáé èá óôáëåß.
|
||||
|
||||
RANDOMNEWS LIST ìðïñåß íá ÷ñçóéìïðïéçèåß áðü ôïõò IRC operators ãéá íá
|
||||
äïýí ôá ìçíýìáôá. ADD êáé DEL ìðïñåß íá ÷ñçóéìïðïéÞóïõí ïé
|
||||
åðéêåöáëåßò ôùí õðçñåóéþí (Services admins).
|
||||
RANDOMNEWS may only be used by Services admins.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
@@ -5642,7 +5636,7 @@ OPER_HELP_CMD_SHUTDOWN
|
||||
OPER_HELP_CMD_DEFCON
|
||||
DEFCON Manipulate the DefCon system
|
||||
OPER_HELP_CMD_CHANKILL
|
||||
CHANKILL Kill all users on a specific channel
|
||||
CHANKILL AKILL all users on a specific channel
|
||||
OPER_HELP_CMD_OLINE
|
||||
OLINE Give Operflags to a certain user
|
||||
OPER_HELP_CMD_UMODE
|
||||
@@ -6619,9 +6613,9 @@ HOST_SET_IDENTTOOLONG
|
||||
HOST_NOREG
|
||||
User %s not found in the nickserv db.
|
||||
HOST_SET_SYNTAX
|
||||
Syntax %R%s set <nick> <hostmask>.
|
||||
SET <nick> <hostmask>.
|
||||
HOST_SETALL_SYNTAX
|
||||
Syntax %R%s setall <nick> <hostmask>.
|
||||
SETALL <nick> <hostmask>.
|
||||
HOST_DENIED
|
||||
Access Denied.
|
||||
HOST_NOT_ASSIGNED
|
||||
@@ -6657,9 +6651,9 @@ HOST_NO_VIDENT
|
||||
#
|
||||
###########################################################################
|
||||
HOST_GROUP
|
||||
All vhost's in the group %s have been set to %s
|
||||
All vhosts in the group %s have been set to %s
|
||||
HOST_IDENT_GROUP
|
||||
All vhost's in the group %s have been set to %s@%s
|
||||
All vhosts in the group %s have been set to %s@%s
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
|
||||
+12
-18
@@ -1,6 +1,6 @@
|
||||
# Hungarian (magyar) language file.
|
||||
#
|
||||
# (C) 2003-2009 Anope Team
|
||||
# (C) 2003-2014 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Translated by:
|
||||
@@ -9,7 +9,7 @@
|
||||
# CJB CHAT Magyarország, http://cjbchat.hu
|
||||
# Ez a fordítás a CJB Chat megrendelésére készült.
|
||||
#
|
||||
# Please read COPYING and README for furhter details.
|
||||
# Please read COPYING and README for further details.
|
||||
#
|
||||
# Based on the original code of Epona by Lara.
|
||||
# Based on the original code of Services by Andy Church.
|
||||
@@ -676,7 +676,7 @@ NICK_SASET_HIDE_STATUS_OFF
|
||||
|
||||
# SASET MSG responses
|
||||
NICK_SASET_MSG_SYNTAX
|
||||
SSAET nickname PRIVATE {ON | OFF}
|
||||
SSAET nickname MSG {ON | OFF}
|
||||
NICK_SASET_MSG_ON
|
||||
Services will now reply to %s with messages.
|
||||
NICK_SASET_MSG_OFF
|
||||
@@ -704,7 +704,7 @@ NICK_SASET_LANGUAGE_SYNTAX
|
||||
NICK_SASET_LANGUAGE_UNKNOWN
|
||||
Unknown language number %d. Type %R%s HELP SET LANGUAGE for a list of languages.
|
||||
NICK_SASET_LANGUAGE_CHANGED
|
||||
Language changed to Hungarian.
|
||||
Language for %s changed to %s.
|
||||
|
||||
|
||||
# ACCESS responses
|
||||
@@ -3349,14 +3349,12 @@ NEWS_HELP_LOGON
|
||||
|
||||
Edits or displays the list of logon news messages. When a
|
||||
user connects to the network, these messages will be sent
|
||||
to them. (However, no more than %s messages will be
|
||||
to them. (However, no more than %d messages will be
|
||||
sent in order to avoid flooding the user. If there are
|
||||
more news messages, only the most recent will be sent.)
|
||||
NewsCount can be configured in services.conf.
|
||||
|
||||
LOGONNEWS LIST may be used by any IRC operator to list the
|
||||
current news messages. ADD and DEL may only be used by
|
||||
Services admins.
|
||||
LOGONNEWS may only be used by Services admins.
|
||||
|
||||
NEWS_HELP_OPER
|
||||
Syntax: OPERNEWS ADD text
|
||||
@@ -3365,14 +3363,12 @@ NEWS_HELP_OPER
|
||||
|
||||
Edits or displays the list of oper news messages. When a
|
||||
user opers up (with the /OPER command), these messages will
|
||||
be sent to them. (However, no more than %s messages will
|
||||
be sent to them. (However, no more than %d messages will
|
||||
be sent in order to avoid flooding the user. If there are
|
||||
more news messages, only the most recent will be sent.)
|
||||
NewsCount can be configured in services.conf.
|
||||
|
||||
OPERNEWS LIST may be used by any IRC operator to list the
|
||||
current oper news messages. ADD and DEL may only be used by
|
||||
Services admins.
|
||||
OPERNEWS may only be used by Services admins.
|
||||
|
||||
NEWS_HELP_RANDOM
|
||||
Syntax: RANDOMNEWS ADD szöveg
|
||||
@@ -3383,9 +3379,7 @@ NEWS_HELP_RANDOM
|
||||
egy felhasználó csatlakozik a hálózathoz, egy (csak egy)
|
||||
random newst fog véletlenszerûen elküldeni részére.
|
||||
|
||||
RANDOMNEWS LIST IRC operátorok,használhatják a parancsot
|
||||
részükre listázza az aktuális oper news üzeneteket. Add és
|
||||
Del -t csak szervíz adminok használhatják
|
||||
RANDOMNEWS may only be used by Services admins.
|
||||
|
||||
###########################################################
|
||||
#
|
||||
@@ -5551,7 +5545,7 @@ OPER_HELP_CMD_SHUTDOWN
|
||||
OPER_HELP_CMD_DEFCON
|
||||
DEFCON Manipulálja a DefCon rendszert
|
||||
OPER_HELP_CMD_CHANKILL
|
||||
CHANKILL Kirúgja az összes usert a csatornáról
|
||||
CHANKILL AKILL az összes usert a csatornáról
|
||||
OPER_HELP_CMD_OLINE
|
||||
OLINE Operflaget ad a biztos felhasználónak
|
||||
OPER_HELP_CMD_UMODE
|
||||
@@ -6525,9 +6519,9 @@ HOST_SET_IDENTTOOLONG
|
||||
HOST_NOREG
|
||||
%s felhasználó nincs a nickserv db fájlban.
|
||||
HOST_SET_SYNTAX
|
||||
Syntax %R%s set <nick> <hosztmaszk>.
|
||||
SET <nick> <hosztmaszk>.
|
||||
HOST_SETALL_SYNTAX
|
||||
Syntax %R%s setall <nick> <hosztmaszk>.
|
||||
SETALL <nick> <hosztmaszk>.
|
||||
HOST_DENIED
|
||||
Hozzáférés megtagadva.
|
||||
HOST_NOT_ASSIGNED
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Italian language file.
|
||||
#
|
||||
# (C) 2003-2009 Anope Team
|
||||
# (C) 2003-2014 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Please read COPYING and README for further details.
|
||||
@@ -672,7 +672,7 @@ NICK_SASET_HIDE_STATUS_OFF
|
||||
|
||||
# SASET MSG responses
|
||||
NICK_SASET_MSG_SYNTAX
|
||||
SSAET nickname PRIVATE {ON | OFF}
|
||||
SSAET nickname MSG {ON | OFF}
|
||||
NICK_SASET_MSG_ON
|
||||
I servizi risponderanno a %s con "messages".
|
||||
NICK_SASET_MSG_OFF
|
||||
@@ -700,7 +700,7 @@ NICK_SASET_LANGUAGE_SYNTAX
|
||||
NICK_SASET_LANGUAGE_UNKNOWN
|
||||
Unknown language number %d. Type %R%s HELP SET LANGUAGE for a list of languages.
|
||||
NICK_SASET_LANGUAGE_CHANGED
|
||||
Language changed to Italian.
|
||||
Language for %s changed to %s.
|
||||
|
||||
|
||||
# ACCESS responses
|
||||
@@ -3308,14 +3308,12 @@ NEWS_HELP_LOGON
|
||||
|
||||
Edits or displays the list of logon news messages. When a
|
||||
user connects to the network, these messages will be sent
|
||||
to them. (However, no more than %s messages will be
|
||||
to them. (However, no more than %d messages will be
|
||||
sent in order to avoid flooding the user. If there are
|
||||
more news messages, only the most recent will be sent.)
|
||||
NewsCount can be configured in services.conf.
|
||||
|
||||
LOGONNEWS LIST may be used by any IRC operator to list the
|
||||
current news messages. ADD and DEL may only be used by
|
||||
Services admins.
|
||||
LOGONNEWS may be used by any IRC operator to list the
|
||||
|
||||
NEWS_HELP_OPER
|
||||
Syntax: OPERNEWS ADD text
|
||||
@@ -3324,14 +3322,12 @@ NEWS_HELP_OPER
|
||||
|
||||
Edits or displays the list of oper news messages. When a
|
||||
user opers up (with the /OPER command), these messages will
|
||||
be sent to them. (However, no more than %s messages will
|
||||
be sent to them. (However, no more than %d messages will
|
||||
be sent in order to avoid flooding the user. If there are
|
||||
more news messages, only the most recent will be sent.)
|
||||
NewsCount can be configured in services.conf.
|
||||
|
||||
OPERNEWS LIST may be used by any IRC operator to list the
|
||||
current oper news messages. ADD and DEL may only be used by
|
||||
Services admins.
|
||||
OPERNEWS may only be used by Services admins.
|
||||
|
||||
NEWS_HELP_RANDOM
|
||||
Sintassi: RANDOMNEWS ADD testo
|
||||
@@ -3343,9 +3339,7 @@ NEWS_HELP_RANDOM
|
||||
delle informazioni del giorno sarà scelta casualmente e gli
|
||||
sarà inviata.
|
||||
|
||||
RANDOMNEWS LIST può essere usato da qualsiasi IrcOp per
|
||||
visualizzare i messaggi correnti. ADD e DEL possono essere
|
||||
utilizzati soltanto dai Services admin.
|
||||
RANDOMNEWS may only be used by Services admins.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
@@ -5583,7 +5577,7 @@ OPER_HELP_CMD_SHUTDOWN
|
||||
OPER_HELP_CMD_DEFCON
|
||||
DEFCON Manipola il sistema DefCon
|
||||
OPER_HELP_CMD_CHANKILL
|
||||
CHANKILL Killa tutti gli utenti su di un canale specifico
|
||||
CHANKILL AKILL tutti gli utenti su di un canale specifico
|
||||
OPER_HELP_CMD_OLINE
|
||||
OLINE Imposta le operflag di un utente
|
||||
OPER_HELP_CMD_UMODE
|
||||
@@ -6590,9 +6584,9 @@ HOST_SET_IDENTTOOLONG
|
||||
HOST_NOREG
|
||||
L'utente %s non è presente nel database di NickServ.
|
||||
HOST_SET_SYNTAX
|
||||
Sintassi: %R%s set <nick> <hostmask>.
|
||||
SET <nick> <hostmask>.
|
||||
HOST_SETALL_SYNTAX
|
||||
Sintassi: %R%s setall <nick> <hostmask>.
|
||||
SETALL <nick> <hostmask>.
|
||||
HOST_DENIED
|
||||
Accesso negato.
|
||||
HOST_NOT_ASSIGNED
|
||||
|
||||
+6494
File diff suppressed because it is too large
Load Diff
+5
-2
@@ -1,6 +1,6 @@
|
||||
/* Compiler for language definition files.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -8,7 +8,6 @@
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -78,10 +77,12 @@ int read_index_file()
|
||||
numstrings++;
|
||||
if (!(stringnames = calloc(sizeof(char *), numstrings))) {
|
||||
perror("calloc(stringnames)");
|
||||
fclose(f);
|
||||
return -1;
|
||||
}
|
||||
if (!(strings = calloc(sizeof(char *), numstrings))) {
|
||||
perror("calloc(strings)");
|
||||
fclose(f);
|
||||
return -1;
|
||||
}
|
||||
fseek(f, 0, SEEK_SET);
|
||||
@@ -91,6 +92,7 @@ int read_index_file()
|
||||
buf[strlen(buf)-1] = '\0';
|
||||
if (!(stringnames[i++] = anopeStrDup(buf))) {
|
||||
perror("strdup()");
|
||||
fclose(f);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
@@ -202,6 +204,7 @@ int main(int ac, char **av)
|
||||
}
|
||||
if (!(out = fopen(outfile, "wb"))) {
|
||||
perror(outfile);
|
||||
fclose(in);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -1,9 +1,9 @@
|
||||
/* Language stuff generator for win32.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
@@ -66,7 +66,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
fprintf(fdout, "#define NUM_STRINGS %d\n", i);
|
||||
fprintf(stderr, "%d strings\n", i);
|
||||
fclose(fd);
|
||||
fclose(fd);
|
||||
fclose(fdout);
|
||||
}
|
||||
return 0;
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
# Dutch Language File
|
||||
#
|
||||
# (C) 2003-2009 Anope Team
|
||||
# (C) 2003-2014 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Please read COPYING and README for furhter details.
|
||||
# Please read COPYING and README for further details.
|
||||
#
|
||||
# Based on the original code of Epona by Lara.
|
||||
# Based on the original code of Services by Andy Church.
|
||||
@@ -688,7 +688,7 @@ NICK_SASET_HIDE_STATUS_OFF
|
||||
|
||||
# SASET MSG responses
|
||||
NICK_SASET_MSG_SYNTAX
|
||||
SSAET nickname PRIVATE {ON | OFF}
|
||||
SSAET nickname MSG {ON | OFF}
|
||||
NICK_SASET_MSG_ON
|
||||
Services will now reply to %s with messages.
|
||||
NICK_SASET_MSG_OFF
|
||||
@@ -716,7 +716,7 @@ NICK_SASET_LANGUAGE_SYNTAX
|
||||
NICK_SASET_LANGUAGE_UNKNOWN
|
||||
Unknown language number %d. Type %R%s HELP SET LANGUAGE for a list of languages.
|
||||
NICK_SASET_LANGUAGE_CHANGED
|
||||
Language changed to Dutch.
|
||||
Language for %s changed to %s.
|
||||
|
||||
|
||||
# ACCESS responses
|
||||
@@ -1653,7 +1653,7 @@ CHAN_INVITE_SYNTAX
|
||||
CHAN_UNBAN_SYNTAX
|
||||
UNBAN kanaal
|
||||
CHAN_UNBANNED
|
||||
Bans met betrekking to jou op %s zijn opgeheven.
|
||||
Bans met betrekking tot jou op %s zijn opgeheven.
|
||||
|
||||
# TOPIC responses
|
||||
CHAN_TOPIC_SYNTAX
|
||||
@@ -3376,15 +3376,12 @@ NEWS_HELP_LOGON
|
||||
Wijzigt de lijst met login nieuwsberichten of geeft deze weer.
|
||||
Wanneer een gebruiker met het netwerk verbindt, worden deze
|
||||
berichten naar hem/haar verzonden. (Echter, er zullen nooit
|
||||
meer dan %s berichten worden verstuurd om het flooden van de
|
||||
meer dan %d berichten worden verstuurd om het flooden van de
|
||||
gebruiker te voorkomen. Als er meer nieuwsberichten
|
||||
zijn worden alleen de meest recente vestuurd.)
|
||||
NewsCount kan geconfigureerd worden in services.conf.
|
||||
|
||||
LOGONNEWS LIST mag door elke IRC operator worden gebruikt om
|
||||
de huidige nieuwsberichten weer te geven. ADD en DEL mogen
|
||||
alleen door Services admins gebruikt worden.
|
||||
|
||||
LOGONNEWS may only be used by Services admins.
|
||||
|
||||
NEWS_HELP_OPER
|
||||
Gebruik: OPERNEWS ADD text
|
||||
@@ -3394,14 +3391,12 @@ NEWS_HELP_OPER
|
||||
Wijzigt de lijst met oper nieuwsberichten of geeft deze weer.
|
||||
Wanneer een gebruiker opert (dmv het /OPER commando), worden
|
||||
deze berichtennaar hem/haar verzonden. (Echter, er zullen
|
||||
nooit meer dan %s berichten worden verstuurd om het flooden
|
||||
nooit meer dan %d berichten worden verstuurd om het flooden
|
||||
van de gebruiker te voorkomen. Als er meer nieuwsberichten
|
||||
zijn worden alleen de meest recente vestuurd.)
|
||||
NewsCount kan geconfigureerd worden in services.conf.
|
||||
|
||||
OPERNEWS LIST mag door elke IRC operator worden gebruikt om
|
||||
de huidige nieuwsberichten weer te geven. ADD en DEL mogen
|
||||
alleen door Services admins gebruikt worden.
|
||||
OPERNEWS may only be used by Services admins.
|
||||
|
||||
NEWS_HELP_RANDOM
|
||||
Syntax: RANDOMNEWS ADD text
|
||||
@@ -3414,9 +3409,7 @@ NEWS_HELP_RANDOM
|
||||
nieuwsberichten willekeurig uitgekozen en naar hem/haar
|
||||
verstuurd.
|
||||
|
||||
RANDOMNEWS LIST mag door elke IRC operator worden gebruikt om
|
||||
de huidige nieuwsberichten weer te geven. ADD en DEL mogen
|
||||
alleen door Services admins gebruikt worden.
|
||||
RANDOMNEWS may only be used by Services admins.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
@@ -5592,7 +5585,7 @@ OPER_HELP_CMD_SHUTDOWN
|
||||
OPER_HELP_CMD_DEFCON
|
||||
DEFCON Manipulate the DefCon system
|
||||
OPER_HELP_CMD_CHANKILL
|
||||
CHANKILL Kill all users on a specific channel
|
||||
CHANKILL AKILL all users on a specific channel
|
||||
OPER_HELP_CMD_OLINE
|
||||
OLINE Geef Operflags aan een bepaalde gebruiker
|
||||
OPER_HELP_CMD_UMODE
|
||||
@@ -6550,9 +6543,9 @@ HOST_SET_IDENTTOOLONG
|
||||
HOST_NOREG
|
||||
Gebruiker %s niet gevonden in de nickserv database.
|
||||
HOST_SET_SYNTAX
|
||||
Gebruik %R%s set <nick> <hostmask>.
|
||||
SET <nick> <hostmask>.
|
||||
HOST_SETALL_SYNTAX
|
||||
Gebruik %R%s setall <nick> <hostmask>.
|
||||
SETALL <nick> <hostmask>.
|
||||
HOST_DENIED
|
||||
Toegang geweigerd.
|
||||
HOST_NOT_ASSIGNED
|
||||
@@ -6576,9 +6569,9 @@ HOST_OFF_UNREAL
|
||||
HOST_NO_VIDENT
|
||||
Je IRCD ondersteunt geen vIdent's. Als dit niet klopt, rapporteer dit dan als een mogelijke bug
|
||||
HOST_GROUP
|
||||
Alle vhost's in de groep %s zijn ingesteld op %s
|
||||
Alle vhosts in de groep %s zijn ingesteld op %s
|
||||
HOST_IDENT_GROUP
|
||||
Alle vhost's in de groep %s zijn ingesteld op %s@%s
|
||||
Alle vhosts in de groep %s zijn ingesteld op %s@%s
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
#
|
||||
###########################################################################
|
||||
#
|
||||
# (C) 2003-2009 Anope Team
|
||||
# (C) 2003-2014 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Please read COPYING and README for further details.
|
||||
@@ -845,7 +845,7 @@ NICK_SASET_HIDE_STATUS_OFF
|
||||
|
||||
# SASET MSG responses
|
||||
NICK_SASET_MSG_SYNTAX
|
||||
SASAET nick PRIVATE {ON | OFF}
|
||||
SASET nick MSG {ON | OFF}
|
||||
|
||||
NICK_SASET_MSG_ON
|
||||
Serwisy bêd± teraz wysy³aæ do %s wiadomo¶ci.
|
||||
@@ -882,7 +882,7 @@ NICK_SASET_LANGUAGE_UNKNOWN
|
||||
Napisz %R%s HELP SET LANGUAGE, aby uzyskaæ listê dostêpnych jêzyków.
|
||||
|
||||
NICK_SASET_LANGUAGE_CHANGED
|
||||
Jêzyk zosta³ zmieniony na Polski.
|
||||
Language for %s changed to %s.
|
||||
|
||||
# ACCESS responses
|
||||
NICK_ACCESS_SYNTAX
|
||||
@@ -2025,7 +2025,7 @@ CHAN_LEVELS_LIST_NORMAL
|
||||
CHAN_LEVELS_RESET
|
||||
Poziomy dostêpu kana³u %s zosta³y zresetowane do domy¶lnych.
|
||||
|
||||
# Status Messages
|
||||
# Status messages
|
||||
CHAN_STATUS_SYNTAX
|
||||
STATUS ERROR B³±d sk³adni
|
||||
|
||||
@@ -2378,7 +2378,7 @@ MEMO_MASS_SENT
|
||||
|
||||
# STAFF responses
|
||||
MEMO_STAFF_SYNTAX
|
||||
STAFF memo-text
|
||||
STAFF tre¶æ wiadomo¶ci
|
||||
|
||||
# CANCEL responses
|
||||
MEMO_CANCEL_SYNTAX
|
||||
@@ -3868,8 +3868,9 @@ OPER_JUPE_SYNTAX
|
||||
|
||||
OPER_JUPE_HOST_ERROR
|
||||
Proszê u¿yæ prawid³owej nazwy serwera.
|
||||
|
||||
OPER_JUPE_INVALID_SERVER
|
||||
You can not jupe your services server or your uplink server.
|
||||
Nie mo¿na wykluczyæ samych serwisów lub uplinka serwisów.
|
||||
|
||||
# RAW responses
|
||||
OPER_RAW_SYNTAX
|
||||
@@ -3890,7 +3891,7 @@ OPER_CANNOT_RESTART
|
||||
|
||||
# IGNORE respondes
|
||||
OPER_IGNORE_SYNTAX
|
||||
IGNORE {ADD|DEL|LIST|CLEAR} [czas] [nick | maska]
|
||||
IGNORE {ADD|DEL|LIST|CLEAR} [czas] [nick | maska]
|
||||
|
||||
OPER_IGNORE_VALID_TIME
|
||||
Musisz podaæ prawid³ow± liczbê dla czasu.
|
||||
@@ -4274,7 +4275,7 @@ NEWS_RANDOM_TEXT
|
||||
[Losowa wiadomo¶æ - %s] %s
|
||||
|
||||
NEWS_LOGON_SYNTAX
|
||||
LOGONNEWS {ADD|DEL|LIST} [tekst|numer]
|
||||
LOGONNEWS {ADD|DEL|LIST} [tekst|numer]
|
||||
|
||||
NEWS_LOGON_LIST_HEADER
|
||||
Wiadomo¶ci powitalne:
|
||||
@@ -4287,7 +4288,7 @@ NEWS_LOGON_LIST_NONE
|
||||
Nie ma wiadomo¶ci powitalnych.
|
||||
|
||||
NEWS_LOGON_ADD_SYNTAX
|
||||
Sk³adnia: LOGONNEWS ADD tekst
|
||||
LOGONNEWS ADD tekst
|
||||
|
||||
NEWS_LOGON_ADD_FULL
|
||||
Lista wiadomo¶ci powitalnych jest pe³na!
|
||||
@@ -4296,7 +4297,7 @@ NEWS_LOGON_ADDED
|
||||
Dodano now± wiadomo¶æ powitaln± (#%d).
|
||||
|
||||
NEWS_LOGON_DEL_SYNTAX
|
||||
LOGONNEWS DEL {numer | ALL}
|
||||
LOGONNEWS DEL {numer | ALL}
|
||||
|
||||
NEWS_LOGON_DEL_NOT_FOUND
|
||||
Wiadomo¶æ powitalna #%d nie zosta³a znaleziona!
|
||||
@@ -4311,7 +4312,7 @@ NEWS_LOGON_DELETED_ALL
|
||||
Wszystkie wiadomo¶ci powitalne zosta³ skasowane.
|
||||
|
||||
NEWS_OPER_SYNTAX
|
||||
Sk³adnia: OPERNEWS {ADD|DEL|LIST} [tekst|numer]
|
||||
OPERNEWS {ADD|DEL|LIST} [tekst|numer]
|
||||
|
||||
NEWS_OPER_LIST_HEADER
|
||||
Wiadomo¶ci dla operatorów:
|
||||
@@ -4324,7 +4325,7 @@ NEWS_OPER_LIST_NONE
|
||||
Nie ma wiadomo¶ci dla operatorów.
|
||||
|
||||
NEWS_OPER_ADD_SYNTAX
|
||||
Sk³adnia: OPERNEWS ADD tekst
|
||||
OPERNEWS ADD tekst
|
||||
|
||||
NEWS_OPER_ADD_FULL
|
||||
Lista wiadomo¶ci jest pe³na!
|
||||
@@ -4333,7 +4334,7 @@ NEWS_OPER_ADDED
|
||||
Dodano now± wiadomo¶æ dla operatorów (#%d).
|
||||
|
||||
NEWS_OPER_DEL_SYNTAX
|
||||
Sk³adnia: OPERNEWS DEL {numer | ALL}
|
||||
OPERNEWS DEL {numer | ALL}
|
||||
|
||||
NEWS_OPER_DEL_NOT_FOUND
|
||||
Wiadomo¶æ dla operatorów #%d nie zosta³a znaleziona!
|
||||
@@ -4348,7 +4349,7 @@ NEWS_OPER_DELETED_ALL
|
||||
Wszystkie wiadomo¶ci dla operatorów zosta³y skasowane.
|
||||
|
||||
NEWS_RANDOM_SYNTAX
|
||||
RANDOMNEWS {ADD|DEL|LIST} [tekst|numer]
|
||||
RANDOMNEWS {ADD|DEL|LIST} [tekst|numer]
|
||||
|
||||
NEWS_RANDOM_LIST_HEADER
|
||||
Losowe wiadomo¶ci:
|
||||
@@ -4361,7 +4362,7 @@ NEWS_RANDOM_LIST_NONE
|
||||
Nie ma losowych wiadomo¶ci.
|
||||
|
||||
NEWS_RANDOM_ADD_SYNTAX
|
||||
RANDOMNEWS ADD tekst
|
||||
RANDOMNEWS ADD tekst
|
||||
|
||||
NEWS_RANDOM_ADD_FULL
|
||||
Lista wiadomo¶ci jest pe³na!
|
||||
@@ -4370,7 +4371,7 @@ NEWS_RANDOM_ADDED
|
||||
Dodano now± losow± wiadomo¶æ (#%d).
|
||||
|
||||
NEWS_RANDOM_DEL_SYNTAX
|
||||
RANDOMNEWS DEL {numer | ALL}
|
||||
RANDOMNEWS DEL {numer | ALL}
|
||||
|
||||
NEWS_RANDOM_DEL_NOT_FOUND
|
||||
Losowa wiadomo¶æ #%d nie zosta³a znaleziona!
|
||||
@@ -4391,13 +4392,11 @@ NEWS_HELP_LOGON
|
||||
|
||||
Edytuje lub wy¶wietla listê wiadomo¶ci wysy³anych po
|
||||
przy³±czeniu u¿ytkownika do sieci. Je¶li zdefniowanych
|
||||
wiadomo¶ci jest wiêcej tylko najnowsze %s zostanie
|
||||
wiadomo¶ci jest wiêcej tylko najnowsze %d zostanie
|
||||
wys³anych (aby zapobiec floodowaniu). Warto¶æ NewsCount
|
||||
mo¿e zostaæ zmieniona w pliku konfiguracyjym serwisów.
|
||||
|
||||
Polecenie LOGONNEWS LIST mo¿e byæ u¿yte przez ka¿dego
|
||||
IRC operatora w celu wylistowania wiadomo¶ci. Polecenia
|
||||
ADD i DEL s± zarezerwowane dla administratorów serwisów.
|
||||
LOGONNEWS may only be used by Services admins.
|
||||
|
||||
NEWS_HELP_OPER
|
||||
Sk³adnia: OPERNEWS ADD tekst
|
||||
@@ -4406,13 +4405,11 @@ NEWS_HELP_OPER
|
||||
|
||||
Edytuje lub wy¶wietla listê wiadomo¶ci wysy³anych po
|
||||
wykonaniu polecenia /OPER. Je¶li zdefiniowanych
|
||||
wiadomo¶ci jest wiêcej tylko najnowsze %s zostanie
|
||||
wiadomo¶ci jest wiêcej tylko najnowsze %d zostanie
|
||||
wys³anych (aby zapobiec floodowaniu). Warto¶æ NewsCount
|
||||
mo¿e zostaæ zmieniona w pliku konfiguracyjym serwisów.
|
||||
|
||||
Polecenie OPERNEWS LIST mo¿e byæ u¿yte przez ka¿dego
|
||||
IRC operatora w celu wylistowania wiadomo¶ci. Polecenia
|
||||
ADD i DEL s± zarezerwowane dla administratorów serwisów.
|
||||
OPERNEWS may only be used by Services admins.
|
||||
|
||||
NEWS_HELP_RANDOM
|
||||
Sk³adnia: RANDOMNEWS ADD tekst
|
||||
@@ -4423,9 +4420,7 @@ NEWS_HELP_RANDOM
|
||||
Po po³±czeniu z sieci± u¿ytkownik otrzyma dok³adnie
|
||||
jedn± wylosowan± z tej listy wiadomo¶æ.
|
||||
|
||||
Polecenie RANDOMNEWS LIST mo¿e byæ u¿yte przez ka¿dego
|
||||
IRC operatora w celu wylistowania wiadomo¶ci. Polecenia
|
||||
ADD i DEL s± zarezerwowane dla administratorów serwisów.
|
||||
RANDOMNEWS may only be used by Services admins.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
@@ -4805,7 +4800,7 @@ NICK_HELP_SET_HIDE
|
||||
Sk³adnia: SET HIDE {EMAIL | STATUS | USERMASK | QUIT} {ON | OFF}
|
||||
|
||||
To polecenie pozwala na ukrycie czê¶ci informacji, które
|
||||
s± wy¶wietlane przez polecenie INFO serwisu %s.
|
||||
s± wy¶wietlane przez polecenie %S INFO serwisu.
|
||||
Pierwszy argument okre¶la ukrywan± informacjê:
|
||||
EMAIL - adres e-mail, USERMASK - ostatnio u¿ywany host,
|
||||
QUIT - ostatnia wiadomo¶æ po¿egnalna, STATUS - status
|
||||
@@ -4931,7 +4926,7 @@ NICK_HELP_SASET_HIDE
|
||||
Sk³adnia: SASET nick HIDE {EMAIL | STATUS | USERMASK | QUIT} {ON | OFF}
|
||||
|
||||
To polecenie pozwala na ukrycie czê¶ci informacji, które
|
||||
s± wy¶wietlane przez polecenie INFO serwisu %s.
|
||||
s± wy¶wietlane przez polecenie %S INFO serwisu.
|
||||
Pierwszy argument okre¶la ukrywan± informacjê:
|
||||
EMAIL - adres e-mail, USERMASK - ostatnio u¿ywany host,
|
||||
QUIT - ostatnia wiadomo¶æ po¿egnalna, STATUS - status
|
||||
@@ -5312,7 +5307,7 @@ CHAN_HELP_CMD_INFO
|
||||
INFO Pokazuje informacje o zarejestrowanym kanale
|
||||
|
||||
CHAN_HELP_CMD_INVITE
|
||||
INVITE Tells ChanServ to invite you into a channel
|
||||
INVITE Zaprasza osobê wydaj±c± polecenie na kana³
|
||||
|
||||
CHAN_HELP_CMD_KICK
|
||||
KICK Wyrzuca wskazany nick z kana³u
|
||||
@@ -5598,9 +5593,10 @@ CHAN_HELP_SET_PRIVATE
|
||||
CHAN_HELP_SET_RESTRICTED
|
||||
Sk³adnia: SET kana³ RESTRICTED {ON | OFF}
|
||||
|
||||
Enables or disables the restricted access option for a
|
||||
channel. When restricted access is set, users not on
|
||||
the access list will instead be kicked and banned from the channel.
|
||||
W³±cza lub wy³±cza opcjê ograniczonego dostêpu do kana³u.
|
||||
Po w³±czeniu tej opcji tylko osoby znajduj±ce siê na
|
||||
li¶cie dostêpu bêd± mog³y przebywaæ na kanale. Pozostali
|
||||
u¿ytkownicy bêd± banowani, a nastêpnie usuwani z kana³u.
|
||||
|
||||
CHAN_HELP_SET_SECURE
|
||||
Sk³adnia: SET kana³ SECURE {ON | OFF}
|
||||
@@ -6224,14 +6220,14 @@ CHAN_HELP_CLEAR
|
||||
Umo¿liwia kompleksowe usuniêcie niektórych ustawieñ na
|
||||
kanale poprzez %S. Dostêpne opcje:
|
||||
|
||||
MODES Zdejmuje wszystkie tryby z kana³u
|
||||
BANS Zdejmuje wszystkie bany na kanale
|
||||
EXCEPTS Zdejmuje wyj±tki od banów na kanale
|
||||
INVITES Clears all invites on the channel.
|
||||
MODES Usuwa tryby z kana³u
|
||||
BANS Usuwa bany z kana³u
|
||||
EXCEPTS Usuwa wyj±tki od banów z kana³u
|
||||
INVITES Usuwa zaproszenia z kana³u
|
||||
OPS Odbiera wszystkim status operatora
|
||||
HOPS Odbiera wszystkim status pó³-operatora
|
||||
VOICES Odbiera wszystkim prawo g³osu
|
||||
USERS Wykopuje wszystkich z kana³u
|
||||
USERS Usuwa u¿ytkowników z kana³u
|
||||
|
||||
Standardowo ta komenda jest dostêpna dla w³a¶ciciela kana³u.
|
||||
|
||||
@@ -6511,9 +6507,9 @@ MEMO_HELP_SET_NOTIFY
|
||||
trybu /AWAY.
|
||||
NEW Powiadomienie bêdzie wysy³ane jedynie w
|
||||
momencie otrzymania wiadomo¶ci.
|
||||
MAIL You will be notified of memos by email aswell as
|
||||
any other settings you have.
|
||||
NOMAIL You will not be notified of memos by email.
|
||||
MAIL Powiadomienia bêd± wysy³ane e-mailem oraz
|
||||
wedle pozosta³ych ustawieñ.
|
||||
NOMAIL Powiadomienia nie bêd± wysy³ane e-mailem.
|
||||
OFF Powiadomienia nie bêd± wysy³ane.
|
||||
|
||||
Opcja ON jest kombinacj± opcji LOGON oraz NEW.
|
||||
@@ -6695,7 +6691,7 @@ OPER_HELP_CMD_DEFCON
|
||||
DEFCON Modyfikuje poziom systemu DefCon
|
||||
|
||||
OPER_HELP_CMD_CHANKILL
|
||||
CHANKILL Od³±cza wszystkich u¿ytkowników na kanale
|
||||
CHANKILL AKILL wszystkich u¿ytkowników na kanale
|
||||
|
||||
OPER_HELP_CMD_OLINE
|
||||
OLINE Daje flagi operatora wybranemu u¿ytkownikowi
|
||||
@@ -7581,7 +7577,7 @@ HOST_DELALL
|
||||
Vhosty dla grupy %s zosta³y usuniête.
|
||||
|
||||
HOST_DELALL_SYNTAX
|
||||
DELALL <nick>.
|
||||
DELALL <nick>.
|
||||
|
||||
HOST_IDENT_SETALL
|
||||
Vhosty dla grupy %s zosta³y zmienione na %s@%s.
|
||||
@@ -7602,10 +7598,10 @@ HOST_NOREG
|
||||
Nie znaleziono %s w bazie serwisu NickServ.
|
||||
|
||||
HOST_SET_SYNTAX
|
||||
Sk³adnia %R%s SET <nick> <maska-hosta>.
|
||||
SET <nick> <maska-hosta>.
|
||||
|
||||
HOST_SETALL_SYNTAX
|
||||
Sk³adnia %R%s SETALL <nick> <maska-hosta>.
|
||||
SETALL <nick> <maska-hosta>.
|
||||
|
||||
HOST_DENIED
|
||||
Brak dostêpu.
|
||||
@@ -7631,7 +7627,7 @@ HOST_DEL
|
||||
HOST_DEL_SYNTAX
|
||||
DEL <nick>.
|
||||
HOST_OFF
|
||||
Your vhost was removed and the normal cloaking restored.
|
||||
Twój vhost zosta³ usuniêty i zosta³o w³±czone normalne ukrywanie hosta.
|
||||
HOST_OFF_UNREAL
|
||||
Twój vhost zosta³ usuniêty. Aby w³±czyæ standardowe ukrywanie hosta wpisz /mode %s +%s
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
# Portuguese language file.
|
||||
#
|
||||
# (C) 2003-2009 Anope Team
|
||||
# (C) 2003-2014 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Please read COPYING and README for furhter details.
|
||||
# Please read COPYING and README for further details.
|
||||
#
|
||||
# Based on the original code of Epona by Lara.
|
||||
# Based on the original code of Services by Andy Church.
|
||||
@@ -683,7 +683,7 @@ NICK_SASET_HIDE_STATUS_OFF
|
||||
|
||||
# SASET MSG responses
|
||||
NICK_SASET_MSG_SYNTAX
|
||||
SSAET nickname PRIVATE {ON | OFF}
|
||||
SSAET nickname MSG {ON | OFF}
|
||||
NICK_SASET_MSG_ON
|
||||
Services will now reply to %s with messages.
|
||||
NICK_SASET_MSG_OFF
|
||||
@@ -711,7 +711,7 @@ NICK_SASET_LANGUAGE_SYNTAX
|
||||
NICK_SASET_LANGUAGE_UNKNOWN
|
||||
Unknown language number %d. Type %R%s HELP SET LANGUAGE for a list of languages.
|
||||
NICK_SASET_LANGUAGE_CHANGED
|
||||
Language changed to Portuguese.
|
||||
Language for %s changed to %s.
|
||||
|
||||
|
||||
# ACCESS responses
|
||||
@@ -3325,14 +3325,12 @@ NEWS_HELP_LOGON
|
||||
|
||||
Edits or displays the list of logon news messages. When a
|
||||
user connects to the network, these messages will be sent
|
||||
to them. (However, no more than %s messages will be
|
||||
to them. (However, no more than %d messages will be
|
||||
sent in order to avoid flooding the user. If there are
|
||||
more news messages, only the most recent will be sent.)
|
||||
NewsCount can be configured in services.conf.
|
||||
|
||||
LOGONNEWS LIST may be used by any IRC operator to list the
|
||||
current news messages. ADD and DEL may only be used by
|
||||
Services admins.
|
||||
LOGONNEWS may only be used by Services admins.
|
||||
|
||||
NEWS_HELP_OPER
|
||||
Syntax: OPERNEWS ADD text
|
||||
@@ -3341,14 +3339,12 @@ NEWS_HELP_OPER
|
||||
|
||||
Edits or displays the list of oper news messages. When a
|
||||
user opers up (with the /OPER command), these messages will
|
||||
be sent to them. (However, no more than %s messages will
|
||||
be sent to them. (However, no more than %d messages will
|
||||
be sent in order to avoid flooding the user. If there are
|
||||
more news messages, only the most recent will be sent.)
|
||||
NewsCount can be configured in services.conf.
|
||||
|
||||
OPERNEWS LIST may be used by any IRC operator to list the
|
||||
current oper news messages. ADD and DEL may only be used by
|
||||
Services admins.
|
||||
OPERNEWS may only be used by Services admins.
|
||||
|
||||
NEWS_HELP_RANDOM
|
||||
Sintaxe: RANDOMNEWS ADD texto
|
||||
@@ -3359,9 +3355,7 @@ NEWS_HELP_RANDOM
|
||||
se conecta à rede, uma (apenas uma) das random news será
|
||||
aleatóriamente escolhida e enviada a ele.
|
||||
|
||||
RANDOMNEWS LIST pode ser usado por qualquer Operador
|
||||
para listar as random news. ADD e DEL só podem ser usados
|
||||
pelos Administradores dos Services.
|
||||
RANDOMNEWS may only be used by Services admins.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
@@ -5522,7 +5516,7 @@ OPER_HELP_CMD_SHUTDOWN
|
||||
OPER_HELP_CMD_DEFCON
|
||||
DEFCON Manipula o sistema DefCon
|
||||
OPER_HELP_CMD_CHANKILL
|
||||
CHANKILL Derruba todos os usuários de um canal específico
|
||||
CHANKILL AKILL todos os usuários de um canal específico
|
||||
OPER_HELP_CMD_OLINE
|
||||
OLINE Dá flags de Operador a um determinado usuário
|
||||
OPER_HELP_CMD_UMODE
|
||||
@@ -6515,9 +6509,9 @@ HOST_SET_IDENTTOOLONG
|
||||
HOST_NOREG
|
||||
Usuário %s não encontrado na DB do NickServ.
|
||||
HOST_SET_SYNTAX
|
||||
Sintaxe: %R%s set <nick> <hostmask>.
|
||||
SET <nick> <hostmask>.
|
||||
HOST_SETALL_SYNTAX
|
||||
Sintaxe: %R%s setall <nick> <hostmask>.
|
||||
SETALL <nick> <hostmask>.
|
||||
HOST_DENIED
|
||||
Acesso Negado.
|
||||
HOST_NOT_ASSIGNED
|
||||
@@ -6541,9 +6535,9 @@ HOST_OFF_UNREAL
|
||||
HOST_NO_VIDENT
|
||||
Seu IRCD não suporta vIdent's, se isto não está certo, por favor reporte isso como um possível bug.
|
||||
HOST_GROUP
|
||||
Todos os vhost's no grupo %s foram ajustados para %s
|
||||
Todos os vhosts no grupo %s foram ajustados para %s
|
||||
HOST_IDENT_GROUP
|
||||
Todos os vhost's no grupo %s foram ajustados para %s@%s
|
||||
Todos os vhosts no grupo %s foram ajustados para %s@%s
|
||||
HOST_LIST_FOOTER
|
||||
Exibidos todos os registros (Contador: %d)
|
||||
HOST_LIST_RANGE_FOOTER
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Russian language file for Anope
|
||||
#
|
||||
# (C) 2003-2009 Anope Team
|
||||
# (C) 2003-2014 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Please read COPYING and README for further details.
|
||||
@@ -694,7 +694,7 @@ NICK_SASET_LANGUAGE_SYNTAX
|
||||
NICK_SASET_LANGUAGE_UNKNOWN
|
||||
ßçûêà ïîä íîìåðîì %d íå ñóùåñòâóåò. Ñïèñîê äîñòóïíûõ ÿçûêîâ: %R%s HELP SET LANGUAGE.
|
||||
NICK_SASET_LANGUAGE_CHANGED
|
||||
ßçûê äëÿ óêàçàííîãî íèêà èçìåíåí íà Ðóññêèé.
|
||||
Language for %s changed to %s.
|
||||
|
||||
# ACCESS responses
|
||||
NICK_ACCESS_SYNTAX
|
||||
@@ -2448,6 +2448,8 @@ OPER_STATS_CHANSERV_MEM
|
||||
ChanServ : %6d çàïèñåé, %5d kB
|
||||
OPER_STATS_BOTSERV_MEM
|
||||
BotServ : %6d çàïèñåé, %5d kB
|
||||
OPER_STATS_HOSTSERV_MEM
|
||||
HostServ : %6d çàïèñåé, %5d kB
|
||||
OPER_STATS_OPERSERV_MEM
|
||||
OperServ : %6d çàïèñåé, %5d kB
|
||||
OPER_STATS_SESSIONS_MEM
|
||||
@@ -3297,7 +3299,7 @@ NEWS_HELP_LOGON
|
||||
Ïîçâîëÿåò óïðàâëÿòü ñïèñêîì íîâîñòåé, êîòîðûå áóäóò àâòîìàòè÷åñêè
|
||||
âûäàâàòüñÿ ïîëüçîâàòåëþ ñðàçó æå, êàê òîëüêî îí ïîäêëþ÷èòñÿ ê ñåòè.
|
||||
Ñòîèò çàìåòèòü, ÷òî âî èçáåæàíèå ôëóäà ïîëüçîâàòåëü ïîëó÷èò òîëüêî
|
||||
%s íîâîñòü(è), òàê ÷òî åñëè ó âàñ â ñïèñêå èõ áîëüøå - ïîêàçàíû
|
||||
%d íîâîñòü(è), òàê ÷òî åñëè ó âàñ â ñïèñêå èõ áîëüøå - ïîêàçàíû
|
||||
áóäóò òîëüêî ïîñëåäíèå èç íèõ. Çíà÷åíèå NewsCount, îòâå÷àþùåå çà
|
||||
îäíîâðåìåííî ïîñûëàåìîå êîë-âî íîâîñòåé, óêàçûâàåòñÿ â services.conf
|
||||
|
||||
@@ -3307,9 +3309,7 @@ NEWS_HELP_LOGON
|
||||
êà÷åñòâå ïàðàìåòðà âû ìîæåòå óêàçàòü íîìåð íîâîñòè - ÷òî áû óäàëèòü
|
||||
îäíó íîâîñòü, èëè ALL - ÷òî áû î÷èñòèòü ñïèñîê íîâîñòåé ïîëíîñòüþ.
|
||||
|
||||
Êîìàíäà LOGONNEWS LIST âûâîäèò ñïèñîê òåêóùèõ íîâîñòåé è ìîæåò áûòü
|
||||
èñïîëüçîâàíà ëþáûì IRC-îïåðàòîðîì. Êîìàíäû ADD è DEL äîñòóïíû òîëüêî
|
||||
Àäìèíèñòðàòîðàì ñåðâèñîâ.
|
||||
LOGONNEWS may only be used by Services admins.
|
||||
|
||||
NEWS_HELP_OPER
|
||||
Ñèíòàêñèñ: OPERNEWS ADD òåêñò
|
||||
@@ -3320,7 +3320,7 @@ NEWS_HELP_OPER
|
||||
ïîëüçîâàòåëü ïîëó÷èò ñòàòóñ IRC-îïåðàòîðà (èñïîëüçîâàâ êîìàíäó /OPER),
|
||||
äàííûå ñîîáùåíèÿ áóäóò åìó îòïðàâëåíû àâòîìàòè÷åñêè.
|
||||
Ñòîèò çàìåòèòü, ÷òî âî èçáåæàíèå ôëóäà ïîëüçîâàòåëü ïîëó÷èò òîëüêî
|
||||
%s íîâîñòü(è), òàê ÷òî åñëè ó âàñ â ñïèñêå èõ áîëüøå - ïîêàçàíû
|
||||
%d íîâîñòü(è), òàê ÷òî åñëè ó âàñ â ñïèñêå èõ áîëüøå - ïîêàçàíû
|
||||
áóäóò òîëüêî ïîñëåäíèå èç íèõ. Çíà÷åíèå NewsCount, îòâå÷àþùåå çà
|
||||
îäíîâðåìåííî ïîñûëàåìîå êîë-âî íîâîñòåé, óêàçûâàåòñÿ â services.conf
|
||||
|
||||
@@ -3330,9 +3330,7 @@ NEWS_HELP_OPER
|
||||
êà÷åñòâå ïàðàìåòðà âû ìîæåòå óêàçàòü íîìåð íîâîñòè - ÷òî áû óäàëèòü
|
||||
îäíó íîâîñòü, èëè ALL - ÷òî áû î÷èñòèòü ñïèñîê íîâîñòåé ïîëíîñòüþ.
|
||||
|
||||
Êîìàíäà OPERNEWS LIST âûâîäèò ñïèñîê òåêóùèõ íîâîñòåé è ìîæåò áûòü
|
||||
èñïîëüçîâàíà ëþáûì IRC-îïåðàòîðîì. Êîìàíäû ADD è DEL äîñòóïíû òîëüêî
|
||||
Àäìèíèñòðàòîðàì ñåðâèñîâ.
|
||||
OPERNEWS may only be used by Services admins.
|
||||
|
||||
NEWS_HELP_RANDOM
|
||||
Ñèíòàêñèñ: RANDOMNEWS ADD òåêñò
|
||||
@@ -3350,9 +3348,7 @@ NEWS_HELP_RANDOM
|
||||
êà÷åñòâå ïàðàìåòðà âû ìîæåòå óêàçàòü íîìåð íîâîñòè - ÷òî áû óäàëèòü
|
||||
îäíó íîâîñòü, èëè ALL - ÷òî áû î÷èñòèòü ñïèñîê íîâîñòåé ïîëíîñòüþ.
|
||||
|
||||
Êîìàíäà RANDOMNEWS LIST âûâîäèò ñïèñîê òåêóùèõ íîâîñòåé è ìîæåò
|
||||
áûòü èñïîëüçîâàíà ëþáûì IRC-Îïåðàòîðîì. Êîìàíäû ADD è DEL äîñòóïíû
|
||||
òîëüêî Àäìèíèñòðàòîðàì ñåðâèñîâ.
|
||||
RANDOMNEWS may only be used by Services admins.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
@@ -6655,9 +6651,9 @@ HOST_SET_IDENTTOOLONG
|
||||
HOST_NOREG
|
||||
Ïîëüçîâàòåëü %s íå íàéäåí â ñåðâèñíîé áàçå äàííûõ íèêîâ.
|
||||
HOST_SET_SYNTAX
|
||||
Ñèòàêñèñ: %R%s SET <íèê> <õîñòìàñêà>.
|
||||
SET <íèê> <õîñòìàñêà>.
|
||||
HOST_SETALL_SYNTAX
|
||||
Ñèíòàêñèñ %R%s SETALL <íèê> <õîñòìàñêà>.
|
||||
SETALL <íèê> <õîñòìàñêà>.
|
||||
HOST_DENIED
|
||||
Äîñòóï çàïðåùåí.
|
||||
HOST_NOT_ASSIGNED
|
||||
|
||||
+51
-38
@@ -1,6 +1,6 @@
|
||||
/* Various routines to perform simple actions.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -8,7 +8,6 @@
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -126,9 +125,10 @@ void sqline(char *mask, char *reason)
|
||||
* Unban the nick from a channel
|
||||
* @param ci channel info for the channel
|
||||
* @param nick to remove the ban for
|
||||
* @param full True to match against realhost
|
||||
* @return void
|
||||
*/
|
||||
void common_unban(ChannelInfo * ci, char *nick)
|
||||
static void _common_unban(ChannelInfo * ci, char *nick, boolean full)
|
||||
{
|
||||
char *av[4];
|
||||
char *host = NULL;
|
||||
@@ -163,46 +163,59 @@ void common_unban(ChannelInfo * ci, char *nick)
|
||||
if (host)
|
||||
ip = str_is_ip(host);
|
||||
|
||||
if (ircd->svsmode_unban) {
|
||||
anope_cmd_unban(ci->name, nick);
|
||||
if (ircdcap->tsmode) {
|
||||
snprintf(buf, BUFSIZE - 1, "%ld", (long int) time(NULL));
|
||||
av[0] = ci->name;
|
||||
av[1] = buf;
|
||||
av[2] = sstrdup("-b");
|
||||
ac = 4;
|
||||
} else {
|
||||
if (ircdcap->tsmode) {
|
||||
snprintf(buf, BUFSIZE - 1, "%ld", (long int) time(NULL));
|
||||
av[0] = ci->name;
|
||||
av[1] = buf;
|
||||
av[2] = sstrdup("-b");
|
||||
ac = 4;
|
||||
} else {
|
||||
av[0] = ci->name;
|
||||
av[1] = sstrdup("-b");
|
||||
ac = 3;
|
||||
}
|
||||
|
||||
for (ban = ci->c->bans->entries; ban; ban = next) {
|
||||
next = ban->next;
|
||||
if (entry_match(ban, u->nick, u->username, u->host, ip) ||
|
||||
entry_match(ban, u->nick, u->username, u->vhost, ip)) {
|
||||
anope_cmd_mode(whosends(ci), ci->name, "-b %s", ban->mask);
|
||||
if (ircdcap->tsmode)
|
||||
av[3] = ban->mask;
|
||||
else
|
||||
av[2] = ban->mask;
|
||||
|
||||
do_cmode(whosends(ci), ac, av);
|
||||
}
|
||||
}
|
||||
|
||||
if (ircdcap->tsmode)
|
||||
free(av[2]);
|
||||
else
|
||||
free(av[1]);
|
||||
av[0] = ci->name;
|
||||
av[1] = sstrdup("-b");
|
||||
ac = 3;
|
||||
}
|
||||
|
||||
for (ban = ci->c->bans->entries; ban; ban = next) {
|
||||
next = ban->next;
|
||||
if ((full && entry_match(ban, u->nick, u->username, u->host, ip)) ||
|
||||
entry_match(ban, u->nick, u->vident, u->vhost, 0) ||
|
||||
entry_match(ban, u->nick, u->username, u->chost, 0)) {
|
||||
anope_cmd_mode(whosends(ci), ci->name, "-b %s", ban->mask);
|
||||
if (ircdcap->tsmode)
|
||||
av[3] = sstrdup(ban->mask);
|
||||
else
|
||||
av[2] = sstrdup(ban->mask);
|
||||
|
||||
do_cmode(whosends(ci), ac, av);
|
||||
|
||||
if (ircdcap->tsmode)
|
||||
free(av[3]);
|
||||
else
|
||||
free(av[2]);
|
||||
}
|
||||
}
|
||||
|
||||
if (ircdcap->tsmode)
|
||||
free(av[2]);
|
||||
else
|
||||
free(av[1]);
|
||||
|
||||
/* host_resolve() sstrdup us this info so we gotta free it */
|
||||
if (host) {
|
||||
free(host);
|
||||
}
|
||||
}
|
||||
|
||||
void common_unban(ChannelInfo * ci, char *nick)
|
||||
{
|
||||
_common_unban(ci, nick, false);
|
||||
}
|
||||
|
||||
void common_unban_full(ChannelInfo * ci, char *nick, boolean full)
|
||||
{
|
||||
_common_unban(ci, nick, full);
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/**
|
||||
@@ -240,10 +253,10 @@ char *common_get_vhost(User * u)
|
||||
if (!u)
|
||||
return NULL;
|
||||
|
||||
if (ircd->vhostmode && (u->mode & ircd->vhostmode))
|
||||
return u->vhost;
|
||||
else if (ircd->vhost && u->vhost)
|
||||
if (u->vhost)
|
||||
return u->vhost;
|
||||
else if (ircd->vhostmode && (u->mode & ircd->vhostmode) && u->chost)
|
||||
return u->chost;
|
||||
else
|
||||
return u->host;
|
||||
}
|
||||
|
||||
+5
-5
@@ -1,6 +1,6 @@
|
||||
/* base64 routines.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -295,7 +295,7 @@ char *encode_ip(unsigned char *ip)
|
||||
} else {
|
||||
s_ip = str_signed(ip);
|
||||
ia.s_addr = inet_addr(s_ip);
|
||||
cp = (unsigned char *) ia.s_addr;
|
||||
cp = (unsigned char *) &ia.s_addr;
|
||||
b64_encode((char *) &cp, sizeof(struct in_addr), buf, 25);
|
||||
}
|
||||
return buf;
|
||||
@@ -305,14 +305,14 @@ int decode_ip(char *buf)
|
||||
{
|
||||
int len = strlen(buf);
|
||||
char targ[25];
|
||||
struct in_addr ia;
|
||||
struct in_addr *ia;
|
||||
|
||||
b64_decode(buf, targ, 25);
|
||||
ia = *(struct in_addr *) targ;
|
||||
ia = (struct in_addr *) targ;
|
||||
if (len == 24) { /* IPv6 */
|
||||
return 0;
|
||||
} else if (len == 8) /* IPv4 */
|
||||
return ia.s_addr;
|
||||
return ia->s_addr;
|
||||
else /* Error?? */
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
# For usage, see the usage subroutine or run the script with no
|
||||
# command line arguments.
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# ====================================================================
|
||||
require 5.6.0;
|
||||
|
||||
+1
-2
@@ -2,7 +2,7 @@
|
||||
#
|
||||
# Configuration script for Services
|
||||
#
|
||||
# (C) 2003-2009 Anope Team
|
||||
# (C) 2003-2014 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Please read COPYING and README for further details.
|
||||
@@ -10,7 +10,6 @@
|
||||
# Based on the original code of Epona by Lara.
|
||||
# Based on the original code of Services by Andy Church.
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# $Id$
|
||||
|
||||
# Location of the .sql file with the schema
|
||||
DBSQL="tables.sql"
|
||||
|
||||
+32
-32
@@ -1,6 +1,6 @@
|
||||
/* BotServ functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -8,7 +8,6 @@
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -246,6 +245,7 @@ void botchanmsgs(User * u, ChannelInfo * ci, char *buf)
|
||||
mustkick = 1;
|
||||
} else if (bw->type == BW_SINGLE) {
|
||||
int len = strlen(bw->word);
|
||||
int buf_len = strlen(nbuf);
|
||||
|
||||
if ((BSCaseSensitive && !strcmp(nbuf, bw->word))
|
||||
|| (!BSCaseSensitive
|
||||
@@ -253,23 +253,13 @@ void botchanmsgs(User * u, ChannelInfo * ci, char *buf)
|
||||
mustkick = 1;
|
||||
/* two next if are quite odd isn't it? =) */
|
||||
} else if ((strchr(nbuf, ' ') == nbuf + len)
|
||||
&&
|
||||
((BSCaseSensitive
|
||||
&& !strcmp(nbuf, bw->word))
|
||||
|| (!BSCaseSensitive
|
||||
&& (stristr(nbuf, bw->word) ==
|
||||
nbuf)))) {
|
||||
&& ((BSCaseSensitive && strstr(nbuf, bw->word) == nbuf)
|
||||
|| (!BSCaseSensitive && stristr(nbuf, bw->word) == nbuf))) {
|
||||
mustkick = 1;
|
||||
} else {
|
||||
if ((strrchr(nbuf, ' ') ==
|
||||
nbuf + strlen(nbuf) - len - 1)
|
||||
&&
|
||||
((BSCaseSensitive
|
||||
&& (strstr(nbuf, bw->word) ==
|
||||
nbuf + strlen(nbuf) - len))
|
||||
|| (!BSCaseSensitive
|
||||
&& (stristr(nbuf, bw->word) ==
|
||||
nbuf + strlen(nbuf) - len)))) {
|
||||
if (len < buf_len && (strrchr(nbuf, ' ') == nbuf + buf_len - len - 1)
|
||||
&& ((BSCaseSensitive && (strstr(nbuf, bw->word) == nbuf + buf_len - len))
|
||||
|| (!BSCaseSensitive && (stristr(nbuf, bw->word) == nbuf + buf_len - len)))) {
|
||||
mustkick = 1;
|
||||
} else {
|
||||
char *wordbuf = scalloc(len + 3, 1);
|
||||
@@ -314,16 +304,10 @@ void botchanmsgs(User * u, ChannelInfo * ci, char *buf)
|
||||
}
|
||||
} else if (bw->type == BW_END) {
|
||||
int len = strlen(bw->word);
|
||||
int buf_len = strlen(nbuf);
|
||||
|
||||
if ((BSCaseSensitive
|
||||
&&
|
||||
(!strncmp
|
||||
(nbuf + strlen(nbuf) - len, bw->word, len)))
|
||||
|| (!BSCaseSensitive
|
||||
&&
|
||||
(!strnicmp
|
||||
(nbuf + strlen(nbuf) - len, bw->word,
|
||||
len)))) {
|
||||
if ((BSCaseSensitive && len <= buf_len && !strncmp(nbuf + buf_len - len, bw->word, len))
|
||||
|| (!BSCaseSensitive && len <= buf_len && !strnicmp(nbuf + buf_len - len, bw->word, len))) {
|
||||
mustkick = 1;
|
||||
} else {
|
||||
char *wordbuf = scalloc(len + 2, 1);
|
||||
@@ -676,7 +660,7 @@ static BanData *get_ban_data(Channel * c, User * u)
|
||||
if (!c || !u)
|
||||
return NULL;
|
||||
|
||||
snprintf(mask, sizeof(mask), "%s@%s", u->username,
|
||||
snprintf(mask, sizeof(mask), "%s@%s", common_get_vident(u),
|
||||
common_get_vhost(u));
|
||||
|
||||
for (bd = c->bd; bd; bd = next) {
|
||||
@@ -790,11 +774,16 @@ void bot_join(ChannelInfo * ci)
|
||||
anope_cmd_mode(whosends(ci), ci->name, "-b %s",
|
||||
ban->mask);
|
||||
if (ircdcap->tsmode)
|
||||
av[3] = ban->mask;
|
||||
av[3] = sstrdup(ban->mask);
|
||||
else
|
||||
av[2] = ban->mask;
|
||||
av[2] = sstrdup(ban->mask);
|
||||
|
||||
do_cmode(whosends(ci), ac, av);
|
||||
|
||||
if (ircdcap->tsmode)
|
||||
free(av[3]);
|
||||
else
|
||||
free(av[2]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -845,8 +834,15 @@ static void check_ban(ChannelInfo * ci, User * u, int ttbtype)
|
||||
if (!bd)
|
||||
return;
|
||||
|
||||
/* Bug #1135 - Don't kick/ban ULined clients */
|
||||
if (is_ulined(u->server->name))
|
||||
return;
|
||||
|
||||
bd->ttb[ttbtype]++;
|
||||
if (bd->ttb[ttbtype] == ci->ttb[ttbtype]) {
|
||||
if (ci->ttb[ttbtype] && bd->ttb[ttbtype] >= ci->ttb[ttbtype]) {
|
||||
/* bd->ttb[ttbtype] can possibly be > ci->ttb[ttbtype] if ci->ttb[ttbtype] was changed after
|
||||
* the user has been kicked - Adam
|
||||
*/
|
||||
char *av[4];
|
||||
int ac;
|
||||
char mask[BUFSIZE];
|
||||
@@ -894,6 +890,10 @@ static void bot_kick(ChannelInfo * ci, User * u, int message, ...)
|
||||
if (!ci || !ci->bi || !ci->c || !u)
|
||||
return;
|
||||
|
||||
/* Bug #1135 - Don't kick ULined clients */
|
||||
if (is_ulined(u->server->name))
|
||||
return;
|
||||
|
||||
va_start(args, message);
|
||||
fmt = getstring(u->na, message);
|
||||
if (!fmt)
|
||||
@@ -1078,13 +1078,13 @@ void bot_raw_mode(User * requester, ChannelInfo * ci, char *mode,
|
||||
av[0] = ci->name;
|
||||
av[1] = buf;
|
||||
av[2] = mode;
|
||||
av[3] = nick;
|
||||
av[3] = GET_USER(u);
|
||||
ac = 4;
|
||||
anope_cmd_mode(ci->bi->nick, av[0], "%s %s", av[2], av[3]);
|
||||
} else {
|
||||
av[0] = ci->name;
|
||||
av[1] = mode;
|
||||
av[2] = nick;
|
||||
av[2] = GET_USER(u);
|
||||
ac = 3;
|
||||
anope_cmd_mode(ci->bi->nick, av[0], "%s %s", av[1], av[2]);
|
||||
}
|
||||
|
||||
+169
-46
@@ -1,6 +1,6 @@
|
||||
/* Channel-handling routines.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -8,7 +8,6 @@
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -52,6 +51,10 @@ void chan_deluser(User * user, Channel * c)
|
||||
anope_cmd_part(c->ci->bi->nick, c->name, NULL);
|
||||
}
|
||||
|
||||
/* Channel is permament and shouldn't be deleted */
|
||||
if (anope_get_permchan_mode() && c->mode & anope_get_permchan_mode())
|
||||
return;
|
||||
|
||||
if (!c->users)
|
||||
chan_delete(c);
|
||||
}
|
||||
@@ -74,7 +77,7 @@ char *chan_get_modes(Channel * chan, int complete, int plus)
|
||||
do {
|
||||
if (chan->mode & cbmi->flag)
|
||||
*end++ = cbmi->mode;
|
||||
} while ((++cbmi)->flag != 0 && ++n < sizeof(res) - 1);
|
||||
} while ((++cbmi)->mode != 0 && ++n < sizeof(res) - 1);
|
||||
|
||||
if (complete) {
|
||||
cbmi = cbmodeinfos;
|
||||
@@ -90,7 +93,7 @@ char *chan_get_modes(Channel * chan, int complete, int plus)
|
||||
*end++ = *value++;
|
||||
}
|
||||
}
|
||||
} while ((++cbmi)->flag != 0 && ++n < sizeof(res) - 1);
|
||||
} while ((++cbmi)->mode != 0 && ++n < sizeof(res) - 1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -173,7 +176,12 @@ void chan_set_modes(const char *source, Channel * chan, int ac, char **av,
|
||||
alog("debug: Changing modes for %s to %s", chan->name,
|
||||
merge_args(ac, av));
|
||||
|
||||
u = finduser(source);
|
||||
if (UseTS6 && ircd->ts6) {
|
||||
u = find_byuid(source);
|
||||
if (!u) u = finduser(source);
|
||||
} else
|
||||
u = finduser(source);
|
||||
|
||||
if (u && (chan_get_user_status(chan, u) & CUS_DEOPPED)) {
|
||||
char *s;
|
||||
|
||||
@@ -191,6 +199,8 @@ void chan_set_modes(const char *source, Channel * chan, int ac, char **av,
|
||||
/* Set the resulting mode buffer */
|
||||
anope_cmd_mode(whosends(chan->ci), chan->name, merge_args(ac, av));
|
||||
|
||||
chan_set_modes(whosends(chan->ci), chan, ac, av, check);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -239,12 +249,15 @@ void chan_set_modes(const char *source, Channel * chan, int ac, char **av,
|
||||
}
|
||||
}
|
||||
|
||||
if (!(user = finduser(*av))
|
||||
&& !(UseTS6 && ircd->ts6 && (user = find_byuid(*av)))) {
|
||||
if (debug) {
|
||||
if (UseTS6 && ircd->ts6) {
|
||||
user = find_byuid(*av);
|
||||
if (!user) user = finduser(*av);
|
||||
} else
|
||||
user = finduser(*av);
|
||||
if (!user) {
|
||||
if (debug)
|
||||
alog("debug: MODE %s %c%c for nonexistent user %s",
|
||||
chan->name, (add ? '+' : '-'), mode, *av);
|
||||
}
|
||||
chan->name, (add ? '+' : '-'), mode, *av);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -254,9 +267,9 @@ void chan_set_modes(const char *source, Channel * chan, int ac, char **av,
|
||||
|
||||
if (add) {
|
||||
chan_set_user_status(chan, user, cum->status);
|
||||
/* If this does +o, remove any DEOPPED flag */
|
||||
if (cum->status & CUS_OP)
|
||||
chan_remove_user_status(chan, user, CUS_DEOPPED);
|
||||
/* If this does +o or +h, remove any DEOPPED flag */
|
||||
if (cum->status & CUS_OP || cum->status & CUS_HALFOP)
|
||||
chan_remove_user_status(chan, user, CUS_DEOPPED);
|
||||
} else {
|
||||
chan_remove_user_status(chan, user, cum->status);
|
||||
}
|
||||
@@ -302,8 +315,14 @@ void chan_set_modes(const char *source, Channel * chan, int ac, char **av,
|
||||
}
|
||||
}
|
||||
|
||||
/* Don't bounce modes from u:lined clients or servers, bug #1004. */
|
||||
user = finduser(source);
|
||||
/* Don't bounce modes from u:lined clients or servers, bug #1004. *
|
||||
* We can get UUIDs as well.. don not assume nick ~ Viper */
|
||||
if (UseTS6 && ircd->ts6) {
|
||||
user = find_byuid(source);
|
||||
if (!user) user = finduser(source);
|
||||
} else
|
||||
user = finduser(source);
|
||||
|
||||
if ((user && is_ulined(user->server->name)) || is_ulined((char *)source))
|
||||
return;
|
||||
|
||||
@@ -317,7 +336,14 @@ void chan_set_modes(const char *source, Channel * chan, int ac, char **av,
|
||||
real_ac--;
|
||||
real_av++;
|
||||
for (i = 0; i < real_ac; i++) {
|
||||
if ((user = finduser(*real_av)) && is_on_chan(chan, user)) {
|
||||
if (UseTS6 && ircd->ts6) {
|
||||
user = find_byuid(*real_av);
|
||||
if (!user) user = finduser(*real_av);
|
||||
} else
|
||||
user = finduser(*real_av);
|
||||
|
||||
if (!user && UseTS6 && ircd->ts6) user = find_byuid(*real_av);
|
||||
if (user && is_on_chan(chan, user)) {
|
||||
if (check < 2)
|
||||
chan_set_correct_modes(user, chan, 0);
|
||||
else if ((chan->ci->flags) && (chan->ci->flags & CI_SECUREOPS))
|
||||
@@ -616,6 +642,7 @@ void do_kick(const char *source, int ac, char **av)
|
||||
User *user;
|
||||
char *s, *t;
|
||||
struct u_chanlist *c;
|
||||
Uid *uid;
|
||||
|
||||
t = av[1];
|
||||
while (*(s = t)) {
|
||||
@@ -623,6 +650,13 @@ void do_kick(const char *source, int ac, char **av)
|
||||
if (*t)
|
||||
*t++ = 0;
|
||||
|
||||
if (ircd->ts6 && UseTS6)
|
||||
{
|
||||
uid = find_nickuid(s);
|
||||
if (uid)
|
||||
s = uid->nick;
|
||||
}
|
||||
|
||||
/* If it is the bot that is being kicked, we make it rejoin the
|
||||
* channel and stop immediately.
|
||||
* --lara
|
||||
@@ -770,7 +804,7 @@ void do_sjoin(const char *source, int ac, char **av)
|
||||
{
|
||||
Channel *c;
|
||||
User *user;
|
||||
Server *serv;
|
||||
Server *serv = NULL;
|
||||
struct c_userlist *cu;
|
||||
char *s = NULL;
|
||||
char *end, cubuf[7], *end2, *cumodes[6], *buf;
|
||||
@@ -779,7 +813,10 @@ void do_sjoin(const char *source, int ac, char **av)
|
||||
int is_created = 0;
|
||||
int keep_their_modes = 1;
|
||||
|
||||
serv = findserver(servlist, source);
|
||||
if (UseTS6 && ircd->ts6)
|
||||
serv = findserver_uid(servlist, source);
|
||||
if (!serv)
|
||||
serv = findserver(servlist, source);
|
||||
|
||||
if (ircd->sjb64) {
|
||||
ts = base64dects(av[0]);
|
||||
@@ -799,10 +836,20 @@ void do_sjoin(const char *source, int ac, char **av)
|
||||
cumodes[2] = cu->user->nick;
|
||||
chan_set_modes(source, c, 3, cumodes, 2);
|
||||
}
|
||||
if (c->ci && c->ci->bi) {
|
||||
/* This is ugly, but it always works */
|
||||
anope_cmd_part(c->ci->bi->nick, c->name, "TS reop");
|
||||
bot_join(c->ci);
|
||||
if (c->ci)
|
||||
{
|
||||
if (c->ci->bi)
|
||||
{
|
||||
/* This is ugly, but it always works */
|
||||
anope_cmd_part(c->ci->bi->nick, c->name, "TS reop");
|
||||
bot_join(c->ci);
|
||||
}
|
||||
/* Make sure +r is set */
|
||||
if (ircd->chanreg && ircd->regmode)
|
||||
{
|
||||
c->mode |= ircd->regmode;
|
||||
anope_cmd_mode(whosends(c->ci), c->name, "+r");
|
||||
}
|
||||
}
|
||||
/* XXX simple modes and bans */
|
||||
} else if (c->creation_time < ts)
|
||||
@@ -1239,10 +1286,18 @@ void do_topic(const char *source, int ac, char **av)
|
||||
/* If the current topic we have matches the last known topic for this
|
||||
* channel exactly, there's no need to update anything and we can as
|
||||
* well just return silently without updating anything. -GD
|
||||
* But we still need to update the topic internally for the channel - Adam
|
||||
*/
|
||||
if ((ac > 3) && *av[3] && ci && ci->last_topic
|
||||
&& (strcmp(av[3], ci->last_topic) == 0)
|
||||
&& (strcmp(topicsetter, ci->last_topic_setter) == 0)) {
|
||||
|
||||
if (c->topic)
|
||||
free(c->topic);
|
||||
c->topic = sstrdup(av[3]);
|
||||
strscpy(c->topic_setter, topicsetter, sizeof(c->topic_setter));
|
||||
c->topic_time = topic_time;
|
||||
|
||||
free(topicsetter);
|
||||
return;
|
||||
}
|
||||
@@ -1266,10 +1321,13 @@ void do_topic(const char *source, int ac, char **av)
|
||||
|
||||
record_topic(av[0]);
|
||||
|
||||
if (ci && ci->last_topic) {
|
||||
send_event(EVENT_TOPIC_UPDATED, 2, av[0], ci->last_topic);
|
||||
} else {
|
||||
send_event(EVENT_TOPIC_UPDATED, 2, av[0], "");
|
||||
/* Only call events if we are synced with the uplink */
|
||||
if (serv_uplink && is_sync(serv_uplink)) {
|
||||
if (ci && ci->last_topic) {
|
||||
send_event(EVENT_TOPIC_UPDATED, 2, av[0], ci->last_topic);
|
||||
} else {
|
||||
send_event(EVENT_TOPIC_UPDATED, 2, av[0], "");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1422,7 +1480,7 @@ void chan_set_correct_modes(User * user, Channel * c, int give_modes)
|
||||
* Unless the channel has just been created. -heinz
|
||||
* Or the user matches CA_AUTODEOP... -GD
|
||||
*/
|
||||
if (((ci->flags & CI_SECUREOPS) || (c->usercount == 1)
|
||||
if (((ci->flags & CI_SECUREOPS) || (c->usercount == 1 && is_sync(user->server))
|
||||
|| check_access(user, ci, CA_AUTODEOP))
|
||||
&& !is_ulined(user->server->name)) {
|
||||
if (ircd->owner && (status & CUS_OWNER) && !is_founder(user, ci))
|
||||
@@ -1456,7 +1514,7 @@ void chan_set_correct_modes(User * user, Channel * c, int give_modes)
|
||||
strcat(modebuf, tmp);
|
||||
free(tmp);
|
||||
strcat(userbuf, " ");
|
||||
strcat(userbuf, user->nick);
|
||||
strcat(userbuf, GET_USER(user));
|
||||
} else {
|
||||
add_modes &= ~CUS_OWNER;
|
||||
}
|
||||
@@ -1465,14 +1523,14 @@ void chan_set_correct_modes(User * user, Channel * c, int give_modes)
|
||||
strcat(modebuf, tmp);
|
||||
free(tmp);
|
||||
strcat(userbuf, " ");
|
||||
strcat(userbuf, user->nick);
|
||||
strcat(userbuf, GET_USER(user));
|
||||
} else {
|
||||
add_modes &= ~CUS_PROTECT;
|
||||
}
|
||||
if ((add_modes & CUS_OP) && !(status & CUS_OP)) {
|
||||
strcat(modebuf, "o");
|
||||
strcat(userbuf, " ");
|
||||
strcat(userbuf, user->nick);
|
||||
strcat(userbuf, GET_USER(user));
|
||||
rem_modes |= CUS_DEOPPED;
|
||||
} else {
|
||||
add_modes &= ~CUS_OP;
|
||||
@@ -1480,14 +1538,16 @@ void chan_set_correct_modes(User * user, Channel * c, int give_modes)
|
||||
if ((add_modes & CUS_HALFOP) && !(status & CUS_HALFOP)) {
|
||||
strcat(modebuf, "h");
|
||||
strcat(userbuf, " ");
|
||||
strcat(userbuf, user->nick);
|
||||
strcat(userbuf, GET_USER(user));
|
||||
/* Halfops are ops too, having a halfop with CUS_DEOPPED is not good - Adam */
|
||||
rem_modes |= CUS_DEOPPED;
|
||||
} else {
|
||||
add_modes &= ~CUS_HALFOP;
|
||||
}
|
||||
if ((add_modes & CUS_VOICE) && !(status & CUS_VOICE)) {
|
||||
strcat(modebuf, "v");
|
||||
strcat(userbuf, " ");
|
||||
strcat(userbuf, user->nick);
|
||||
strcat(userbuf, GET_USER(user));
|
||||
} else {
|
||||
add_modes &= ~CUS_VOICE;
|
||||
}
|
||||
@@ -1499,25 +1559,30 @@ void chan_set_correct_modes(User * user, Channel * c, int give_modes)
|
||||
strcat(modebuf, tmp);
|
||||
free(tmp);
|
||||
strcat(userbuf, " ");
|
||||
strcat(userbuf, user->nick);
|
||||
strcat(userbuf, GET_USER(user));
|
||||
}
|
||||
if (rem_modes & CUS_PROTECT) {
|
||||
tmp = stripModePrefix(ircd->adminset);
|
||||
strcat(modebuf, tmp);
|
||||
free(tmp);
|
||||
strcat(userbuf, " ");
|
||||
strcat(userbuf, user->nick);
|
||||
strcat(userbuf, GET_USER(user));
|
||||
}
|
||||
if (rem_modes & CUS_OP) {
|
||||
strcat(modebuf, "o");
|
||||
strcat(userbuf, " ");
|
||||
strcat(userbuf, user->nick);
|
||||
add_modes |= CUS_DEOPPED;
|
||||
strcat(userbuf, GET_USER(user));
|
||||
/* Do not mark a user as deopped if they are halfopd - Adam */
|
||||
if (!(add_modes & CUS_HALFOP) && !(status & CUS_HALFOP))
|
||||
add_modes |= CUS_DEOPPED;
|
||||
}
|
||||
if (rem_modes & CUS_HALFOP) {
|
||||
strcat(modebuf, "h");
|
||||
strcat(userbuf, " ");
|
||||
strcat(userbuf, user->nick);
|
||||
strcat(userbuf, GET_USER(user));
|
||||
/* Do not mark a user as deopped if they are opped - Adam */
|
||||
if (!(add_modes & CUS_OP) && !(status & CUS_OP))
|
||||
add_modes |= CUS_DEOPPED;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1678,6 +1743,7 @@ void chan_delete(Channel * c)
|
||||
while (c->bans->entries) {
|
||||
entry_delete(c->bans, c->bans->entries);
|
||||
}
|
||||
free(c->bans);
|
||||
}
|
||||
|
||||
if (ircd->except) {
|
||||
@@ -1685,6 +1751,7 @@ void chan_delete(Channel * c)
|
||||
while (c->excepts->entries) {
|
||||
entry_delete(c->excepts, c->excepts->entries);
|
||||
}
|
||||
free(c->excepts);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1693,6 +1760,7 @@ void chan_delete(Channel * c)
|
||||
while (c->invites->entries) {
|
||||
entry_delete(c->invites, c->invites->entries);
|
||||
}
|
||||
free(c->invites);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1721,6 +1789,10 @@ void del_ban(Channel * chan, char *mask)
|
||||
|
||||
if (ban) {
|
||||
entry_delete(chan->bans, ban);
|
||||
if (chan->bans->count == 0) {
|
||||
free(chan->bans);
|
||||
chan->bans = NULL;
|
||||
}
|
||||
|
||||
if (debug)
|
||||
alog("debug: Deleted ban %s from channel %s", mask,
|
||||
@@ -1745,6 +1817,10 @@ void del_exception(Channel * chan, char *mask)
|
||||
|
||||
if (exception) {
|
||||
entry_delete(chan->excepts, exception);
|
||||
if (chan->excepts->count == 0) {
|
||||
free(chan->excepts);
|
||||
chan->excepts = NULL;
|
||||
}
|
||||
|
||||
if (debug)
|
||||
alog("debug: Deleted except %s to channel %s", mask,
|
||||
@@ -1767,6 +1843,10 @@ void del_invite(Channel * chan, char *mask)
|
||||
|
||||
if (invite) {
|
||||
entry_delete(chan->invites, invite);
|
||||
if(chan->invites->count == 0) {
|
||||
free(chan->invites);
|
||||
chan->invites = NULL;
|
||||
}
|
||||
|
||||
if (debug)
|
||||
alog("debug: Deleted invite %s to channel %s", mask,
|
||||
@@ -1818,6 +1898,15 @@ char *get_redirect(Channel * chan)
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/* This is a dummy function part of making anope accept modes
|
||||
* it does actively parse.. ~ Viper */
|
||||
char *get_unkwn(Channel * chan)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
Channel *join_user_update(User * user, Channel * chan, char *name,
|
||||
time_t chants)
|
||||
{
|
||||
@@ -1843,11 +1932,20 @@ Channel *join_user_update(User * user, Channel * chan, char *name,
|
||||
modes[2] = cu->user->nick;
|
||||
chan_set_modes(s_OperServ, chan, 3, modes, 2);
|
||||
}
|
||||
if (chan->ci && chan->ci->bi)
|
||||
if (chan->ci)
|
||||
{
|
||||
/* This is ugly, but it always works */
|
||||
anope_cmd_part(chan->ci->bi->nick, chan->name, "TS reop");
|
||||
bot_join(chan->ci);
|
||||
if (chan->ci->bi)
|
||||
{
|
||||
/* This is ugly, but it always works */
|
||||
anope_cmd_part(chan->ci->bi->nick, chan->name, "TS reop");
|
||||
bot_join(chan->ci);
|
||||
}
|
||||
/* Make sure +r is set */
|
||||
if (ircd->chanreg && ircd->regmode)
|
||||
{
|
||||
chan->mode |= ircd->regmode;
|
||||
anope_cmd_mode(whosends(chan->ci), chan->name, "+r");
|
||||
}
|
||||
}
|
||||
/* XXX simple modes and bans */
|
||||
}
|
||||
@@ -1932,6 +2030,17 @@ void set_redirect(Channel * chan, char *value)
|
||||
chan->redirect ? chan->redirect : "no redirect");
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/* This is a dummy function to make anope parse a param for a mode,
|
||||
* yet we don't use that param internally.. ~ Viper */
|
||||
void set_unkwn(Channel *chan, char *value)
|
||||
{
|
||||
/* Do nothing.. */
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
void do_mass_mode(char *modes)
|
||||
{
|
||||
int ac;
|
||||
@@ -2176,7 +2285,7 @@ int entry_match(Entry * e, char *nick, char *user, char *host, uint32 ip)
|
||||
&& (!user || stricmp(e->user, user) != 0))
|
||||
return 0;
|
||||
if ((e->type & ENTRYTYPE_HOST)
|
||||
&& (!user || stricmp(e->host, host) != 0))
|
||||
&& (!host || stricmp(e->host, host) != 0))
|
||||
return 0;
|
||||
if ((e->type & ENTRYTYPE_NICK_WILD)
|
||||
&& !match_wild_nocase(e->nick, nick))
|
||||
@@ -2302,11 +2411,12 @@ Entry *elist_match_mask(EList * list, char *mask, uint32 ip)
|
||||
* Check if a user matches an entry on a list.
|
||||
* @param list EntryList that should be matched against
|
||||
* @param user The user to match against the entries
|
||||
* @param full true to match against real host and real IP
|
||||
* @return Returns the first matching entry, if none, NULL is returned.
|
||||
*/
|
||||
Entry *elist_match_user(EList * list, User * u)
|
||||
static Entry *_elist_match_user(EList * list, User * u, boolean full)
|
||||
{
|
||||
Entry *res;
|
||||
Entry *res = NULL;
|
||||
char *host;
|
||||
uint32 ip = 0;
|
||||
|
||||
@@ -2329,9 +2439,12 @@ Entry *elist_match_user(EList * list, User * u)
|
||||
ip = str_is_ip(host);
|
||||
|
||||
/* Match what we ve got against the lists.. */
|
||||
res = elist_match(list, u->nick, u->username, u->host, ip);
|
||||
if (full)
|
||||
res = elist_match(list, u->nick, u->username, u->host, ip);
|
||||
if (!res)
|
||||
elist_match(list, u->nick, u->username, u->vhost, ip);
|
||||
res = elist_match(list, u->nick, u->vident, u->vhost, 0);
|
||||
if (!res)
|
||||
res = elist_match(list, u->nick, u->username, u->chost, 0);
|
||||
|
||||
if (host)
|
||||
free(host);
|
||||
@@ -2339,6 +2452,16 @@ Entry *elist_match_user(EList * list, User * u)
|
||||
return res;
|
||||
}
|
||||
|
||||
Entry *elist_match_user(EList *list, User *u)
|
||||
{
|
||||
return _elist_match_user(list, u, false);
|
||||
}
|
||||
|
||||
Entry *elist_match_user_full(EList *list, User *u, boolean full)
|
||||
{
|
||||
return _elist_match_user(list, u, full);
|
||||
}
|
||||
|
||||
/**
|
||||
* Find a entry identical to the given mask..
|
||||
* @param list EntryList that should be matched against
|
||||
|
||||
+134
-50
@@ -1,6 +1,6 @@
|
||||
/* ChanServ functions.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -8,7 +8,6 @@
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -145,7 +144,7 @@ char *get_mlock_modes(ChannelInfo * ci, int complete)
|
||||
do {
|
||||
if (ci->mlock_on & cbmi->flag)
|
||||
*end++ = cbmi->mode;
|
||||
} while ((++cbmi)->flag != 0 && ++n < sizeof(res) - 1);
|
||||
} while ((++cbmi)->mode != 0 && ++n < sizeof(res) - 1);
|
||||
|
||||
cbmi = cbmodeinfos;
|
||||
}
|
||||
@@ -157,7 +156,7 @@ char *get_mlock_modes(ChannelInfo * ci, int complete)
|
||||
do {
|
||||
if (ci->mlock_off & cbmi->flag)
|
||||
*end++ = cbmi->mode;
|
||||
} while ((++cbmi)->flag != 0 && ++n < sizeof(res) - 1);
|
||||
} while ((++cbmi)->mode != 0 && ++n < sizeof(res) - 1);
|
||||
|
||||
cbmi = cbmodeinfos;
|
||||
}
|
||||
@@ -173,7 +172,7 @@ char *get_mlock_modes(ChannelInfo * ci, int complete)
|
||||
*end++ = *value++;
|
||||
}
|
||||
}
|
||||
} while ((++cbmi)->flag != 0 && ++n < sizeof(res) - 1);
|
||||
} while ((++cbmi)->mode != 0 && ++n < sizeof(res) - 1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -277,7 +276,7 @@ void listchans(int count_only, const char *chan)
|
||||
}
|
||||
if (ci->flags & CI_SUSPENDED) {
|
||||
printf
|
||||
("This nickname is currently suspended by %s, reason: %s\n",
|
||||
("This channel is currently suspended by %s, reason: %s\n",
|
||||
ci->forbidby,
|
||||
(ci->forbidreason ? ci->forbidreason : "No reason"));
|
||||
}
|
||||
@@ -1082,10 +1081,11 @@ void save_cs_rdb_dbase(void)
|
||||
void check_modes(Channel * c)
|
||||
{
|
||||
char modebuf[64], argbuf[BUFSIZE], *end = modebuf, *end2 = argbuf;
|
||||
uint32 modes;
|
||||
uint32 modes = 0;
|
||||
ChannelInfo *ci;
|
||||
CBModeInfo *cbmi;
|
||||
CBMode *cbm;
|
||||
CBModeInfo *cbmi = NULL;
|
||||
CBMode *cbm = NULL;
|
||||
boolean DefConOn = DefConLevel != 5;
|
||||
|
||||
if (!c) {
|
||||
if (debug) {
|
||||
@@ -1122,14 +1122,16 @@ void check_modes(Channel * c)
|
||||
anope_cmd_mode(whosends(ci), c->name, "-r");
|
||||
}
|
||||
}
|
||||
return;
|
||||
/* Channels that are not regged also need the defcon modes.. ~ Viper */
|
||||
/* return; */
|
||||
}
|
||||
|
||||
/* Initialize te modes-var to set all modes not set yet but which should
|
||||
/* Initialize the modes-var to set all modes not set yet but which should
|
||||
* be set as by mlock and defcon.
|
||||
*/
|
||||
modes = ~c->mode & ci->mlock_on;
|
||||
if (DefConModesSet)
|
||||
if (ci)
|
||||
modes = ~c->mode & ci->mlock_on;
|
||||
if (DefConOn && DefConModesSet)
|
||||
modes |= (~c->mode & DefConModesOn);
|
||||
|
||||
/* Initialize the buffers */
|
||||
@@ -1145,10 +1147,15 @@ void check_modes(Channel * c)
|
||||
if (cbmi->getvalue && cbmi->csgetvalue) {
|
||||
char *value;
|
||||
/* Check if it's a defcon or mlock mode */
|
||||
if (DefConModesOn & cbmi->flag)
|
||||
if (DefConOn && DefConModesOn & cbmi->flag)
|
||||
value = cbmi->csgetvalue(&DefConModesCI);
|
||||
else
|
||||
else if (ci)
|
||||
value = cbmi->csgetvalue(ci);
|
||||
else {
|
||||
value = NULL;
|
||||
if (debug)
|
||||
alog ("Warning: setting modes with unknown origin.");
|
||||
}
|
||||
|
||||
cbm = &cbmodes[(int) cbmi->mode];
|
||||
cbm->setvalue(c, value);
|
||||
@@ -1160,17 +1167,22 @@ void check_modes(Channel * c)
|
||||
}
|
||||
}
|
||||
} else if (cbmi->getvalue && cbmi->csgetvalue
|
||||
&& ((ci->mlock_on & cbmi->flag)
|
||||
|| (DefConModesOn & cbmi->flag))
|
||||
&& ((ci && (ci->mlock_on & cbmi->flag))
|
||||
|| (DefConOn && DefConModesOn & cbmi->flag))
|
||||
&& (c->mode & cbmi->flag)) {
|
||||
char *value = cbmi->getvalue(c);
|
||||
char *csvalue;
|
||||
|
||||
/* Check if it's a defcon or mlock mode */
|
||||
if (DefConModesOn & cbmi->flag)
|
||||
if (DefConOn && DefConModesOn & cbmi->flag)
|
||||
csvalue = cbmi->csgetvalue(&DefConModesCI);
|
||||
else
|
||||
else if (ci)
|
||||
csvalue = cbmi->csgetvalue(ci);
|
||||
else {
|
||||
csvalue = NULL;
|
||||
if (debug)
|
||||
alog ("Warning: setting modes with unknown origin.");
|
||||
}
|
||||
|
||||
/* Lock and actual values don't match, so fix the mode */
|
||||
if (value && csvalue && strcmp(value, csvalue)) {
|
||||
@@ -1184,14 +1196,20 @@ void check_modes(Channel * c)
|
||||
*end2++ = *csvalue++;
|
||||
}
|
||||
}
|
||||
} while ((++cbmi)->flag != 0);
|
||||
} while ((++cbmi)->mode != 0);
|
||||
|
||||
if (*(end - 1) == '+')
|
||||
end--;
|
||||
|
||||
modes = c->mode & ci->mlock_off;
|
||||
if (DefConModesSet)
|
||||
modes |= (~c->mode & DefConModesOff);
|
||||
modes = 0;
|
||||
if (ci) {
|
||||
modes = c->mode & ci->mlock_off;
|
||||
/* Make sure we don't remove a mode just set by defcon.. ~ Viper */
|
||||
if (DefConOn && DefConModesSet)
|
||||
modes &= ~(modes & DefConModesOn);
|
||||
}
|
||||
if (DefConOn && DefConModesSet)
|
||||
modes |= c->mode & DefConModesOff;
|
||||
|
||||
if (modes) {
|
||||
*end++ = '-';
|
||||
@@ -1219,7 +1237,7 @@ void check_modes(Channel * c)
|
||||
cbm->setvalue(c, NULL);
|
||||
}
|
||||
}
|
||||
} while ((++cbmi)->flag != 0);
|
||||
} while ((++cbmi)->mode != 0);
|
||||
}
|
||||
|
||||
if (end == modebuf)
|
||||
@@ -1228,7 +1246,7 @@ void check_modes(Channel * c)
|
||||
*end = 0;
|
||||
*end2 = 0;
|
||||
|
||||
anope_cmd_mode(whosends(ci), c->name, "%s%s", modebuf,
|
||||
anope_cmd_mode((ci ? whosends(ci) : s_OperServ), c->name, "%s%s", modebuf,
|
||||
(end2 == argbuf ? "" : argbuf));
|
||||
}
|
||||
|
||||
@@ -1250,13 +1268,13 @@ int check_valid_admin(User * user, Channel * chan, int servermode)
|
||||
if (servermode && !check_access(user, chan->ci, CA_AUTOPROTECT)) {
|
||||
notice_lang(s_ChanServ, user, CHAN_IS_REGISTERED, s_ChanServ);
|
||||
anope_cmd_mode(whosends(chan->ci), chan->name, "%s %s",
|
||||
ircd->adminunset, user->nick);
|
||||
ircd->adminunset, GET_USER(user));
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (check_access(user, chan->ci, CA_AUTODEOP)) {
|
||||
anope_cmd_mode(whosends(chan->ci), chan->name, "%s %s",
|
||||
ircd->adminunset, user->nick);
|
||||
ircd->adminunset, GET_USER(user));
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1287,40 +1305,40 @@ int check_valid_op(User * user, Channel * chan, int servermode)
|
||||
tmp = stripModePrefix(ircd->ownerunset);
|
||||
anope_cmd_mode(whosends(chan->ci), chan->name,
|
||||
"%so%s %s %s %s", ircd->adminunset,
|
||||
tmp, user->nick,
|
||||
user->nick, user->nick);
|
||||
tmp, GET_USER(user),
|
||||
GET_USER(user), GET_USER(user));
|
||||
free(tmp);
|
||||
} else {
|
||||
tmp = stripModePrefix(ircd->ownerunset);
|
||||
anope_cmd_mode(whosends(chan->ci), chan->name,
|
||||
"%sho%s %s %s %s %s",
|
||||
ircd->adminunset, tmp,
|
||||
user->nick, user->nick, user->nick,
|
||||
user->nick);
|
||||
GET_USER(user), GET_USER(user), GET_USER(user),
|
||||
GET_USER(user));
|
||||
free(tmp);
|
||||
}
|
||||
} else if (!ircd->owner && ircd->protect) {
|
||||
if (check_access(user, chan->ci, CA_AUTOHALFOP)) {
|
||||
anope_cmd_mode(whosends(chan->ci), chan->name,
|
||||
"%so %s %s", ircd->adminunset,
|
||||
user->nick, user->nick);
|
||||
GET_USER(user), GET_USER(user));
|
||||
} else {
|
||||
anope_cmd_mode(whosends(chan->ci), chan->name,
|
||||
"%soh %s %s %s", ircd->adminunset,
|
||||
user->nick, user->nick, user->nick);
|
||||
GET_USER(user), GET_USER(user), GET_USER(user));
|
||||
}
|
||||
} else {
|
||||
if (check_access(user, chan->ci, CA_AUTOHALFOP)) {
|
||||
anope_cmd_mode(whosends(chan->ci), chan->name, "-o %s",
|
||||
user->nick);
|
||||
GET_USER(user));
|
||||
} else {
|
||||
anope_cmd_mode(whosends(chan->ci), chan->name,
|
||||
"-ho %s %s", user->nick, user->nick);
|
||||
"-ho %s %s", GET_USER(user), GET_USER(user));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
anope_cmd_mode(whosends(chan->ci), chan->name, "-o %s",
|
||||
user->nick);
|
||||
GET_USER(user));
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -1331,16 +1349,16 @@ int check_valid_op(User * user, Channel * chan, int servermode)
|
||||
tmp = stripModePrefix(ircd->ownerunset);
|
||||
anope_cmd_mode(whosends(chan->ci), chan->name,
|
||||
"%sho%s %s %s %s %s", ircd->adminunset,
|
||||
tmp, user->nick, user->nick,
|
||||
user->nick, user->nick);
|
||||
tmp, GET_USER(user), GET_USER(user),
|
||||
GET_USER(user), GET_USER(user));
|
||||
free(tmp);
|
||||
} else {
|
||||
anope_cmd_mode(whosends(chan->ci), chan->name, "-ho %s %s",
|
||||
user->nick, user->nick);
|
||||
GET_USER(user), GET_USER(user));
|
||||
}
|
||||
} else {
|
||||
anope_cmd_mode(whosends(chan->ci), chan->name, "-o %s",
|
||||
user->nick);
|
||||
GET_USER(user));
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -1365,7 +1383,7 @@ int check_should_op(User * user, char *chan)
|
||||
return 0;
|
||||
|
||||
if (check_access(user, ci, CA_AUTOOP)) {
|
||||
anope_cmd_mode(whosends(ci), chan, "+o %s", user->nick);
|
||||
anope_cmd_mode(whosends(ci), chan, "+o %s", GET_USER(user));
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -1388,7 +1406,7 @@ int check_should_voice(User * user, char *chan)
|
||||
return 0;
|
||||
|
||||
if (check_access(user, ci, CA_AUTOVOICE)) {
|
||||
anope_cmd_mode(whosends(ci), chan, "+v %s", user->nick);
|
||||
anope_cmd_mode(whosends(ci), chan, "+v %s", GET_USER(user));
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -1405,7 +1423,7 @@ int check_should_halfop(User * user, char *chan)
|
||||
return 0;
|
||||
|
||||
if (check_access(user, ci, CA_AUTOHALFOP)) {
|
||||
anope_cmd_mode(whosends(ci), chan, "+h %s", user->nick);
|
||||
anope_cmd_mode(whosends(ci), chan, "+h %s", GET_USER(user));
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -1425,8 +1443,8 @@ int check_should_owner(User * user, char *chan)
|
||||
if (((ci->flags & CI_SECUREFOUNDER) && is_real_founder(user, ci))
|
||||
|| (!(ci->flags & CI_SECUREFOUNDER) && is_founder(user, ci))) {
|
||||
tmp = stripModePrefix(ircd->ownerset);
|
||||
anope_cmd_mode(whosends(ci), chan, "+o%s %s %s", tmp, user->nick,
|
||||
user->nick);
|
||||
anope_cmd_mode(whosends(ci), chan, "+o%s %s %s", tmp, GET_USER(user),
|
||||
GET_USER(user));
|
||||
free(tmp);
|
||||
return 1;
|
||||
}
|
||||
@@ -1446,8 +1464,8 @@ int check_should_protect(User * user, char *chan)
|
||||
|
||||
if (check_access(user, ci, CA_AUTOPROTECT)) {
|
||||
tmp = stripModePrefix(ircd->adminset);
|
||||
anope_cmd_mode(whosends(ci), chan, "+o%s %s %s", tmp, user->nick,
|
||||
user->nick);
|
||||
anope_cmd_mode(whosends(ci), chan, "+o%s %s %s", tmp, GET_USER(user),
|
||||
GET_USER(user));
|
||||
free(tmp);
|
||||
return 1;
|
||||
}
|
||||
@@ -1552,7 +1570,7 @@ int check_kick(User * user, char *chan, time_t chants)
|
||||
if (akick->flags & AK_ISNICK)
|
||||
get_idealban(ci, user, mask, sizeof(mask));
|
||||
else
|
||||
strcpy(mask, akick->u.mask);
|
||||
strscpy(mask, akick->u.mask, sizeof(mask));
|
||||
reason = akick->reason ? akick->reason : CSAutokickReason;
|
||||
goto kick;
|
||||
}
|
||||
@@ -1683,7 +1701,7 @@ void restore_topic(char *chan)
|
||||
if (ircd->join2set) {
|
||||
if (whosends(ci) == s_ChanServ) {
|
||||
anope_cmd_join(s_ChanServ, chan, c->creation_time);
|
||||
anope_cmd_mode(NULL, chan, "+o %s", s_ChanServ);
|
||||
anope_cmd_mode(NULL, chan, "+o %s", GET_BOT(s_ChanServ));
|
||||
}
|
||||
}
|
||||
anope_cmd_topic(whosends(ci), c->name, c->topic_setter,
|
||||
@@ -1745,7 +1763,7 @@ int check_topiclock(Channel * c, time_t topic_time)
|
||||
if (ircd->join2set) {
|
||||
if (whosends(ci) == s_ChanServ) {
|
||||
anope_cmd_join(s_ChanServ, c->name, c->creation_time);
|
||||
anope_cmd_mode(NULL, c->name, "+o %s", s_ChanServ);
|
||||
anope_cmd_mode(NULL, c->name, "+o %s", GET_BOT(s_ChanServ));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1841,6 +1859,7 @@ void cs_remove_nick(const NickCore * nc)
|
||||
ca->nc = NULL;
|
||||
}
|
||||
}
|
||||
CleanAccess(ci);
|
||||
|
||||
for (akick = ci->akick, j = 0; j < ci->akickcount; akick++, j++) {
|
||||
if ((akick->flags & AK_USED) && (akick->flags & AK_ISNICK)
|
||||
@@ -2469,6 +2488,15 @@ char *cs_get_redirect(ChannelInfo * ci)
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/* This is a dummy function part of making anope accept modes
|
||||
* it does actively parse.. ~ Viper */
|
||||
char *cs_get_unkwn(ChannelInfo * ci)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
void cs_set_flood(ChannelInfo * ci, char *value)
|
||||
{
|
||||
if (!ci) {
|
||||
@@ -2559,6 +2587,17 @@ void cs_set_redirect(ChannelInfo * ci, char *value)
|
||||
}
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/* This is a dummy function to make anope parse a param for a mode,
|
||||
* yet we don't use that param internally.. ~ Viper */
|
||||
void cs_set_unkwn(ChannelInfo * ci, char *value)
|
||||
{
|
||||
/* Do nothing.. */
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
int get_access_level(ChannelInfo * ci, NickAlias * na)
|
||||
{
|
||||
ChanAccess *access;
|
||||
@@ -2709,3 +2748,48 @@ void stick_all(ChannelInfo * ci)
|
||||
free(av[0]);
|
||||
}
|
||||
}
|
||||
|
||||
/** Reorder the access list to get rid of unused entries
|
||||
* @param ci The channel to reorder the access of
|
||||
*/
|
||||
void CleanAccess(ChannelInfo *ci)
|
||||
{
|
||||
int a, b;
|
||||
|
||||
if (!ci)
|
||||
return;
|
||||
|
||||
for (b = 0; b < ci->accesscount; b++)
|
||||
{
|
||||
if (ci->access[b].in_use)
|
||||
{
|
||||
for (a = 0; a < ci->accesscount; a++)
|
||||
{
|
||||
if (a > b)
|
||||
break;
|
||||
if (!ci->access[a].in_use)
|
||||
{
|
||||
ci->access[a].in_use = 1;
|
||||
ci->access[a].level = ci->access[b].level;
|
||||
ci->access[a].nc = ci->access[b].nc;
|
||||
ci->access[a].last_seen = ci->access[b].last_seen;
|
||||
ci->access[b].nc = NULL;
|
||||
ci->access[b].in_use = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* After reordering, entries on the end of the list may be empty, remove them */
|
||||
for (b = ci->accesscount - 1; b >= 0; --b)
|
||||
{
|
||||
if (ci->access[b].in_use)
|
||||
break;
|
||||
ci->accesscount--;
|
||||
}
|
||||
|
||||
/* Reallocate the access list to only use the memory we need */
|
||||
ci->access = srealloc(ci->access, sizeof(ChanAccess) * ci->accesscount);
|
||||
}
|
||||
|
||||
|
||||
+45
-43
@@ -1,6 +1,6 @@
|
||||
/* Routines for looking up commands in a *Serv command list.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -8,7 +8,6 @@
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -95,18 +94,19 @@ void do_run_cmd(char *service, User * u, Command * c, const char *cmd)
|
||||
notice_lang(service, u, OPER_DEFCON_DENIED);
|
||||
}
|
||||
} else {
|
||||
char *mod_current_module_name_save = mod_current_module_name;
|
||||
Module *mod_current_module_save = mod_current_module;
|
||||
mod_current_module_name = c->mod_name;
|
||||
mod_current_module = NULL;
|
||||
mod_current_module = findModule(c->mod_name);
|
||||
if ((c->has_priv == NULL) || c->has_priv(u)) {
|
||||
retVal = c->routine(u);
|
||||
mod_current_module_name = NULL;
|
||||
if (retVal == MOD_CONT) {
|
||||
current = c->next;
|
||||
while (current && retVal == MOD_CONT) {
|
||||
mod_current_module_name = current->mod_name;
|
||||
mod_current_module = NULL;
|
||||
retVal = current->routine(u);
|
||||
mod_current_module_name = NULL;
|
||||
mod_current_module = findModule(current->mod_name);
|
||||
if (current->routine)
|
||||
retVal = current->routine(u);
|
||||
current = current->next;
|
||||
}
|
||||
}
|
||||
@@ -115,7 +115,8 @@ void do_run_cmd(char *service, User * u, Command * c, const char *cmd)
|
||||
alog("Access denied for %s with service %s and command %s",
|
||||
u->nick, service, cmd);
|
||||
}
|
||||
mod_current_module_name = NULL;
|
||||
mod_current_module_name = mod_current_module_name_save;
|
||||
mod_current_module = mod_current_module_save;
|
||||
}
|
||||
} else {
|
||||
if ((!checkDefCon(DEFCON_SILENT_OPER_ONLY)) || is_oper(u)) {
|
||||
@@ -167,6 +168,8 @@ void do_help_cmd(char *service, User * u, Command * c, const char *cmd)
|
||||
const char *p1 = NULL, *p2 = NULL, *p3 = NULL, *p4 = NULL;
|
||||
Module *calling_module = mod_current_module;
|
||||
char *calling_module_name = mod_current_module_name;
|
||||
int help_message;
|
||||
int (*help_message_ptr)(User *u) = NULL;
|
||||
|
||||
for (current = c; (current) && (cont == MOD_CONT);
|
||||
current = current->next) {
|
||||
@@ -180,6 +183,10 @@ void do_help_cmd(char *service, User * u, Command * c, const char *cmd)
|
||||
p2 = current->help_param2;
|
||||
p3 = current->help_param3;
|
||||
p4 = current->help_param4;
|
||||
|
||||
help_message = 0;
|
||||
help_message_ptr = NULL;
|
||||
|
||||
if (current->helpmsg_all >= 0) {
|
||||
notice_help(service, u, current->helpmsg_all, p1, p2, p3, p4);
|
||||
has_had_help = 1;
|
||||
@@ -187,43 +194,38 @@ void do_help_cmd(char *service, User * u, Command * c, const char *cmd)
|
||||
cont = current->all_help(u);
|
||||
has_had_help = 1;
|
||||
}
|
||||
if (is_services_root(u)) {
|
||||
if (current->helpmsg_root >= 0) {
|
||||
notice_help(service, u, current->helpmsg_root, p1, p2, p3,
|
||||
p4);
|
||||
has_had_help = 1;
|
||||
} else if (current->root_help) {
|
||||
cont = current->root_help(u);
|
||||
has_had_help = 1;
|
||||
}
|
||||
} else if (is_services_admin(u)) {
|
||||
if (current->helpmsg_admin >= 0) {
|
||||
notice_help(service, u, current->helpmsg_admin, p1, p2, p3,
|
||||
p4);
|
||||
has_had_help = 1;
|
||||
} else if (current->admin_help) {
|
||||
cont = current->admin_help(u);
|
||||
has_had_help = 1;
|
||||
}
|
||||
} else if (is_services_oper(u)) {
|
||||
if (current->helpmsg_oper >= 0) {
|
||||
notice_help(service, u, current->helpmsg_oper, p1, p2, p3,
|
||||
p4);
|
||||
has_had_help = 1;
|
||||
} else if (current->oper_help) {
|
||||
cont = current->oper_help(u);
|
||||
has_had_help = 1;
|
||||
}
|
||||
|
||||
if (is_services_root(u) && (current->helpmsg_root >= 0 || current->root_help)) {
|
||||
if (current->helpmsg_root >= 0)
|
||||
help_message = current->helpmsg_root;
|
||||
else if (current->root_help)
|
||||
help_message_ptr = current->root_help;
|
||||
} else if (is_services_admin(u) && (current->helpmsg_admin >= 0 || current->admin_help)) {
|
||||
if (current->helpmsg_admin >= 0)
|
||||
help_message = current->helpmsg_admin;
|
||||
else if (current->admin_help)
|
||||
help_message_ptr = current->admin_help;
|
||||
} else if (is_services_oper(u) && (current->helpmsg_oper >= 0 || current->oper_help)) {
|
||||
if (current->helpmsg_oper >= 0)
|
||||
help_message = current->helpmsg_oper;
|
||||
else if (current->oper_help)
|
||||
help_message_ptr = current->oper_help;
|
||||
} else {
|
||||
if (current->helpmsg_reg >= 0) {
|
||||
notice_help(service, u, current->helpmsg_reg, p1, p2, p3,
|
||||
p4);
|
||||
has_had_help = 1;
|
||||
} else if (current->regular_help) {
|
||||
cont = current->regular_help(u);
|
||||
has_had_help = 1;
|
||||
}
|
||||
/* Shouldn't we check for the user to be identified? */
|
||||
if (current->helpmsg_reg >= 0)
|
||||
help_message = current->helpmsg_reg;
|
||||
else if (current->regular_help)
|
||||
help_message_ptr = current->regular_help;
|
||||
}
|
||||
|
||||
if (help_message) {
|
||||
notice_help(service, u, help_message, p1, p2, p3, p4);
|
||||
has_had_help = 1;
|
||||
} else if (help_message_ptr) {
|
||||
cont = help_message_ptr(u);
|
||||
has_had_help = 1;
|
||||
}
|
||||
|
||||
}
|
||||
if (has_had_help == 0) {
|
||||
notice_lang(service, u, NO_HELP_AVAILABLE, cmd);
|
||||
|
||||
+1
-2
@@ -1,6 +1,6 @@
|
||||
/* Compatibility routines.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -8,7 +8,6 @@
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
+82
-41
@@ -1,6 +1,6 @@
|
||||
/* Configuration file handling.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -8,7 +8,6 @@
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -128,6 +127,7 @@ char *SendFrom;
|
||||
int RestrictMail;
|
||||
int MailDelay;
|
||||
int DontQuoteAddresses;
|
||||
int ForkForMail;
|
||||
|
||||
static int NSDefNone;
|
||||
char *NSGuestNickPrefix;
|
||||
@@ -220,7 +220,7 @@ char *GlobalOnCycleMessage;
|
||||
char *GlobalOnCycleUP;
|
||||
char *ServicesRoot;
|
||||
char **ServicesRoots;
|
||||
int RootNumber;
|
||||
int RootNumber = 0;
|
||||
int SuperAdmin;
|
||||
int LogBot;
|
||||
int LogMaxUsers;
|
||||
@@ -272,8 +272,8 @@ int OSOpersOnly;
|
||||
char *Modules;
|
||||
char *ModulesDelayed;
|
||||
char **ModulesAutoload;
|
||||
int ModulesNumber;
|
||||
int ModulesDelayedNumber;
|
||||
int ModulesNumber = 0;
|
||||
int ModulesDelayedNumber = 0;
|
||||
char **ModulesDelayedAutoload;
|
||||
|
||||
/**
|
||||
@@ -281,31 +281,31 @@ char **ModulesDelayedAutoload;
|
||||
**/
|
||||
char *HostCoreModules;
|
||||
char **HostServCoreModules;
|
||||
int HostServCoreNumber;
|
||||
int HostServCoreNumber = 0;
|
||||
|
||||
char *MemoCoreModules;
|
||||
char **MemoServCoreModules;
|
||||
int MemoServCoreNumber;
|
||||
int MemoServCoreNumber = 0;
|
||||
|
||||
char *HelpCoreModules;
|
||||
char **HelpServCoreModules;
|
||||
int HelpServCoreNumber;
|
||||
int HelpServCoreNumber = 0;
|
||||
|
||||
char *BotCoreModules;
|
||||
char **BotServCoreModules;
|
||||
int BotServCoreNumber;
|
||||
int BotServCoreNumber = 0;
|
||||
|
||||
char *OperCoreModules;
|
||||
char **OperServCoreModules;
|
||||
int OperServCoreNumber;
|
||||
int OperServCoreNumber = 0;
|
||||
|
||||
char *NickCoreModules;
|
||||
char **NickServCoreModules;
|
||||
int NickServCoreNumber;
|
||||
int NickServCoreNumber = 0;
|
||||
|
||||
char *ChanCoreModules;
|
||||
char **ChanServCoreModules;
|
||||
int ChanServCoreNumber;
|
||||
int ChanServCoreNumber = 0;
|
||||
|
||||
|
||||
char *MysqlHost;
|
||||
@@ -346,7 +346,7 @@ int UnRestrictSAdmin;
|
||||
|
||||
char *UlineServers;
|
||||
char **Ulines;
|
||||
int NumUlines;
|
||||
int NumUlines = 0;
|
||||
|
||||
int UseTS6;
|
||||
|
||||
@@ -430,6 +430,7 @@ Directive directives[] = {
|
||||
{"DisableRaw", {{PARAM_SET, PARAM_RELOAD, &DisableRaw}}},
|
||||
{"DontQuoteAddresses",
|
||||
{{PARAM_SET, PARAM_RELOAD, &DontQuoteAddresses}}},
|
||||
{"ForkForMail", {{PARAM_SET, PARAM_RELOAD, &ForkForMail}}},
|
||||
{"DumpCore", {{PARAM_SET, 0, &DumpCore}}},
|
||||
{"DefConLevel", {{PARAM_INT, PARAM_RELOAD, &DefConLevel}}},
|
||||
{"DefCon1", {{PARAM_INT, PARAM_RELOAD, &DefCon1}}},
|
||||
@@ -707,10 +708,16 @@ int parse_directive(Directive * d, char *dir, int ac, char *av[MAXPARAMS],
|
||||
/* Should we remove PARAM_DEPRECATED because it's
|
||||
* useless right now? -GD */
|
||||
if (d->params[i].type == PARAM_DEPRECATED) {
|
||||
void (*func) (void);
|
||||
union func_union
|
||||
{
|
||||
void *ptr;
|
||||
void (*func)(void);
|
||||
} u;
|
||||
|
||||
error(linenum, "Deprecated directive `%s' used", d->name);
|
||||
func = (void (*)(void)) (d->params[i].ptr);
|
||||
func(); /* For clarity */
|
||||
|
||||
u.ptr = d->params[i].ptr;
|
||||
u.func();
|
||||
continue;
|
||||
}
|
||||
if (optind >= ac) {
|
||||
@@ -722,7 +729,7 @@ int parse_directive(Directive * d, char *dir, int ac, char *av[MAXPARAMS],
|
||||
}
|
||||
switch (d->params[i].type) {
|
||||
case PARAM_INT:
|
||||
val = strtol(av[optind++], &s, 0);
|
||||
val = strtol(av[optind++], &s, 10);
|
||||
if (*s) {
|
||||
error(linenum,
|
||||
"%s: Expected an integer for parameter %d",
|
||||
@@ -733,7 +740,7 @@ int parse_directive(Directive * d, char *dir, int ac, char *av[MAXPARAMS],
|
||||
*(int *) d->params[i].ptr = val;
|
||||
break;
|
||||
case PARAM_POSINT:
|
||||
val = strtol(av[optind++], &s, 0);
|
||||
val = strtol(av[optind++], &s, 10);
|
||||
if (*s || val <= 0) {
|
||||
error(linenum,
|
||||
"%s: Expected a positive integer for parameter %d",
|
||||
@@ -750,7 +757,7 @@ int parse_directive(Directive * d, char *dir, int ac, char *av[MAXPARAMS],
|
||||
*(int *) d->params[i].ptr = val;
|
||||
break;
|
||||
case PARAM_PORT:
|
||||
val = strtol(av[optind++], &s, 0);
|
||||
val = strtol(av[optind++], &s, 10);
|
||||
if (*s) {
|
||||
error(linenum,
|
||||
"%s: Expected a port number for parameter %d",
|
||||
@@ -767,8 +774,11 @@ int parse_directive(Directive * d, char *dir, int ac, char *av[MAXPARAMS],
|
||||
*(int *) d->params[i].ptr = val;
|
||||
break;
|
||||
case PARAM_STRING:
|
||||
/* if (reload && *(char **)d->params[i].ptr)
|
||||
free(*(char **)d->params[i].ptr); */
|
||||
/*
|
||||
* Anope_Free(*(char **)d->params[i].ptr);
|
||||
* Historically dumb modules pass uninitialized values here so
|
||||
* we can't free this
|
||||
*/
|
||||
*(char **) d->params[i].ptr = sstrdup(av[optind++]);
|
||||
if (!d->params[i].ptr) {
|
||||
error(linenum, "%s: Out of memory", d->name);
|
||||
@@ -925,7 +935,9 @@ int read_config(int reload)
|
||||
perror("Can't open " SERVICES_CONF);
|
||||
else
|
||||
alog("Can't open %s", SERVICES_CONF);
|
||||
#ifndef NOT_MAIN
|
||||
}
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
while (fgets(buf, sizeof(buf), config)) {
|
||||
@@ -1238,14 +1250,15 @@ int read_config(int reload)
|
||||
/* Services Root building */
|
||||
|
||||
if (ServicesRoot && !reload) { /* Check to prevent segmentation fault if it's missing */
|
||||
RootNumber = 0;
|
||||
while( RootNumber )
|
||||
free(ServicesRoots[--RootNumber]);
|
||||
|
||||
s = strtok(ServicesRoot, " ");
|
||||
do {
|
||||
if (s) {
|
||||
RootNumber++;
|
||||
ServicesRoots =
|
||||
realloc(ServicesRoots, sizeof(char *) * RootNumber);
|
||||
srealloc(ServicesRoots, sizeof(char *) * RootNumber);
|
||||
ServicesRoots[RootNumber - 1] = sstrdup(s);
|
||||
}
|
||||
} while ((s = strtok(NULL, " ")));
|
||||
@@ -1259,43 +1272,70 @@ int read_config(int reload)
|
||||
/* Ulines */
|
||||
|
||||
if (UlineServers) {
|
||||
NumUlines = 0;
|
||||
while( NumUlines )
|
||||
free(Ulines[--NumUlines]);
|
||||
|
||||
s = strtok(UlineServers, " ");
|
||||
do {
|
||||
if (s) {
|
||||
NumUlines++;
|
||||
Ulines = realloc(Ulines, sizeof(char *) * NumUlines);
|
||||
Ulines = srealloc(Ulines, sizeof(char *) * NumUlines);
|
||||
Ulines[NumUlines - 1] = sstrdup(s);
|
||||
}
|
||||
} while ((s = strtok(NULL, " ")));
|
||||
}
|
||||
|
||||
/* Host Setters building... :P */
|
||||
while( HostNumber )
|
||||
free(HostSetters[--HostNumber]);
|
||||
Anope_Free(HostSetters);
|
||||
HostSetters = buildStringList(HostSetter, &HostNumber);
|
||||
|
||||
/* Modules Autoload building... :P */
|
||||
while( ModulesNumber )
|
||||
free(ModulesAutoload[--ModulesNumber]);
|
||||
Anope_Free(ModulesAutoload);
|
||||
ModulesAutoload = buildStringList(Modules, &ModulesNumber);
|
||||
ModulesDelayedAutoload =
|
||||
buildStringList(ModulesDelayed, &ModulesDelayedNumber);
|
||||
HostServCoreModules =
|
||||
buildStringList(HostCoreModules, &HostServCoreNumber);
|
||||
MemoServCoreModules =
|
||||
buildStringList(MemoCoreModules, &MemoServCoreNumber);
|
||||
HelpServCoreModules =
|
||||
buildStringList(HelpCoreModules, &HelpServCoreNumber);
|
||||
|
||||
BotServCoreModules =
|
||||
buildStringList(BotCoreModules, &BotServCoreNumber);
|
||||
while( ModulesDelayedNumber )
|
||||
free(ModulesDelayedAutoload[--ModulesDelayedNumber]);
|
||||
Anope_Free(ModulesDelayedAutoload);
|
||||
ModulesDelayedAutoload = buildStringList(ModulesDelayed, &ModulesDelayedNumber);
|
||||
|
||||
OperServCoreModules =
|
||||
buildStringList(OperCoreModules, &OperServCoreNumber);
|
||||
while( HostServCoreNumber )
|
||||
free(HostServCoreModules[--HostServCoreNumber]);
|
||||
Anope_Free(HostServCoreModules);
|
||||
HostServCoreModules = buildStringList(HostCoreModules, &HostServCoreNumber);
|
||||
|
||||
ChanServCoreModules =
|
||||
buildStringList(ChanCoreModules, &ChanServCoreNumber);
|
||||
while( MemoServCoreNumber )
|
||||
free(MemoServCoreModules[--MemoServCoreNumber]);
|
||||
Anope_Free(MemoServCoreModules);
|
||||
MemoServCoreModules = buildStringList(MemoCoreModules, &MemoServCoreNumber);
|
||||
|
||||
NickServCoreModules =
|
||||
buildStringList(NickCoreModules, &NickServCoreNumber);
|
||||
while( HelpServCoreNumber )
|
||||
free(HelpServCoreModules[--HelpServCoreNumber]);
|
||||
Anope_Free(HelpServCoreModules);
|
||||
HelpServCoreModules = buildStringList(HelpCoreModules, &HelpServCoreNumber);
|
||||
|
||||
while( BotServCoreNumber )
|
||||
free(BotServCoreModules[--BotServCoreNumber]);
|
||||
Anope_Free(BotServCoreModules);
|
||||
BotServCoreModules = buildStringList(BotCoreModules, &BotServCoreNumber);
|
||||
|
||||
while( OperServCoreNumber )
|
||||
free(OperServCoreModules[--OperServCoreNumber]);
|
||||
Anope_Free(OperServCoreModules);
|
||||
OperServCoreModules = buildStringList(OperCoreModules, &OperServCoreNumber);
|
||||
|
||||
while( ChanServCoreNumber )
|
||||
free(ChanServCoreModules[--ChanServCoreNumber]);
|
||||
Anope_Free(ChanServCoreModules);
|
||||
ChanServCoreModules = buildStringList(ChanCoreModules, &ChanServCoreNumber);
|
||||
|
||||
while( NickServCoreNumber )
|
||||
free(NickServCoreModules[--NickServCoreNumber]);
|
||||
Anope_Free(NickServCoreModules);
|
||||
NickServCoreModules = buildStringList(NickCoreModules, &NickServCoreNumber);
|
||||
|
||||
|
||||
if (LimitSessions) {
|
||||
@@ -1404,6 +1444,7 @@ int read_config(int reload)
|
||||
CHECK(UseMail);
|
||||
CHECK(NSForceEmail);
|
||||
} else {
|
||||
Anope_Free(PreNickDBName);
|
||||
PreNickDBName = NULL;
|
||||
NSRExpire = 0;
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ include ../../Makefile.inc.win32
|
||||
SRCS=bs_act.c bs_assign.c bs_badwords.c bs_bot.c bs_botlist.c bs_fantasy.c bs_fantasy_kick.c bs_fantasy_kickban.c bs_fantasy_owner.c bs_fantasy_seen.c bs_help.c bs_info.c bs_kick.c bs_say.c bs_set.c bs_unassign.c cs_access.c cs_akick.c cs_ban.c cs_clear.c cs_drop.c cs_forbid.c cs_getkey.c cs_getpass.c cs_help.c cs_identify.c cs_info.c cs_invite.c cs_kick.c cs_list.c cs_logout.c cs_modes.c cs_register.c cs_sendpass.c cs_set.c cs_status.c cs_suspend.c cs_topic.c cs_xop.c enc_none.c enc_md5.c enc_old.c enc_sha1.c he_help.c hs_del.c hs_delall.c hs_group.c hs_help.c hs_list.c hs_off.c hs_on.c hs_set.c hs_setall.c ms_cancel.c ms_check.c ms_del.c ms_help.c ms_info.c ms_list.c ms_read.c ms_rsend.c ms_send.c ms_sendall.c ms_set.c ms_staff.c ns_access.c ns_alist.c ns_drop.c ns_forbid.c ns_getemail.c ns_getpass.c ns_ghost.c ns_group.c ns_help.c ns_identify.c ns_info.c ns_list.c ns_logout.c ns_recover.c ns_register.c ns_release.c ns_sendpass.c ns_set.c ns_saset.c ns_status.c ns_suspend.c ns_update.c os_admin.c os_akill.c os_chankill.c os_chanlist.c os_clearmodes.c os_defcon.c os_global.c os_help.c os_ignore.c os_jupe.c os_kick.c os_logonnews.c os_mode.c os_modinfo.c os_modlist.c os_modload.c os_modunload.c os_noop.c os_oline.c os_oper.c os_opernews.c os_quit.c os_randomnews.c os_raw.c os_reload.c os_restart.c os_session.c os_set.c os_sgline.c os_shutdown.c os_sqline.c os_staff.c os_stats.c os_svsnick.c os_szline.c os_umode.c os_update.c os_userlist.c
|
||||
OBJECTS= $(SRCS:.c=.dll)
|
||||
CFLAGS=/LD /MD /D MODULE_COMPILE $(CFLAGS) /I"../../include"
|
||||
LFLAGS=/link ../anope.lib wsock32.lib $(LIBS) $(LFLAGS) $(MYSQL_LIB_PATH) /export:AnopeInit /export:AnopeFini /VERSION:$(VERSION)
|
||||
LFLAGS=/link ../anope.lib wsock32.lib $(LIBS) $(LFLAGS) $(MYSQL_LIB_PATH) /export:AnopeInit /export:AnopeFini /VERSION:1.8
|
||||
|
||||
all: $(OBJECTS)
|
||||
|
||||
|
||||
+6
-7
@@ -1,6 +1,6 @@
|
||||
/* BotServ core functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -8,15 +8,14 @@
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
/*************************************************************************/
|
||||
|
||||
#include "module.h"
|
||||
|
||||
int do_act(User * u);
|
||||
void myBotServHelp(User * u);
|
||||
static int do_act(User * u);
|
||||
static void myBotServHelp(User * u);
|
||||
|
||||
/**
|
||||
* Create the command, and tell anope about it.
|
||||
@@ -29,7 +28,7 @@ int AnopeInit(int argc, char **argv)
|
||||
Command *c;
|
||||
|
||||
moduleAddAuthor("Anope");
|
||||
moduleAddVersion("$Id$");
|
||||
moduleAddVersion(VERSION_STRING);
|
||||
moduleSetType(CORE);
|
||||
c = createCommand("ACT", do_act, NULL, BOT_HELP_ACT, -1, -1, -1, -1);
|
||||
moduleAddCommand(BOTSERV, c, MOD_UNIQUE);
|
||||
@@ -51,7 +50,7 @@ void AnopeFini(void)
|
||||
* Add the help response to Anopes /bs help output.
|
||||
* @param u The user who is requesting help
|
||||
**/
|
||||
void myBotServHelp(User * u)
|
||||
static void myBotServHelp(User * u)
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_HELP_CMD_ACT);
|
||||
}
|
||||
@@ -61,7 +60,7 @@ void myBotServHelp(User * u)
|
||||
* @param u The user who issued the command
|
||||
* @param MOD_CONT to continue processing other modules, MOD_STOP to stop processing.
|
||||
**/
|
||||
int do_act(User * u)
|
||||
static int do_act(User * u)
|
||||
{
|
||||
ChannelInfo *ci;
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* BotServ core functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -8,15 +8,14 @@
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
/*************************************************************************/
|
||||
|
||||
#include "module.h"
|
||||
|
||||
int do_assign(User * u);
|
||||
void myBotServHelp(User * u);
|
||||
static int do_assign(User * u);
|
||||
static void myBotServHelp(User * u);
|
||||
|
||||
/**
|
||||
* Create the command, and tell anope about it.
|
||||
@@ -29,7 +28,7 @@ int AnopeInit(int argc, char **argv)
|
||||
Command *c;
|
||||
|
||||
moduleAddAuthor("Anope");
|
||||
moduleAddVersion("$Id$");
|
||||
moduleAddVersion(VERSION_STRING);
|
||||
moduleSetType(CORE);
|
||||
c = createCommand("ASSIGN", do_assign, NULL, BOT_HELP_ASSIGN, -1, -1,
|
||||
-1, -1);
|
||||
@@ -53,7 +52,7 @@ void AnopeFini(void)
|
||||
* Add the help response to Anopes /bs help output.
|
||||
* @param u The user who is requesting help
|
||||
**/
|
||||
void myBotServHelp(User * u)
|
||||
static void myBotServHelp(User * u)
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_HELP_CMD_ASSIGN);
|
||||
}
|
||||
@@ -63,7 +62,7 @@ void myBotServHelp(User * u)
|
||||
* @param u The user who issued the command
|
||||
* @param MOD_CONT to continue processing other modules, MOD_STOP to stop processing.
|
||||
**/
|
||||
int do_assign(User * u)
|
||||
static int do_assign(User * u)
|
||||
{
|
||||
char *chan = strtok(NULL, " ");
|
||||
char *nick = strtok(NULL, " ");
|
||||
@@ -95,6 +94,8 @@ int do_assign(User * u)
|
||||
if (ci->c && ci->c->usercount >= BSMinUsers) {
|
||||
bot_join(ci);
|
||||
}
|
||||
alog("%s: %s!%s@%s assigned bot %s to %s", s_BotServ, u->nick, u->username,
|
||||
u->host, bi->nick, ci->name);
|
||||
notice_lang(s_BotServ, u, BOT_ASSIGN_ASSIGNED, bi->nick, ci->name);
|
||||
send_event(EVENT_BOT_ASSIGN, 2, ci->name, bi->nick);
|
||||
}
|
||||
|
||||
+23
-14
@@ -1,6 +1,6 @@
|
||||
/* BotServ core functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -8,18 +8,17 @@
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
/*************************************************************************/
|
||||
|
||||
#include "module.h"
|
||||
|
||||
int do_badwords(User * u);
|
||||
void myBotServHelp(User * u);
|
||||
int badwords_del_callback(User * u, int num, va_list args);
|
||||
int badwords_list(User * u, int index, ChannelInfo * ci, int *sent_header);
|
||||
int badwords_list_callback(User * u, int num, va_list args);
|
||||
static int do_badwords(User * u);
|
||||
static void myBotServHelp(User * u);
|
||||
static int badwords_del_callback(User * u, int num, va_list args);
|
||||
static int badwords_list(User * u, int index, ChannelInfo * ci, int *sent_header);
|
||||
static int badwords_list_callback(User * u, int num, va_list args);
|
||||
|
||||
/**
|
||||
* Create the command, and tell anope about it.
|
||||
@@ -32,7 +31,7 @@ int AnopeInit(int argc, char **argv)
|
||||
Command *c;
|
||||
|
||||
moduleAddAuthor("Anope");
|
||||
moduleAddVersion("$Id$");
|
||||
moduleAddVersion(VERSION_STRING);
|
||||
moduleSetType(CORE);
|
||||
|
||||
c = createCommand("BADWORDS", do_badwords, NULL, BOT_HELP_BADWORDS, -1,
|
||||
@@ -58,7 +57,7 @@ void AnopeFini(void)
|
||||
* Add the help response to Anopes /bs help output.
|
||||
* @param u The user who is requesting help
|
||||
**/
|
||||
void myBotServHelp(User * u)
|
||||
static void myBotServHelp(User * u)
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_HELP_CMD_BADWORDS);
|
||||
}
|
||||
@@ -68,7 +67,7 @@ void myBotServHelp(User * u)
|
||||
* @param u The user who issued the command
|
||||
* @param MOD_CONT to continue processing other modules, MOD_STOP to stop processing.
|
||||
**/
|
||||
int do_badwords(User * u)
|
||||
static int do_badwords(User * u)
|
||||
{
|
||||
char *chan = strtok(NULL, " ");
|
||||
char *cmd = strtok(NULL, " ");
|
||||
@@ -143,7 +142,9 @@ int do_badwords(User * u)
|
||||
bw->in_use = 1;
|
||||
bw->word = sstrdup(word);
|
||||
bw->type = type;
|
||||
|
||||
|
||||
alog("%s: %s!%s@%s added badword \"%s\" to %s",
|
||||
s_BotServ, u->nick, u->username, u->host, bw->word, ci->name);
|
||||
notice_lang(s_BotServ, u, BOT_BADWORDS_ADDED, bw->word, ci->name);
|
||||
|
||||
} else if (stricmp(cmd, "DEL") == 0) {
|
||||
@@ -169,9 +170,13 @@ int do_badwords(User * u)
|
||||
ci->name);
|
||||
}
|
||||
} else if (deleted == 1) {
|
||||
alog("%s: %s!%s@%s deleted 1 badword from %s",
|
||||
s_BotServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_BotServ, u, BOT_BADWORDS_DELETED_ONE,
|
||||
ci->name);
|
||||
} else {
|
||||
alog("%s: %s!%s@%s deleted %d badwords from %s",
|
||||
s_BotServ, u->nick, u->username, u->host, deleted, ci->name);
|
||||
notice_lang(s_BotServ, u, BOT_BADWORDS_DELETED_SEVERAL,
|
||||
deleted, ci->name);
|
||||
}
|
||||
@@ -187,6 +192,8 @@ int do_badwords(User * u)
|
||||
return MOD_CONT;
|
||||
}
|
||||
bw = &ci->badwords[i];
|
||||
alog("%s: %s!%s@%s deleted badword \"%s\" from %s",
|
||||
s_BotServ, u->nick, u->username, u->host, bw->word, ci->name);
|
||||
notice_lang(s_BotServ, u, BOT_BADWORDS_DELETED, bw->word,
|
||||
ci->name);
|
||||
if (bw->word)
|
||||
@@ -266,6 +273,8 @@ int do_badwords(User * u)
|
||||
ci->badwords = NULL;
|
||||
ci->bwcount = 0;
|
||||
|
||||
alog("%s: %s!%s@%s cleared badwords on %s",
|
||||
s_BotServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_BotServ, u, BOT_BADWORDS_CLEAR);
|
||||
|
||||
} else {
|
||||
@@ -274,7 +283,7 @@ int do_badwords(User * u)
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
int badwords_del_callback(User * u, int num, va_list args)
|
||||
static int badwords_del_callback(User * u, int num, va_list args)
|
||||
{
|
||||
BadWord *bw;
|
||||
ChannelInfo *ci = va_arg(args, ChannelInfo *);
|
||||
@@ -294,7 +303,7 @@ int badwords_del_callback(User * u, int num, va_list args)
|
||||
return 1;
|
||||
}
|
||||
|
||||
int badwords_list(User * u, int index, ChannelInfo * ci, int *sent_header)
|
||||
static int badwords_list(User * u, int index, ChannelInfo * ci, int *sent_header)
|
||||
{
|
||||
BadWord *bw = &ci->badwords[index];
|
||||
|
||||
@@ -316,7 +325,7 @@ int badwords_list(User * u, int index, ChannelInfo * ci, int *sent_header)
|
||||
return 1;
|
||||
}
|
||||
|
||||
int badwords_list_callback(User * u, int num, va_list args)
|
||||
static int badwords_list_callback(User * u, int num, va_list args)
|
||||
{
|
||||
ChannelInfo *ci = va_arg(args, ChannelInfo *);
|
||||
int *sent_header = va_arg(args, int *);
|
||||
|
||||
+26
-15
@@ -1,6 +1,6 @@
|
||||
/* BotServ core functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -8,17 +8,16 @@
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
/*************************************************************************/
|
||||
|
||||
#include "module.h"
|
||||
|
||||
int do_bot(User * u);
|
||||
int delbot(BotInfo * bi);
|
||||
void myBotServHelp(User * u);
|
||||
void change_bot_nick(BotInfo * bi, char *newnick);
|
||||
static int do_bot(User * u);
|
||||
static int delbot(BotInfo * bi);
|
||||
static void myBotServHelp(User * u);
|
||||
static void change_bot_nick(BotInfo * bi, char *newnick);
|
||||
|
||||
/**
|
||||
* Create the command, and tell anope about it.
|
||||
@@ -31,7 +30,7 @@ int AnopeInit(int argc, char **argv)
|
||||
Command *c;
|
||||
|
||||
moduleAddAuthor("Anope");
|
||||
moduleAddVersion("$Id$");
|
||||
moduleAddVersion(VERSION_STRING);
|
||||
moduleSetType(CORE);
|
||||
|
||||
c = createCommand("BOT", do_bot, is_services_admin, -1, -1, -1,
|
||||
@@ -57,7 +56,7 @@ void AnopeFini(void)
|
||||
* Add the help response to Anopes /bs help output.
|
||||
* @param u The user who is requesting help
|
||||
**/
|
||||
void myBotServHelp(User * u)
|
||||
static void myBotServHelp(User * u)
|
||||
{
|
||||
if (is_services_admin(u)) {
|
||||
notice_lang(s_BotServ, u, BOT_HELP_CMD_BOT);
|
||||
@@ -69,7 +68,7 @@ void myBotServHelp(User * u)
|
||||
* @param u The user who issued the command
|
||||
* @param MOD_CONT to continue processing other modules, MOD_STOP to stop processing.
|
||||
**/
|
||||
int do_bot(User * u)
|
||||
static int do_bot(User * u)
|
||||
{
|
||||
BotInfo *bi;
|
||||
char *cmd = strtok(NULL, " ");
|
||||
@@ -124,7 +123,7 @@ int do_bot(User * u)
|
||||
}
|
||||
for (ch = user; *ch && (ch - user) < USERMAX; ch++) {
|
||||
if (!isalnum(*ch)) {
|
||||
notice_lang(s_BotServ, u, BOT_LONG_IDENT, USERMAX - 1);
|
||||
notice_lang(s_BotServ, u, BOT_BAD_IDENT, USERMAX - 1);
|
||||
return MOD_CONT;
|
||||
}
|
||||
}
|
||||
@@ -169,6 +168,9 @@ int do_bot(User * u)
|
||||
anope_cmd_bot_nick(bi->nick, bi->user, bi->host, bi->real,
|
||||
ircd->botserv_bot_mode);
|
||||
|
||||
alog("%s: %s!%s@%s added bot %s!%s@%s (%s) to the bot list",
|
||||
s_BotServ, u->nick, u->username, u->host, bi->nick, bi->user,
|
||||
bi->host, bi->real);
|
||||
notice_lang(s_BotServ, u, BOT_BOT_ADDED, bi->nick, bi->user,
|
||||
bi->host, bi->real);
|
||||
|
||||
@@ -244,7 +246,7 @@ int do_bot(User * u)
|
||||
if (user) {
|
||||
for (ch = user; *ch && (ch - user) < USERMAX; ch++) {
|
||||
if (!isalnum(*ch)) {
|
||||
notice_lang(s_BotServ, u, BOT_LONG_IDENT, USERMAX - 1);
|
||||
notice_lang(s_BotServ, u, BOT_BAD_IDENT, USERMAX - 1);
|
||||
return MOD_CONT;
|
||||
}
|
||||
}
|
||||
@@ -276,6 +278,12 @@ int do_bot(User * u)
|
||||
EnforceQlinedNick(nick, s_BotServ);
|
||||
}
|
||||
|
||||
/* Send the QUIT before changing the bot internally, so proto mods (InspIRCD 1.2)
|
||||
* can get the uid if needed (or other things )and send that - Adam
|
||||
*/
|
||||
if (user)
|
||||
anope_cmd_quit(bi->nick, "Quit: Be right back");
|
||||
|
||||
if (strcmp(nick, bi->nick))
|
||||
change_bot_nick(bi, nick);
|
||||
|
||||
@@ -299,13 +307,14 @@ int do_bot(User * u)
|
||||
anope_cmd_chg_nick(oldnick, bi->nick);
|
||||
anope_cmd_sqline(bi->nick, "Reserved for services");
|
||||
} else {
|
||||
anope_cmd_quit(oldnick, "Quit: Be right back");
|
||||
|
||||
anope_cmd_bot_nick(bi->nick, bi->user, bi->host, bi->real,
|
||||
ircd->botserv_bot_mode);
|
||||
bot_rejoin_all(bi);
|
||||
}
|
||||
|
||||
alog("%s: %s!%s@%s changed bot %s to: %s!%s@%s (%s)",
|
||||
s_BotServ, u->nick, u->username, u->host, oldnick, bi->nick, bi->user,
|
||||
bi->host, bi->real);
|
||||
notice_lang(s_BotServ, u, BOT_BOT_CHANGED, oldnick, bi->nick,
|
||||
bi->user, bi->host, bi->real);
|
||||
|
||||
@@ -330,6 +339,8 @@ int do_bot(User * u)
|
||||
}
|
||||
delbot(bi);
|
||||
|
||||
alog("%s: %s!%s@%s deleted bot %s from the bot list",
|
||||
s_BotServ, u->nick, u->username, u->host, nick);
|
||||
notice_lang(s_BotServ, u, BOT_BOT_DELETED, nick);
|
||||
}
|
||||
} else
|
||||
@@ -338,7 +349,7 @@ int do_bot(User * u)
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
int delbot(BotInfo * bi)
|
||||
static int delbot(BotInfo * bi)
|
||||
{
|
||||
cs_remove_bot(bi);
|
||||
|
||||
@@ -361,7 +372,7 @@ int delbot(BotInfo * bi)
|
||||
return 1;
|
||||
}
|
||||
|
||||
void change_bot_nick(BotInfo * bi, char *newnick)
|
||||
static void change_bot_nick(BotInfo * bi, char *newnick)
|
||||
{
|
||||
if (bi->next)
|
||||
bi->next->prev = bi->prev;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* BotServ core functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -8,15 +8,14 @@
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
/*************************************************************************/
|
||||
|
||||
#include "module.h"
|
||||
|
||||
int do_botlist(User * u);
|
||||
void myBotServHelp(User * u);
|
||||
static int do_botlist(User * u);
|
||||
static void myBotServHelp(User * u);
|
||||
|
||||
/**
|
||||
* Create the botlist command, and tell anope about it.
|
||||
@@ -29,7 +28,7 @@ int AnopeInit(int argc, char **argv)
|
||||
Command *c;
|
||||
|
||||
moduleAddAuthor("Anope");
|
||||
moduleAddVersion("$Id$");
|
||||
moduleAddVersion(VERSION_STRING);
|
||||
moduleSetType(CORE);
|
||||
c = createCommand("BOTLIST", do_botlist, NULL, BOT_HELP_BOTLIST, -1,
|
||||
-1, -1, -1);
|
||||
@@ -54,7 +53,7 @@ void AnopeFini(void)
|
||||
* Add the help response to Anopes /bs help output.
|
||||
* @param u The user who is requesting help
|
||||
**/
|
||||
void myBotServHelp(User * u)
|
||||
static void myBotServHelp(User * u)
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_HELP_CMD_BOTLIST);
|
||||
}
|
||||
@@ -64,7 +63,7 @@ void myBotServHelp(User * u)
|
||||
* @param u The user who issued the command
|
||||
* @param MOD_CONT to continue processing other modules, MOD_STOP to stop processing.
|
||||
**/
|
||||
int do_botlist(User * u)
|
||||
static int do_botlist(User * u)
|
||||
{
|
||||
int i, count = 0;
|
||||
BotInfo *bi;
|
||||
|
||||
+12
-13
@@ -1,6 +1,6 @@
|
||||
/* BotServ core fantasy functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -8,14 +8,13 @@
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
/*************************************************************************/
|
||||
|
||||
#include "module.h"
|
||||
|
||||
int do_fantasy(int argc, char **argv);
|
||||
static int do_fantasy(int argc, char **argv);
|
||||
|
||||
/**
|
||||
* Create the hook, and tell anope about it.
|
||||
@@ -28,7 +27,7 @@ int AnopeInit(int argc, char **argv)
|
||||
EvtHook *hook;
|
||||
|
||||
moduleAddAuthor("Anope");
|
||||
moduleAddVersion("$Id$");
|
||||
moduleAddVersion(VERSION_STRING);
|
||||
moduleSetType(CORE);
|
||||
hook = createEventHook(EVENT_BOT_FANTASY, do_fantasy);
|
||||
moduleAddEventHook(hook);
|
||||
@@ -50,7 +49,7 @@ void AnopeFini(void)
|
||||
* @param argv Argument list
|
||||
* @return MOD_CONT or MOD_STOP
|
||||
**/
|
||||
int do_fantasy(int argc, char **argv)
|
||||
static int do_fantasy(int argc, char **argv)
|
||||
{
|
||||
User *u;
|
||||
ChannelInfo *ci;
|
||||
@@ -62,14 +61,14 @@ int do_fantasy(int argc, char **argv)
|
||||
|
||||
do {
|
||||
if (stricmp(argv[0], util->bsname) == 0) {
|
||||
/* This could have been moved to its own module
|
||||
however it would require more coding to handle the pass holders
|
||||
similar to how PROTECT is done
|
||||
*/
|
||||
if (!ircd->halfop) {
|
||||
if (!stricmp(argv[0], "halfop") || !stricmp(argv[0], "dehalfop")) {
|
||||
return MOD_CONT;
|
||||
}
|
||||
/* This could have been moved to its own module
|
||||
however it would require more coding to handle the pass holders
|
||||
similar to how PROTECT is done
|
||||
*/
|
||||
if (!ircd->halfop) {
|
||||
if (!stricmp(argv[0], "halfop") || !stricmp(argv[0], "dehalfop")) {
|
||||
return MOD_CONT;
|
||||
}
|
||||
}
|
||||
u = finduser(argv[1]);
|
||||
ci = cs_findchan(argv[2]);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* BotServ core fantasy functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -8,14 +8,13 @@
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
/*************************************************************************/
|
||||
|
||||
#include "module.h"
|
||||
|
||||
int do_fantasy(int argc, char **argv);
|
||||
static int do_fantasy(int argc, char **argv);
|
||||
|
||||
/**
|
||||
* Create the hook, and tell anope about it.
|
||||
@@ -29,7 +28,7 @@ int AnopeInit(int argc, char **argv)
|
||||
|
||||
moduleAddAuthor("Anope");
|
||||
moduleAddVersion
|
||||
("$Id$");
|
||||
(VERSION_STRING);
|
||||
moduleSetType(CORE);
|
||||
|
||||
hook = createEventHook(EVENT_BOT_FANTASY, do_fantasy);
|
||||
@@ -52,7 +51,7 @@ void AnopeFini(void)
|
||||
* @param argv Argument list
|
||||
* @return MOD_CONT or MOD_STOP
|
||||
**/
|
||||
int do_fantasy(int argc, char **argv)
|
||||
static int do_fantasy(int argc, char **argv)
|
||||
{
|
||||
User *u, *u2;
|
||||
ChannelInfo *ci;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* BotServ core fantasy functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -8,14 +8,13 @@
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
/*************************************************************************/
|
||||
|
||||
#include "module.h"
|
||||
|
||||
int do_fantasy(int argc, char **argv);
|
||||
static int do_fantasy(int argc, char **argv);
|
||||
|
||||
/**
|
||||
* Create the hook, and tell anope about it.
|
||||
@@ -29,7 +28,7 @@ int AnopeInit(int argc, char **argv)
|
||||
|
||||
moduleAddAuthor("Anope");
|
||||
moduleAddVersion
|
||||
("$Id$");
|
||||
(VERSION_STRING);
|
||||
moduleSetType(CORE);
|
||||
|
||||
hook = createEventHook(EVENT_BOT_FANTASY, do_fantasy);
|
||||
@@ -52,7 +51,7 @@ void AnopeFini(void)
|
||||
* @param argv Argument list
|
||||
* @return MOD_CONT or MOD_STOP
|
||||
**/
|
||||
int do_fantasy(int argc, char **argv)
|
||||
static int do_fantasy(int argc, char **argv)
|
||||
{
|
||||
User *u, *u2;
|
||||
ChannelInfo *ci;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* BotServ core fantasy functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -8,14 +8,13 @@
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
/*************************************************************************/
|
||||
|
||||
#include "module.h"
|
||||
|
||||
int do_fantasy(int argc, char **argv);
|
||||
static int do_fantasy(int argc, char **argv);
|
||||
|
||||
/**
|
||||
* Create the hook, and tell anope about it.
|
||||
@@ -29,15 +28,9 @@ int AnopeInit(int argc, char **argv)
|
||||
|
||||
moduleAddAuthor("Anope");
|
||||
moduleAddVersion
|
||||
("$Id$");
|
||||
(VERSION_STRING);
|
||||
moduleSetType(CORE);
|
||||
|
||||
/* No need to load of we don't support owner */
|
||||
if (!ircd->owner) {
|
||||
alog("Your ircd doesn't support the owner channelmode; bs_fantasy_owner won't be loaded");
|
||||
return MOD_STOP;
|
||||
}
|
||||
|
||||
hook = createEventHook(EVENT_BOT_FANTASY, do_fantasy);
|
||||
moduleAddEventHook(hook);
|
||||
|
||||
@@ -58,12 +51,12 @@ void AnopeFini(void)
|
||||
* @param argv Argument list
|
||||
* @return MOD_CONT or MOD_STOP
|
||||
**/
|
||||
int do_fantasy(int argc, char **argv)
|
||||
static int do_fantasy(int argc, char **argv)
|
||||
{
|
||||
User *u;
|
||||
ChannelInfo *ci;
|
||||
|
||||
if (argc < 3)
|
||||
if (argc < 3 || !ircd->owner)
|
||||
return MOD_CONT;
|
||||
|
||||
if (stricmp(argv[0], "deowner") == 0) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* BotServ core fantasy functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -8,14 +8,13 @@
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
/*************************************************************************/
|
||||
|
||||
#include "module.h"
|
||||
|
||||
int do_fantasy(int argc, char **argv);
|
||||
static int do_fantasy(int argc, char **argv);
|
||||
|
||||
/**
|
||||
* Create the hook, and tell anope about it.
|
||||
@@ -29,7 +28,7 @@ int AnopeInit(int argc, char **argv)
|
||||
|
||||
moduleAddAuthor("Anope");
|
||||
moduleAddVersion
|
||||
("$Id$");
|
||||
(VERSION_STRING);
|
||||
moduleSetType(CORE);
|
||||
|
||||
hook = createEventHook(EVENT_BOT_FANTASY, do_fantasy);
|
||||
@@ -52,7 +51,7 @@ void AnopeFini(void)
|
||||
* @param argv Argument list
|
||||
* @return MOD_CONT or MOD_STOP
|
||||
**/
|
||||
int do_fantasy(int argc, char **argv)
|
||||
static int do_fantasy(int argc, char **argv)
|
||||
{
|
||||
User *u;
|
||||
ChannelInfo *ci;
|
||||
|
||||
+4
-5
@@ -1,6 +1,6 @@
|
||||
/* BotServ core functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -8,14 +8,13 @@
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
/*************************************************************************/
|
||||
|
||||
#include "module.h"
|
||||
|
||||
int do_help(User * u);
|
||||
static int do_help(User * u);
|
||||
|
||||
/**
|
||||
* Create the help command, and tell anope about it.
|
||||
@@ -28,7 +27,7 @@ int AnopeInit(int argc, char **argv)
|
||||
Command *c;
|
||||
|
||||
moduleAddAuthor("Anope");
|
||||
moduleAddVersion("$Id$");
|
||||
moduleAddVersion(VERSION_STRING);
|
||||
moduleSetType(CORE);
|
||||
c = createCommand("HELP", do_help, NULL, -1, -1, -1, -1, -1);
|
||||
moduleAddCommand(BOTSERV, c, MOD_UNIQUE);
|
||||
@@ -52,7 +51,7 @@ void AnopeFini(void)
|
||||
* @param u The user who issued the command
|
||||
* @param MOD_CONT to continue processing other modules, MOD_STOP to stop processing.
|
||||
**/
|
||||
int do_help(User * u)
|
||||
static int do_help(User * u)
|
||||
{
|
||||
char *cmd = strtok(NULL, "");
|
||||
|
||||
|
||||
+8
-9
@@ -1,6 +1,6 @@
|
||||
/* BotServ core functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -8,16 +8,15 @@
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
/*************************************************************************/
|
||||
|
||||
#include "module.h"
|
||||
|
||||
int do_info(User * u);
|
||||
void send_bot_channels(User * u, BotInfo * bi);
|
||||
void myBotServHelp(User * u);
|
||||
static int do_info(User * u);
|
||||
static void send_bot_channels(User * u, BotInfo * bi);
|
||||
static void myBotServHelp(User * u);
|
||||
|
||||
/**
|
||||
* Create the info command, and tell anope about it.
|
||||
@@ -30,7 +29,7 @@ int AnopeInit(int argc, char **argv)
|
||||
Command *c;
|
||||
|
||||
moduleAddAuthor("Anope");
|
||||
moduleAddVersion("$Id$");
|
||||
moduleAddVersion(VERSION_STRING);
|
||||
moduleSetType(CORE);
|
||||
c = createCommand("INFO", do_info, NULL, BOT_HELP_INFO, -1, -1, -1,
|
||||
-1);
|
||||
@@ -55,7 +54,7 @@ void AnopeFini(void)
|
||||
* Add the help response to Anopes /bs help output.
|
||||
* @param u The user who is requesting help
|
||||
**/
|
||||
void myBotServHelp(User * u)
|
||||
static void myBotServHelp(User * u)
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_HELP_CMD_INFO);
|
||||
}
|
||||
@@ -65,7 +64,7 @@ void myBotServHelp(User * u)
|
||||
* @param u The user who issued the command
|
||||
* @param MOD_CONT to continue processing other modules, MOD_STOP to stop processing.
|
||||
**/
|
||||
int do_info(User * u)
|
||||
static int do_info(User * u)
|
||||
{
|
||||
BotInfo *bi;
|
||||
ChannelInfo *ci;
|
||||
@@ -252,7 +251,7 @@ int do_info(User * u)
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
void send_bot_channels(User * u, BotInfo * bi)
|
||||
static void send_bot_channels(User * u, BotInfo * bi)
|
||||
{
|
||||
int i;
|
||||
ChannelInfo *ci;
|
||||
|
||||
+86
-23
@@ -1,6 +1,6 @@
|
||||
/* BotServ core functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -8,16 +8,15 @@
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
/*************************************************************************/
|
||||
|
||||
#include "module.h"
|
||||
|
||||
int do_kickcmd(User * u);
|
||||
static int do_kickcmd(User * u);
|
||||
|
||||
void myBotServHelp(User * u);
|
||||
static void myBotServHelp(User * u);
|
||||
|
||||
/**
|
||||
* Create the command, and tell anope about it.
|
||||
@@ -30,7 +29,7 @@ int AnopeInit(int argc, char **argv)
|
||||
Command *c;
|
||||
|
||||
moduleAddAuthor("Anope");
|
||||
moduleAddVersion("$Id$");
|
||||
moduleAddVersion(VERSION_STRING);
|
||||
moduleSetType(CORE);
|
||||
c = createCommand("KICK", do_kickcmd, NULL, BOT_HELP_KICK, -1, -1, -1,
|
||||
-1);
|
||||
@@ -80,7 +79,7 @@ void AnopeFini(void)
|
||||
* Add the help response to Anopes /bs help output.
|
||||
* @param u The user who is requesting help
|
||||
**/
|
||||
void myBotServHelp(User * u)
|
||||
static void myBotServHelp(User * u)
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_HELP_CMD_KICK);
|
||||
}
|
||||
@@ -90,7 +89,7 @@ void myBotServHelp(User * u)
|
||||
* @param u The user who issued the command
|
||||
* @param MOD_CONT to continue processing other modules, MOD_STOP to stop processing.
|
||||
**/
|
||||
int do_kickcmd(User * u)
|
||||
static int do_kickcmd(User * u)
|
||||
{
|
||||
char *chan = strtok(NULL, " ");
|
||||
char *option = strtok(NULL, " ");
|
||||
@@ -117,6 +116,7 @@ int do_kickcmd(User * u)
|
||||
if (!stricmp(option, "BADWORDS")) {
|
||||
if (!stricmp(value, "ON")) {
|
||||
if (ttb) {
|
||||
errno = 0;
|
||||
ci->ttb[TTB_BADWORDS] =
|
||||
strtol(ttb, (char **) NULL, 10);
|
||||
/* Only error if errno returns ERANGE or EINVAL or we are less then 0 - TSL */
|
||||
@@ -135,18 +135,26 @@ int do_kickcmd(User * u)
|
||||
ci->ttb[TTB_BADWORDS] = 0;
|
||||
}
|
||||
ci->botflags |= BS_KICK_BADWORDS;
|
||||
if (ci->ttb[TTB_BADWORDS])
|
||||
if (ci->ttb[TTB_BADWORDS]) {
|
||||
alog("%s: %s!%s@%s enabled kicking for badwords on %s with time to ban of %d",
|
||||
s_BotServ, u->nick, u->username, u->host, ci->name, ci->ttb[TTB_BADWORDS]);
|
||||
notice_lang(s_BotServ, u, BOT_KICK_BADWORDS_ON_BAN,
|
||||
ci->ttb[TTB_BADWORDS]);
|
||||
else
|
||||
} else {
|
||||
alog("%s: %s!%s@%s enabled kicking for badwords on %s",
|
||||
s_BotServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_BotServ, u, BOT_KICK_BADWORDS_ON);
|
||||
}
|
||||
} else {
|
||||
ci->botflags &= ~BS_KICK_BADWORDS;
|
||||
alog("%s: %s!%s@%s disabled kicking for badwords on %s",
|
||||
s_BotServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_BotServ, u, BOT_KICK_BADWORDS_OFF);
|
||||
}
|
||||
} else if (!stricmp(option, "BOLDS")) {
|
||||
if (!stricmp(value, "ON")) {
|
||||
if (ttb) {
|
||||
errno = 0;
|
||||
ci->ttb[TTB_BOLDS] = strtol(ttb, (char **) NULL, 10);
|
||||
if (errno == ERANGE || errno == EINVAL
|
||||
|| ci->ttb[TTB_BOLDS] < 0) {
|
||||
@@ -160,13 +168,20 @@ int do_kickcmd(User * u)
|
||||
} else
|
||||
ci->ttb[TTB_BOLDS] = 0;
|
||||
ci->botflags |= BS_KICK_BOLDS;
|
||||
if (ci->ttb[TTB_BOLDS])
|
||||
if (ci->ttb[TTB_BOLDS]) {
|
||||
alog("%s: %s!%s@%s enabled kicking for bolds on %s with time to ban of %d",
|
||||
s_BotServ, u->nick, u->username, u->host, ci->name, ci->ttb[TTB_BOLDS]);
|
||||
notice_lang(s_BotServ, u, BOT_KICK_BOLDS_ON_BAN,
|
||||
ci->ttb[TTB_BOLDS]);
|
||||
else
|
||||
} else {
|
||||
alog("%s: %s!%s@%s enabled kicking for bolds on %s",
|
||||
s_BotServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_BotServ, u, BOT_KICK_BOLDS_ON);
|
||||
}
|
||||
} else {
|
||||
ci->botflags &= ~BS_KICK_BOLDS;
|
||||
alog("%s: %s!%s@%s disabled kicking for bolds on %s",
|
||||
s_BotServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_BotServ, u, BOT_KICK_BOLDS_OFF);
|
||||
}
|
||||
} else if (!stricmp(option, "CAPS")) {
|
||||
@@ -175,6 +190,7 @@ int do_kickcmd(User * u)
|
||||
char *percent = strtok(NULL, " ");
|
||||
|
||||
if (ttb) {
|
||||
errno = 0;
|
||||
ci->ttb[TTB_CAPS] = strtol(ttb, (char **) NULL, 10);
|
||||
if (errno == ERANGE || errno == EINVAL
|
||||
|| ci->ttb[TTB_CAPS] < 0) {
|
||||
@@ -203,20 +219,28 @@ int do_kickcmd(User * u)
|
||||
ci->capspercent = 25;
|
||||
|
||||
ci->botflags |= BS_KICK_CAPS;
|
||||
if (ci->ttb[TTB_CAPS])
|
||||
if (ci->ttb[TTB_CAPS]) {
|
||||
alog("%s: %s!%s@%s enabled kicking for caps on %s with time to ban of %d",
|
||||
s_BotServ, u->nick, u->username, u->host, ci->name, ci->ttb[TTB_CAPS]);
|
||||
notice_lang(s_BotServ, u, BOT_KICK_CAPS_ON_BAN,
|
||||
ci->capsmin, ci->capspercent,
|
||||
ci->ttb[TTB_CAPS]);
|
||||
else
|
||||
} else {
|
||||
alog("%s: %s!%s@%s enabled kicking for caps on %s",
|
||||
s_BotServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_BotServ, u, BOT_KICK_CAPS_ON,
|
||||
ci->capsmin, ci->capspercent);
|
||||
}
|
||||
} else {
|
||||
alog("%s: %s!%s@%s disabled kicking for caps on %s",
|
||||
s_BotServ, u->nick, u->username, u->host, ci->name);
|
||||
ci->botflags &= ~BS_KICK_CAPS;
|
||||
notice_lang(s_BotServ, u, BOT_KICK_CAPS_OFF);
|
||||
}
|
||||
} else if (!stricmp(option, "COLORS")) {
|
||||
if (!stricmp(value, "ON")) {
|
||||
if (ttb) {
|
||||
errno = 0;
|
||||
ci->ttb[TTB_COLORS] = strtol(ttb, (char **) NULL, 10);
|
||||
if (errno == ERANGE || errno == EINVAL
|
||||
|| ci->ttb[TTB_COLORS] < 0) {
|
||||
@@ -230,12 +254,19 @@ int do_kickcmd(User * u)
|
||||
} else
|
||||
ci->ttb[TTB_COLORS] = 0;
|
||||
ci->botflags |= BS_KICK_COLORS;
|
||||
if (ci->ttb[TTB_COLORS])
|
||||
if (ci->ttb[TTB_COLORS]) {
|
||||
alog("%s: %s!%s@%s enabled kicking for colors on %s with time to ban of %d",
|
||||
s_BotServ, u->nick, u->username, u->host, ci->name, ci->ttb[TTB_COLORS]);
|
||||
notice_lang(s_BotServ, u, BOT_KICK_COLORS_ON_BAN,
|
||||
ci->ttb[TTB_COLORS]);
|
||||
else
|
||||
} else {
|
||||
alog("%s: %s!%s@%s enabled kicking for colors on %s",
|
||||
s_BotServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_BotServ, u, BOT_KICK_COLORS_ON);
|
||||
}
|
||||
} else {
|
||||
alog("%s: %s!%s@%s disabled kicking for colors on %s",
|
||||
s_BotServ, u->nick, u->username, u->host, ci->name);
|
||||
ci->botflags &= ~BS_KICK_COLORS;
|
||||
notice_lang(s_BotServ, u, BOT_KICK_COLORS_OFF);
|
||||
}
|
||||
@@ -245,6 +276,7 @@ int do_kickcmd(User * u)
|
||||
char *secs = strtok(NULL, " ");
|
||||
|
||||
if (ttb) {
|
||||
errno = 0;
|
||||
ci->ttb[TTB_FLOOD] = strtol(ttb, (char **) NULL, 10);
|
||||
if (errno == ERANGE || errno == EINVAL
|
||||
|| ci->ttb[TTB_FLOOD] < 0) {
|
||||
@@ -273,15 +305,22 @@ int do_kickcmd(User * u)
|
||||
ci->floodsecs = 10;
|
||||
|
||||
ci->botflags |= BS_KICK_FLOOD;
|
||||
if (ci->ttb[TTB_FLOOD])
|
||||
if (ci->ttb[TTB_FLOOD]) {
|
||||
alog("%s: %s!%s@%s enabled kicking for flood on %s with time to ban of %d",
|
||||
s_BotServ, u->nick, u->username, u->host, ci->name, ci->ttb[TTB_FLOOD]);
|
||||
notice_lang(s_BotServ, u, BOT_KICK_FLOOD_ON_BAN,
|
||||
ci->floodlines, ci->floodsecs,
|
||||
ci->ttb[TTB_FLOOD]);
|
||||
else
|
||||
} else {
|
||||
alog("%s: %s!%s@%s enabled kicking for flood on %s",
|
||||
s_BotServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_BotServ, u, BOT_KICK_FLOOD_ON,
|
||||
ci->floodlines, ci->floodsecs);
|
||||
}
|
||||
} else {
|
||||
ci->botflags &= ~BS_KICK_FLOOD;
|
||||
alog("%s: %s!%s@%s disabled kicking for flood on %s",
|
||||
s_BotServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_BotServ, u, BOT_KICK_FLOOD_OFF);
|
||||
}
|
||||
} else if (!stricmp(option, "REPEAT")) {
|
||||
@@ -289,6 +328,7 @@ int do_kickcmd(User * u)
|
||||
char *times = strtok(NULL, " ");
|
||||
|
||||
if (ttb) {
|
||||
errno = 0;
|
||||
ci->ttb[TTB_REPEAT] = strtol(ttb, (char **) NULL, 10);
|
||||
if (errno == ERANGE || errno == EINVAL
|
||||
|| ci->ttb[TTB_REPEAT] < 0) {
|
||||
@@ -310,19 +350,27 @@ int do_kickcmd(User * u)
|
||||
ci->repeattimes = 3;
|
||||
|
||||
ci->botflags |= BS_KICK_REPEAT;
|
||||
if (ci->ttb[TTB_REPEAT])
|
||||
if (ci->ttb[TTB_REPEAT]) {
|
||||
alog("%s: %s!%s@%s enabled kicking for repeating on %s with time to ban of %d",
|
||||
s_BotServ, u->nick, u->username, u->host, ci->name, ci->ttb[TTB_REPEAT]);
|
||||
notice_lang(s_BotServ, u, BOT_KICK_REPEAT_ON_BAN,
|
||||
ci->repeattimes, ci->ttb[TTB_REPEAT]);
|
||||
else
|
||||
} else {
|
||||
alog("%s: %s!%s@%s enabled kicking for repeating on %s",
|
||||
s_BotServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_BotServ, u, BOT_KICK_REPEAT_ON,
|
||||
ci->repeattimes);
|
||||
}
|
||||
} else {
|
||||
ci->botflags &= ~BS_KICK_REPEAT;
|
||||
alog("%s: %s!%s@%s disabled kicking for repeating on %s",
|
||||
s_BotServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_BotServ, u, BOT_KICK_REPEAT_OFF);
|
||||
}
|
||||
} else if (!stricmp(option, "REVERSES")) {
|
||||
if (!stricmp(value, "ON")) {
|
||||
if (ttb) {
|
||||
errno = 0;
|
||||
ci->ttb[TTB_REVERSES] =
|
||||
strtol(ttb, (char **) NULL, 10);
|
||||
if (errno == ERANGE || errno == EINVAL
|
||||
@@ -337,18 +385,26 @@ int do_kickcmd(User * u)
|
||||
} else
|
||||
ci->ttb[TTB_REVERSES] = 0;
|
||||
ci->botflags |= BS_KICK_REVERSES;
|
||||
if (ci->ttb[TTB_REVERSES])
|
||||
if (ci->ttb[TTB_REVERSES]) {
|
||||
alog("%s: %s!%s@%s enabled kicking for reversess on %s with time to ban of %d",
|
||||
s_BotServ, u->nick, u->username, u->host, ci->name, ci->ttb[TTB_REVERSES]);
|
||||
notice_lang(s_BotServ, u, BOT_KICK_REVERSES_ON_BAN,
|
||||
ci->ttb[TTB_REVERSES]);
|
||||
else
|
||||
} else {
|
||||
alog("%s: %s!%s@%s enabled kicking for reverses on %s",
|
||||
s_BotServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_BotServ, u, BOT_KICK_REVERSES_ON);
|
||||
}
|
||||
} else {
|
||||
ci->botflags &= ~BS_KICK_REVERSES;
|
||||
alog("%s: %s!%s@%s disabled kicking for reverses on %s",
|
||||
s_BotServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_BotServ, u, BOT_KICK_REVERSES_OFF);
|
||||
}
|
||||
} else if (!stricmp(option, "UNDERLINES")) {
|
||||
if (!stricmp(value, "ON")) {
|
||||
if (ttb) {
|
||||
errno = 0;
|
||||
ci->ttb[TTB_UNDERLINES] =
|
||||
strtol(ttb, (char **) NULL, 10);
|
||||
if (errno == ERANGE || errno == EINVAL
|
||||
@@ -363,13 +419,20 @@ int do_kickcmd(User * u)
|
||||
} else
|
||||
ci->ttb[TTB_UNDERLINES] = 0;
|
||||
ci->botflags |= BS_KICK_UNDERLINES;
|
||||
if (ci->ttb[TTB_UNDERLINES])
|
||||
if (ci->ttb[TTB_UNDERLINES]) {
|
||||
alog("%s: %s!%s@%s enabled kicking for underlines on %s with time to ban of %d",
|
||||
s_BotServ, u->nick, u->username, u->host, ci->name, ci->ttb[TTB_UNDERLINES]);
|
||||
notice_lang(s_BotServ, u, BOT_KICK_UNDERLINES_ON_BAN,
|
||||
ci->ttb[TTB_UNDERLINES]);
|
||||
else
|
||||
} else {
|
||||
alog("%s: %s!%s@%s enabled kicking for underlines on %s",
|
||||
s_BotServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_BotServ, u, BOT_KICK_UNDERLINES_ON);
|
||||
}
|
||||
} else {
|
||||
ci->botflags &= ~BS_KICK_UNDERLINES;
|
||||
alog("%s: %s!%s@%s disabled kicking for underlines on %s",
|
||||
s_BotServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_BotServ, u, BOT_KICK_UNDERLINES_OFF);
|
||||
}
|
||||
} else
|
||||
|
||||
+6
-7
@@ -1,6 +1,6 @@
|
||||
/* BotServ core functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -8,15 +8,14 @@
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
/*************************************************************************/
|
||||
|
||||
#include "module.h"
|
||||
|
||||
int do_say(User * u);
|
||||
void myBotServHelp(User * u);
|
||||
static int do_say(User * u);
|
||||
static void myBotServHelp(User * u);
|
||||
|
||||
/**
|
||||
* Create the command, and tell anope about it.
|
||||
@@ -29,7 +28,7 @@ int AnopeInit(int argc, char **argv)
|
||||
Command *c;
|
||||
|
||||
moduleAddAuthor("Anope");
|
||||
moduleAddVersion("$Id$");
|
||||
moduleAddVersion(VERSION_STRING);
|
||||
moduleSetType(CORE);
|
||||
c = createCommand("SAY", do_say, NULL, BOT_HELP_SAY, -1, -1, -1, -1);
|
||||
moduleAddCommand(BOTSERV, c, MOD_UNIQUE);
|
||||
@@ -53,7 +52,7 @@ void AnopeFini(void)
|
||||
* Add the help response to Anopes /bs help output.
|
||||
* @param u The user who is requesting help
|
||||
**/
|
||||
void myBotServHelp(User * u)
|
||||
static void myBotServHelp(User * u)
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_HELP_CMD_SAY);
|
||||
}
|
||||
@@ -63,7 +62,7 @@ void myBotServHelp(User * u)
|
||||
* @param u The user who issued the command
|
||||
* @param MOD_CONT to continue processing other modules, MOD_STOP to stop processing.
|
||||
**/
|
||||
int do_say(User * u)
|
||||
static int do_say(User * u)
|
||||
{
|
||||
ChannelInfo *ci;
|
||||
|
||||
|
||||
+34
-7
@@ -1,6 +1,6 @@
|
||||
/* BotServ core functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -8,15 +8,14 @@
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
/*************************************************************************/
|
||||
|
||||
#include "module.h"
|
||||
|
||||
int do_set(User * u);
|
||||
void myBotServHelp(User * u);
|
||||
static int do_set(User * u);
|
||||
static void myBotServHelp(User * u);
|
||||
|
||||
/**
|
||||
* Create the command, and tell anope about it.
|
||||
@@ -29,7 +28,7 @@ int AnopeInit(int argc, char **argv)
|
||||
Command *c;
|
||||
|
||||
moduleAddAuthor("Anope");
|
||||
moduleAddVersion("$Id$");
|
||||
moduleAddVersion(VERSION_STRING);
|
||||
moduleSetType(CORE);
|
||||
|
||||
c = createCommand("SET", do_set, NULL, BOT_HELP_SET, -1, -1,
|
||||
@@ -80,7 +79,7 @@ void AnopeFini(void)
|
||||
* Add the help response to Anopes /bs help output.
|
||||
* @param u The user who is requesting help
|
||||
**/
|
||||
void myBotServHelp(User * u)
|
||||
static void myBotServHelp(User * u)
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_HELP_CMD_SET);
|
||||
}
|
||||
@@ -90,7 +89,7 @@ void myBotServHelp(User * u)
|
||||
* @param u The user who issued the command
|
||||
* @param MOD_CONT to continue processing other modules, MOD_STOP to stop processing.
|
||||
**/
|
||||
int do_set(User * u)
|
||||
static int do_set(User * u)
|
||||
{
|
||||
char *chan = strtok(NULL, " ");
|
||||
char *option = strtok(NULL, " ");
|
||||
@@ -109,9 +108,13 @@ int do_set(User * u)
|
||||
if ((bi = findbot(chan))) {
|
||||
if (!stricmp(value, "ON")) {
|
||||
bi->flags |= BI_PRIVATE;
|
||||
alog("%s: %s!%s@%s set PRIVATE on bot %s",
|
||||
s_BotServ, u->nick, u->username, u->host, bi->nick);
|
||||
notice_lang(s_BotServ, u, BOT_SET_PRIVATE_ON, bi->nick);
|
||||
} else if (!stricmp(value, "OFF")) {
|
||||
bi->flags &= ~BI_PRIVATE;
|
||||
alog("%s: %s!%s@%s unset PRIVATE on bot %s",
|
||||
s_BotServ, u->nick, u->username, u->host, bi->nick);
|
||||
notice_lang(s_BotServ, u, BOT_SET_PRIVATE_OFF, bi->nick);
|
||||
} else {
|
||||
syntax_error(s_BotServ, u, "SET PRIVATE",
|
||||
@@ -131,10 +134,14 @@ int do_set(User * u)
|
||||
if (!stricmp(option, "DONTKICKOPS")) {
|
||||
if (!stricmp(value, "ON")) {
|
||||
ci->botflags |= BS_DONTKICKOPS;
|
||||
alog("%s: %s!%s@%s set DONTKICKOPS on %s",
|
||||
s_BotServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_BotServ, u, BOT_SET_DONTKICKOPS_ON,
|
||||
ci->name);
|
||||
} else if (!stricmp(value, "OFF")) {
|
||||
ci->botflags &= ~BS_DONTKICKOPS;
|
||||
alog("%s: %s!%s@%s unset DONTKICKOPS on %s",
|
||||
s_BotServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_BotServ, u, BOT_SET_DONTKICKOPS_OFF,
|
||||
ci->name);
|
||||
} else {
|
||||
@@ -144,10 +151,14 @@ int do_set(User * u)
|
||||
} else if (!stricmp(option, "DONTKICKVOICES")) {
|
||||
if (!stricmp(value, "ON")) {
|
||||
ci->botflags |= BS_DONTKICKVOICES;
|
||||
alog("%s: %s!%s@%s set DONTKICKVOICES on %s",
|
||||
s_BotServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_BotServ, u, BOT_SET_DONTKICKVOICES_ON,
|
||||
ci->name);
|
||||
} else if (!stricmp(value, "OFF")) {
|
||||
ci->botflags &= ~BS_DONTKICKVOICES;
|
||||
alog("%s: %s!%s@%s unset DONTKICKVOICES on %s",
|
||||
s_BotServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_BotServ, u, BOT_SET_DONTKICKVOICES_OFF,
|
||||
ci->name);
|
||||
} else {
|
||||
@@ -157,9 +168,13 @@ int do_set(User * u)
|
||||
} else if (!stricmp(option, "FANTASY")) {
|
||||
if (!stricmp(value, "ON")) {
|
||||
ci->botflags |= BS_FANTASY;
|
||||
alog("%s: %s!%s@%s set FANTASY on %s",
|
||||
s_BotServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_BotServ, u, BOT_SET_FANTASY_ON, ci->name);
|
||||
} else if (!stricmp(value, "OFF")) {
|
||||
ci->botflags &= ~BS_FANTASY;
|
||||
alog("%s: %s!%s@%s unset FANTASY on %s",
|
||||
s_BotServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_BotServ, u, BOT_SET_FANTASY_OFF, ci->name);
|
||||
} else {
|
||||
syntax_error(s_BotServ, u, "SET FANTASY",
|
||||
@@ -168,9 +183,13 @@ int do_set(User * u)
|
||||
} else if (!stricmp(option, "GREET")) {
|
||||
if (!stricmp(value, "ON")) {
|
||||
ci->botflags |= BS_GREET;
|
||||
alog("%s: %s!%s@%s set GREET on %s",
|
||||
s_BotServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_BotServ, u, BOT_SET_GREET_ON, ci->name);
|
||||
} else if (!stricmp(value, "OFF")) {
|
||||
ci->botflags &= ~BS_GREET;
|
||||
alog("%s: %s!%s@%s unset GREET on %s",
|
||||
s_BotServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_BotServ, u, BOT_SET_GREET_OFF, ci->name);
|
||||
} else {
|
||||
syntax_error(s_BotServ, u, "SET GREET",
|
||||
@@ -181,9 +200,13 @@ int do_set(User * u)
|
||||
ci->botflags |= BS_NOBOT;
|
||||
if (ci->bi)
|
||||
unassign(u, ci);
|
||||
alog("%s: %s!%s@%s set NOBOT on %s",
|
||||
s_BotServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_BotServ, u, BOT_SET_NOBOT_ON, ci->name);
|
||||
} else if (!stricmp(value, "OFF")) {
|
||||
ci->botflags &= ~BS_NOBOT;
|
||||
alog("%s: %s!%s@%s unset NOBOT on %s",
|
||||
s_BotServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_BotServ, u, BOT_SET_NOBOT_OFF, ci->name);
|
||||
} else {
|
||||
syntax_error(s_BotServ, u, "SET NOBOT",
|
||||
@@ -192,9 +215,13 @@ int do_set(User * u)
|
||||
} else if (!stricmp(option, "SYMBIOSIS")) {
|
||||
if (!stricmp(value, "ON")) {
|
||||
ci->botflags |= BS_SYMBIOSIS;
|
||||
alog("%s: %s!%s@%s set SYMBIOSIS on %s",
|
||||
s_BotServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_BotServ, u, BOT_SET_SYMBIOSIS_ON, ci->name);
|
||||
} else if (!stricmp(value, "OFF")) {
|
||||
ci->botflags &= ~BS_SYMBIOSIS;
|
||||
alog("%s: %s!%s@%s unset SYMBIOSIS on %s",
|
||||
s_BotServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_BotServ, u, BOT_SET_SYMBIOSIS_OFF, ci->name);
|
||||
} else {
|
||||
syntax_error(s_BotServ, u, "SET SYMBIOSIS",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* BotServ core functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -8,15 +8,14 @@
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
/*************************************************************************/
|
||||
|
||||
#include "module.h"
|
||||
|
||||
int do_unassign(User * u);
|
||||
void myBotServHelp(User * u);
|
||||
static int do_unassign(User * u);
|
||||
static void myBotServHelp(User * u);
|
||||
|
||||
/**
|
||||
* Create the unassign command, and tell anope about it.
|
||||
@@ -29,7 +28,7 @@ int AnopeInit(int argc, char **argv)
|
||||
Command *c;
|
||||
|
||||
moduleAddAuthor("Anope");
|
||||
moduleAddVersion("$Id$");
|
||||
moduleAddVersion(VERSION_STRING);
|
||||
moduleSetType(CORE);
|
||||
c = createCommand("UNASSIGN", do_unassign, NULL, BOT_HELP_UNASSIGN, -1,
|
||||
-1, -1, -1);
|
||||
@@ -54,7 +53,7 @@ void AnopeFini(void)
|
||||
* Add the help response to Anopes /bs help output.
|
||||
* @param u The user who is requesting help
|
||||
**/
|
||||
void myBotServHelp(User * u)
|
||||
static void myBotServHelp(User * u)
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_HELP_CMD_UNASSIGN);
|
||||
}
|
||||
@@ -64,7 +63,7 @@ void myBotServHelp(User * u)
|
||||
* @param u The user who issued the command
|
||||
* @param MOD_CONT to continue processing other modules, MOD_STOP to stop processing.
|
||||
**/
|
||||
int do_unassign(User * u)
|
||||
static int do_unassign(User * u)
|
||||
{
|
||||
char *chan = strtok(NULL, " ");
|
||||
ChannelInfo *ci;
|
||||
@@ -82,6 +81,8 @@ int do_unassign(User * u)
|
||||
else if (!ci->bi)
|
||||
notice_help(s_BotServ, u, BOT_NOT_ASSIGNED);
|
||||
else {
|
||||
alog("%s: %s!%s@%s unassigned bot %s from %s", s_BotServ, u->nick, u->username,
|
||||
u->host, ci->bi->nick, ci->name);
|
||||
unassign(u, ci);
|
||||
notice_lang(s_BotServ, u, BOT_UNASSIGN_UNASSIGNED, ci->name);
|
||||
}
|
||||
|
||||
+19
-91
@@ -1,6 +1,6 @@
|
||||
/* ChanServ core functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -8,7 +8,6 @@
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
/*************************************************************************/
|
||||
@@ -16,10 +15,10 @@
|
||||
#include "module.h"
|
||||
|
||||
|
||||
int do_access(User * u);
|
||||
int do_levels(User * u);
|
||||
static int do_access(User * u);
|
||||
static int do_levels(User * u);
|
||||
|
||||
void myChanServHelp(User * u);
|
||||
static void myChanServHelp(User * u);
|
||||
|
||||
/**
|
||||
* Create the command, and tell anope about it.
|
||||
@@ -33,7 +32,7 @@ int AnopeInit(int argc, char **argv)
|
||||
|
||||
moduleAddAuthor("Anope");
|
||||
moduleAddVersion
|
||||
("$Id$");
|
||||
(VERSION_STRING);
|
||||
moduleSetType(CORE);
|
||||
|
||||
c = createCommand("ACCESS", do_access, NULL, CHAN_HELP_ACCESS, -1, -1,
|
||||
@@ -64,7 +63,7 @@ void AnopeFini(void)
|
||||
* Add the help response to anopes /cs help output.
|
||||
* @param u The user who is requesting help
|
||||
**/
|
||||
void myChanServHelp(User * u)
|
||||
static void myChanServHelp(User * u)
|
||||
{
|
||||
notice_lang(s_ChanServ, u, CHAN_HELP_CMD_ACCESS);
|
||||
notice_lang(s_ChanServ, u, CHAN_HELP_CMD_LEVELS);
|
||||
@@ -140,7 +139,7 @@ static int access_list_callback(User * u, int num, va_list args)
|
||||
* @param u The user who issued the command
|
||||
* @param MOD_CONT to continue processing other modules, MOD_STOP to stop processing.
|
||||
**/
|
||||
int do_access(User * u)
|
||||
static int do_access(User * u)
|
||||
{
|
||||
char *chan = strtok(NULL, " ");
|
||||
char *cmd = strtok(NULL, " ");
|
||||
@@ -155,21 +154,22 @@ int do_access(User * u)
|
||||
|
||||
int i;
|
||||
int level = 0, ulev;
|
||||
int is_clear = (cmd && stricmp(cmd, "CLEAR") == 0);
|
||||
int is_list = (cmd && stricmp(cmd, "LIST") == 0);
|
||||
int is_servadmin = is_services_admin(u);
|
||||
|
||||
/* If LIST, we don't *require* any parameters, but we can take any.
|
||||
* If DEL, we require a nick and no level.
|
||||
* Else (ADD), we require a level (which implies a nick). */
|
||||
if (!cmd || ((is_list || !stricmp(cmd, "CLEAR")) ? 0 :
|
||||
if (!cmd || ((is_list || is_clear) ? 0 :
|
||||
(stricmp(cmd, "DEL") == 0) ? (!nick || s) : !s)) {
|
||||
syntax_error(s_ChanServ, u, "ACCESS", CHAN_ACCESS_SYNTAX);
|
||||
} else if (!(ci = cs_findchan(chan))) {
|
||||
notice_lang(s_ChanServ, u, CHAN_X_NOT_REGISTERED, chan);
|
||||
} else if (ci->flags & CI_VERBOTEN) {
|
||||
notice_lang(s_ChanServ, u, CHAN_X_FORBIDDEN, chan);
|
||||
/* We still allow LIST in xOP mode, but not others */
|
||||
} else if ((ci->flags & CI_XOP) && !is_list) {
|
||||
/* We still allow LIST and CLEAR in xOP mode, but not others */
|
||||
} else if ((ci->flags & CI_XOP) && !is_list && !is_clear) {
|
||||
if (ircd->halfop)
|
||||
notice_lang(s_ChanServ, u, CHAN_ACCESS_XOP_HOP, s_ChanServ);
|
||||
else
|
||||
@@ -236,14 +236,6 @@ int do_access(User * u)
|
||||
}
|
||||
}
|
||||
|
||||
/* All entries should be in use so we no longer need
|
||||
* to go over the entire list..
|
||||
for (i = 0; i < ci->accesscount; i++) {
|
||||
if (!ci->access[i].in_use)
|
||||
break;
|
||||
}
|
||||
*/
|
||||
|
||||
if (i < CSAccessMax) {
|
||||
ci->accesscount++;
|
||||
ci->access =
|
||||
@@ -268,8 +260,9 @@ int do_access(User * u)
|
||||
notice_lang(s_ChanServ, u, CHAN_ACCESS_ADDED, nc->display,
|
||||
ci->name, access->level);
|
||||
} else if (stricmp(cmd, "DEL") == 0) {
|
||||
int deleted, a, b;
|
||||
if (readonly) {
|
||||
int deleted;
|
||||
|
||||
if (readonly) {
|
||||
notice_lang(s_ChanServ, u, CHAN_ACCESS_DISABLED);
|
||||
return MOD_CONT;
|
||||
}
|
||||
@@ -279,24 +272,8 @@ int do_access(User * u)
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
for (b = 0; b < ci->accesscount; b++) {
|
||||
if (ci->access[b].in_use) {
|
||||
for (a = 0; a < ci->accesscount; a++) {
|
||||
if (a > b)
|
||||
break;
|
||||
if (!ci->access[a].in_use) {
|
||||
ci->access[a].in_use = 1;
|
||||
ci->access[a].level = ci->access[b].level;
|
||||
ci->access[a].nc = ci->access[b].nc;
|
||||
ci->access[a].last_seen =
|
||||
ci->access[b].last_seen;
|
||||
ci->access[b].nc = NULL;
|
||||
ci->access[b].in_use = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/* Clean the access list to make sure every thing is in use */
|
||||
CleanAccess(ci);
|
||||
|
||||
/* Special case: is it a number/list? Only do search if it isn't. */
|
||||
if (isdigit(*nick) && strspn(nick, "1234567890,-") == strlen(nick)) {
|
||||
@@ -354,37 +331,7 @@ int do_access(User * u)
|
||||
}
|
||||
}
|
||||
|
||||
if (deleted) {
|
||||
/* Reordering - DrStein */
|
||||
for (b = 0; b < ci->accesscount; b++) {
|
||||
if (ci->access[b].in_use) {
|
||||
for (a = 0; a < ci->accesscount; a++) {
|
||||
if (a > b)
|
||||
break;
|
||||
if (!ci->access[a].in_use) {
|
||||
ci->access[a].in_use = 1;
|
||||
ci->access[a].level = ci->access[b].level;
|
||||
ci->access[a].nc = ci->access[b].nc;
|
||||
ci->access[a].last_seen =
|
||||
ci->access[b].last_seen;
|
||||
ci->access[b].nc = NULL;
|
||||
ci->access[b].in_use = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* After reordering only the entries at the end could still be empty.
|
||||
* We ll free the places no longer in use... */
|
||||
for (i = ci->accesscount - 1; i >= 0; i--) {
|
||||
if (ci->access[i].in_use == 1)
|
||||
break;
|
||||
|
||||
ci->accesscount--;
|
||||
}
|
||||
ci->access =
|
||||
srealloc(ci->access,sizeof(ChanAccess) * ci->accesscount);
|
||||
CleanAccess(ci);
|
||||
|
||||
/* We don't know the nick if someone used numbers, so we trigger the event without
|
||||
* nick param. We just do this once, even if someone enters a range. -Certus */
|
||||
@@ -392,34 +339,15 @@ int do_access(User * u)
|
||||
send_event(EVENT_ACCESS_DEL, 3, ci->name, u->nick, na->nick);
|
||||
else
|
||||
send_event(EVENT_ACCESS_DEL, 2, ci->name, u->nick);
|
||||
}
|
||||
} else if (stricmp(cmd, "LIST") == 0) {
|
||||
int sent_header = 0;
|
||||
int a, b;
|
||||
|
||||
if (ci->accesscount == 0) {
|
||||
notice_lang(s_ChanServ, u, CHAN_ACCESS_LIST_EMPTY, chan);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
for (b = 0; b < ci->accesscount; b++) {
|
||||
if (ci->access[b].in_use) {
|
||||
for (a = 0; a < ci->accesscount; a++) {
|
||||
if (a > b)
|
||||
break;
|
||||
if (!ci->access[a].in_use) {
|
||||
ci->access[a].in_use = 1;
|
||||
ci->access[a].level = ci->access[b].level;
|
||||
ci->access[a].nc = ci->access[b].nc;
|
||||
ci->access[a].last_seen =
|
||||
ci->access[b].last_seen;
|
||||
ci->access[b].nc = NULL;
|
||||
ci->access[b].in_use = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
CleanAccess(ci);
|
||||
|
||||
if (nick && strspn(nick, "1234567890,-") == strlen(nick)) {
|
||||
process_numlist(nick, NULL, access_list_callback, u, ci,
|
||||
@@ -467,7 +395,7 @@ int do_access(User * u)
|
||||
}
|
||||
|
||||
|
||||
int do_levels(User * u)
|
||||
static int do_levels(User * u)
|
||||
{
|
||||
char *chan = strtok(NULL, " ");
|
||||
char *cmd = strtok(NULL, " ");
|
||||
|
||||
+29
-26
@@ -1,6 +1,6 @@
|
||||
/* ChanServ core functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -8,7 +8,6 @@
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
/*************************************************************************/
|
||||
@@ -16,9 +15,9 @@
|
||||
#include "module.h"
|
||||
|
||||
|
||||
int do_akick(User * u);
|
||||
void myChanServHelp(User * u);
|
||||
int get_access_nc(NickCore *nc, ChannelInfo *ci);
|
||||
static int do_akick(User * u);
|
||||
static void myChanServHelp(User * u);
|
||||
static int get_access_nc(NickCore *nc, ChannelInfo *ci);
|
||||
|
||||
/**
|
||||
* Create the command, and tell anope about it.
|
||||
@@ -31,7 +30,7 @@ int AnopeInit(int argc, char **argv)
|
||||
Command *c;
|
||||
|
||||
moduleAddAuthor("Anope");
|
||||
moduleAddVersion("$Id$");
|
||||
moduleAddVersion(VERSION_STRING);
|
||||
moduleSetType(CORE);
|
||||
|
||||
c = createCommand("AKICK", do_akick, NULL, CHAN_HELP_AKICK, -1, -1, -1,
|
||||
@@ -57,7 +56,7 @@ void AnopeFini(void)
|
||||
* Add the help response to anopes /cs help output.
|
||||
* @param u The user who is requesting help
|
||||
**/
|
||||
void myChanServHelp(User * u)
|
||||
static void myChanServHelp(User * u)
|
||||
{
|
||||
notice_lang(s_ChanServ, u, CHAN_HELP_CMD_AKICK);
|
||||
}
|
||||
@@ -68,7 +67,7 @@ void myChanServHelp(User * u)
|
||||
* @param MOD_CONT to continue processing other modules, MOD_STOP to stop processing.
|
||||
**/
|
||||
/* `last' is set to the last index this routine was called with */
|
||||
int akick_del(User * u, AutoKick * akick)
|
||||
static int akick_del(User * u, AutoKick * akick)
|
||||
{
|
||||
if (!(akick->flags & AK_USED))
|
||||
return 0;
|
||||
@@ -91,7 +90,7 @@ int akick_del(User * u, AutoKick * akick)
|
||||
return 1;
|
||||
}
|
||||
|
||||
int akick_del_callback(User * u, int num, va_list args)
|
||||
static int akick_del_callback(User * u, int num, va_list args)
|
||||
{
|
||||
ChannelInfo *ci = va_arg(args, ChannelInfo *);
|
||||
int *last = va_arg(args, int *);
|
||||
@@ -105,7 +104,7 @@ int akick_del_callback(User * u, int num, va_list args)
|
||||
}
|
||||
|
||||
|
||||
int akick_list(User * u, int index, ChannelInfo * ci, int *sent_header)
|
||||
static int akick_list(User * u, int index, ChannelInfo * ci, int *sent_header)
|
||||
{
|
||||
AutoKick *akick = &ci->akick[index];
|
||||
|
||||
@@ -124,7 +123,7 @@ int akick_list(User * u, int index, ChannelInfo * ci, int *sent_header)
|
||||
return 1;
|
||||
}
|
||||
|
||||
int akick_list_callback(User * u, int num, va_list args)
|
||||
static int akick_list_callback(User * u, int num, va_list args)
|
||||
{
|
||||
ChannelInfo *ci = va_arg(args, ChannelInfo *);
|
||||
int *sent_header = va_arg(args, int *);
|
||||
@@ -133,7 +132,7 @@ int akick_list_callback(User * u, int num, va_list args)
|
||||
return akick_list(u, num - 1, ci, sent_header);
|
||||
}
|
||||
|
||||
int akick_view(User * u, int index, ChannelInfo * ci, int *sent_header)
|
||||
static int akick_view(User * u, int index, ChannelInfo * ci, int *sent_header)
|
||||
{
|
||||
AutoKick *akick = &ci->akick[index];
|
||||
char timebuf[64];
|
||||
@@ -168,7 +167,7 @@ int akick_view(User * u, int index, ChannelInfo * ci, int *sent_header)
|
||||
return 1;
|
||||
}
|
||||
|
||||
int akick_view_callback(User * u, int num, va_list args)
|
||||
static int akick_view_callback(User * u, int num, va_list args)
|
||||
{
|
||||
ChannelInfo *ci = va_arg(args, ChannelInfo *);
|
||||
int *sent_header = va_arg(args, int *);
|
||||
@@ -179,7 +178,7 @@ int akick_view_callback(User * u, int num, va_list args)
|
||||
|
||||
|
||||
|
||||
int do_akick(User * u)
|
||||
static int do_akick(User * u)
|
||||
{
|
||||
char *chan = strtok(NULL, " ");
|
||||
char *cmd = strtok(NULL, " ");
|
||||
@@ -357,6 +356,8 @@ int do_akick(User * u)
|
||||
cu = next;
|
||||
}
|
||||
}
|
||||
alog("%s: %s!%s@%s added akick for %s to %s",
|
||||
s_ChanServ, u->nick, u->username, u->host, mask, chan);
|
||||
notice_lang(s_ChanServ, u, CHAN_AKICK_ADDED, mask, chan);
|
||||
|
||||
if (count)
|
||||
@@ -367,8 +368,6 @@ int do_akick(User * u)
|
||||
free(mask);
|
||||
|
||||
} else if (stricmp(cmd, "STICK") == 0) {
|
||||
NickAlias *na;
|
||||
NickCore *nc;
|
||||
|
||||
if (readonly) {
|
||||
notice_lang(s_ChanServ, u, CHAN_AKICK_DISABLED);
|
||||
@@ -380,9 +379,6 @@ int do_akick(User * u)
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
na = findnick(mask);
|
||||
nc = (na ? na->nc : NULL);
|
||||
|
||||
for (akick = ci->akick, i = 0; i < ci->akickcount; akick++, i++) {
|
||||
if (!(akick->flags & AK_USED) || (akick->flags & AK_ISNICK))
|
||||
continue;
|
||||
@@ -397,15 +393,14 @@ int do_akick(User * u)
|
||||
}
|
||||
|
||||
akick->flags |= AK_STUCK;
|
||||
alog("%s: %s!%s@%s set STICK on akick %s on %s",
|
||||
s_ChanServ, u->nick, u->username, u->host, akick->u.mask, ci->name);
|
||||
notice_lang(s_ChanServ, u, CHAN_AKICK_STUCK, akick->u.mask,
|
||||
ci->name);
|
||||
|
||||
if (ci->c)
|
||||
stick_mask(ci, akick);
|
||||
} else if (stricmp(cmd, "UNSTICK") == 0) {
|
||||
NickAlias *na;
|
||||
NickCore *nc;
|
||||
|
||||
if (readonly) {
|
||||
notice_lang(s_ChanServ, u, CHAN_AKICK_DISABLED);
|
||||
return MOD_CONT;
|
||||
@@ -416,9 +411,6 @@ int do_akick(User * u)
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
na = findnick(mask);
|
||||
nc = (na ? na->nc : NULL);
|
||||
|
||||
for (akick = ci->akick, i = 0; i < ci->akickcount; akick++, i++) {
|
||||
if (!(akick->flags & AK_USED) || (akick->flags & AK_ISNICK))
|
||||
continue;
|
||||
@@ -433,6 +425,8 @@ int do_akick(User * u)
|
||||
}
|
||||
|
||||
akick->flags &= ~AK_STUCK;
|
||||
alog("%s: %s!%s@%s unset STICK on akick %s on %s",
|
||||
s_ChanServ, u->nick, u->username, u->host, akick->u.mask, ci->name);
|
||||
notice_lang(s_ChanServ, u, CHAN_AKICK_UNSTUCK, akick->u.mask,
|
||||
ci->name);
|
||||
|
||||
@@ -463,9 +457,14 @@ int do_akick(User * u)
|
||||
ci->name);
|
||||
}
|
||||
} else if (deleted == 1) {
|
||||
alog("%s: %s!%s@%s deleted 1 akick on %s",
|
||||
s_ChanServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_ChanServ, u, CHAN_AKICK_DELETED_ONE,
|
||||
ci->name);
|
||||
} else {
|
||||
alog("%s: %s!%s@%s deleted %d akicks on %s",
|
||||
s_ChanServ, u->nick, u->username, u->host, deleted,
|
||||
ci->name);
|
||||
notice_lang(s_ChanServ, u, CHAN_AKICK_DELETED_SEVERAL,
|
||||
deleted, ci->name);
|
||||
}
|
||||
@@ -487,6 +486,8 @@ int do_akick(User * u)
|
||||
chan);
|
||||
return MOD_CONT;
|
||||
}
|
||||
alog("%s: %s!%s@%s deleted akick %s on %s",
|
||||
s_ChanServ, u->nick, u->username, u->host, mask, chan);
|
||||
notice_lang(s_ChanServ, u, CHAN_AKICK_DELETED, mask, chan);
|
||||
akick_del(u, akick);
|
||||
deleted = 1;
|
||||
@@ -645,6 +646,8 @@ int do_akick(User * u)
|
||||
ci->akick = NULL;
|
||||
ci->akickcount = 0;
|
||||
|
||||
alog("%s: %s!%s@%s cleared akicks on %s",
|
||||
s_ChanServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_ChanServ, u, CHAN_AKICK_CLEAR, ci->name);
|
||||
|
||||
} else {
|
||||
@@ -654,7 +657,7 @@ int do_akick(User * u)
|
||||
}
|
||||
|
||||
|
||||
int get_access_nc(NickCore *nc, ChannelInfo *ci)
|
||||
static int get_access_nc(NickCore *nc, ChannelInfo *ci)
|
||||
{
|
||||
ChanAccess *access;
|
||||
if (!ci || !nc)
|
||||
|
||||
+9
-10
@@ -1,6 +1,6 @@
|
||||
/* ChanServ core functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -8,16 +8,15 @@
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
/*************************************************************************/
|
||||
|
||||
#include "module.h"
|
||||
|
||||
int do_unban(User * u);
|
||||
int do_ban(User * u);
|
||||
void myChanServHelp(User * u);
|
||||
static int do_unban(User * u);
|
||||
static int do_ban(User * u);
|
||||
static void myChanServHelp(User * u);
|
||||
|
||||
/**
|
||||
* Create the command, and tell anope about it.
|
||||
@@ -30,7 +29,7 @@ int AnopeInit(int argc, char **argv)
|
||||
Command *c;
|
||||
|
||||
moduleAddAuthor("Anope");
|
||||
moduleAddVersion("$Id$");
|
||||
moduleAddVersion(VERSION_STRING);
|
||||
moduleSetType(CORE);
|
||||
|
||||
c = createCommand("BAN", do_ban, NULL, CHAN_HELP_BAN, -1, -1, -1, -1);
|
||||
@@ -58,7 +57,7 @@ void AnopeFini(void)
|
||||
* Add the help response to anopes /cs help output.
|
||||
* @param u The user who is requesting help
|
||||
**/
|
||||
void myChanServHelp(User * u)
|
||||
static void myChanServHelp(User * u)
|
||||
{
|
||||
notice_lang(s_ChanServ, u, CHAN_HELP_CMD_BAN);
|
||||
notice_lang(s_ChanServ, u, CHAN_HELP_CMD_UNBAN);
|
||||
@@ -69,7 +68,7 @@ void myChanServHelp(User * u)
|
||||
* @param u The user who issued the command
|
||||
* @param MOD_CONT to continue processing other modules, MOD_STOP to stop processing.
|
||||
**/
|
||||
int do_ban(User * u)
|
||||
static int do_ban(User * u)
|
||||
{
|
||||
char *chan = strtok(NULL, " ");
|
||||
char *params = strtok(NULL, " ");
|
||||
@@ -203,7 +202,7 @@ int do_ban(User * u)
|
||||
* @param u The user who issued the command
|
||||
* @param MOD_CONT to continue processing other modules, MOD_STOP to stop processing.
|
||||
**/
|
||||
int do_unban(User * u)
|
||||
static int do_unban(User * u)
|
||||
{
|
||||
char *chan = strtok(NULL, " ");
|
||||
Channel *c;
|
||||
@@ -220,7 +219,7 @@ int do_unban(User * u)
|
||||
} else if (!check_access(u, ci, CA_UNBAN)) {
|
||||
notice_lang(s_ChanServ, u, PERMISSION_DENIED);
|
||||
} else {
|
||||
common_unban(ci, u->nick);
|
||||
common_unban_full(ci, u->nick, true);
|
||||
notice_lang(s_ChanServ, u, CHAN_UNBANNED, chan);
|
||||
}
|
||||
return MOD_CONT;
|
||||
|
||||
+100
-124
@@ -1,6 +1,6 @@
|
||||
/* ChanServ core functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -8,15 +8,14 @@
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
/*************************************************************************/
|
||||
|
||||
#include "module.h"
|
||||
|
||||
int do_clear(User * u);
|
||||
void myChanServHelp(User * u);
|
||||
static int do_clear(User * u);
|
||||
static void myChanServHelp(User * u);
|
||||
|
||||
/**
|
||||
* Create the command, and tell anope about it.
|
||||
@@ -29,7 +28,7 @@ int AnopeInit(int argc, char **argv)
|
||||
Command *c;
|
||||
|
||||
moduleAddAuthor("Anope");
|
||||
moduleAddVersion("$Id$");
|
||||
moduleAddVersion(VERSION_STRING);
|
||||
moduleSetType(CORE);
|
||||
|
||||
c = createCommand("CLEAR", do_clear, NULL, CHAN_HELP_CLEAR, -1, -1, -1,
|
||||
@@ -55,7 +54,7 @@ void AnopeFini(void)
|
||||
* Add the help response to anopes /cs help output.
|
||||
* @param u The user who is requesting help
|
||||
**/
|
||||
void myChanServHelp(User * u)
|
||||
static void myChanServHelp(User * u)
|
||||
{
|
||||
notice_lang(s_ChanServ, u, CHAN_HELP_CMD_CLEAR);
|
||||
}
|
||||
@@ -65,7 +64,7 @@ void myChanServHelp(User * u)
|
||||
* @param u The user who issued the command
|
||||
* @param MOD_CONT to continue processing other modules, MOD_STOP to stop processing.
|
||||
**/
|
||||
int do_clear(User * u)
|
||||
static int do_clear(User * u)
|
||||
{
|
||||
char *chan = strtok(NULL, " ");
|
||||
char *what = strtok(NULL, " ");
|
||||
@@ -98,6 +97,8 @@ int do_clear(User * u)
|
||||
}
|
||||
}
|
||||
|
||||
alog("%s: %s!%s@%s cleared bans on %s",
|
||||
s_ChanServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_ChanServ, u, CHAN_CLEARED_BANS, chan);
|
||||
} else if (ircd->except && stricmp(what, "excepts") == 0) {
|
||||
char *av[2];
|
||||
@@ -114,8 +115,10 @@ int do_clear(User * u)
|
||||
free(av[1]);
|
||||
}
|
||||
}
|
||||
notice_lang(s_ChanServ, u, CHAN_CLEARED_EXCEPTS, chan);
|
||||
|
||||
alog("%s: %s!%s@%s cleared excepts on %s",
|
||||
s_ChanServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_ChanServ, u, CHAN_CLEARED_EXCEPTS, chan);
|
||||
} else if (ircd->invitemode && stricmp(what, "invites") == 0) {
|
||||
char *av[2];
|
||||
Entry *invite, *next;
|
||||
@@ -131,6 +134,8 @@ int do_clear(User * u)
|
||||
free(av[1]);
|
||||
}
|
||||
}
|
||||
alog("%s: %s!%s@%s cleared invites on %s",
|
||||
s_ChanServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_ChanServ, u, CHAN_CLEARED_INVITES, chan);
|
||||
|
||||
} else if (stricmp(what, "modes") == 0) {
|
||||
@@ -178,6 +183,8 @@ int do_clear(User * u)
|
||||
check_modes(c);
|
||||
}
|
||||
|
||||
alog("%s: %s!%s@%s cleared modes on %s",
|
||||
s_ChanServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_ChanServ, u, CHAN_CLEARED_MODES, chan);
|
||||
} else if (stricmp(what, "ops") == 0) {
|
||||
char *av[6]; /* The max we have to hold: chan, ts, modes(max3), nick, nick, nick */
|
||||
@@ -194,39 +201,8 @@ int do_clear(User * u)
|
||||
if (ircd->protect || ircd->admin) {
|
||||
anope_cmd_svsmode_chan(av[0], ircd->adminunset, NULL);
|
||||
}
|
||||
for (cu = c->users; cu; cu = next) {
|
||||
next = cu->next;
|
||||
isop = chan_has_user_status(c, cu->user, CUS_OP);
|
||||
isadmin = chan_has_user_status(c, cu->user, CUS_PROTECT);
|
||||
isown = chan_has_user_status(c, cu->user, CUS_OWNER);
|
||||
count = (isop ? 1 : 0) + (isadmin ? 1 : 0) + (isown ? 1 : 0);
|
||||
|
||||
if (!isop && !isadmin && !isown)
|
||||
continue;
|
||||
|
||||
snprintf(tmp, BUFSIZE, "-%s%s%s", (isop ? "o" : ""), (isadmin ?
|
||||
ircd->adminunset+1 : ""), (isown ? ircd->ownerunset+1 : ""));
|
||||
|
||||
if (ircdcap->tsmode) {
|
||||
snprintf(buf, BUFSIZE - 1, "%ld", (long int) time(NULL));
|
||||
av[1] = buf;
|
||||
av[2] = tmp;
|
||||
/* We have to give as much nicks as modes.. - Viper */
|
||||
for (i = 0; i < count; i++)
|
||||
av[i+3] = cu->user->nick;
|
||||
ac = 3 + i;
|
||||
} else {
|
||||
av[1] = tmp;
|
||||
/* We have to give as much nicks as modes.. - Viper */
|
||||
for (i = 0; i < count; i++)
|
||||
av[i+2] = cu->user->nick;
|
||||
ac = 2 + i;
|
||||
}
|
||||
|
||||
do_cmode(s_ChanServ, ac, av);
|
||||
}
|
||||
/* No need to do anything here - we will receive the mode changes from the IRCd and process them then */
|
||||
} else {
|
||||
av[0] = chan;
|
||||
for (cu = c->users; cu; cu = next) {
|
||||
next = cu->next;
|
||||
isop = chan_has_user_status(c, cu->user, CUS_OP);
|
||||
@@ -240,16 +216,17 @@ int do_clear(User * u)
|
||||
snprintf(tmp, BUFSIZE, "-%s%s%s", (isop ? "o" : ""), (isadmin ?
|
||||
ircd->adminunset+1 : ""), (isown ? ircd->ownerunset+1 : ""));
|
||||
/* We need to send the IRCd a nick for every mode.. - Viper */
|
||||
snprintf(tmp2, BUFSIZE, "%s %s %s", (isop ? cu->user->nick : ""),
|
||||
(isadmin ? cu->user->nick : ""), (isown ? cu->user->nick : ""));
|
||||
snprintf(tmp2, BUFSIZE, "%s %s %s", (isop ? GET_USER(cu->user) : ""),
|
||||
(isadmin ? GET_USER(cu->user) : ""), (isown ? GET_USER(cu->user) : ""));
|
||||
|
||||
av[0] = chan;
|
||||
if (ircdcap->tsmode) {
|
||||
snprintf(buf, BUFSIZE - 1, "%ld", (long int) time(NULL));
|
||||
av[1] = buf;
|
||||
av[2] = tmp;
|
||||
/* We have to give as much nicks as modes.. - Viper */
|
||||
for (i = 0; i < count; i++)
|
||||
av[i+3] = cu->user->nick;
|
||||
av[i+3] = GET_USER(cu->user);
|
||||
ac = 3 + i;
|
||||
|
||||
anope_cmd_mode(whosends(ci), av[0], "%s %s", av[2], tmp2);
|
||||
@@ -257,7 +234,7 @@ int do_clear(User * u)
|
||||
av[1] = tmp;
|
||||
/* We have to give as much nicks as modes.. - Viper */
|
||||
for (i = 0; i < count; i++)
|
||||
av[i+2] = cu->user->nick;
|
||||
av[i+2] = GET_USER(cu->user);
|
||||
ac = 2 + i;
|
||||
|
||||
anope_cmd_mode(whosends(ci), av[0], "%s %s", av[1], tmp2);
|
||||
@@ -266,6 +243,9 @@ int do_clear(User * u)
|
||||
do_cmode(s_ChanServ, ac, av);
|
||||
}
|
||||
}
|
||||
|
||||
alog("%s: %s!%s@%s cleared ops on %s",
|
||||
s_ChanServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_ChanServ, u, CHAN_CLEARED_OPS, chan);
|
||||
} else if (ircd->halfop && stricmp(what, "hops") == 0) {
|
||||
char *av[4];
|
||||
@@ -273,53 +253,50 @@ int do_clear(User * u)
|
||||
char buf[BUFSIZE];
|
||||
struct c_userlist *cu, *next;
|
||||
|
||||
for (cu = c->users; cu; cu = next) {
|
||||
next = cu->next;
|
||||
if (!chan_has_user_status(c, cu->user, CUS_HALFOP))
|
||||
continue;
|
||||
if (ircd->svsmode_ucmode) {
|
||||
anope_cmd_svsmode_chan(chan, "-h", NULL);
|
||||
/* No need to do anything here - we will receive the mode changes from the IRCd and process them then */
|
||||
}
|
||||
else {
|
||||
for (cu = c->users; cu; cu = next) {
|
||||
next = cu->next;
|
||||
if (!chan_has_user_status(c, cu->user, CUS_HALFOP))
|
||||
continue;
|
||||
|
||||
if (ircdcap->tsmode) {
|
||||
snprintf(buf, BUFSIZE - 1, "%ld", (long int) time(NULL));
|
||||
av[0] = sstrdup(chan);
|
||||
av[1] = buf;
|
||||
av[2] = sstrdup("-h");
|
||||
av[3] = sstrdup(cu->user->nick);
|
||||
ac = 4;
|
||||
} else {
|
||||
av[0] = sstrdup(chan);
|
||||
av[1] = sstrdup("-h");
|
||||
av[2] = sstrdup(cu->user->nick);
|
||||
ac = 3;
|
||||
}
|
||||
if (ircdcap->tsmode) {
|
||||
snprintf(buf, BUFSIZE - 1, "%ld", (long int) time(NULL));
|
||||
av[0] = sstrdup(chan);
|
||||
av[1] = buf;
|
||||
av[2] = sstrdup("-h");
|
||||
av[3] = sstrdup(GET_USER(cu->user));
|
||||
ac = 4;
|
||||
} else {
|
||||
av[0] = sstrdup(chan);
|
||||
av[1] = sstrdup("-h");
|
||||
av[2] = sstrdup(GET_USER(cu->user));
|
||||
ac = 3;
|
||||
}
|
||||
|
||||
if (ircd->svsmode_ucmode) {
|
||||
if (ircdcap->tsmode)
|
||||
anope_cmd_svsmode_chan(av[0], av[2], NULL);
|
||||
anope_cmd_mode(whosends(ci), av[0], "%s %s", av[2], av[3]);
|
||||
else
|
||||
anope_cmd_svsmode_chan(av[0], av[1], NULL);
|
||||
anope_cmd_mode(whosends(ci), av[0], "%s %s", av[1], av[2]);
|
||||
|
||||
do_cmode(s_ChanServ, ac, av);
|
||||
break;
|
||||
} else {
|
||||
if (ircdcap->tsmode)
|
||||
anope_cmd_mode(whosends(ci), av[0], "%s %s", av[2],
|
||||
av[3]);
|
||||
else
|
||||
anope_cmd_mode(whosends(ci), av[0], "%s %s", av[1],
|
||||
av[2]);
|
||||
}
|
||||
do_cmode(s_ChanServ, ac, av);
|
||||
|
||||
if (ircdcap->tsmode) {
|
||||
free(av[3]);
|
||||
free(av[2]);
|
||||
free(av[0]);
|
||||
} else {
|
||||
free(av[2]);
|
||||
free(av[1]);
|
||||
free(av[0]);
|
||||
if (ircdcap->tsmode) {
|
||||
free(av[3]);
|
||||
free(av[2]);
|
||||
free(av[0]);
|
||||
} else {
|
||||
free(av[2]);
|
||||
free(av[1]);
|
||||
free(av[0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
alog("%s: %s!%s@%s cleared halfops on %s",
|
||||
s_ChanServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_ChanServ, u, CHAN_CLEARED_HOPS, chan);
|
||||
} else if (stricmp(what, "voices") == 0) {
|
||||
char *av[4];
|
||||
@@ -327,54 +304,51 @@ int do_clear(User * u)
|
||||
char buf[BUFSIZE];
|
||||
struct c_userlist *cu, *next;
|
||||
|
||||
for (cu = c->users; cu; cu = next) {
|
||||
next = cu->next;
|
||||
if (!chan_has_user_status(c, cu->user, CUS_VOICE))
|
||||
continue;
|
||||
if (ircd->svsmode_ucmode) {
|
||||
anope_cmd_svsmode_chan(chan, "-v", NULL);
|
||||
/* No need to do anything here - we will receive the mode changes from the IRCd and process them then */
|
||||
}
|
||||
else {
|
||||
for (cu = c->users; cu; cu = next) {
|
||||
next = cu->next;
|
||||
if (!chan_has_user_status(c, cu->user, CUS_VOICE))
|
||||
continue;
|
||||
|
||||
if (ircdcap->tsmode) {
|
||||
snprintf(buf, BUFSIZE - 1, "%ld", (long int) time(NULL));
|
||||
av[0] = sstrdup(chan);
|
||||
av[1] = buf;
|
||||
av[2] = sstrdup("-v");
|
||||
av[3] = sstrdup(cu->user->nick);
|
||||
ac = 4;
|
||||
} else {
|
||||
av[0] = sstrdup(chan);
|
||||
av[1] = sstrdup("-v");
|
||||
av[2] = sstrdup(cu->user->nick);
|
||||
ac = 3;
|
||||
}
|
||||
if (ircdcap->tsmode) {
|
||||
snprintf(buf, BUFSIZE - 1, "%ld", (long int) time(NULL));
|
||||
av[0] = sstrdup(chan);
|
||||
av[1] = buf;
|
||||
av[2] = sstrdup("-v");
|
||||
av[3] = sstrdup(GET_USER(cu->user));
|
||||
ac = 4;
|
||||
} else {
|
||||
av[0] = sstrdup(chan);
|
||||
av[1] = sstrdup("-v");
|
||||
av[2] = sstrdup(GET_USER(cu->user));
|
||||
ac = 3;
|
||||
}
|
||||
|
||||
if (ircd->svsmode_ucmode) {
|
||||
if (ircdcap->tsmode)
|
||||
anope_cmd_svsmode_chan(av[0], av[2], NULL);
|
||||
else
|
||||
anope_cmd_svsmode_chan(av[0], av[1], NULL);
|
||||
if (ircdcap->tsmode) {
|
||||
anope_cmd_mode(whosends(ci), av[0], "%s %s", av[2], av[3]);
|
||||
} else {
|
||||
anope_cmd_mode(whosends(ci), av[0], "%s %s", av[1], av[2]);
|
||||
}
|
||||
|
||||
do_cmode(s_ChanServ, ac, av);
|
||||
break;
|
||||
} else {
|
||||
if (ircdcap->tsmode) {
|
||||
anope_cmd_mode(whosends(ci), av[0], "%s %s", av[2],
|
||||
av[3]);
|
||||
} else {
|
||||
anope_cmd_mode(whosends(ci), av[0], "%s %s", av[1],
|
||||
av[2]);
|
||||
}
|
||||
}
|
||||
do_cmode(s_ChanServ, ac, av);
|
||||
|
||||
if (ircdcap->tsmode) {
|
||||
free(av[3]);
|
||||
free(av[2]);
|
||||
free(av[0]);
|
||||
} else {
|
||||
free(av[2]);
|
||||
free(av[1]);
|
||||
free(av[0]);
|
||||
if (ircdcap->tsmode) {
|
||||
free(av[3]);
|
||||
free(av[2]);
|
||||
free(av[0]);
|
||||
} else {
|
||||
free(av[2]);
|
||||
free(av[1]);
|
||||
free(av[0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
alog("%s: %s!%s@%s cleared voices on %s",
|
||||
s_ChanServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_ChanServ, u, CHAN_CLEARED_VOICES, chan);
|
||||
} else if (stricmp(what, "users") == 0) {
|
||||
char *av[3];
|
||||
@@ -386,7 +360,7 @@ int do_clear(User * u)
|
||||
for (cu = c->users; cu; cu = next) {
|
||||
next = cu->next;
|
||||
av[0] = sstrdup(chan);
|
||||
av[1] = sstrdup(cu->user->nick);
|
||||
av[1] = sstrdup(GET_USER(cu->user));
|
||||
av[2] = sstrdup(buf);
|
||||
anope_cmd_kick(whosends(ci), av[0], av[1], av[2]);
|
||||
do_kick(s_ChanServ, 3, av);
|
||||
@@ -394,6 +368,8 @@ int do_clear(User * u)
|
||||
free(av[1]);
|
||||
free(av[0]);
|
||||
}
|
||||
alog("%s: %s!%s@%s cleared users on %s",
|
||||
s_ChanServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_ChanServ, u, CHAN_CLEARED_USERS, chan);
|
||||
} else {
|
||||
syntax_error(s_ChanServ, u, "CLEAR", CHAN_CLEAR_SYNTAX);
|
||||
|
||||
+6
-7
@@ -1,6 +1,6 @@
|
||||
/* ChanServ core functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -8,15 +8,14 @@
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
/*************************************************************************/
|
||||
|
||||
#include "module.h"
|
||||
|
||||
int do_drop(User * u);
|
||||
void myChanServHelp(User * u);
|
||||
static int do_drop(User * u);
|
||||
static void myChanServHelp(User * u);
|
||||
|
||||
/**
|
||||
* Create the command, and tell anope about it.
|
||||
@@ -29,7 +28,7 @@ int AnopeInit(int argc, char **argv)
|
||||
Command *c;
|
||||
|
||||
moduleAddAuthor("Anope");
|
||||
moduleAddVersion("$Id$");
|
||||
moduleAddVersion(VERSION_STRING);
|
||||
moduleSetType(CORE);
|
||||
|
||||
c = createCommand("DROP", do_drop, NULL, -1, CHAN_HELP_DROP, -1,
|
||||
@@ -55,7 +54,7 @@ void AnopeFini(void)
|
||||
* Add the help response to anopes /cs help output.
|
||||
* @param u The user who is requesting help
|
||||
**/
|
||||
void myChanServHelp(User * u)
|
||||
static void myChanServHelp(User * u)
|
||||
{
|
||||
notice_lang(s_ChanServ, u, CHAN_HELP_CMD_DROP);
|
||||
}
|
||||
@@ -65,7 +64,7 @@ void myChanServHelp(User * u)
|
||||
* @param u The user who issued the command
|
||||
* @param MOD_CONT to continue processing other modules, MOD_STOP to stop processing.
|
||||
**/
|
||||
int do_drop(User * u)
|
||||
static int do_drop(User * u)
|
||||
{
|
||||
char *chan = strtok(NULL, " ");
|
||||
ChannelInfo *ci;
|
||||
|
||||
+37
-11
@@ -1,6 +1,6 @@
|
||||
/* ChanServ core functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -8,15 +8,14 @@
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
/*************************************************************************/
|
||||
|
||||
#include "module.h"
|
||||
|
||||
int do_forbid(User * u);
|
||||
void myChanServHelp(User * u);
|
||||
static int do_forbid(User * u);
|
||||
static void myChanServHelp(User * u);
|
||||
|
||||
/**
|
||||
* Create the command, and tell anope about it.
|
||||
@@ -29,7 +28,7 @@ int AnopeInit(int argc, char **argv)
|
||||
Command *c;
|
||||
|
||||
moduleAddAuthor("Anope");
|
||||
moduleAddVersion("$Id$");
|
||||
moduleAddVersion(VERSION_STRING);
|
||||
moduleSetType(CORE);
|
||||
|
||||
c = createCommand("FORBID", do_forbid, is_services_admin, -1, -1, -1,
|
||||
@@ -54,7 +53,7 @@ void AnopeFini(void)
|
||||
* Add the help response to anopes /cs help output.
|
||||
* @param u The user who is requesting help
|
||||
**/
|
||||
void myChanServHelp(User * u)
|
||||
static void myChanServHelp(User * u)
|
||||
{
|
||||
if (is_services_admin(u)) {
|
||||
notice_lang(s_ChanServ, u, CHAN_HELP_CMD_FORBID);
|
||||
@@ -66,13 +65,13 @@ void myChanServHelp(User * u)
|
||||
* @param u The user who issued the command
|
||||
* @param MOD_CONT to continue processing other modules, MOD_STOP to stop processing.
|
||||
**/
|
||||
int do_forbid(User * u)
|
||||
static int do_forbid(User * u)
|
||||
{
|
||||
Channel *c;
|
||||
ChannelInfo *ci;
|
||||
char *chan = strtok(NULL, " ");
|
||||
char *reason = strtok(NULL, "");
|
||||
|
||||
Channel *c;
|
||||
Entry *cur, *enext;
|
||||
|
||||
/* Assumes that permission checking has already been done. */
|
||||
if (!chan || (ForceForbidReason && !reason)) {
|
||||
@@ -90,8 +89,10 @@ int do_forbid(User * u)
|
||||
}
|
||||
if (readonly)
|
||||
notice_lang(s_ChanServ, u, READ_ONLY_MODE);
|
||||
if ((ci = cs_findchan(chan)) != NULL)
|
||||
if ((ci = cs_findchan(chan)) != NULL) {
|
||||
delchan(ci);
|
||||
send_event(EVENT_CHAN_DROP, 1, chan);
|
||||
}
|
||||
ci = makechan(chan);
|
||||
if (ci) {
|
||||
ci->flags |= CI_VERBOTEN;
|
||||
@@ -103,6 +104,31 @@ int do_forbid(User * u)
|
||||
struct c_userlist *cu, *next;
|
||||
char *av[3];
|
||||
|
||||
/* Before banning everyone, it might be prudent to clear +e and +I lists..
|
||||
* to prevent ppl from rejoining.. ~ Viper */
|
||||
if (ircd->except && c->excepts && c->excepts->count) {
|
||||
av[0] = sstrdup("-e");
|
||||
for (cur = c->excepts->entries; cur; cur = enext) {
|
||||
enext = cur->next;
|
||||
av[1] = sstrdup(cur->mask);
|
||||
anope_cmd_mode(whosends(ci), chan, "-e %s", cur->mask);
|
||||
chan_set_modes(whosends(ci), c, 2, av, 0);
|
||||
free(av[1]);
|
||||
}
|
||||
free(av[0]);
|
||||
}
|
||||
if (ircd->invitemode && c->invites && c->invites->count) {
|
||||
av[0] = sstrdup("-I");
|
||||
for (cur = c->invites->entries; cur; cur = enext) {
|
||||
enext = cur->next;
|
||||
av[1] = sstrdup(cur->mask);
|
||||
anope_cmd_mode(whosends(ci), chan, "-I %s", cur->mask);
|
||||
chan_set_modes(whosends(ci), c, 2, av, 0);
|
||||
free(av[1]);
|
||||
}
|
||||
free(av[0]);
|
||||
}
|
||||
|
||||
for (cu = c->users; cu; cu = next) {
|
||||
next = cu->next;
|
||||
|
||||
@@ -111,7 +137,7 @@ int do_forbid(User * u)
|
||||
|
||||
av[0] = c->name;
|
||||
av[1] = cu->user->nick;
|
||||
av[2] = reason ? reason : "CHAN_FORBID_REASON";
|
||||
av[2] = reason ? reason : getstring(cu->user->na, CHAN_FORBID_REASON);
|
||||
anope_cmd_kick(s_ChanServ, av[0], av[1], av[2]);
|
||||
do_kick(s_ChanServ, 3, av);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* ChanServ core functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -8,15 +8,14 @@
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
/*************************************************************************/
|
||||
|
||||
#include "module.h"
|
||||
|
||||
int do_getkey(User * u);
|
||||
void myChanServHelp(User * u);
|
||||
static int do_getkey(User * u);
|
||||
static void myChanServHelp(User * u);
|
||||
|
||||
/**
|
||||
* Create the command, and tell anope about it.
|
||||
@@ -29,7 +28,7 @@ int AnopeInit(int argc, char **argv)
|
||||
Command *c;
|
||||
|
||||
moduleAddAuthor("Anope");
|
||||
moduleAddVersion("$Id$");
|
||||
moduleAddVersion(VERSION_STRING);
|
||||
moduleSetType(CORE);
|
||||
|
||||
c = createCommand("GETKEY", do_getkey, NULL, CHAN_HELP_GETKEY, -1, -1,
|
||||
@@ -55,7 +54,7 @@ void AnopeFini(void)
|
||||
* Add the help response to anopes /cs help output.
|
||||
* @param u The user who is requesting help
|
||||
**/
|
||||
void myChanServHelp(User * u)
|
||||
static void myChanServHelp(User * u)
|
||||
{
|
||||
notice_lang(s_ChanServ, u, CHAN_HELP_CMD_GETKEY);
|
||||
}
|
||||
@@ -65,7 +64,7 @@ void myChanServHelp(User * u)
|
||||
* @param u The user who issued the command
|
||||
* @param MOD_CONT to continue processing other modules, MOD_STOP to stop processing.
|
||||
**/
|
||||
int do_getkey(User * u)
|
||||
static int do_getkey(User * u)
|
||||
{
|
||||
char *chan = strtok(NULL, " ");
|
||||
ChannelInfo *ci;
|
||||
@@ -81,6 +80,8 @@ int do_getkey(User * u)
|
||||
} else if (!ci->c || !ci->c->key) {
|
||||
notice_lang(s_ChanServ, u, CHAN_GETKEY_NOKEY, chan);
|
||||
} else {
|
||||
alog("%s: %s!%s@%s used GETKEY on %s",
|
||||
s_ChanServ, u->nick, u->username, u->host, ci->name);
|
||||
notice_lang(s_ChanServ, u, CHAN_GETKEY_KEY, chan, ci->c->key);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* ChanServ core functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -8,15 +8,14 @@
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
/*************************************************************************/
|
||||
|
||||
#include "module.h"
|
||||
|
||||
int do_getpass(User * u);
|
||||
void myChanServHelp(User * u);
|
||||
static int do_getpass(User * u);
|
||||
static void myChanServHelp(User * u);
|
||||
|
||||
/**
|
||||
* Create the command, and tell anope about it.
|
||||
@@ -29,7 +28,7 @@ int AnopeInit(int argc, char **argv)
|
||||
Command *c;
|
||||
|
||||
moduleAddAuthor("Anope");
|
||||
moduleAddVersion("$Id$");
|
||||
moduleAddVersion(VERSION_STRING);
|
||||
moduleSetType(CORE);
|
||||
|
||||
c = createCommand("GETPASS", do_getpass, is_services_admin, -1, -1, -1,
|
||||
@@ -56,7 +55,7 @@ void AnopeFini(void)
|
||||
* Add the help response to anopes /cs help output.
|
||||
* @param u The user who is requesting help
|
||||
**/
|
||||
void myChanServHelp(User * u)
|
||||
static void myChanServHelp(User * u)
|
||||
{
|
||||
if (is_services_admin(u)) {
|
||||
notice_lang(s_ChanServ, u, CHAN_HELP_CMD_GETPASS);
|
||||
@@ -69,7 +68,7 @@ void myChanServHelp(User * u)
|
||||
* @param MOD_CONT to continue processing other modules, MOD_STOP to stop processing.
|
||||
**/
|
||||
|
||||
int do_getpass(User * u)
|
||||
static int do_getpass(User * u)
|
||||
{
|
||||
char *chan = strtok(NULL, " ");
|
||||
char tmp_pass[PASSMAX];
|
||||
|
||||
+4
-5
@@ -1,6 +1,6 @@
|
||||
/* ChanServ core functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -8,14 +8,13 @@
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
/*************************************************************************/
|
||||
|
||||
#include "module.h"
|
||||
|
||||
int do_help(User * u);
|
||||
static int do_help(User * u);
|
||||
|
||||
/**
|
||||
* Create the off command, and tell anope about it.
|
||||
@@ -28,7 +27,7 @@ int AnopeInit(int argc, char **argv)
|
||||
Command *c;
|
||||
|
||||
moduleAddAuthor("Anope");
|
||||
moduleAddVersion("$Id$");
|
||||
moduleAddVersion(VERSION_STRING);
|
||||
moduleSetType(CORE);
|
||||
|
||||
c = createCommand("HELP", do_help, NULL, -1, -1, -1, -1, -1);
|
||||
@@ -50,7 +49,7 @@ void AnopeFini(void)
|
||||
* @param u The user who issued the command
|
||||
* @param MOD_CONT to continue processing other modules, MOD_STOP to stop processing.
|
||||
**/
|
||||
int do_help(User * u)
|
||||
static int do_help(User * u)
|
||||
{
|
||||
char *cmd = strtok(NULL, "");
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* ChanServ core functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -8,15 +8,14 @@
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
/*************************************************************************/
|
||||
|
||||
#include "module.h"
|
||||
|
||||
int do_identify(User * u);
|
||||
void myChanServHelp(User * u);
|
||||
static int do_identify(User * u);
|
||||
static void myChanServHelp(User * u);
|
||||
|
||||
/**
|
||||
* Create the command, and tell anope about it.
|
||||
@@ -29,7 +28,7 @@ int AnopeInit(int argc, char **argv)
|
||||
Command *c;
|
||||
|
||||
moduleAddAuthor("Anope");
|
||||
moduleAddVersion("$Id$");
|
||||
moduleAddVersion(VERSION_STRING);
|
||||
moduleSetType(CORE);
|
||||
|
||||
c = createCommand("IDENTIFY", do_identify, NULL, CHAN_HELP_IDENTIFY,
|
||||
@@ -59,7 +58,7 @@ void AnopeFini(void)
|
||||
* Add the help response to anopes /cs help output.
|
||||
* @param u The user who is requesting help
|
||||
**/
|
||||
void myChanServHelp(User * u)
|
||||
static void myChanServHelp(User * u)
|
||||
{
|
||||
notice_lang(s_ChanServ, u, CHAN_HELP_CMD_IDENTIFY);
|
||||
}
|
||||
@@ -69,7 +68,7 @@ void myChanServHelp(User * u)
|
||||
* @param u The user who issued the command
|
||||
* @param MOD_CONT to continue processing other modules, MOD_STOP to stop processing.
|
||||
**/
|
||||
int do_identify(User * u)
|
||||
static int do_identify(User * u)
|
||||
{
|
||||
char *chan = strtok(NULL, " ");
|
||||
char *pass = strtok(NULL, " ");
|
||||
|
||||
+6
-7
@@ -1,6 +1,6 @@
|
||||
/* ChanServ core functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -8,15 +8,14 @@
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
/*************************************************************************/
|
||||
|
||||
#include "module.h"
|
||||
|
||||
int do_info(User * u);
|
||||
void myChanServHelp(User * u);
|
||||
static int do_info(User * u);
|
||||
static void myChanServHelp(User * u);
|
||||
|
||||
/**
|
||||
* Create the command, and tell anope about it.
|
||||
@@ -29,7 +28,7 @@ int AnopeInit(int argc, char **argv)
|
||||
Command *c;
|
||||
|
||||
moduleAddAuthor("Anope");
|
||||
moduleAddVersion("$Id$");
|
||||
moduleAddVersion(VERSION_STRING);
|
||||
moduleSetType(CORE);
|
||||
|
||||
c = createCommand("INFO", do_info, NULL, CHAN_HELP_INFO, -1,
|
||||
@@ -56,7 +55,7 @@ void AnopeFini(void)
|
||||
* Add the help response to anopes /cs help output.
|
||||
* @param u The user who is requesting help
|
||||
**/
|
||||
void myChanServHelp(User * u)
|
||||
static void myChanServHelp(User * u)
|
||||
{
|
||||
notice_lang(s_ChanServ, u, CHAN_HELP_CMD_INFO);
|
||||
}
|
||||
@@ -66,7 +65,7 @@ void myChanServHelp(User * u)
|
||||
* @param u The user who issued the command
|
||||
* @param MOD_CONT to continue processing other modules, MOD_STOP to stop processing.
|
||||
**/
|
||||
int do_info(User * u)
|
||||
static int do_info(User * u)
|
||||
{
|
||||
/* SADMINS and users, who have identified for a channel, can now cause it's
|
||||
* Enstry Message and Successor to be displayed by supplying the ALL parameter.
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user