1
0
mirror of https://github.com/anope/anope.git synced 2026-06-12 18:34:49 +02:00

Compare commits

...

756 Commits

Author SHA1 Message Date
Adam 1dee851207 Release 2.0.7 2019-11-02 20:44:48 -04:00
Adam 9c91d386e4 docs: update Changes 2019-11-02 20:43:18 -04:00
Adam 3e4d87051b inspircd3: remove CoreExport from IRCDMessageKick 2019-11-02 20:24:21 -04:00
Robby 26975fc011 Rename a few instances of 'services' to 'stats' in stats.standalone.example.conf and irc2sql.example.conf. 2019-11-03 00:50:37 +01:00
Adam c15dc49994 ns_recover: add privilege for admins to recover other users 2019-10-14 13:13:08 -04:00
Peter Powell 14ee76a0ad Fix various typos. 2019-09-23 14:48:49 +01:00
Peter Powell 4465c67790 Update the supported InspIRCd versions in the README. 2019-09-23 13:23:02 +01:00
Peter Powell 20e0fa33fc Sort message handlers alphabetically. 2019-09-23 13:23:02 +01:00
Peter Powell 7e76daf39f Add the InspIRCd v3 module to the example configs. 2019-09-23 13:23:02 +01:00
Peter Powell 2ee63f0f68 Handle/send 1205-style PING/PONG messages. 2019-09-23 13:23:02 +01:00
Peter Powell c35029fa2f Parse 1205-style mode lists for CAPAB CHANMODES/USERMODES. 2019-09-23 13:23:02 +01:00
Peter Powell bae8987ec1 Add a handler for the IJOIN command. 2019-09-23 13:23:02 +01:00
Peter Powell 470d4d1a97 Update for the 1205 channel METADATA syntax. 2019-09-23 13:23:02 +01:00
Peter Powell 78bac905c2 Update for the 1205 FJOIN syntax. 2019-09-23 13:23:02 +01:00
Peter Powell d88d8e940e Update for the 1205 KICK syntax. 2019-09-23 13:23:02 +01:00
Peter Powell b2c3775b58 Update for the 1205 INVITE syntax. 2019-09-23 13:23:02 +01:00
Peter Powell b311248bed Update for the 1205 SERVER syntax. 2019-09-23 13:23:02 +01:00
Peter Powell f7f45b4e2b Update for the 1205 FTOPIC syntax. 2019-09-23 13:23:02 +01:00
Peter Powell 3cad3514f1 Remove the TOPIC command handler.
This legacy compat command was removed in the 1205 protocol.
2019-09-23 13:23:02 +01:00
Peter Powell 1020ca47bd Remove the JOIN command handler.
This legacy compat command was removed in the 1205 protocol.
2019-09-23 13:23:02 +01:00
Peter Powell 48dbb70ecc Use the SINFO command instead of the old VERSION command. 2019-09-23 13:23:02 +01:00
Peter Powell ae16206f0c Use NUM instead of PUSH for sending numerics to clients. 2019-09-23 13:23:02 +01:00
Peter Powell 7045f206af Require the 1205 (3.0+) server protocol. 2019-09-23 13:23:02 +01:00
Peter Powell 67bd3e44c0 Remove the dependency on the inspircd12 module. 2019-09-23 13:23:02 +01:00
Peter Powell 264981fb1b Mark inspircd3 as being the InspIRCd 3 module. 2019-09-23 13:23:02 +01:00
Peter Powell 47d471c53d Make a copy of the InspIRCd v2 module for v3. 2019-09-23 13:23:02 +01:00
Peter Powell e43bc49ba7 Update the core message parser to allow parsing IRCv3 message tags. 2019-09-23 13:20:07 +01:00
Robby d9de4ddd82 Insert a new line between the subject and message body when sending mail.
Required for RFC 2822 compliancy.

Reported by jrmu via IRC.
2019-08-24 07:37:35 +02:00
Adam 8f7f4b1593 Merge pull request #244 from clem16/2.0
Fixed stupid simple typos.
2019-08-18 20:37:00 -04:00
Clem Morton fc64c0c6dd Fixed stupid simple typos.
Fixed stupid simple type, changed "bot not both" to "but not both"
2019-08-18 16:46:50 -06:00
Robby 03d065e952 Add hide_status as an available option to nickserv.example.conf.
Also improve the hide_* descriptions slightly.
2019-08-04 23:32:52 +02:00
Peter Powell 77a52eec7c Fix the version binary colliding with the C++20 <version> header. 2019-07-05 12:17:37 +01:00
Robby 523a586176 Fix globops logging if there is no predefined sender. 2019-05-10 05:50:18 +02:00
Robby af32a14fc1 Config files: Fix some typos, bring stats.standalone.example.conf up to par with example.conf, etc. 2019-04-05 03:11:39 +02:00
Romain Rivière 5c8548040a Log channel memo deletions 2019-03-30 22:17:00 -04:00
Adam 6a42c1a4f3 Merge pull request #240 from SaberUK/2.0+bot
Mark pseudoclients as bots on InspIRCd if the bot mode exists.
2019-03-30 22:10:44 -04:00
Peter Powell 0defcda8d0 Reset the default modes on CAPAB START. 2019-03-30 20:09:34 +00:00
Peter Powell f6ee88c42a Mark pseudoclients as bots on InspIRCd if the bot mode exists. 2019-03-30 12:11:31 +00:00
Robby 34f65e3266 Update enc_bcrypt with upstream crypt_blowfish 1.3 changes.
Also reverted the URLs in the header to the original ones provided by upstream.
2019-03-14 16:53:52 +01:00
Robby 02ac3a403c Fix the ChanServ SET SUCCESSOR syntax to show that a nickname is optional. 2019-03-06 03:34:25 +01:00
Adam e1e840a87d Merge pull request #239 from SaberUK/2.0+set
Fix missing braces in cs_set.
2019-03-05 08:10:04 -05:00
Peter Powell eb66f9eda0 Fix missing braces in cs_set. 2019-03-05 11:29:45 +00:00
Robby a4c37a373a Update the dutch language file. 2019-02-28 04:44:37 +01:00
Robby bca9b4ce83 Regenerate the language files. 2019-02-28 03:05:07 +01:00
Robby a2446b8d4b Merge pull request #224 from genius3000/2.0+deoper_superadmin
Ensure SuperAdmin isn't left on when de-opering
2019-02-14 04:41:27 +01:00
Robby e567cfda36 Improve the help text for ChanServ SET SUCCESSOR. 2019-02-14 02:41:57 +01:00
Adam 961a9bc506 Merge pull request #221 from SaberUK/2.0+uplink
Make it more clear where the uplink config goes.
2019-02-09 17:37:41 -05:00
Bram Matthys da6e2730c2 Allow post-handshake SASL in UnrealIRCd 4.2.2 and up.
This updates the unreal4 protocol module to work with both pseudo-id's
and real UID's. Something that will also be necessary once UnrealIRCd
gets rid of pseudo-id's altogether.
2019-02-09 17:10:23 -05:00
Robby 2b8072bf80 Remove a few more unnecessary fuzzies in the language files. 2019-01-24 18:04:23 +01:00
Robby 49cea76841 Remove an unnecessary fuzzy in the french language file. 2019-01-24 17:30:17 +01:00
Robby e1c8aa0dbc Update the language files.
- Regenerated the language files.
- Made some corrections to the french language file.
2019-01-24 15:36:50 +01:00
Adam 2546e865e2 Merge pull request #233 from genius3000/2.0+typofix
Fix typo in CS enforce help reply.
2019-01-21 19:14:10 -05:00
Matt Schatz d6af21e0d9 cs_enforce: fix typo in help. 2019-01-20 21:25:07 -07:00
Dragone2 18522f7fc8 Fixed some misspellings in Italian Translation 2019-01-03 21:46:52 -05:00
Adam 4c167bed69 Merge pull request #223 from SimosNap/webcpanel
Fixed NickServ set access from webcpanel
2019-01-03 21:34:00 -05:00
devel 32a21679fb Fixed NickServ set access from webcpanel 2019-01-03 21:33:02 -05:00
Adam a5eaf6fc49 Merge pull request #225 from genius3000/2.0+away_msg
Handle S2S AWAY messages with a timestamp
2019-01-03 21:30:44 -05:00
k4bek4be 9d7245bded Polish translation reworked and completed. 2019-01-03 21:20:34 -05:00
Adam 02fb4b67cf Merge pull request #228 from SaberUK/2.0+casemap
Send the casemap as part of CAPAB CAPABILITIES on InspIRCd.
2019-01-03 21:10:31 -05:00
linuxdaemon cf44418e10 Allow multiple IP addresses in extforward_ip separated by spaces 2019-01-03 21:07:01 -05:00
Robby 6fbb7cffe9 Update copyright to 2019.
This was done with:
find docs/ include/ language/ modules/ src/ *.* Config -exec sed -i 's/-20.. Anope Team/-2019 Anope Team/i' {} \;
2019-01-01 17:43:35 +01:00
Robby b279863acb Update most URLs to use HTTPS if available, and fix some dead ones too. 2018-11-10 15:15:05 +01:00
BoGu5 9e7dadb967 docs/FAQ: Fixed 1.9 to 2.0 in 2.0 branch 2018-11-10 13:07:35 +01:00
Robby 9069bf4e2f Merge branch 'TheMythPT-patch-2' into 2.0
Update chanstats.example.conf

Missing permissions that otherwise allow any registered user to turn on/off chanstats option to any other user
2018-10-28 16:42:17 +01:00
Vitor e85b0a5f68 Update chanstats.example.conf
Missing permissions that otherwise allow any registered user to turn on/off chanstats option to any other user
2018-10-28 16:35:47 +01:00
Peter Powell 195eff9c04 Send the casemap as part of CAPAB CAPABILITIES on InspIRCd.
This is technically part of the 1205 protocol but it is entirely
backwards compatible so older versions will not be negatively
affected by this.
2018-10-27 19:11:38 +01:00
Robby 42aa330db3 ns_set: Log email address change requests when confirmemailchanges = yes 2018-09-11 01:21:19 +02:00
Matt Schatz 1e9d959857 Handle S2S AWAY messages with a timestamp
InspIRCd 2.0 sends a timestamp in its S2S AWAY message since
https://github.com/inspircd/inspircd/commit/b1002b7df55f1aec5bfce48ecd07d6d326174c95
Syntax of `AWAY <timestamp> :<away msg>`
Catch this message and remove the timestamp parameter before
sending it to the core AWAY handler.
2018-07-20 09:39:47 -06:00
Matt Schatz 38721993f1 Ensure SuperAdmin isn't left on when de-opering 2018-07-14 17:38:37 -06:00
Peter Powell 1b782235c4 Make it more clear where the uplink config goes. 2018-06-19 11:15:13 +01:00
Adam 368300d319 Merge pull request #222 from bonnedav/patch-2
Unreal4 does not allow SWHOIS to come from a user source.
2018-06-12 12:36:19 -04:00
Adam 94e10d52fb anopesmtp: fix previous commit 2018-06-12 10:46:55 -04:00
Adam d25c8c169e Merge pull request #203 from MrGadget1024/patch-1
Fix mail sending for reliability.
2018-06-12 10:39:17 -04:00
Vitor 67b7fed9ed example.conf: update example link block for Unreal 4 2018-06-12 10:36:39 -04:00
Dragone2 e32a8dbbe5 Update Italian translation 2018-06-12 10:29:34 -04:00
Dragone2 281edf8475 cs_seen: fix for translations being ignored
These strings: " but %s mysteriously dematerialized.", ". %s is still online." and ", but %s mysteriously dematerialized." weren't translated by the method Anope::printf().
2018-06-12 10:22:20 -04:00
Adam ce7c266651 Merge pull request #214 from genius3000/2.0+fix_insp20_proto
Fix for bug 1712
2018-06-12 10:16:45 -04:00
Adam c1166e3618 Merge pull request #216 from SaberUK/2.0+oline
Disable the os_oline module by default.
2018-06-12 10:08:16 -04:00
Adam 8294c94b95 Merge pull request #217 from genius3000/2.0+ns_set_message
Show NickServ SET MESSAGE in help when 'useprivmsg' is enabled
2018-06-12 10:07:55 -04:00
Adam 6f09b703dd Merge pull request #218 from miwob/modernize
Update ircd-hybrid protocol module to support latest version of ircd-…
2018-06-12 10:01:27 -04:00
miwob 466e5be741 Update ircd-hybrid protocol module to support latest version of ircd-hybrid better 2018-06-12 08:40:57 -04:00
Adam 32076c099c Merge pull request #219 from genius3000/2.0+set_help_hide
Check for 'hide' flag in commands in (bs,cs,ns)_set HELP
2018-06-12 08:39:24 -04:00
Adam 216b96aa57 Merge pull request #220 from genius3000/2.0+ns_ungroup_log
Log NickServ ungroup
2018-06-12 08:16:35 -04:00
bonnedav 6d592e2a0f Unreal4 does not allow SWHOIS to come from a user source. 2018-06-12 00:00:00 -06:00
Matt Schatz feb5a4d935 Log NickServ ungroup 2018-05-08 16:24:02 -06:00
Robby e03ae0cd85 Update copyright to 2018.
This was done with:
find docs/ include/ language/ modules/ src/ *.* Config -exec sed -i 's/-20.. Anope Team/-2018 Anope Team/i' {} \;
2018-04-25 19:22:13 +02:00
Robby 901fc3e40f Document that negating is possible for commands and privs in opertype blocks. 2018-04-25 18:59:09 +02:00
Robby 5683f45925 Clarify available tokens for the email templates. 2018-04-25 16:32:12 +02:00
Robby bafc17472e Add 'n' email token for use in the emailchange template, this token gets replaced with the display nickname. 2018-04-25 16:15:16 +02:00
genius3000 7638c7a884 Check for 'hide' flag in commands in (bs,cs,ns)_set HELP
This code is duplicated from help.cpp to (bs,cs,ns)_set.cpp for listing
the available SET commands. The check for the 'hide' flag was missed
and this incorrectly listed commands that were configured as hidden.
2018-04-02 04:02:23 -06:00
Adam d25722ddd0 m_httpd: make http headers case insensitive 2018-03-26 20:21:06 -04:00
genius3000 750d1009ec Show NickServ SET MESSAGE in help when 'useprivmsg' is enabled 2018-03-10 15:22:02 -07:00
Peter Powell b8e7960ff6 Disable the os_oline module by default.
This only works on UnrealIRCd 3.2 (which has been EOL for over a
year now) and regularly confuses users who think that "your IRCd
does not support OMODE" is an error they need to fix.
2018-03-03 14:26:33 +00:00
genius3000 ff878bbda8 Allow empty values in InspIRCd 2.0 mode strings within CAPABILITIES
Skipping over empty values in the commasepstream can put the mode adding
logic out of order (eg. ignoring the first two tokens when they are the
needed tokens). Most modes are already added by being explicitly checked
for, but the "unknown" or "extra" modes are added here.
2018-02-13 20:35:37 -07:00
Adam 1baf774647 ns_group: send login on successful group too 2018-02-10 08:36:12 -05:00
Adam 772410d974 Merge pull request #211 from Dragone2/patch-5
Update for Italian translation
2018-02-02 22:48:00 -05:00
Adam 7ceb4426c7 m_dns: fix notify socket always being ipv6 2018-02-02 22:39:46 -05:00
Dragone2 10c7a9ff94 Update for Italian translation
Update for the old Italian translation of Anope, with new translated strings, correction of grammatical errors and other minor changes.
2018-02-03 00:19:21 +01:00
Adam b3c4b28a67 Merge pull request #197 from genius3000/2.0+fix_insp_rlines
2.0: Fix sending incorrect RLines to InspIRCd
2018-01-12 12:09:50 -05:00
nekoswag 0da4150283 Update chanserv.example.conf (#206) 2017-12-30 15:32:22 -05:00
Chris Langsenkamp 5920f1b59c Fix mail sending for reliability.
After sending the "\r\n.\r\n" after the mail payload, smtp_send_email was not waiting for the mail server to complete post-processing and respond with "250", but was sending "QUIT\r\n" immediately and dropping the connection.  Mail server may kill the transaction if it can't send the "250" (socket closed).  The changes proposed completes the mail transaction by reading for the 250 and in smtp_disconnect steps through a proper quit sequence by waiting for the 221 server response.

I discovered this by including the --debug option in services.conf sendmailpath, which invoked logging in smtp_send and that slowed it down enough for the mail server to return the 250 and complete the transaction.
2017-12-11 12:41:31 -05:00
Adam 68fcb1af93 Bump for 2.0.7-git 2017-12-11 11:47:06 -05:00
Adam 0574de2d22 Anope 2.0.6 Release 2017-12-11 11:46:10 -05:00
Adam c9c53dbe61 Add README.md, for github 2017-11-19 17:28:05 -05:00
Adam a084245822 README: remove some outdated links 2017-11-19 17:28:05 -05:00
Robby 77e3f062da Update the dutch language file. 2017-11-17 23:56:15 +01:00
genius3000 0e14adcb0f Fix sending incorrect RLines to InspIRCd
Currently a Regex AKILL is sent with a malformed mask to InspIRCd as an RLine.
InspIRCd expects a mask of 'n!u@h\sr', so we need to remove the enclosing
slashes (/.../), change the '#' separator to '\s', and change any literal
spaces to '\s' and then it creates a proper RLine.
2017-10-14 08:36:35 -06:00
Adam 8bb3067e42 Update Changes and Changes.conf 2017-10-12 19:58:02 -04:00
Adam 0c469abe4a Call OnDelChan prior to unsetting extensibles
cs_set uses this to set -P on permanent channels if they are persistent.

Also move similar event in nickcore/nickalias destruction
2017-10-12 19:37:06 -04:00
Adam d63e32a579 No longer try to create persistent channels on the fly
Change initial channel creation to on post init so it will be part of
the burst.
2017-10-12 19:30:48 -04:00
Adam f13c450b93 Add post init event 2017-10-12 19:28:34 -04:00
Adam e95c07291a unreal4: send sjoin with empty users in SendChannel 2017-10-12 19:28:12 -04:00
Adam 2963fc0a1d unreal4: send modes in sjoin 2017-10-12 19:27:51 -04:00
Adam 5d309d46e1 plexus: fix overriding SendSVSLogin 2017-10-10 21:19:23 -04:00
Adam 2e7fcd3098 Merge pull request #199 from syzop/2.0+unrealsaslmechs
Advertise SASL mechanisms to UnrealIRCd servers.
2017-10-09 11:29:55 -04:00
Adam 884759aed4 Merge pull request #200 from syzop/2.0+saslbydefault
Load sasl module by default.
2017-10-09 11:23:09 -04:00
Bram Matthys 2ec65023a6 Load sasl module by default. 2017-10-09 10:31:21 +02:00
Bram Matthys 0093f3fa44 Advertise SASL mechanisms to UnrealIRCd servers. 2017-10-09 10:22:50 +02:00
Adam 2ad76278dd Use full path to file for conf.cpp file could not be opened error message 2017-08-05 18:31:57 -04:00
Tim Gunter 23e59d9f2c Allow calls to XMLRPC to impersonate supplied user, if online 2017-07-28 09:08:40 -04:00
Adam 3cb9e0b97c m_xmlrpc: fix incorrect string find usage 2017-07-24 20:30:34 -04:00
Adam 0b7b6d9d6d ns_group: don't require a user to group 2017-07-24 10:04:07 -04:00
Adam 56e6efbe8f Default require_oper to true. Fixes os_oper unserializer because it doesn't set it. 2017-07-02 18:03:36 -04:00
Adam feed624cdc webcpanel: rate limit login attempts 2017-06-05 18:44:48 -04:00
Adam 1a6f42b994 webcpanel: escape values in template_fileserver
Remove other escapes to prevent double escape.

Not all replaced values were escaped, such as replies from commands.
2017-06-05 10:11:22 -04:00
Adam 04f49225c9 httputils: escape ampersand too 2017-06-05 10:10:58 -04:00
Adam b18d1a69b6 Merge pull request #174 from Techman-/2.0+inspsasl
InspIRCd: Send CHGIDENT/CHGHOST on SVSLOGIN
2017-05-27 12:29:12 -04:00
Adam 0ace685597 Merge pull request #188 from key2peace/2.0
IPv6 support for m_dnsbl and sockaddrs::reverse()
2017-05-27 09:58:34 -04:00
Alexander Maassen bfcfd0b727 Moved m_dns's reverse ip method to sockaddrs::reverse().
Updated m_dnsbl to support ipv6.
2017-05-27 09:56:18 -04:00
Adam 087f1cb359 m_dnsbl: fix exempts, allow cidrs, default exempt 127.0.0.0/8 2017-05-17 08:51:57 -04:00
Adam 010d20198e m_regex_posix: use REG_ICASE 2017-03-30 19:10:31 -04:00
Adam 953e804231 example.conf: disable regexengine directive by default 2017-03-30 17:02:36 -04:00
Adam c656fe0694 regchannel: fix compile warning from previous commit 2017-03-27 22:25:49 -04:00
Adam fb3ec7a897 cs_akick: don't show channel doesn't exist message in enforce from adding akicks 2017-03-27 21:41:35 -04:00
Adam 274658f955 Fix autokick destructor to properly remove channel references from accounts 2017-03-27 21:14:32 -04:00
Adam 7621306f4b example.conf: update to reflect deprecated status of older encryption modules 2017-03-26 18:34:03 -04:00
Adam b804867105 Remove weird warning in nickserv help which for some reason assumes admins' abuse policies 2017-03-23 20:05:09 -04:00
Adam f8f1550c31 Merge pull request #187 from miwob/new-mode
Add channel mode 'u', and 'L' to hybrid protocol module; Remove usele…
2017-03-19 18:56:06 -04:00
Adam 0fcc66711b m_sasl: pass module to logger 2017-03-19 18:55:32 -04:00
Adam 8d9574e306 readme: change minimum supported hybrid version to 8.2 2017-03-19 18:55:19 -04:00
miwob 6cb17c734c Add channel mode 'u', and 'L' to hybrid protocol module; Remove useless CAPABs that are mandatory for some years now. 2017-03-19 12:02:22 +01:00
Adam 3545e8e383 Fix ns_keep_modes default option in nickserv.conf 2017-03-18 15:30:17 -04:00
Adam 3c18e02b0b logger.cpp: fix variable shadow warning 2017-03-16 21:37:34 -04:00
Adam b831cd8a36 Include ip for web clients in command log messages for source 2017-03-16 20:23:57 -04:00
Adam 516ab164f6 redis: check for socket errors when loading database on startup 2017-03-16 20:13:56 -04:00
Adam b2d028533d cs_xop: fix showing alternative access methods in help 2017-03-15 21:44:05 -04:00
Adam a88d9cb1f0 modes.cpp: correct usage of format string passed to SendMode 2017-03-08 19:58:25 -05:00
Adam b57ef5d2c7 db_redis: don't crash if destroying an object with no type 2017-03-08 16:23:30 -05:00
Adam 1a96390826 unreal4: set +xt on chghost as unreal does 2017-03-01 17:44:05 -05:00
Adam 60339edf40 cs_set: don't lower ts from own clients joining 2017-02-21 14:44:33 -05:00
Adam 6990c692d6 Unwrap list modes too in cs_mode, and fix clear on virtual modes to show an error 2017-02-21 12:36:59 -05:00
Adam 98e62b4032 Fix logging in cs_mode set 2017-02-21 12:35:51 -05:00
Adam a1d7d42d6a Unwrap mode changes in RemoveMode before checking if it is set, fixes os_mode not being able to remove extbans etc 2017-02-21 12:35:20 -05:00
Adam 3f7c0829ef os_forbid: match forbids exact on add/del 2017-02-21 09:59:10 -05:00
Adam 46d8af781d Verify configured servername and uplink password are valid 2017-02-21 08:19:03 -05:00
Adam 67b7c8bd7d os_logsearch: fix quick match 2017-02-12 16:46:13 -05:00
Adam 21486e2c81 Merge pull request #185 from fallen/2.0
Update French language file
2017-02-06 14:20:40 -05:00
Adam 29ac40b584 ns_set_misc/cs_set_misc: send syntax help too 2017-02-06 14:06:55 -05:00
Adam dde444ed0e protocol/inspircd12: set +x on /hs off 2017-02-06 13:15:01 -05:00
Adam 9b6c209c80 bs_badwords: allow opers with botserv/administration to list/clear badwords too 2017-02-04 20:21:40 -05:00
Yann Sionneau 3c7d67c8cd Update French language file
- translate "nick" to "pseudo"
- remove "XOP" arg from set secureops
2017-02-04 23:47:05 +01:00
Adam c730291762 logger: some log events rely on empty sources 2017-01-23 08:03:51 -05:00
Adam c593661f40 Anope 2.0.6-git 2017-01-22 17:04:20 -05:00
Adam a9bf251886 Anope 2.0.5 Release 2017-01-22 16:09:36 -05:00
Adam beac29b1d0 m_sasl: don't allow logging into unconfirmed accounts 2017-01-22 16:00:06 -05:00
Adam 35d6437d45 Remove old language strings from lang files 2017-01-20 09:45:25 -05:00
Robby 76ce8ece1a Cleanup some excess whitespaces and tabs, and fix a few typos along the way. 2017-01-17 05:03:25 +01:00
Adam 464093d36e Regenerate language files 2017-01-16 18:59:30 -05:00
Adam 71bb3fefcc Update Changes 2017-01-16 18:58:30 -05:00
Adam 1f6f9f5dbb Revert "Remove efnetrbl from example dnsbl configuration" 2017-01-16 18:45:08 -05:00
Adam 34bf21f7d1 Correct a couple expiry time checks from DoTime() 2017-01-16 18:42:29 -05:00
Adam 847dfd9523 Merge pull request #182 from genius3000/2.0+protocol_match_name
protocol/inspircd: Match servername as well on ENCAP
2017-01-16 18:33:09 -05:00
Adam a96e40e249 Merge pull request #183 from SaberUK/2.0+cmake
Don't give misleading instructions when running CMake fails.
2017-01-16 18:32:34 -05:00
Robby 8656b65e39 Update copyright to 2017.
This was done with:
find docs/ include/ language/ modules/ src/ *.* Config -exec sed -i 's/-20.. Anope Team/-2017 Anope Team/i' {} \;

Added missing copyright headers to files that didn't have it yet.
2017-01-16 03:13:25 +01:00
Robby 39422beaef Update the dutch language file. 2017-01-14 02:57:44 +01:00
Peter Powell 6d29538346 Don't give misleading instructions when running CMake fails. 2017-01-13 22:02:00 +00:00
Adam bdf4650ff8 m_dnsbl: widen allowed reply range to 127.0.0.0/8 2017-01-12 13:26:29 -05:00
Adam 074bde5ccc db_sql: run table creation queries during import synchronously too 2017-01-11 20:44:55 -05:00
Adam a4f7d847ab unreal4: use SENDUMODE instead of GLOBOPS 2017-01-11 20:42:20 -05:00
Adam 5beb338247 Remove efnetrbl from example dnsbl configuration 2017-01-08 15:48:54 -05:00
Adam 7b1154de69 ns_register: notify users of unconfirmed accounts on register when there is no user too 2017-01-08 13:08:04 -05:00
Adam 46aeb8b70b os_list: show number of channels listed, too 2017-01-07 18:09:14 -05:00
Adam fe6271dffb ngircd: move metadata non-exietent user log message to debug 2017-01-07 18:04:07 -05:00
Adam 7cede5bb60 os_list: also allow patterns in nick!user@host#realname form 2017-01-07 18:03:53 -05:00
Adam 2b7f0084b7 Move log messages for status mode change for unknown user to debug 2016-12-22 20:59:04 -05:00
Adam ec7ce09ef4 Make User::Mask behave more like 1.8 2016-12-22 20:52:43 -05:00
Adam 574c8dfbc7 Fix previous commit, deleting sessions removes it from the map which invalidates the reference 2016-12-21 10:35:57 -05:00
Adam 4381031994 m_sasl: log hostname/ip, if provided 2016-12-19 19:03:10 -05:00
Adam b3010c3c6b logger: log source nick if there is no user or account 2016-12-15 08:24:40 -05:00
Adam d092f5e7c8 Fix detecting if chghost/chgident is loaded on inspircd and don't send them unless they are 2016-12-11 09:43:22 -05:00
Adam 358f46b8ae Fix setting kill quick in webcpanel 2016-12-11 09:34:37 -05:00
Adam e5125c2c84 Allow nonconfirmed opers to confirm accounts 2016-12-11 09:24:52 -05:00
Adam 65db59b3ec Remove unnecessary functions from ngircd that duplicate the default behavior, fix a few typos in comments 2016-12-10 23:28:50 -05:00
Adam 95cd7a6aee inspircd12: fix mode handler to handle opers changing other users umodes correctly 2016-12-01 19:10:46 -05:00
Adam 12515fd2c1 cs_access: fix typo 2016-12-01 19:08:39 -05:00
Adam 437a6dbb29 os_logsearch: optimize non wildcard searches, allow regex 2016-11-22 19:44:25 -05:00
Adam d96ca9b824 os_logsearch: add a hard max limit and make the limiter smarter 2016-11-22 19:35:11 -05:00
genius3000 aefde6e44d protocol/inspircd: Match servername as well on ENCAP 2016-11-22 02:26:41 -07:00
Adam 23a0628fba db_old: convert languages to UTF-8 encoded version 2016-11-11 13:30:22 -05:00
Adam ef9c69f99d Don't apply secureops to users with chanserv/administration privilege, not protected 2016-11-05 12:06:26 -04:00
Adam 8be331618c ns_group: allow userless execution 2016-11-05 11:07:02 -04:00
Adam a5fdf7c546 irc2sql: fix changing status modes to update ison modes 2016-11-05 10:36:28 -04:00
Adam dba19d839a cs_access: fix negative access to apply to the -1/0 special casing 2016-11-05 10:35:47 -04:00
Adam 7453c71c00 irc2sql: fix crash on shutdown with no sql 2016-11-05 10:34:25 -04:00
Adam f09ea316dd irc2sql: update max topic len to 512 2016-11-05 10:34:09 -04:00
Adam ac0f3c5ccf m_mysql: null empty columns instead of setting to '' 2016-11-04 22:56:15 -04:00
Adam 76ea111980 irc2sql: fix a couple SQL errors 2016-11-04 22:07:00 -04:00
Adam 9f9183afc4 help: always use command name from config, which may be a different case 2016-11-03 23:23:57 -04:00
Adam ef32505633 dns: set error to REFUSED when there are no answers 2016-11-03 23:15:07 -04:00
Adam 304494322f Don't apply secureops to protected users 2016-11-03 23:08:49 -04:00
Adam 9e510cd0d9 Fix userless /ns set email, #1689 2016-11-03 23:04:22 -04:00
Adam 0f49d1051a Don't try to include files with empty paths 2016-11-03 22:58:50 -04:00
Adam 4b97a9b13f Fix crash loading enc_old prior to the proto mods 2016-11-03 22:54:35 -04:00
Adam 07f72a3122 os_list: fix regex matching 2016-10-25 14:35:36 -04:00
Adam f4543edfe2 plexus: add noop and sasl support 2016-10-16 18:52:40 -04:00
Adam 095751363d db_sql: don't update objects pending creation as it duplicates it 2016-10-16 18:51:58 -04:00
Adam 1b67b97e93 ns_maxemail: equals_ci for comparing emails 2016-10-06 14:59:22 -04:00
Adam d4bf0957d1 inspircd20: specifially add channel modes official-join and operprefix as status modes, sometimes they are sent in CAPAB without a status prefix which causes them to be added as parameter modes 2016-10-04 21:45:45 -04:00
Adam 99acdcf168 cs_mode: check chanserv privilege too for status modes on set 2016-10-04 21:28:43 -04:00
Adam e95950ee26 cs_mode: make override logging of mode set more reliable 2016-10-04 21:13:43 -04:00
Adam fc0171fb40 memoserv: always use display for memo source 2016-09-30 21:03:35 -04:00
Adam 1c82697ccb Revert "Always use display for memo source"
This reverts commit d8a945b1a6.
2016-09-30 20:52:38 -04:00
AlphaTech f3bb46a9f5 MemoServ - Read All 2016-09-25 17:27:30 -04:00
Michael Hazell 3b62c8f3e2 InspIRCd: Send CHGIDENT/CHGHOST on SVSLOGIN 2016-09-25 14:50:03 -04:00
Adam 4d054aa2b2 Merge pull request #173 from genius3000/2.0-remove-expiretimeout-cs_seen
Thanks
2016-09-25 14:38:16 -04:00
Adam 3a8ff5d456 Merge pull request #177 from attilamolnar/2.0+sqliteleak
m_sqlite: Fix possible memory leak when opening a database fails
2016-09-25 14:37:01 -04:00
Adam 0b783b66a4 Merge pull request #178 from Techman-/2.0+resv
Thanks
2016-09-25 14:36:46 -04:00
Adam 0c7050c506 Merge pull request #175 from genius3000/2.0-email-date_header
Added a Date field to the Header
2016-09-25 14:35:43 -04:00
Adam d02b3c1c45 Merge pull request #176 from Alef-Burzmali/2.0+update-fr2
Thanks
2016-09-25 14:33:49 -04:00
Adam d8a945b1a6 Always use display for memo source 2016-09-14 17:24:06 -04:00
Adam b50fbec705 cs_seen: allow unregistered users to use 2016-09-13 12:36:48 -04:00
Adam d488efdcfe ms_cancel: cleanup, consider accounts by equiality instead of sender name to account name 2016-09-06 14:46:19 -04:00
Adam 13c5eec00a m_ssl_openssl: allow certificate chain files to be used 2016-09-05 10:41:52 -04:00
Michael Hazell 39eb9f8cfc ratbox: fix RESVs
Also, enable channel support because it wasn't specified already and point charybdis to these methods instead.
2016-09-04 04:05:11 -04:00
Thomas Fargeix 83c2f8e970 Update French language file. 2016-08-19 21:33:57 +02:00
genius3000 e23cf0c221 Added a Date field to the Header 2016-08-17 10:22:44 -06:00
Attila Molnar de174149f7 m_sqlite: Fix possible memory leak when opening a database fails 2016-08-17 14:09:05 +02:00
genius3000 663e79e4d3 Remove 'expiretimeout' from chanserv.example.conf
As seen within this commit: https://github.com/anope/anope/commit/22658d63bdb1e52a66f4514af45fa55ca5891345
'expiretimeout' is no longer set within cs_seen and I can't see it used elsewhere to be needed in the config.
2016-08-08 23:39:19 -06:00
Adam 2a5e7827bd Merge pull request #172 from bonnedav/patch-1
Thanks
2016-08-08 09:34:14 -04:00
bonnedav 9c0b843665 Remove unused commands from oper config. 2016-08-08 02:41:42 -06:00
Adam 8fdfa6e094 Fix #1684 more, can have non-user sources for encap sasl 2016-07-25 22:27:30 -04:00
Adam dad4be050b cs_xop: remove unused code 2016-07-25 19:35:19 -04:00
Adam 937b0e7185 db_old: fix warnings 2016-07-25 19:34:59 -04:00
Adam db4f38bcf5 Bump for 2.0.5-git 2016-07-23 17:37:05 -04:00
Adam c2e09fdaea Anope 2.0.4 Release 2016-07-23 16:26:14 -04:00
Adam 01768bc73e Update Changes.conf 2016-07-23 16:25:37 -04:00
Adam c18eedec18 ns_set: clear last modes before unserializing them 2016-07-23 16:20:54 -04:00
Adam 0e0615c6fe Note Windows installer fixes in changelog 2016-07-23 16:17:33 -04:00
Adam 5bd3fde79b cs_set: clear last modes before unserializing them 2016-07-23 16:17:21 -04:00
Adam 647f8cd4e6 Add/fix various checks on source user existing in the protocol modules 2016-07-23 15:47:33 -04:00
Adam b2e25db159 Merge pull request #171 from Techman-/2.0+charybdis-resv-fixes
charybdis.cpp: Properly support RESVs
2016-07-23 15:38:26 -04:00
Adam 9f9371531d Fix making directories from the Windows installer 2016-07-23 15:22:54 -04:00
Michael Hazell b578ed2544 charybdis.cpp: Properly support RESVs
Properly support RESV and UNRESV in Charybdis, and improve RESV setting for pseudoclients when bursting.
2016-07-21 23:27:20 -04:00
Adam 0a7f167060 m_dns: accept unpacking the root domain, and don't consider exceptions from nameserver/additional record unpacking as fatal to query parsing 2016-07-19 21:17:58 -04:00
Adam d427772bd3 os_defcon: find module by name, it might not be loaded yet 2016-07-10 20:51:03 -04:00
Robby b2d670298b Update the dutch language file. 2016-07-07 16:07:24 +02:00
Adam 6b646fa1f8 Update Changes 2016-07-03 13:57:11 -04:00
Adam 72269c44e5 Merge pull request #170 from Zoddo/charybdis/join0
Thanks
2016-07-03 13:47:49 -04:00
Adam 3b2366e4ba Merge pull request #169 from SaberUK/2.0+which
Use "cmake --version" instead of "which cmake" to detect CMake.
2016-07-03 13:46:41 -04:00
Adam 257a8a9a24 ns_maxemail: optionally remove gmail aliases 2016-07-03 13:42:18 -04:00
Adam 7a1d2e11dd chankill: don't add duplicate akills 2016-07-03 13:31:12 -04:00
Adam 8dc687b657 #1682: store aftype with masks and include cidrs in GetNUHMask 2016-07-03 13:29:27 -04:00
Adam 18fc113984 #1681 update last realname always on signon 2016-07-03 13:06:06 -04:00
Adam 20c1a5d638 #1680: fix Anope::Duration with one year durations 2016-07-03 12:42:16 -04:00
Adam 8000ae0c0f #1677 apply sqlines even if the ircd doesn't on non opers 2016-07-03 12:36:34 -04:00
Adam 284d95bfe2 #1675: fix saset display to update the account name on the correct clients 2016-07-03 12:27:01 -04:00
Adam c7d5ee4bec Fix /ns confirm to set +r/accounts when appropriate 2016-07-03 12:17:44 -04:00
Adam 4c4cc0ded7 Fix xmlrpc notice call to return something to prevent m_xmlrpc from thinking it is a http 404 2016-07-03 12:08:21 -04:00
Adam 83f89bfece Clarify botserv repeat kicker message and allow setting repeat times to 1 2016-06-25 13:04:32 -04:00
Adam 7cf4245359 Enable -fno-delete-null-pointer-checks on GCC 6 2016-06-22 20:20:28 -04:00
Zoddo 9284441491 Handle /join 0 for ratbox & charybdis 2016-06-02 12:23:26 +02:00
Peter Powell 7592a6981b Use "cmake --version" instead of "which cmake" to detect CMake. 2016-05-21 17:54:33 +01:00
Adam 56b158ea43 Fix handling nick introduction collisions on unreal4 2016-05-20 21:18:34 -04:00
Adam 0143dafe51 Merge pull request #165 from sketchni/patch-1
Add the notice method to XMLRPC.
2016-04-22 10:17:41 -05:00
Adam a2dbcc620e Merge pull request #166 from jmdh/2.0-reproducible
Optionally strip variable build date from compiled program
2016-04-22 10:17:11 -05:00
Adam 9b5fdea8f2 Fix randomnews to work when there are more than newscount random news 2016-04-22 11:15:42 -04:00
Dominic Hargreaves fab07d6b75 Optionally strip variable build date from compiled program
To aid build reproducibility, don't include the build date/time if
-DREPRODUCIBLE_BUILD is defined.

Based on the patch provided by Alexis Bienvenüe in the Debian report.

Bug-Debian: https://bugs.debian.org/820152
Patch-Name: reproducible_datetime.diff
2016-04-21 23:08:12 +01:00
Sketch 1d198da436 Add the notice method to XMLRPC. 2016-04-20 15:41:23 +01:00
Adam 8b6e17fe7e Change access check in cs_updown to not allow actions on users with equal access 2016-04-16 18:14:23 -04:00
Adam 86484b6c2b Merge pull request #164 from SaberUK/2.0+extras
Remove references to cmake-bin which was removed ages ago.
2016-04-16 16:59:21 -05:00
Adam c14ae99d32 Merge pull request #163 from Zoddo/fix_sasl_reauth
Send new account name to the IRCd on SASL reauth
2016-04-16 16:59:00 -05:00
Adam cb0cda2f8d Missed channel deletion in ~ChannelInfo 2016-04-16 18:00:47 -04:00
Peter Powell 2af363755a Remove references to cmake-bin which was removed ages ago. 2016-04-16 13:05:44 +01:00
Zoddo 753b8dc989 Send new account name to the IRCd on SASL reauth 2016-04-15 10:49:30 +02:00
Adam d2ea1e7917 Merge pull request #160 from Zoddo/charybdis/fix_euid
Fix host on charybdis if there is no vhost
2016-04-14 19:18:14 -05:00
Adam a8f66578b1 Merge pull request #161 from Zoddo/charybdis/vhost_svslogin
Send vident/vhost in SVSLOGIN with SASL
2016-04-14 19:17:39 -05:00
Adam ca39aeb554 Merge pull request #162 from SaberUK/2.0+sasl
Remove support for DH-AES and DH-BLOWFISH.
2016-04-14 19:16:56 -05:00
Adam a941f9bde0 Remove memos from memoinfo more reliably 2016-04-14 20:15:53 -04:00
Peter Powell f4f6787c9c Remove support for DH-AES and DH-BLOWFISH.
These SASL mechanisms are considered insecure and should not be
used anymore.
2016-04-13 20:26:50 +01:00
Zoddo 82816cb206 Send vident/vhost in SVSLOGIN with SASL
Only charybdis seems to support that for the moment.
2016-04-10 18:24:25 +02:00
Zoddo 58f0c8c612 Fix host on charybdis if there is no vhost 2016-04-10 17:53:53 +02:00
Adam 21e1913c0f Fix subtle typo in command initializer list 2016-04-05 16:01:16 -04:00
Adam 79e7c3f98a Also defer channel deletion when processing sjoins 2016-03-19 16:21:40 -04:00
Adam 72127e1b00 Merge pull request #159 from Diftraku/2.0
proto/charybdis: Add support for MECHLIST
2016-03-17 17:15:56 -05:00
Toni Kaija ed47588087 proto/charybdis: Add support for MECHLIST 2016-03-17 15:13:11 +02:00
Adam 448967cefc Merge pull request #156 from SaberUK/2.0+sasl-mechlist
Implement support for SASL 3.2 mechanism lists.
2016-03-15 17:41:48 -05:00
Adam 979027138b Merge pull request #155 from SaberUK/2.0+sasl-reauth
Fix logging into accounts with SASL on servers that support reauth.
2016-03-15 17:40:26 -05:00
Robby 176e0e4f37 Update the dutch language file. 2016-03-09 22:42:45 +01:00
Adam b431d4dccf cs_clone: don't clone registered time 2016-03-08 19:49:30 -05:00
Adam 1b12b80b48 language: incrementing _nl_msg_cat_cntr is still required on some systems apparently (freebsd 10?). I don't know why. 2016-03-08 19:47:06 -05:00
Peter Powell 52fdc45597 Implement support for SASL 3.2 mechanism lists. 2016-02-28 16:36:43 +00:00
Peter Powell 91762524e2 Fix logging into accounts with SASL on servers that support reauth. 2016-02-28 13:22:19 +00:00
Adam 413b38b1c1 Fail sasl external auth immediately if cert is empty 2016-02-13 18:25:04 -05:00
Adam ecdccd6ad6 And use account here, user might be null 2016-02-13 18:19:47 -05:00
Adam e0fd118b3e Fix access path changes in ns_alist from earlier 2016-02-13 18:11:03 -05:00
Adam c10d7bdada Update chanserv secure help to reflect more accurately what it does 2016-02-13 14:41:23 -05:00
Adam 4e2ca31cf5 Rewrite access path system to be simplier and use recursion
Show where access is "from" in chanserv/status
2016-02-13 14:16:29 -05:00
Adam addd2a1987 Correct umode +I change in Changelog, is for unreal 2016-02-11 08:36:12 -05:00
Adam 4071487f80 Merge pull request #154 from SaberUK/2.0+inspfix
Fix a low risk privilege escalation exploit on InspIRCd with m_autoop.
2016-02-11 07:03:55 -06:00
Peter Powell 9c17c2d818 Fix a privilege escalation exploit on InspIRCd with m_autoop. 2016-02-10 08:56:23 +00:00
Adam dd9fcca45d Anope 2.0.4-git 2016-01-30 18:50:28 -05:00
Adam d9c0a13caf Anope 2.0.3 Release 2016-01-30 17:27:31 -05:00
Robby 5daa84c7f9 Update the dutch language file. 2016-01-30 23:26:32 +01:00
Adam b12669487f Allow /ms read to get a comma separated list of memo numbers as help describes. Show message if no memos could be displayed. 2016-01-30 16:54:20 -05:00
Robby 0e9a1e87d0 The default xop access for PROTECTME should really be SOP, not AOP. 2016-01-29 19:42:10 +01:00
Robby f118960a25 Update copyright to 2016. This was done with:
find include/ src/ lang/ docs/ modules/ *.* Config -exec sed -i 's/-20.. Anope Team/-2014 Anope Team/i' {} \;

Added missing copyright headers to files that didn't have it yet.
Fixed some whitespace and blank lines along the way.
2016-01-28 20:24:49 +01:00
Adam 5d6a71b6d2 Regenerate language files 2016-01-28 08:15:38 -05:00
Adam 23fab4ad06 Revert "Regenerate language files"
This reverts commit e955db6e85.
2016-01-28 08:15:24 -05:00
Adam 825dc5be46 Revert "Updated and fixed the Greek language."
This reverts commit f451c6cbac.
2016-01-28 08:14:58 -05:00
Robby b6fb6410c0 Update the dutch language file. 2016-01-27 19:14:12 +01:00
Robby 45dfea5ad9 Document m_xmlrpc_main opers 2016-01-27 18:04:55 +01:00
Adam d0a5316c67 Remove default session exception expiry time 2016-01-25 11:51:31 -05:00
Adam 382ab84938 Merge pull request #150 from westor7/patch-1
Updated and fixed the Greek language.
2016-01-25 10:31:47 -06:00
westor f451c6cbac Updated and fixed the Greek language.
Updated and fixed all the non-fuzzy languages items, previously all of them was incorrect.
Added new credits.
2016-01-24 17:20:00 +02:00
Adam 9645f53dc8 Update m_ssl_gnutls Windows library version to libgnutls-30 2016-01-23 22:25:19 -05:00
Adam 41802c28c6 Fix m_sql_oper to compile from the cleanup of the other day 2016-01-23 20:45:10 -05:00
Adam 97a13081e9 Fix typo in changes 2016-01-23 20:44:50 -05:00
Adam 38fcf15d62 Put maxlogins logic a few other important places 2016-01-23 10:53:32 -05:00
Adam 75dd784538 Fix hybrid to compile 2016-01-23 10:53:22 -05:00
Adam e955db6e85 Regenerate language files 2016-01-23 10:37:23 -05:00
Adam a434651e75 Update Changelogs 2016-01-23 10:36:04 -05:00
Adam 7d674726c2 Merge pull request #145 from miwob/style+copyright
Style+copyright
2016-01-23 09:19:08 -06:00
Adam be50211ae6 Merge pull request #149 from miwob/SendSQLine
Update SendSQLine() in hybrid's protocol module to use non-capsulatet…
2016-01-23 09:18:41 -06:00
Adam faa8f57bb2 Merge pull request #148 from SaberUK/2.0+18mod
Error out if any 1.8 modules are in the the module directory.
2016-01-23 09:18:32 -06:00
Adam 8cf21191fb Merge pull request #147 from miwob/temporary_xline
Update SendSGLine() in hybrid's protocol module to add support for te…
2016-01-23 09:18:12 -06:00
Adam ae847bcaf0 Merge pull request #144 from miwob/chankill_example
example.conf: announce operserv/chankill as well
2016-01-23 09:17:56 -06:00
Adam c4bbef0af8 Merge pull request #143 from staticfox/grammar
hs_group: Fix grammar
2016-01-23 09:17:44 -06:00
Adam 7953274a88 Re-lookup access in webcpanel after deleting access as the old group might be invalid 2016-01-23 10:15:01 -05:00
Adam d8eb3d4937 Apply regex sqlines on connect too 2016-01-23 08:58:08 -05:00
Adam f91f375b70 Show akill/xline ids in view 2016-01-22 10:29:44 -05:00
Adam eac25d016a Include memo mail information in ms_info 2016-01-22 10:13:05 -05:00
miwob 2356a1caab Update SendSQLine() in hybrid's protocol module to use non-capsulatet RESV message 2016-01-20 19:18:52 +01:00
Adam 164b349ef9 Fix various inconsistencies/crashes related to having multiple opers configured for the same user through combinations of os_oper/config/m_sql_oper 2016-01-19 16:25:02 -05:00
Peter Powell 2e370f6ed5 Error out if any 1.8 modules are in the the module directory. 2016-01-19 21:07:34 +00:00
miwob 9d30e1d63f Update SendSGLine() in hybrid's protocol module to add support for temporary x-lines 2016-01-19 20:07:45 +01:00
Adam 4771af1cb8 Couple user find by nick fixes 2016-01-19 08:30:35 -05:00
Adam 9c9df2ad1f Document ns_no_expire nick default 2016-01-19 08:30:06 -05:00
miwob 7f418a58da hybrid.cpp: clean up style to match with other code; update copyright header 2016-01-13 16:23:22 +01:00
miwob 510045858f example.conf: announce operserv/chankill as well 2016-01-12 20:00:08 +01:00
Matt Ullman d270910ace hs_group: Fix grammar 2016-01-12 09:31:58 -05:00
Adam 10aeba2da2 Merge pull request #142 from Zoddo/unreal4/uid
[Unreal4] Use UID/SID instead of nick/servername when possible
2016-01-03 11:36:03 -06:00
Zoddo 4e675c50e5 [Unreal4] Use UID/SID instead of nick/servername when possible 2016-01-03 16:31:45 +01:00
Adam 0a37576270 Actually there is no account here 2016-01-02 17:19:08 -05:00
Adam 8f6f2a2c47 Add sasl log category for auth log messages 2016-01-02 17:15:26 -05:00
Adam 36a465473e Add IRCDMESSAGE_SOFT_LIMIT to MD handler 2016-01-02 16:38:25 -05:00
Adam 23a0ecd0c4 unreal4: add md handler, certfp support 2015-12-30 16:11:41 -05:00
Adam 601af1b0eb Unreal 4 changes 2015-12-30 12:42:12 -05:00
Adam fb2aae1b17 Copy unreal -> unreal4 2015-12-30 12:42:03 -05:00
Adam ac984af11a Move CanAdd() check to after mask sanitization as it will remove other entries that are considered "covered by" the new mask 2015-12-29 14:04:45 -05:00
Adam d6cbd64621 Remove run-cc leftover 2015-12-29 14:04:04 -05:00
Adam e6bdc5dddd Merge pull request #141 from miwob/2.0+cmode_T_nonotice
Add support for channel mode +T to the ircd-hybrid protocol module
2015-12-29 12:57:09 -06:00
Adam ba805e30b8 Include gecos in GetNUHMask 2015-12-29 13:53:44 -05:00
Adam 6e48b1d56f Fix saset language reply 2015-12-28 17:45:44 -05:00
Michael Wobst cd6401f628 Add support for channel mode +T to the ircd-hybrid protocol module 2015-12-26 13:29:18 +01:00
Adam a25f94456d Fix race with recovering and svsnicing nicknames. Wait for first svsnick to go through before issuing the second. Fixes users sometimes svsnick colliding when recovering nicknames. 2015-12-19 13:38:47 -05:00
Adam b5228282e1 Merge commit '593ec34' into 2.0 2015-12-13 19:59:29 -05:00
Matt Ullman 593ec34ff7 os_akill: Sanity check AKILLing before modifing the akill list 2015-12-13 19:58:40 -05:00
Adam 7ce0eb219b Fixup ecdd046c80 to compile 2015-12-13 19:52:50 -05:00
miwob 99282e65a6 hybrid.cpp:SendClientIntroduction(): use a valid IP address format. In the future ircd-hybrid will reject UID messages with invalid IP addresses 2015-12-13 19:48:22 -05:00
Adam d07e60b3da Merge pull request #136 from miwob/add+CanSQLineChannel
hybrid.cpp: add missing CanSQLineChannel = true; to the protocol options
2015-12-13 18:46:14 -06:00
Adam 3da2cdb496 Only special case level -1 to everyone and not everything <0 2015-12-13 19:43:21 -05:00
Adam ecdd046c80 Add some replacement tokens for akick reason and welcome notice 2015-12-13 19:37:24 -05:00
Adam 98b35dfab2 Document m_xmlrpc_main notice 2015-12-13 19:28:31 -05:00
Adam 56abaf8498 Add notice method to m_xmlrpc_main 2015-12-13 19:27:15 -05:00
Adam 5394f5433a Fix SendNumericInternal on inspircd sending to the user's uid if dest is a uid 2015-12-13 19:21:53 -05:00
Adam c414433fae Allow wildcard searching emails 2015-12-13 19:19:00 -05:00
Adam 16d08e57df Fall back to account vhost in hs on/off 2015-12-13 19:14:44 -05:00
Adam 252a65af7e Update LOG dir in anoperc 2015-12-08 14:06:08 -05:00
Adam d40edcae69 null xline manager when removing so removexline doesn't get called 2015-11-05 20:50:10 -05:00
Adam 4c1cc0e05d Cleanup after xlines if directly removed 2015-11-04 20:51:02 -05:00
Adam 80c332bc41 Fix logonnews to prioritize the newest entries if it can't show them all 2015-11-04 20:05:01 -05:00
miwob 5a25a3807b hybrid.cpp: add missing CanSQLineChannel = true; to the protocol options 2015-10-24 12:45:19 +02:00
Robby 27a2645ed3 Fix chanserv botmodes. 2015-09-25 02:40:28 +02:00
Adam 830361e97d Check privilege name is valid in SetLevel 2015-09-24 17:22:44 -04:00
Adam 93a92bb73b Clear regex xlines on unload, which happens on shutdown, even though they are perm modules 2015-09-23 14:55:28 -04:00
Robby b9dc44ae9a Update the dutch language file. 2015-09-18 06:04:42 +02:00
Robby f52bbe22af Update my email address. 2015-09-18 05:38:44 +02:00
Robby 96d7797134 Bold code 2 -> 002. 2015-09-18 05:25:20 +02:00
Robby 9810da9829 Fix some sentences to be more correct. 2015-09-18 04:53:49 +02:00
Adam 5692abb316 Don't prevent channel destruction because persist is set. Perm mode/a bot should be assigned anyway which will prevent it. Fixes deleting bots out of perm channels causing desyncs 2015-09-17 20:35:46 -04:00
Adam 2e65bd4012 Channel::DeleteUser delets the container 2015-09-17 12:31:02 -04:00
Adam 1ac4a1d9a5 Defer channel deletion until after i/o. There are some edge cases with events kicking users mid-event that can delete them. 2015-09-17 10:07:30 -04:00
Adam 8d13a355cd Remove associated oper blocks in os_oper when accounts are deleted 2015-09-14 13:43:14 -04:00
Adam 8c4eec2b6e Update topic lock help to reflect how it works 2015-09-14 12:39:59 -04:00
Adam 776207ba67 Don't allow suspended users to login to webcpanel 2015-09-14 12:35:26 -04:00
Adam 2f5e880e57 Don't update channel last used time from ns alist access check 2015-09-14 12:24:13 -04:00
Adam 94f781726e Don't assign bots when persist is set if we aren't synced sinec we might not know of all modes 2015-09-11 14:54:48 -04:00
Adam 054c227df0 Merge pull request #120 from Alef-Burzmali/2.0+nobackupok
Fix db_flatfile to read the "nobackokay" setting
2015-09-06 16:12:22 -04:00
Adam 907e192aab Merge pull request #126 from SaberUK/2.0+typos
Fix a ton of typos.
2015-09-06 16:11:50 -04:00
Adam d6d0c883b0 Merge pull request #128 from SaberUK/2.0+destdir
Fix support for passing relative install paths to CMake.
2015-09-06 16:09:29 -04:00
Adam 7f4327e8ba Merge pull request #129 from AlphaT3ch/placeholder
Placeholder left in French Translation
2015-09-06 16:08:17 -04:00
Adam 132932ffaf Merge pull request #134 from retsofaj/2.0
Have CMake first check for libraries in any additional locations
2015-09-06 16:03:58 -04:00
Adam c007b829f7 Don't unset modes which have no privilege associated with them 2015-09-06 16:01:43 -04:00
Robby 3b647b0740 When toggling NOEXPIRE for a nickname, show the actual nickname in addition to the account name. 2015-09-02 20:36:24 +02:00
Adam 7a21648683 Only remove collide timers if the account matches on id 2015-08-20 15:04:03 -04:00
Jason Foster 389c1dbd92 Have CMake check for libraries first in any additional locations and second in the standard locations.
This allows (e.g.) using the Homebrew-installed OpenSSL instead of the system version.
2015-08-12 20:26:02 -04:00
Adam d95189a4d8 Fix webcpanel/memoserv/memos with a nonexistent channel 2015-07-31 18:26:49 -04:00
Adam e65a22ae9d Fix use after free from unloading modules which are the last one holding onto an IdentifyRequest 2015-07-31 17:07:30 -04:00
Adam 4e8cc4f786 Make secureops help less weird 2015-07-30 19:47:00 -04:00
Adam dfc18db1dd Remove unused variables from m_ldap 2015-07-23 08:25:28 -04:00
Adam 63dbd7fbf0 Set LDAP_OPT_PROTOCOL_VERSION 3 etc on reconnect, too 2015-07-23 08:23:48 -04:00
AlphaTech c1cdefe1a7 Placeholder left in French Translation 2015-07-16 15:21:13 -04:00
Peter Powell cd9a2af65d Fix support for passing relative install paths to CMake. 2015-07-15 00:28:59 +01:00
Adam 7fe0543bc6 Also UnsetExtensibles on botinfo 2015-07-14 18:52:23 -04:00
Peter Powell 2a6ad3d9fc Refuse to configure with old compilers that can't build Anope. 2015-07-13 19:26:02 -04:00
Adam 38cbff4156 Fix cmake for 2.4 once again 2015-07-13 19:25:37 -04:00
Adam a86162f287 Fix incorrect iteration when destructing modelockimpls 2015-07-13 18:02:44 -04:00
Adam ceddb8370c Unset extensibles on larger objects when they destruct
Some complex extensibles require the full object to still be alive in
their destructors to keep proper bookkeeping
2015-07-13 17:59:14 -04:00
Thomas Fargeix 040b06ad56 Fix db_flatfile to read "nobackupokay" 2015-07-11 10:27:27 +02:00
Peter Powell 1666b1a8d8 Fix a ton of typos. 2015-07-08 11:06:02 +01:00
Adam 4362f53cc3 Fix unused variable warning in cs_clone 2015-07-01 20:16:59 -04:00
Dominic Hargreaves cc616a7146 Allow PROGRAM_NAME to be set during configuration 2015-07-01 20:10:15 -04:00
Dominic Hargreaves 0f01c04b02 Allow disabling installation of extra tools (with DISABLE_TOOLS) 2015-07-01 20:09:46 -04:00
Dominic Hargreaves 4cbdf9a73b Support DESTDIR
If DESTDIR is set it should be prepended to CMAKE_INSTALL_PREFIX. See
<http://www.cmake.org/cmake/help/v3.2/variable/CMAKE_INSTALL_PREFIX.html>
2015-07-01 20:08:51 -04:00
Adam fce257dc43 Merge pull request #121 from SaberUK/2.0+cmake-improvements
Various improvements to the build system.
2015-07-01 20:00:59 -04:00
Adam ad7601b0cc Merge pull request #119 from Jyzee/irc2sql-away
irc2sql: handle away messages.
2015-07-01 19:51:29 -04:00
Adam 5be9de5d12 Merge pull request #123 from Alef-Burzmali/2.0+cs-levels
Allow opers with chanserv/access/list to view the levels list
2015-07-01 19:50:26 -04:00
Adam 02ed9a9725 #1649 don't update keepmodes during inhbait 2015-06-29 19:35:57 -04:00
Adam 074f163750 #1643 Umode +I is oper only on Unreal 2015-06-29 13:57:32 -04:00
Adam de023bab0a Don't allow registering service nicks 2015-06-29 13:47:50 -04:00
Adam 510a746f8d Add ns_identify:maxlogins to limit the max number of concurrent logins per account 2015-06-29 09:37:09 -04:00
Adam 8eb46772e6 Don't allow loading hostserv mods if there can be no hostserv 2015-06-29 08:58:31 -04:00
Adam d563aa0da8 Check name validity after unpackname() to check for bad names in questins and ptr/cname rdata 2015-06-29 08:48:08 -04:00
Adam 3e3312db25 Don't allow adding or changing bots to collide with users 2015-06-29 08:42:29 -04:00
Adam bb5c4906cc Also clear vhost on hs_off so the proto mods don't have to 2015-06-21 10:42:49 -04:00
Adam 444976e64f Update host on hs off too
Protocol modules which don't trigger this by causing a mode change
currently desync
2015-06-20 17:33:13 -04:00
Thomas Fargeix 57b614ae59 Allow opers with chanserv/access/list to view the levels list 2015-06-14 19:33:45 +02:00
Peter Powell 2f9eabdb72 Remove support for run-cc.
This tool is not useful anymore. It just slows the build down.
2015-05-17 21:27:09 +01:00
Jyzee a458f7c840 irc2sql: handle away messages. 2015-04-30 19:29:44 +02:00
Adam 65bf84cfb5 When introducing opered clients on inspircd send a fake opertype 2015-04-28 15:23:31 -04:00
Adam 5efaa5b206 Merge pull request #117 from aFreshMelon/fix-xmlrpc-php
Fix xmlrpc php
2015-04-04 09:50:57 -04:00
Sebastian 41f4c7dab6 A variety of small improvements to xmlrpc.php
Pretty simple stuff.

* Better method names
* Better DocBlocks
* Lowercase variables
2015-04-04 09:43:51 +02:00
Peter Powell 0f1936f63d Fix matching the Apple Clang variant on CMake 3.0+ 2015-04-04 03:28:46 +01:00
Peter Powell 5baa6247a9 Don't overwrite CMAKE_INSTALL_PREFIX if it has already been set. 2015-04-02 01:43:05 +01:00
Peter Powell 82f5d1d61d Remove an old Autotools limitation.
This is not needed anymore as support for Autotools was removed.
2015-04-02 01:38:31 +01:00
Sebastian dd8dd3b4a0 Make xmlrpc.php comply with PSR-2 coding standard 2015-04-01 23:28:41 +02:00
Sebastian a718223585 Remove workaround that is no longer needed
This workaround was required previously but breaks the code with the corrections to the XML-RPC response.
2015-04-01 23:27:44 +02:00
Robby- abc4851287 Update the dutch language file. 2015-03-23 02:39:18 +01:00
Adam 3d1255dbe9 Anope 2.0.3-git 2015-03-22 21:22:49 -04:00
Adam a762391446 Anope 2.0.2 Release 2015-03-22 15:34:50 -04:00
Adam c070a00114 Fix m_ldap_oper to build 2015-03-22 15:34:49 -04:00
Adam e7c3090a70 Fix new version stuff with empty version extra 2015-03-22 14:38:29 -04:00
Adam 5dd6326eff Merge pull request #115 from aFreshMelon/aFreshMelon-patch-1
XML-RPC responses also don't have a methodName tag
2015-03-22 13:56:07 -04:00
Adam 535ad6fd70 Merge pull request #112 from attilamolnar/2.0+inspircdmlock
InspIRCd 2.0: Ensure ircd-side mlock and topic lock state is always what we think it should be
2015-03-22 13:56:01 -04:00
Robby- 5df4ac9a98 Make the signed kick/ban message format configurable. 2015-03-22 13:44:08 -04:00
Adam 4c54a3939f Change git version name back to what it was, which the core uses 2015-03-22 10:26:53 -04:00
Adam 3d09748d1c Fix typo in Changes 2015-03-22 10:26:26 -04:00
Sebastian Barfurth 36a4be7623 XML-RPC responses also don't have a methodName tag
Following http://xmlrpc.scripting.com/spec.html
2015-03-18 19:06:08 +01:00
Adam 5fc72660e4 Merge pull request #113 from attilamolnar/2.0+openssl
m_ssl_openssl: SSL context option changes
2015-03-12 17:53:52 -04:00
Adam 303e652a35 Only apply keepmodes on channel sync
Not sure why this was this way originally, it interfears with the
chanserv +r check to determine how new the channel is because it
restores +r. This seems to still work okay, though.
2015-03-12 17:52:38 -04:00
Adam e5447a8024 Update Changes.conf and Changes 2015-03-12 17:52:38 -04:00
Attila Molnar 1bee18fcf4 m_ssl_openssl: Allow disabling SSLv3 via the config 2015-03-12 19:35:07 +01:00
Attila Molnar a57e41304f m_ssl_openssl: Set sane default context options 2015-03-12 19:35:07 +01:00
Adam e0e8147ee0 Merge pull request #114 from anope/revert-99-extemp_protected
Revert "Added kickcheck override for users with protected privs"
2015-03-12 13:30:12 -04:00
Adam 41a24afa4f Revert "Added kickcheck override for users with protected privs" 2015-03-12 13:29:50 -04:00
Adam 4266d17e8c Update cmake version parsing code to deal with recent build version changes
Update Config.cs to no longer hardcode VS generators, it seems no longer necessary.
Fix new version system, cannot return C++ types from extern C functions
2015-03-12 11:20:18 -04:00
Adam 8d3fa47ab2 Merge pull request #99 from H7-25/extemp_protected
Added kickcheck override for users with protected privs
2015-03-12 08:15:59 -04:00
Adam 64781817ac Merge pull request #105 from miwob/master+use-uid-for-svsnick
- Change SendForceNickChange() to use UIDs
2015-03-12 08:15:49 -04:00
Adam 69c18f131f Merge pull request #106 from miwob/master+SendClientIntroduction
- Update SendClientIntroduction() to use * for account names instead of ...
2015-03-12 08:15:44 -04:00
Adam e030771cbc Merge pull request #107 from miwob/master+misc-hybrid-changes
- Misc updates to the hybrid protocol modules:
2015-03-12 08:15:38 -04:00
Adam 03f05d3948 Merge pull request #111 from aFreshMelon/fix-xmlrpc-response
Correct wrong XML response tag
2015-03-12 08:15:31 -04:00
Adam 32c4908c8c Document that m_ldap_authentication:disable_register_reason blocks grouping 2015-03-12 08:01:27 -04:00
Adam c5ff7c6868 Show passlen in PASSWORD_TOO_LONG 2015-03-12 08:00:12 -04:00
Attila Molnar 89257d9bce InspIRCd 2.0: Re-set server-side topiclock when an incoming METADATA topiclock from a bursting server changes it 2015-03-11 23:46:00 +01:00
Attila Molnar e47aacad0e InspIRCd 2.0: Re-set server-side mlock when an incoming METADATA mlock from a bursting server changes it 2015-03-11 23:46:00 +01:00
Attila Molnar 72ade225a7 InspIRCd 2.0: Pass use_server_side_topiclock and use_server_side_mlock references to METADATA handler 2015-03-11 23:46:00 +01:00
Attila Molnar a52af0d260 InspIRCd 2.0: Add METADATA handler, pass everything to inspircd12/metadata 2015-03-11 23:46:00 +01:00
Adam 92920f5a1c Only matches sqlines against channels if they begin with a # 2015-03-11 14:49:03 -04:00
Peter Tseng bf727285bc SendConfirmMail: Replace %E with new email
The old mailer message said the user is changing email "to %e", which is
changing TO the OLD email. But instead, the user is actually changing
the email to the new email.

We could change %e to be the new email, but maybe some users of Anope
have already configured their messages to assume %e is the old email. So
instead, add a new %E that is replaced with the new email.
2015-03-11 14:44:38 -04:00
Adam 310e95a92e Allow cs clone to clone levels too 2015-03-11 14:36:56 -04:00
Adam 78bff86dab Make cs_clone behave closer to how the help describes it 2015-03-11 14:24:42 -04:00
Adam 3f093d708f Normalize masks given to cs_kick, use entry to match them against users 2015-03-11 12:13:08 -04:00
Adam c3cc5804c3 Normalize masks given to cs_ban, use entry to match them against users 2015-03-11 11:26:12 -04:00
Adam dc58239c8a Remove cloak prior to applying vhost in insp20 fhost handler 2015-03-11 10:48:25 -04:00
Adam b67963353f Hide set desc because set description exists 2015-03-11 09:30:02 -04:00
Adam a899c04ec2 Strip color codes when looking up fantasy commands. 2015-03-11 09:16:32 -04:00
Adam fb17bc85ea Redesign m_ldap to no longer rely on undefined behavior
Accessing the same LDAP* from multiple threads at once is always
undefined, even if one thread is just polling ldap_result.

Instead keep one thread per connection and issue blocking queries on the
thread.
2015-03-11 08:48:08 -04:00
Sebastian Barfurth 474cd7a99b Correct wrong XML response tag 2015-03-07 19:05:41 +01:00
Adam 7de4b86b7f Move GIT_VERSION define to build.h, otherwise version.h is bumped per commit which forces a rebuild 2015-02-23 20:43:22 -05:00
miwob 76337bc04a - Misc updates to the hybrid protocol modules:
- best supported version is 8.2.x
  - fixed UID message handler to cope with account names being '*'
  - minium required TS version is TS6 now
2015-02-15 21:47:55 +01:00
miwob abe232601b - Update SendClientIntroduction() to use * for account names instead of 0 2015-02-15 21:33:22 +01:00
miwob 6ada3ec871 - Change SendForceNickChange() to use UIDs 2015-02-15 21:27:01 +01:00
H7-25 61a8dd57f7 Added kickcheck override for users with protected privs 2015-02-11 08:11:25 +01:00
Adam 94427b234c Merge pull request #102 from miwob/master+protocol-missing-modes
- Added some missing user modes to the ircd-hybrid protocol module
2015-02-10 19:18:46 -05:00
Adam fb3c819bee Merge pull request #103 from miwob/master+hybrid-misc-changes
Misc changes to the ircd-hybrid protocol module:
2015-02-10 19:18:40 -05:00
Adam f0c23e80a2 Merge pull request #104 from miwob/master+anope.de_DE.po-minor-update
- Minor update to anope.de_DE.po; removed double space + proper translat...
2015-02-10 19:18:30 -05:00
miwob 1e86c46000 - Minor update to anope.de_DE.po; removed double space + proper translation 2015-02-10 22:48:22 +01:00
miwob 2f49065500 Misc changes to the ircd-hybrid protocol module:
- Increase MaxModes to 6
  - SendLogout(): send "+d *" instead of "+d 0"
  - Update copyright year
  - Removed user mode +z from supported modes
2015-02-08 12:29:16 +01:00
miwob 41ae2dbefb - Added some missing user modes to the ircd-hybrid protocol module 2015-02-07 19:08:55 +01:00
Adam f44280a9c9 Merge pull request #101 from miwob/master+hybrid-protocol-no-globops-override
- Removed SendGlobopsInternal() override as it's basically a duplicate o...
2015-02-06 17:21:33 -05:00
Adam d147db9023 Merge pull request #100 from miwob/master+hybrid-protocol-cmode-ctcp
- Update ircd-hybrid protocol module to support channel mode 'C' (no CTC...
2015-02-06 17:21:30 -05:00
miwob f484a68dee - Removed SendGlobopsInternal() override as it's basically a duplicate of SendGlobopsInternal() in protocol.c 2015-02-06 20:28:30 +01:00
miwob 8550e22167 - Update ircd-hybrid protocol module to support channel mode 'C' (no CTCPs) 2015-02-06 19:39:31 +01:00
Adam 9834518b28 Fix os_mode to handle channels going away due to mode changes, and maybe cs_mode 2015-02-05 20:16:43 -05:00
Adam 64ca357b13 Make module version system work 2015-02-03 19:38:23 -05:00
Adam dc5039e994 Properly unescape xmlrpc 2015-02-03 18:42:35 -05:00
Adam 845ca576b4 More properly track topic change sources and allow users with access to change topics through topiclock 2015-01-28 22:57:15 -05:00
Adam 2264a206d2 Check virtual mode bases better 2015-01-26 15:10:18 -05:00
Adam d324e91520 Fix negatively locking param modes in default mlock 2015-01-26 13:16:25 -05:00
Adam 9ac1b4ba01 Merge pull request #98 from flotwig/patch-1
cs_entrymsg to use SET permission, not isFounder
2015-01-11 19:38:35 -05:00
Zach Bloomquist 7e0cb6d8ef cs_entrymsg to use SET permission, not isFounder
Correcting syntax error

(i don't actually know c++)
2015-01-11 19:29:33 -05:00
Adam 3055b7272b Fix m_xmlrpc server configuration option 2015-01-10 15:37:49 -05:00
Adam 969cd5dd6c Always use source name when logging server kicks 2015-01-10 15:29:19 -05:00
Adam 1f02278a1c Log user away messages 2015-01-10 15:24:48 -05:00
Adam 32007f81cf Add networkinfo:nick_chars option to allow configuring additional characters allowed in nicknames 2015-01-10 15:19:40 -05:00
Adam 609f87d39f Include botserv/* in default Services Administrator opertype to behave like 1.8 2015-01-10 15:19:40 -05:00
Adam e88925e587 Merge pull request #94 from webczat/2.0
Fix issue 1627.
2014-12-28 20:30:36 -05:00
Adam c46ec39e50 Only disable CMP0026 if it exists 2014-12-28 20:01:11 -05:00
Adam 9b2202dfee Merge pull request #93 from alexbarton/ngircd-fix-servertoken
ngIRCd protocol module: fix servertoken
2014-12-28 18:12:38 -05:00
Adam 03f6e26550 Merge pull request #95 from webczat/2.0x
fix chanserv.cpp using Get for bool extensible items
2014-12-28 18:11:37 -05:00
Adam c554e85063 Merge pull request #96 from webczat/termfork
Anope will now fork even when not started from a tty, like init scripts.
2014-12-28 18:10:40 -05:00
Adam 2892c9580f Replace spaces in opertypes with underscores in stats o 2014-12-28 18:09:37 -05:00
Adam 3c0994a89e Fix crash when non-users register channels 2014-12-28 18:08:58 -05:00
Adam e800afcfac Fix adding regmoderated mode twice in plexus 2014-12-28 18:08:39 -05:00
Adam 2ad697898f Disable CMP0026 warnings on cmake 3 2014-12-19 18:55:50 -05:00
Michał Zegan e4068249dd Anope will now fork even when not started from a tty, like init scrpits.
It is useful for init systems or startup scripts, because it allows easily waiting until services connect to the uplink, without them forking it wouldn't be possible to tell if they finished initialization or not unless they would communicate directly with init systems like systemd.
2014-12-12 19:53:30 +01:00
Michał Zegan d45cb5451e Fix issue 1627.
It required that the FHost message was rewritten for the insp20 protocol module instead of relying on inspircd12's version.
The insp20 version internally removes +x mode on host change.
2014-12-12 03:56:38 +01:00
Michał Zegan d9c9f2a407 Changed calls to Get() for bool extensible items to HasExt in the chanserv module, remove duplication of code. 2014-12-12 03:48:00 +01:00
Adam 7213413f8b Remove os exception move 2014-12-11 19:33:06 -05:00
Adam 516211c88a Add SAVE support to inspircd20 2014-12-07 19:32:21 -05:00
Robby- d576137f28 Update the dutch language file. 2014-12-07 17:42:00 +01:00
Adam e1f5e030bc Change webpanel access add to just add via the commands, split Command::Run into two so I can do this as I need to run named commands for it 2014-12-05 20:24:27 -05:00
Adam afffeb0a1d Update Kill() calls to pass source pointer instead of name 2014-12-05 17:27:08 -05:00
Adam 4fc71bb22f Link m_ldap against ldap_r not ldap 2014-12-02 15:49:14 -05:00
Alexander Barton d4732faf41 Correctly assign nicks to their respective host servers
Use the "server token" parameter of NICK commands to find the host server and
correctly assign the nick name to this server.

This allows Anope to correctly free all nick names again when (remote) servers
leave the network, which fixes arbitrary "KILL attacks" when such nick names
reconnect later on.

Initial debugging and patch by DukePyrolator, thanks a lot!
2014-11-30 21:50:11 +01:00
Alexander Barton 95684187b6 Fix server token assignment of servers in the network
1. the directly linked server, our upstream, always has token "1", and
2. for remote servers in the network, the token and description filds
   were interchanged during registration,

therefore up to now no server could be found by Server::Find() using its
assigned server token.
2014-11-30 21:49:34 +01:00
Adam 4f33b17f96 Move automatically identified for log message to users 2014-11-25 09:00:15 -05:00
Adam 0cdab86978 Set require_oper in /os oper 2014-11-24 22:10:12 -05:00
Adam 4f76bee273 Fix sid generator generating invalid sids after sid 999 2014-11-24 22:00:30 -05:00
Adam 8557a4161a Allow 0 ttb in flood kicker 2014-11-15 08:50:37 -05:00
Adam c9008cdafa Fix access dup check to account for accounts 2014-11-15 02:13:10 -05:00
Adam 8a7793da0c Fix bahamut mode handler 2014-11-08 04:31:56 -05:00
Adam 64b332730e Fix not removing zones from server->zones 2014-11-08 04:30:27 -05:00
Adam 36837330ae Fix typo in botserv.example.conf 2014-11-06 05:40:51 -05:00
Adam 8b64e46ef1 Show access denied if /os kick can't kick the target 2014-11-04 23:54:16 -05:00
Adam c4460784c2 Allow mlock to be enforced when unsetting defcon modes 2014-11-04 01:36:27 -05:00
Adam 408ec02406 Move chan register event prior to applying final mode changes, so cs_mode can set mlock on register. #1620 2014-11-04 00:09:00 -05:00
Adam 67fc8c3416 enc_bcrypt is no longer extra because it doesn't depend on external dependencies anymore 2014-11-03 23:50:40 -05:00
Adam fb2fd9e9d3 Fix log message when enabling botserv kickers 2014-11-03 23:45:22 -05:00
Adam 527e04275f Merge pull request #91 from Alef-Burzmali/2.0+fix-addakiller
Keep the akiller's name when updating the reason.
2014-11-03 23:43:50 -05:00
Adam c895bd2e59 Merge pull request #92 from Alef-Burzmali/2.0+update-fr
Update the French translation
2014-11-03 23:37:08 -05:00
Thomas Fargeix 94b2d1ac12 Update French language file. 2014-10-29 00:08:21 +01:00
Thomas Fargeix a76e074f6d Update the French install instructions. 2014-10-28 22:59:26 +01:00
Thomas Fargeix 2f004c2aab Keep the akiller's name when updating the reason.
The name of the oper issuing an akill or a sxline could be removed by updating the reason,
even though addkiller was enabled.
2014-10-24 23:49:02 +02:00
Adam b940077553 Validate credentials sent via sasl more 2014-10-16 21:38:46 -04:00
Adam c8ded08b43 Show extended strftime output for suspend info 2014-10-14 21:17:47 -04:00
Adam 62a01dcc87 Set access masks to the case of the nick they match, if any 2014-10-14 21:09:41 -04:00
Adam 0cd3bfa24f Fix module event prioritization which was broken with the newer
auto-attach event stuff.

Also remove logically dead code from os_defcon, and make os_defcon akill
similar masks to os_session when enforcing session akills.

Fixes #1618 which relies on os_session to be prioritized before
os_defcon.
2014-10-14 18:58:55 -04:00
Adam e46bcff324 Move nick register event to make it easier for modules to determine if a newly registered nick is confirmed or not. Add confirm event. 2014-10-12 19:25:39 -04:00
Adam 67719e8db1 Add exempts and optionally allow authenticated users past m_dnsbl 2014-10-12 15:03:51 -04:00
Adam 48be41cf7b Squit uplink when I receive an squit for myself 2014-10-12 14:34:15 -04:00
Adam 5ceee5df38 Hide dumb user notice if we are quitting 2014-10-12 14:32:17 -04:00
Thomas Fargeix 1c12976958 Add an operserv/oper/modify privilege.
The operserv/oper command privilege allows to add operators
with fewer or the same privileges as ourself.
This new privilege allows to have operators who can use operserv/oper
to see the list of operators and their privileges, but cannot add new
operators.
2014-10-12 10:54:11 -04:00
Thomas Fargeix 96583892c6 Add a chanserv/access/list privilege
Replace the existing chanserv/access/list command access,
only used in cs_xop, by a privilege with the same name.

It which allows read-only access to cs_access, cs_flags, cs_xop
and cs_akick, while the already-existing chanserv/access/modify
privilege allows to modify them.
2014-10-12 10:52:48 -04:00
Robby- 0991d4e199 operserv.example.conf: Add missing permission definition to os_defcon's command. Fixes bug #1617. 2014-10-09 23:35:38 +02:00
Adam 58233fb8bc Log when memos are sent 2014-10-06 14:06:36 -04:00
Adam be928b5bbc Clean up collide timers on identify, otherwise you can login and logout before the timer tick which will still enforce the collide 2014-10-06 14:06:36 -04:00
Adam 31bc1d6b82 Don't add duplicate akills in os_session 2014-10-06 14:06:36 -04:00
Adam 829ef1b7bd Clear pending collided state on release, fixes colliding users using recover into enforcers 2014-10-06 14:06:36 -04:00
Adam b068874f40 Add a confirmation reply to ns recover on an unidentified user with svsnick 2014-10-06 14:06:36 -04:00
Adam 18b3c572f4 ngircd doesn't allow sourceless messages 2014-10-06 14:06:36 -04:00
Adam af034928cb Remove auto cmake downloader Config stuff, which randomally doesn't work on some systems for no reason 2014-10-06 14:06:36 -04:00
Adam 8d40a750cc Update INSTALL to reflect cmake requirement 2014-10-06 14:06:36 -04:00
DukePyrolator 6a3f7c01b1 changed the engine of the chanstats table from InnoDB back to MyISAM to avoid increasing the auto_increment counter on each INSERT IGNORE. For existing tables please manually run 'ALTER TABLE anope_chanstats ENGINE=MyISAM'. 2014-09-14 11:36:05 +02:00
DukePyrolator 4c2bf72cb6 fixed typo in the last commit 2014-09-14 11:12:54 +02:00
DukePyrolator 8e7b742ec7 added missing support for operonly and silentoperonly in os_defcon 2014-09-14 11:11:22 +02:00
DukePyrolator 19b47c7bae fixed a possible crashbug in the german language file 2014-09-13 13:06:56 +02:00
Adam 3bdc81348a Fix unserializing badwords to not add dupes when unserializing an existing bw object 2014-09-01 13:11:21 -04:00
Adam bf8f62c32d Change Channel::GetModeList to return a copy of the mode list, not a
pair of lower/upper bound iterators.

Sometimes when iterating the list, like in cs_mode, we can modify the
contents of it, which combined with mlock always agressively trying to
readd modes to it can do bad things.
2014-08-24 16:39:04 -04:00
Robby- d417241a5b cs_set: Fix logging for SET SUCCESSOR to correctly log overrides. 2014-08-11 20:16:42 +02:00
Adam e5cb2018e5 List opertypes in /os oper info 2014-08-03 19:15:08 -04:00
Adam df6095fed2 Make botserv fantasy override its own privilege 2014-08-03 19:10:15 -04:00
Adam 8210e82a5e Fix some botserv help entries from showing when they shouldn't 2014-08-03 19:08:12 -04:00
Adam d6d72cd803 Add cs_mode:max config option 2014-08-03 18:57:00 -04:00
Adam 063d9bf5f6 Allow "modify" in flags to be optional 2014-08-03 18:33:56 -04:00
Adam 830e8617e6 Allow "set" in topic set to be optional 2014-08-03 18:28:54 -04:00
Adam cf89e10a4c Add ms_ignore:max config option 2014-08-03 18:22:03 -04:00
Adam 6842ad36f7 Do not allow unconfirmed users to send memos or request vhosts 2014-08-03 18:05:41 -04:00
Adam 24f17de4aa Fix stats u on Windows 2014-08-03 18:03:07 -04:00
Adam bbb04d4662 Fuzzy italian signkick help 2014-08-01 16:12:41 -04:00
Robby- 20052247c3 Regenerate anope.en_US.po 2014-07-27 08:05:54 +02:00
Robby- 8b61a529a2 Update the dutch language file. 2014-07-27 07:48:50 +02:00
Robby- 1137c50095 Fix a few help messages. 2014-07-27 07:34:02 +02:00
Adam 52d422d020 Merge pull request #81 from miwob/master+invite_ts
hybrid.cpp: add our own SendInvite() which sends the channel's timestamp...
2014-07-26 13:41:47 -04:00
Adam 43c460e593 Merge pull request #85 from attilamolnar/2.0+help
Correct the help text of options:useprivmsg ("defmsg" -> "msg")
2014-07-26 13:40:58 -04:00
Adam 17ba13bc95 Use ts version of services stamp when the account is unconfirmed on Unreal as 3.2.10.4 has changed thie behavior 2014-07-26 13:28:43 -04:00
Adam 60229b15d2 When object unserialization fails (due to not having dependency objects) bump the ts to try again later. 2014-07-26 13:24:52 -04:00
Adam 3c88f3b8cf Check modetimes in CheckModes before enabling bouncy modes 2014-07-15 17:02:14 -04:00
Adam 93cb5d06db Fix channelcount with clone 2014-07-11 01:02:02 -04:00
Adam 7a64d95f7c Fix Log() calls in m_ldap_oper 2014-07-11 00:22:32 -04:00
Attila Molnar ff66e15f38 Correct the help text of options:useprivmsg ("defmsg" -> "msg") 2014-07-04 04:39:12 +02:00
Adam 07902c03fd Check that the list of items isn't NULL when destructing types 2014-06-28 23:15:59 -04:00
Adam d9949320c7 Don't try to setuid down until after we signal the parent to exit, unless we're not forking. Also don't issue the run as root warning if we're going to setuid later. 2014-06-28 23:15:59 -04:00
Robby- b0ec178e85 Merge pull request #84 from Zantox/2.0
Minor cs_unban Lang Update @Robby-
Updated HostServ Command English Language
Updated ChanServ Command English Language
Updated BotServ Command English Language
2014-06-26 22:17:51 +02:00
Zantox f753a925ad Minor cs_unban Lang Update @Robby- 2014-06-26 22:14:10 +02:00
Zantox 74dbfe0699 Updated HostServ Command English Language 2014-06-25 02:16:09 -04:00
Zantox 3bea089793 Updated ChanServ Command English Language 2014-06-25 02:09:43 -04:00
Adam ff93355af8 Hold a reference to the type in Serialize::Checker in the event it goes away, and invalidate the type pointer of objects when the type goes away 2014-06-23 15:44:06 -04:00
Zantox 8fecad3039 Updated BotServ Command English Language 2014-06-23 07:47:26 -04:00
miwob 37bd2c238e hybrid.cpp: add our own SendInvite() which sends the channel's timestamp along the INVITE command. INVITE with channel TS will be mandatory in some future release of ircd-hybrid 2014-06-19 16:27:05 +02:00
Adam 9a947fa435 Correct some language strings 2014-06-17 08:37:19 -04:00
Adam 4f7868b125 Log more when unable to backup databases in db_flatfile 2014-06-15 04:50:26 -04:00
Adam 8066378471 Fix WindowsGetLanguage() 2014-06-10 22:00:26 -04:00
Adam ab27b792b0 Track SVSKILL on unreal 2014-06-09 17:18:21 -04:00
Adam f1c3bdd55e Correct wording of log message when ldap services are created 2014-06-09 17:16:55 -04:00
Adam 08edb15bea Fix help log output example 2014-06-09 16:44:15 -04:00
Adam 56c6ef4449 Fix information leak in cs_updown 2014-06-09 16:36:49 -04:00
Adam 6526d2d8b3 Fix Windows release build with gettext 2014-06-01 13:53:32 -04:00
Adam 76ab5c2c38 Update WIN32.txt reflecting new Windows stuff 2014-05-31 23:54:50 -04:00
Adam 54e98f017c Always log when the uplink socket errors, and give possibly helpful advise 2014-05-31 21:17:46 -04:00
Adam bb7706d0f7 Anope 2.0.2-git 2014-05-31 19:09:23 -04:00
Adam 16e0b72d2d Update FindGettext.cmake for new Windows stuff and fix language.cpp
compile
2014-05-31 18:30:50 -04:00
Adam b578e32531 Anope 2.0.1 Release 2014-05-30 20:57:32 -04:00
Adam 4d8e3b847d Fix f627a3bacd, really make BotInfo::Part fire events like the normal user part message does 2014-05-30 20:57:23 -04:00
Adam eaade23f9b Update language files 2014-05-30 18:14:55 -04:00
Adam f20bac996d Fix Windows build and update library names to the newer ones.
Also fix crash on Windows when unloading a module because it threw an
exception.
2014-05-30 18:14:55 -04:00
Adam 93bfd4cbe1 Updates Changes and Changes.conf 2014-05-30 16:16:54 -04:00
Adam 6620f9e9bd Don't allow setting -y on inspircd, secureops etc will try to enforce this 2014-05-30 15:16:03 -04:00
Adam dc64cfc940 Remove version.log 2014-05-30 15:16:03 -04:00
Adam f8829783d2 Queue the grouped nicks to update when NickCore::SetDisplay is called, since they serialize the display field 2014-05-30 15:16:03 -04:00
Adam d6e600f74b Fix access check in ns_group 2014-05-30 15:16:03 -04:00
Adam 5f7113bc0e Merge pull request #80 from attilamolnar/2.0+exampleconf
Fix the name of the SSL modules in comments in modules.conf.example
2014-05-30 15:15:43 -04:00
Robby- dc4daa25a7 example.chk: Use a more reliable way to detect if services are running. 2014-05-30 18:27:15 +02:00
Robby- 0cadaedfbe Update the dutch language file. 2014-05-30 18:24:42 +02:00
Attila Molnar 11ad788dfd Fix the name of the SSL modules in comments in modules.conf.example 2014-05-30 18:12:26 +02:00
Adam 38a60d9142 Merge pull request #78 from H7-25/it_IT
Updated italian lnguage file
2014-05-28 13:48:19 -04:00
Adam e8ad509aa5 Fix dlerror() on Windows and do not abort if err is not set 2014-05-27 12:55:03 -04:00
Adam 37b3ed8ef3 Do not normalize extban masks 2014-05-27 12:55:03 -04:00
Adam a6af422184 Set timer owner for nickserv timers 2014-05-27 12:55:03 -04:00
Adam 53acb73193 Fix default db name in db_flatfifle in a couple places 2014-05-27 12:55:03 -04:00
H7-25 57f6d4f49c Updated italian language 2014-05-22 21:24:38 +02:00
Adam d0467adea2 Merge pull request #79 from Jyzee/langFR-Patch
Make command group descriptions translatable.
2014-05-22 13:21:46 -04:00
Jyzee 16924f68c0 Update french language file. 2014-05-22 19:05:25 +02:00
Jyzee d280c48e6b Regenerate french language file. 2014-05-22 19:04:26 +02:00
Jyzee f0c0daa644 Make command group descriptions translatable. 2014-05-22 19:00:56 +02:00
Adam 7a2d027e1d Fix deflanguage from 4034b3054a, this shouldn't have been removed 2014-05-21 10:47:50 -04:00
Adam f627a3bacd Core prep for p10 stuff 2014-05-21 08:50:40 -04:00
Adam 5a1257b7f0 Fix extra space in log messages with logtype channel and no source 2014-05-21 08:40:54 -04:00
Adam 866f3f32ab Speed up akill xline checks
Cache xline nick, user, host, etc instead of rebuilding it everytime its
requested. Store users ip in sockaddr form and not string form to
prevent having to rebuild sockaddrs when checking xlines.

Also do not try to convert empty config values in Config::Get as this
can be rather common if a non string configuration value is not set, and
the cost of the ConvertException is great.
2014-05-20 21:16:00 -04:00
Adam 20ce170024 Show account names in log messages 2014-05-20 12:19:26 -04:00
Adam 4034b3054a Add English language file which users can edit to modify language strings 2014-05-20 11:41:05 -04:00
Adam e581158645 Fix two compile warnings in access.cpp on newer compiles 2014-05-20 10:00:34 -04:00
Adam 01021131ca Also search channel descriptions and topics in /cs list 2014-05-20 09:52:26 -04:00
Adam 13ea98a02e Fix server usercounter not being incremented when servers are bursting 2014-05-19 22:46:28 -04:00
Adam db56a61f86 Fixup previous commit when serializing access entries 2014-05-19 22:45:45 -04:00
Adam df321a118e Fix access lists showing the wrong mask if the display nick for a group
expires but the group still exists. This can cause access entries for
nicks to not be deleted whenever the nicks are deleted.
2014-05-14 19:10:23 -04:00
Adam 1931fcf0e5 Fix webpanel mode list to only show real list modes 2014-05-13 22:59:41 -04:00
Adam 63b02b8c97 Sanitize nuh masks more to prevent the other side from rewriting them, which screws with our internal tracking of them 2014-05-13 22:57:53 -04:00
Adam 1c8a77ab9f Accept an optional reason for svspart 2014-05-13 19:52:05 -04:00
Adam 0c7d53f81e Don't show both online from's if they have the same mask in ns_info 2014-05-13 18:38:14 -04:00
Adam bcc3ae5742 Merge pull request #76 from miwob/master
Update ircd-hybrid protocol module
2014-05-13 17:50:07 -04:00
Adam 4e67e0897a Merge pull request #77 from Cronus89/patch-2
Update Paramater length for os_dns to fix DNS SET
2014-05-13 17:47:33 -04:00
Michael Wobst 76a9538441 Fix compile warning in base64.cpp:B64Encode
/home/ircd/anope/src/base64.cpp: In function ‘void Anope::B64Encode(const Anope::string&, Anope::string&)’:
/home/ircd/anope/src/base64.cpp:85: warning: ‘input’ is used uninitialized in this function
2014-05-13 18:28:53 +02:00
Cronus89 91c7862579 Update Paramater length for os_dns to fix DNS SET 2014-05-13 11:12:00 -05:00
Michael Wobst 6b6bc81999 Update ircd-hybrid protocol module 2014-05-13 18:00:10 +02:00
Adam 1f2c385bb9 Add config options to ns_suspend and cs_suspend to configure which information is shown to non opers 2014-05-01 21:03:32 -04:00
Adam d79dd0b7d7 Pass password to nick register event so modules like m_ldap_authentication can create the respective account using the decrypted password which might not always be available 2014-05-01 18:38:17 -04:00
Adam 8b2e8137f6 Merge pull request #75 from attilamolnar/2.0+inspircd-globops
InspIRCd 2.0: Recognize GLOBOPS in CAPAB CAPABILITIES
2014-05-01 18:19:23 -04:00
Adam 732466d8f4 Merge pull request #74 from attilamolnar/2.0+fix-os-stats
Fix undefined symbol error when loading os_stats, caused by 82008d50
2014-05-01 18:19:01 -04:00
Attila Molnar 3049916ade Fix undefined symbol error when loading os_stats, caused by 82008d507c 2014-04-30 01:15:10 +02:00
Attila Molnar 0afd666f22 InspIRCd 2.0: Recognize GLOBOPS in CAPAB CAPABILITIES 2014-04-29 22:55:10 +02:00
Adam 8021a53ac4 Fix misc help output to not be case sensitive 2014-04-26 18:30:54 -04:00
Adam 0663f5e412 Fire the on user quit event when bots are deleted too 2014-04-26 17:45:16 -04:00
Adam 2ee496b8ac Change the "does not expire" string in ns_group to NO_EXPIRE which is translatable 2014-04-26 17:30:58 -04:00
Adam 3abb18721b Accept non server sources for SQUIT 2014-04-26 17:21:33 -04:00
Adam 4eb0a3bdb7 Fix ModeManager::RebuildStatusModes, not all modes are in GetChannelModes() at the time this is called 2014-04-26 15:24:19 -04:00
Adam 6a03eb69eb Add "virtual mode" support
This allows fully tracking extbans and other modes set by a different
underlying mode, such as InspIRCd's namedmodes

Add two configuration options to cs_ban to configure which mode is set
and whether or not to kick banned users.

Add default "mute" fantasy command to botserv.example.conf
2014-04-25 16:51:06 -04:00
Adam 4fa2a00bd5 Close timed out proxyscan sockets better 2014-04-25 16:47:10 -04:00
Adam 82008d507c Fix Stas::Unserialize to return the instance 2014-04-25 16:46:37 -04:00
Adam 2ab4f175a8 Don't allow users to join channels they are already in 2014-04-25 16:20:23 -04:00
Adam c9473bcc67 Fix botserv/kick/bolds desc 2014-04-24 17:10:06 -04:00
Adam 75ed5a9b59 Fix os_stats counters not saving with db_sql_live. Bleh. 2014-04-24 01:50:50 -04:00
Adam f010ab7dbf Resend ircd login name on /ns set display 2014-04-24 01:40:56 -04:00
Adam 00b2cc9ce6 Require at least user@host format for akills. Fix XLine::GetHost() not returning anything if an xline only has a host 2014-04-24 01:38:45 -04:00
Adam d52cc7bcbc Bug #1587 - fix bot change not properly reintroducing clients 2014-04-24 01:25:25 -04:00
Adam 63838fa77d Merge pull request #72 from attilamolnar/2.0+svsnickfix
Fix SVSNICK target being a nick even when UIDs are available
2014-04-20 02:03:03 -04:00
Attila Molnar e36f8143e3 Fix SVSNICK target being a nick even when UIDs are available 2014-04-19 14:35:50 +02:00
Adam 72b26043b2 Remove unused event.
Mark some oper only usermodes as oper only.
Fix reading SID in TS6_SID_Retrieve
2014-04-18 02:21:06 -04:00
Adam f369157906 Use OnChanRegistered instead of OnCreateChan to set default mlocks.
Because OnCreateChan is called from ChannelInfo's constructor, during
DB loading it could cause mode locks to be unserialized without having
all channels loaded, which breaks things.
2014-04-17 16:58:04 -04:00
Adam ba46b8e4ab Merge pull request #70 from Jyzee/langFR-Patch
Update French language file.
2014-04-09 02:26:24 -04:00
Jyzee 254901aace Update French language file. 2014-04-09 07:49:14 +02:00
Adam c1c45a5db9 Do not clear all extension items tied to objects when unserializing.
Instead, pass the old object to the unserialization functions and let
them incrementally update the object.
2014-04-07 15:28:07 -04:00
Adam a65e95837f Document that memo_mail can be in nickserv defaults. These should move to memoserv.conf one day. 2014-04-06 23:13:46 -04:00
Adam 43219d3906 Do not apply module changes on rehash until after the new config has been applied. Fix renaming opertypes on reload. 2014-04-06 23:01:10 -04:00
Adam 1f8dec4c24 Fix /os mode to not require a mode when setting param modes which taken no argument when setting 2014-04-06 18:09:36 -04:00
Adam fb5c5e3442 Set minus no arg on +l in all proto mods
Set oper modes/vhost on oper too, evan after iding
Add umode +q to plexus
2014-04-02 22:37:35 -04:00
Adam e357c39774 Add travis config 2014-04-01 23:34:02 -04:00
Adam 10732baec2 Fix compile error in cs_set_misc with C++11 enabled 2014-03-31 22:41:02 -04:00
Zantox 068c6989de Small Grammar Fix 2014-03-31 20:19:03 -04:00
Adam 317d55f3f1 Fix ns_set password to read the correct parameter.
Even though 1 is past the "end" of the vector, because vectors never
shrink and due to how the command parser works, it is always less than
the capacity, and almost always contains what is in params[0] (though
this is of course implementation dependant), which is why this was not
identified sooner, as it executes cleanly under valgrind on every machine I can find.
2014-03-31 20:11:36 -04:00
Adam 1397fda786 Bump to Anope 2.0.1-git 2014-03-31 20:10:51 -04:00
Adam 4ccc478830 Anope 2.0.0 Release 2014-03-23 08:58:02 -04:00
Adam 100ecbb9be Update version.log 2014-03-23 08:57:19 -04:00
Adam cdf636e696 Regen langauge files 2014-03-23 08:57:08 -04:00
Robby- 45878bf182 SASL: Also disallow suspended nicks to login using EXTERNAL mechanism. Improve the log message for failed logins. 2014-03-22 21:14:02 +01:00
Adam f1bec3999d Do not allow SASL login to suspended nicks 2014-03-22 07:21:22 -04:00
Adam a259244297 Make bouncymodes harder to trigger by only bumping server modcount when something changes 2014-03-20 10:53:27 -04:00
Adam c1da009de3 Show a better log message when disconnecting from the uplink 2014-03-19 02:40:48 -04:00
Robby- 4f412bc213 cs_set_misc: Add missing override capability for services operators, and logging. 2014-03-19 03:05:54 +01:00
Robby- 1882916dc4 Update the dutch language file. 2014-03-17 01:15:28 +01:00
Robby- f436ce9912 m_ssl_gnutls: Fix deprecation warnings when using newer GnuTLS versions. 2014-03-17 00:58:51 +01:00
Adam ef9729fb02 Mark all channels as syncing when we connect to our uplink. They will
finish syncing later when the uplink syncs. Normally the channel state
is fully synced here anyway, except if we do not know the modes the
uplink has yet.

Also fix a related issue with resetting chanels and bouncing modes on
our clients, if this is done prior to knowing which modes exist it would
silently fail.
2014-03-14 22:13:04 -04:00
Adam 296a75f2a9 Do not allow users to add certs that other users are using. Only allow adding certfps if the user is using it. 2014-03-13 20:07:50 -04:00
Adam bce7237d9f Set LDAP_OPT_NETWORK_TIMEOUT to 0 in m_ldap to prevent the asynchronous
library cals from blocking...

Fix multiple possible null pointer derefs if modules pass null
interfaces (none currently do, but it is allowed)

Fix memory leak from results when services are destructed

Timeout queries that never come back.
2014-03-11 09:45:34 -04:00
Robby- 85834e19dc Update the dutch language file.
ns_maxemail: Bold code 2 -> 002.
2014-03-10 22:30:41 +01:00
Adam ca6b3723a9 Merge pull request #64 from ShutterQuick/2.0+hsgroupsync
2.0+hsgroupsync
2014-03-10 07:32:24 -04:00
Adam 23b1086072 Merge pull request #63 from alexbarton/ngircd-fix-KILL
ngircd protocol module: really kill users
2014-03-10 07:31:34 -04:00
Adam 860deb14ce Do not send unregistered notice to users who are logged in, even if their nick isn't registered 2014-03-10 07:26:09 -04:00
Adam 62885fa462 Set nickserv's modesonid on login too 2014-03-10 05:04:25 -04:00
Adam 3fef01e35b Fix compile error in m_sasl_dh-aes and m_sasl_dh-blowfish on unusually old g++ versions 2014-03-10 04:56:17 -04:00
Adam b0597e35ec Do not allow nickserv/ungroup to bypass ns_maxemail, and allow opers to bypass ns_maxemail 2014-03-10 04:31:08 -04:00
Adam 8d1ad6fbe5 Make nickserv/glist show the correct expire time for unconfirmed nicks 2014-03-09 22:59:16 -04:00
Adam 750569201a Add missing space to session exception expiration message 2014-03-09 22:56:25 -04:00
Adam 1a1a781b72 Remove mail:restrict as it is no longer useful. Changes nickserv/resetpass default to allow normal users to use it. 2014-03-09 10:07:13 -04:00
DukePyrolator 4b5ce8a972 irc2sql: removed the currentusers field from the chan table, keeping it updated on each join/part eats too many ressources 2014-03-09 04:55:35 +01:00
Daniel Vassdal 98cfdd26c4 ns_group: Don't require a nick param when logged in 2014-03-06 04:55:30 -08:00
Daniel Vassdal 051a42b547 hs_group: Allow automatic HS GROUP-ing on NS GROUP, and allow vhosts to be per account rather than nick. 2014-03-06 04:55:30 -08:00
Adam 220e278213 Open database files using std::ios_base::binary in db_flatfile, which Windows can require 2014-03-05 20:23:44 -05:00
Alexander Barton 547fe0da1a ngircd protocol module: really kill users
ngIRCd doesn't send a QUIT for each user KILL'ed, so kill them immediately.
2014-03-05 10:26:54 +01:00
Adam 09bec79b47 Fix 2 crashes from removing the permanent channel mode from channels which do not exist 2014-03-04 04:15:32 -05:00
Adam 55a5affcb8 Do not allow guest nicks to exceed nicklen, and use a default enforcer ident/host if none is provided 2014-03-04 04:15:32 -05:00
Robby- a8b4297023 Update the dutch language file. 2014-03-03 19:20:56 +01:00
Adam 5969362425 When unserializing channels with persist, set their ts=now. If we are supposed to lower it later we will then. 2014-03-01 22:41:45 -05:00
Adam 3ceae33b16 Convert limit and key mlocks in db_old 2014-03-01 21:56:26 -05:00
Adam 5de4c1fc97 Set +x on plexus when vhosts are activated, fix desync from /hs off 2014-03-01 21:40:47 -05:00
Adam fd109048dd Make db_old load entrymsg 2014-03-01 21:20:32 -05:00
Adam a0747516ce Export interface for cs_entrymsg 2014-03-01 21:20:18 -05:00
Adam 605e1f2a03 Make chanserv/invite show who invited you 2014-03-01 21:12:27 -05:00
Adam dc23c58869 Fix botserv help to show the correct fantasy characters 2014-03-01 21:11:58 -05:00
Adam b7e646ec83 Allow opers with chanserv/administration to use fantasy, even if they don't have the access for it 2014-03-01 20:02:17 -05:00
Adam 4d54358745 When unserializating channels and persist is set, only assign chanserv if the perm channel mode doesnt exist 2014-03-01 19:59:40 -05:00
Adam ed0882ec04 Do not enforce mlock when enforcing mlock 2014-03-01 18:39:10 -05:00
Adam 526c4e4659 Check modes after applying mlocks in db_old 2014-03-01 18:38:14 -05:00
Adam b70f72bf2b Do not allow changing the email of unconfirmed accounts 2014-03-01 04:31:52 -05:00
Adam 2ad4c1906e Fix incorrect comment in modules.example.conf 2014-03-01 04:27:45 -05:00
Adam 049760cc7e Allow svsjoin/svspart on yourself 2014-02-28 00:30:35 -05:00
Adam e2ecec31b5 Hybrid does not let us add resvs as a server, but the core expects to be able to qline bot nicks before introducing the bots as a way to prevent collisions, so try harder to find a valid bot to send resvs on startup 2014-02-27 23:21:50 -05:00
Adam fee016bb84 Handle nick collisions somewhat instead of blindly overwriting the nicks
in memory, which does weird things.

For fun different ircds implement this differently (Unreal compares
timestamps, TS6 compares timestamps and user username/host), and whether
or not we get a kill for our user also varies, so just kill everyone.

This can't really happen anyway with properly set qlines, only if
services haven't yet set the qlines, or possibly in a bot add/nick
user introduce race, or with enforcers, which not many ircds require.
2014-02-27 22:42:54 -05:00
Adam d24fb03917 Allow registration=mail forceemail=false to work, and simply give fully registered accounts to people who do not provide an email to nickserv/register 2014-02-27 04:49:28 -05:00
Adam 5adc8bfefc Do not take modes from users in channels with secureops off if we are always lowering channels timestamps to their creations 2014-02-27 04:48:48 -05:00
Adam abcf0cde5a Remove unreachable code in config.cpp, this error is caught earlier 2014-02-26 19:32:25 -05:00
Adam 8f3bd314ed Fix not detecting eols in the config reader when the end of the line is the end of a multiline comment 2014-02-26 19:26:50 -05:00
Adam e2d456d4ce Do not setuid/gid down until after modules are loaded 2014-02-26 19:24:32 -05:00
Adam 96202ae545 Log successful SASL auths 2014-02-24 22:23:12 -05:00
H7-25 2b0229d4e2 Update the italian language file 2014-02-25 03:22:55 +01:00
Adam beaa3196b3 Update Spanish translation, from Isaac Fontal <i_fontal@hotmail.com> 2014-02-24 16:14:40 -05:00
407 changed files with 46516 additions and 33054 deletions
+3 -2
View File
@@ -1,5 +1,5 @@
___
/ _ \ http://www.anope.org
/ _ \ https://www.anope.org/
| /_\ | _ __ _ _ _ _ ___
| _ || '_ \/ _ \/ _ \ / _ \
| | | || | | |_| |_| | __/
@@ -15,4 +15,5 @@ Anope is a set of Services for IRC networks that allows users to
manage their nicks and channels in a secure and efficient way,
and administrators to manage their network with powerful tools.
For all your Anope needs please visit our portal at www.anope.org
For all your Anope needs please visit our portal at
https://www.anope.org/
+2
View File
@@ -28,7 +28,9 @@ Naram Qashat <cyberbotx@anope.org> <cyberbotx@5417fbe8-f217-4b02-8779-1006273d78
Naram Qashat <cyberbotx@anope.org> <cyberbotx@cyberbotx.com>
Naram Qashat <cyberbotx@anope.org> <Naram Qashat cyberbotx@cyberbotx.com@5417fbe8-f217-4b02-8779-1006273d7864>
Pieter Bootsma <geniusdex@anope.org> <geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>
Robby <robby@anope.org>
Robby <robby@chat.be>
Robby <robby@chatbelgie.be>
Robin Burchell <w00t@inspircd.org> <rburchell@5417fbe8-f217-4b02-8779-1006273d7864>
Robin Burchell <w00t@inspircd.org> <Robin Burchell w00t@inspircd.org@5417fbe8-f217-4b02-8779-1006273d7864>
Sebastian V. <hal9000@denorastats.org>
+16
View File
@@ -0,0 +1,16 @@
language: cpp
compiler:
- gcc
before_script:
- mkdir build
- cd build
- cmake -DINSTDIR:STRING=~/services -DDEFUMASK:STRING=077 -DCMAKE_BUILD_TYPE:STRING=DEBUG -DUSE_RUN_CC_PL:BOOLEAN=ON ..
script:
- make
notifications:
irc:
- "irc.anope.org#anope-devel"
+57 -49
View File
@@ -2,13 +2,14 @@
cmake_minimum_required(VERSION 2.4 FATAL_ERROR)
if(COMMAND cmake_policy)
cmake_policy(SET CMP0003 NEW)
if(POLICY CMP0026)
cmake_policy(SET CMP0026 OLD)
endif(POLICY CMP0026)
if(POLICY CMP0007)
cmake_policy(SET CMP0007 OLD)
endif(POLICY CMP0007)
endif(COMMAND cmake_policy)
# If the Source dir and the Binary dir are the same, we are building in-source, which we will disallow due to Autotools being there (but only on non-Windows)
if(${CMAKE_CURRENT_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_BINARY_DIR} AND NOT WIN32)
message(FATAL_ERROR "You can not use CMake to build Anope from the root of it's source tree! Remove the CMakeCache.txt file from this directory, then create a separate directory (either below this directory or elsewhere), and then re-run CMake from there.")
endif(${CMAKE_CURRENT_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_BINARY_DIR} AND NOT WIN32)
# Set the project as C++ primarily, but have C enabled for the checks required later
project(Anope CXX)
enable_language(C)
@@ -44,20 +45,20 @@ if(MINOR_VERSION GREATER 5)
set(CMAKE242_OR_BETTER TRUE)
else(MINOR_VERSION GREATER 5)
set(CMAKE26_OR_BETTER FALSE)
# Also detect if we are using CMake 2.4.8 or better, the FIND sub-command of list() is non-existant in earlier versions
# Also detect if we are using CMake 2.4.8 or better, the FIND sub-command of list() is nonexistent in earlier versions
if(PATCH_VERSION GREATER 7)
set(CMAKE248_OR_BETTER TRUE)
set(CMAKE244_OR_BETTER TRUE)
set(CMAKE242_OR_BETTER TRUE)
else(PATCH_VERSION GREATER 7)
set(CMAKE248_OR_BETTER FALSE)
# Also detect if we are using CMake 2.4.4 or better, the CheckCXXCompilerFlag module and SORT sub-command of list() are non-existant in earlier versions
# Also detect if we are using CMake 2.4.4 or better, the CheckCXXCompilerFlag module and SORT sub-command of list() are nonexistent in earlier versions
if(PATCH_VERSION GREATER 3)
set(CMAKE244_OR_BETTER TRUE)
set(CMAKE242_OR_BETTER TRUE)
else(PATCH_VERSION GREATER 3)
set(CMAKE244_OR_BETTER FALSE)
# ALSO detect if we are using CMake 2.4.2 or better, the APPEND sub-command of list() is non-existant in earlier versions
# ALSO detect if we are using CMake 2.4.2 or better, the APPEND sub-command of list() is nonexistent in earlier versions
if(PATCH_VERSION GREATER 1)
set(CMAKE242_OR_BETTER TRUE)
else(PATCH_VERSION GREATER 1)
@@ -79,8 +80,20 @@ set(ENV{LC_ALL} C)
set(DEFAULT_LIBRARY_DIRS)
set(DEFAULT_INCLUDE_DIRS)
# Check that we aren't running on an ancient broken GCC
if(CMAKE_COMPILER_IS_GNUCXX)
execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_FULL_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
string(REGEX REPLACE "^(\\d+\\.\\d+)" "\\1" GCC_VERSION ${GCC_FULL_VERSION})
if(GCC_VERSION LESS 4.2)
message(FATAL_ERROR "Your compiler is too old to build Anope. Upgrade to GCC 4.2 or newer!")
endif(GCC_VERSION LESS 4.2)
if(GCC_VERSION GREATER 6.0 OR GCC_VERSION EQUAL 6.0)
set(CXXFLAGS "${CXXFLAGS} -fno-delete-null-pointer-checks")
endif(GCC_VERSION GREATER 6.0 OR GCC_VERSION EQUAL 6.0)
endif(CMAKE_COMPILER_IS_GNUCXX)
# If we are using a GNU compiler (have to use CXX because it seems to fail on C), we will be able to determine it's default paths for libraries and includes
if(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
if(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang$")
# First look for the compiler's default library directories
execute_process(COMMAND ${CMAKE_C_COMPILER} -print-search-dirs OUTPUT_VARIABLE LINES OUTPUT_STRIP_TRAILING_WHITESPACE)
# Find only the part after "libraries: "
@@ -146,7 +159,7 @@ if(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
if(DEFAULT_INCLUDE_DIRS)
remove_list_duplicates(DEFAULT_INCLUDE_DIRS)
endif(DEFAULT_INCLUDE_DIRS)
endif(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
endif(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang$")
# If we are using Visual Studio, locate the path of the Windows Server 2008 SDK or Windows Server 2003 Platform SDK, depending on which is installed
if(MSVC)
@@ -222,8 +235,6 @@ endif(EXTRA_LIBS)
# Find gettext
find_package(Gettext)
# Add an optional variable for using run-cc.pl for building, Perl will be checked later regardless of this setting
option(USE_RUN_CC_PL "Use run-cc.pl for building" OFF)
option(USE_PCH "Use precompiled headers" OFF)
# Use the following directories as includes
@@ -231,6 +242,11 @@ option(USE_PCH "Use precompiled headers" OFF)
# source include directory so the precompiled headers work correctly.
include_directories(${Anope_BINARY_DIR}/include ${Anope_SOURCE_DIR}/include ${Anope_BINARY_DIR}/language ${Anope_SOURCE_DIR}/modules/pseudoclients)
# Pass on REPRODUCIBLE_BUILD
if(REPRODUCIBLE_BUILD)
add_definitions(-DREPRODUCIBLE_BUILD)
endif(REPRODUCIBLE_BUILD)
# If using Windows, always add the _WIN32 define
if(WIN32)
add_definitions(-D_WIN32)
@@ -276,13 +292,15 @@ if(MINGW)
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS}")
endif(MINGW)
# Under Windows, we set the executable name for Anope to be anope
if(WIN32)
set(PROGRAM_NAME anope)
# Under *nix, we set the executable name for Anope to be services
else(WIN32)
set(PROGRAM_NAME services)
endif(WIN32)
if(NOT PROGRAM_NAME)
# Under Windows, we set the executable name for Anope to be anope
if(WIN32)
set(PROGRAM_NAME anope)
# Under *nix, we set the executable name for Anope to be services
else(WIN32)
set(PROGRAM_NAME services)
endif(WIN32)
endif(NOT PROGRAM_NAME)
# If we are not using Visual Studio, we'll run the following checks
if(NOT MSVC)
@@ -337,12 +355,12 @@ if(CMAKE_BUILD_TYPE STREQUAL "DEBUG" OR CMAKE_BUILD_TYPE STREQUAL "RELWITHDEBINF
set(DEBUG_BUILD TRUE)
endif(CMAKE_BUILD_TYPE STREQUAL "DEBUG" OR CMAKE_BUILD_TYPE STREQUAL "RELWITHDEBINFO")
# Check for the existance of the following include files
# Check for the existence of the following include files
check_include_file(cstdint HAVE_CSTDINT)
check_include_file(stdint.h HAVE_STDINT_H)
check_include_file(strings.h HAVE_STRINGS_H)
# Check for the existance of the following functions
# Check for the existence of the following functions
check_function_exists(strcasecmp HAVE_STRCASECMP)
check_function_exists(stricmp HAVE_STRICMP)
check_function_exists(umask HAVE_UMASK)
@@ -364,19 +382,11 @@ find_program(GREP grep)
find_program(SH sh)
find_program(CHGRP chgrp)
find_program(CHMOD chmod)
find_program(PERL perl)
# If perl is included on the system and the user wants to use run-cc.pl, change the commands for compiling and linking
if(PERL AND USE_RUN_CC_PL)
set(CMAKE_CXX_COMPILE_OBJECT "${PERL} ${Anope_SOURCE_DIR}/run-cc.pl -q ${CMAKE_CXX_COMPILE_OBJECT}")
set(CMAKE_CXX_LINK_EXECUTABLE "${PERL} ${Anope_SOURCE_DIR}/run-cc.pl -q ${CMAKE_CXX_LINK_EXECUTABLE}")
set(CMAKE_CXX_CREATE_SHARED_MODULE "${PERL} ${Anope_SOURCE_DIR}/run-cc.pl -q ${CMAKE_CXX_CREATE_SHARED_MODULE}")
endif(PERL AND USE_RUN_CC_PL)
# If a INSTDIR was passed in to CMake, use it as the install prefix, otherwise set the default install prefix to the services directory under the user's home directory
if(INSTDIR)
set(CMAKE_INSTALL_PREFIX "${INSTDIR}")
else(INSTDIR)
elseif(NOT CMAKE_INSTALL_PREFIX)
set(CMAKE_INSTALL_PREFIX "$ENV{HOME}/services")
endif(INSTDIR)
@@ -408,16 +418,14 @@ endif(NOT LOGS_DIR)
read_from_file(${Anope_SOURCE_DIR}/src/version.sh "^VERSION_" VERSIONS)
# Iterate through the strings found
foreach(VERSION_STR ${VERSIONS})
# Get the length of the string
string(LENGTH ${VERSION_STR} VERSION_LEN)
# Subtract 16 from the string's length (8 for VERSION_, 5 more for the type, 2 for the space and leading quote, 1 for the trailing quote)
math(EXPR VERSION_NUM_LEN "${VERSION_LEN} - 16")
# Extract the type from the string
string(SUBSTRING ${VERSION_STR} 8 5 VERSION_TYPE)
# Extract the actual value from the string
string(SUBSTRING ${VERSION_STR} 15 ${VERSION_NUM_LEN} VERSION)
# Set the version type to the value extract from above
set(VERSION_${VERSION_TYPE} ${VERSION})
string(REGEX REPLACE "^VERSION_([A-Z]+)=\"?([^\"]*)\"?$" "\\1;\\2" VERSION_OUT ${VERSION_STR})
# Depends on CMP0007 OLD
list(LENGTH VERSION_OUT VERSION_LEN)
list(GET VERSION_OUT 0 VERSION_TYPE)
if(${VERSION_LEN} GREATER 1)
list(GET VERSION_OUT 1 VERSION_DATA)
set(VERSION_${VERSION_TYPE} ${VERSION_DATA})
endif(${VERSION_LEN} GREATER 1)
endforeach(VERSION_STR ${VERSIONS})
# Default build version to 0
@@ -481,16 +489,16 @@ get_target_property(SERVICES_BINARY ${PROGRAM_NAME} LOCATION)
get_filename_component(SERVICES_BINARY ${SERVICES_BINARY} NAME)
# At install time, create the following additional directories
install(CODE "file(MAKE_DIRECTORY \"\${CMAKE_INSTALL_PREFIX}/${DB_DIR}/backups\")")
install(CODE "file(MAKE_DIRECTORY \"\${CMAKE_INSTALL_PREFIX}/${LOGS_DIR}\")")
install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${DB_DIR}/backups\")")
install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${LOGS_DIR}\")")
if(WIN32)
install(CODE "file(MAKE_DIRECTORY \"\${CMAKE_INSTALL_PREFIX}/${DB_DIR}/runtime\")")
install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${DB_DIR}/runtime\")")
endif(WIN32)
# On non-Windows platforms, if RUNGROUP is set, change the permissions of the below directories, as well as the group of the data directory
if(NOT WIN32 AND RUNGROUP)
install(CODE "execute_process(COMMAND ${CHMOD} 2775 \"\${CMAKE_INSTALL_PREFIX}/\${DB_DIR}/backups\")")
install(CODE "execute_process(COMMAND ${CHMOD} 2775 \"\${CMAKE_INSTALL_PREFIX}/\${LOGS_DIR}\")")
install(CODE "execute_process(COMMAND ${CHGRP} -R ${RUNGROUP} \"\${CMAKE_INSTALL_PREFIX}\")")
install(CODE "execute_process(COMMAND ${CHMOD} 2775 \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/\${DB_DIR}/backups\")")
install(CODE "execute_process(COMMAND ${CHMOD} 2775 \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/\${LOGS_DIR}\")")
install(CODE "execute_process(COMMAND ${CHGRP} -R ${RUNGROUP} \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}\")")
endif(NOT WIN32 AND RUNGROUP)
# On Windows platforms, install extra files
if(WIN32)
@@ -503,7 +511,7 @@ if(WIN32)
install(FILES ${EXTRA_DLLS} DESTINATION ${BIN_DIR})
endif(WIN32)
install(CODE "file(REMOVE_RECURSE \"${CMAKE_INSTALL_PREFIX}/${LIB_DIR}/modules\")")
install(CODE "file(REMOVE_RECURSE \"$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/${LIB_DIR}/modules\")")
# Only process the CPack section if we have CPack
if(EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake")
@@ -533,14 +541,14 @@ if(EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake")
"bin\\\\anope.bat\\\" \\\"-debug -nofork" "Anope IRC Services (Debug and Window Logging)"
"bin\\\\anope.bat\\\" \\\"-nofork" "Anope IRC Services (Window Logging)"
"bin\\\\anope.bat\\\" \\\"-nothird" "Anope IRC Services (No Third Party Modules)"
"http://www.anope.org/" "Anope Web Site"
"https://www.anope.org/" "Anope Web Site"
)
# The following doesn't work, but a bug report has been filed about it
#set(CPACK_CREATE_DESKTOP_LINK_${SERVICES_BINARY} TRUE)
set(CPACK_NSIS_MUI_ICON "${Anope_SOURCE_DIR}/src\\\\win32\\\\anope-icon.ico")
set(CPACK_NSIS_MUI_UNIICON "${Anope_SOURCE_DIR}/src\\\\win32\\\\anope-icon.ico")
set(CPACK_NSIS_INSTALLED_ICON_NAME "${SERVICES_BINARY}")
set(CPACK_NSIS_URL_INFO_ABOUT "http://www.anope.org/")
set(CPACK_NSIS_URL_INFO_ABOUT "https://www.anope.org/")
set(CPACK_NSIS_COMPRESSOR "/SOLID lzma")
endif(WIN32)
set(CPACK_SOURCE_PACKAGE_FILE_NAME "anope-${VERSION_FULL_NOBUILD}-source")
+12 -73
View File
@@ -2,7 +2,7 @@
#
# Configuration script for Services.
#
# Anope (c) 2003-2014 Anope Team
# Anope (c) 2003-2019 Anope Team
# Contact us at team@anope.org
#
# This program is free but copyrighted software; see the file COPYING for
@@ -62,12 +62,6 @@ Run_Build_System () {
BUILD_TYPE="-DCMAKE_BUILD_TYPE:STRING=RELEASE"
fi
if [ "$USE_RUN_CC_PL" = "yes" ] ; then
RUN_CC_PL="-DUSE_RUN_CC_PL:BOOLEAN=ON"
else
RUN_CC_PL="-DUSE_RUN_CC_PL:BOOLEAN=OFF"
fi
if [ "$USE_PCH" = "yes" ] ; then
PCH="-DUSE_PCH:BOOLEAN=ON"
else
@@ -97,9 +91,13 @@ Run_Build_System () {
REAL_SOURCE_DIR="$SOURCE_DIR"
fi
echo "cmake $GEN_TYPE $WITH_INST $WITH_RUN $WITH_PERM $BUILD_TYPE $RUN_CC_PL $PCH $EXTRA_INCLUDE $EXTRA_LIBS $EXTRA_CONFIG_ARGS $REAL_SOURCE_DIR"
echo "cmake $GEN_TYPE $WITH_INST $WITH_RUN $WITH_PERM $BUILD_TYPE $PCH $EXTRA_INCLUDE $EXTRA_LIBS $EXTRA_CONFIG_ARGS $REAL_SOURCE_DIR"
cmake $GEN_TYPE $WITH_INST $WITH_RUN $WITH_PERM $BUILD_TYPE $RUN_CC_PL $PCH $EXTRA_INCLUDE $EXTRA_LIBS $EXTRA_CONFIG_ARGS $REAL_SOURCE_DIR
cmake $GEN_TYPE $WITH_INST $WITH_RUN $WITH_PERM $BUILD_TYPE $PCH $EXTRA_INCLUDE $EXTRA_LIBS $EXTRA_CONFIG_ARGS $REAL_SOURCE_DIR
if [ $? -ne 0 ]; then
echo "You should fix these issues and then run ./Config -quick to rerun CMake."
exit 1
fi
echo ""
if [ "$SOURCE_DIR" = "." ] ; then
@@ -131,7 +129,6 @@ INSTDIR=$HOME/services
RUNGROUP=
UMASK=
DEBUG="no"
USE_RUN_CC_PL="no"
USE_PCH="no"
EXTRA_INCLUDE_DIRS=
EXTRA_LIB_DIRS=
@@ -173,45 +170,12 @@ done
# Check for CMake and (optionally) install it
###########################################################################
which cmake > /dev/null
cmake --version 2>&1 > /dev/null
if [ $? -ne 0 ] ; then
clear
if exists "cmake-bin" ; then :
else
echo "Anope requires CMake 2.4 or newer, which can be downloaded at http://cmake.org"
echo "If you have installed CMake already, ensure it is in your PATH environment variable."
if [ `uname` = "Linux" ] ; then
echo ""
echo "Config can attempt to install CMake for you now, which"
echo "will take approximately 50 MB of disk space."
echo "Would you like to install CMake now?"
echo2 "[y] "
read YN
if [ "$YN" = "n" ] ; then
exit 0
fi
echo "Downloading CMake... this may take a minute or two."
wget -q http://anope.org/cmake/linux-i386.php -O cmake-bin.tar.gz
if [ $? -ne 0 ] ; then
rm -f cmake-bin.tar.gz
echo "Unable to download CMake"
exit 0
fi
mkdir -p cmake-bin
tar zxf cmake-bin.tar.gz -C cmake-bin
rm -f cmake-bin.tar.gz
echo "Done!"
else
exit 0
fi
fi
CMAKE_BIN=`find cmake-bin -name cmake`
CMAKE_BIN="`pwd`/`dirname $CMAKE_BIN`"
PATH="$PATH:$CMAKE_BIN"
echo "Anope requires CMake 2.4 or newer, which can be downloaded at https://cmake.org/ or through your system's package manager."
echo "If you have installed CMake already, ensure it is in your PATH environment variable."
exit 0
fi
###########################################################################
@@ -354,30 +318,6 @@ echo ""
####
TEMP_YN="n"
if [ "$USE_RUN_CC_PL" = "yes" ] ; then
TEMP_YN="y"
fi
echo "You can optionally have the build run through run-cc.pl, which will"
echo "cause warnings and errors (if any) to be colored yellow and red,"
echo "respectively. This relies on Perl being installed, so if you say yes"
echo "to this without Perl, the option will be ignored."
echo "NOTE: If you are using MinGW, it is NOT recommended to say yes to"
echo "this, it may fail."
echo "Would you like to utilize run-cc.pl?"
echo2 "[$TEMP_YN] "
read YN
if [ "$YN" ] ; then
if [ "$YN" = "y" ] ; then
USE_RUN_CC_PL="yes"
else
USE_RUN_CC_PL="no"
fi
fi
echo ""
####
TEMP_YN="n"
if [ "$USE_PCH" = "yes" ] ; then
TEMP_YN="y"
@@ -434,7 +374,7 @@ echo ""
####
echo "Are there any extra arguments you wish to pass to CMake?"
echo "If you need no extra arugments to CMake, enter NONE in all caps."
echo "If you need no extra arguments to CMake, enter NONE in all caps."
echo2 "[$EXTRA_CONFIG_ARGS] "
if read INPUT ; then : ; else echo "" ; exit 1 ; fi
if [ "$INPUT" ] ; then
@@ -459,7 +399,6 @@ INSTDIR="$INSTDIR"
RUNGROUP="$RUNGROUP"
UMASK=$UMASK
DEBUG="$DEBUG"
USE_RUN_CC_PL="$USE_RUN_CC_PL"
USE_PCH="$USE_PCH"
EXTRA_INCLUDE_DIRS="$EXTRA_INCLUDE_DIRS"
EXTRA_LIB_DIRS="$EXTRA_LIB_DIRS"
BIN
View File
Binary file not shown.
+46
View File
@@ -0,0 +1,46 @@
## About
Anope is an open source set of IRC Services. It is highly modular, with a vast number of configurable parameters, and is the most used IRC services package. There are also many modules on the [modsite](https://modules.anope.org) to add additional features. It runs on Linux, BSD, and Windows, and supports many modern IRCds, including InspIRCd, UnrealIRCd, and ircd-hybrid. For more details, credits, command line options, and contact information see [docs/README](https://github.com/anope/anope/blob/2.0/docs/README).
* [Website](https://anope.org)
* [GitHub](https://github.com/anope)
* IRC \#anope on irc.anope.org
## Installation
### Linux/BSD
Download the latest release off of the [releases page](https://github.com/anope/anope/releases).
```
$ ./Config
$ cd build
$ make
$ make install
```
Now change to the directory where you installed Anope to, e.g. `$ cd ~/services/`
### Windows
Download the latest release off of the [releases page](https://github.com/anope/anope/releases) and run the installer.
## Configuration
Copy conf/example.conf to conf/services.conf
```
$ cp conf/example.conf conf/services.conf
```
Edit services.conf, configuring the uplink, serverinfo, and protocol module configurations. Example link blocks for popular IRCds are included in the the example.conf documentation. The [Anope wiki](https://wiki.anope.org) is also a good source of information. Our support channel is located at #anope on [irc.anope.org](irc://irc.anope.org/#anope).
Note that the example configuration file includes other example configuration files. If you want to modify the other example configuration files, copy them (e.g. `modules.example.conf` to `modules.conf`) and modify the `include` directive in `services.conf` to include the new file.
## Running
Run `$ ./bin/services` to start Anope. If asked to provide logs for support, use the `--support` flag, e.g.: `$ ./bin/services --support`
## Installing extra modules
Extra modules, which are usually modules which require extra libraries to use, such as m\_mysql, can be enabled with the `./extras` command from the source directory. Then re-run `Config`, `make` and `make install` again. Third party modules can be installed by placing them into the `modules/third` directory.
+8 -3
View File
@@ -432,11 +432,15 @@ macro(calculate_libraries SRC SRC_LDFLAGS EXTRA_DEPENDS)
# Reset libraries
set(LIBRARIES)
# Check to see if there are any lines matching: /* RequiredLibraries: [something] */
read_from_file(${SRC} "/\\\\*[ \t]*RequiredLibraries:[ \t]*.*[ \t]*\\\\*/" REQUIRED_LIBRARIES)
if(WIN32)
read_from_file(${SRC} "/\\\\*[ \t]*RequiredWindowsLibraries:[ \t]*.*[ \t]*\\\\*/" REQUIRED_LIBRARIES)
else(WIN32)
read_from_file(${SRC} "/\\\\*[ \t]*RequiredLibraries:[ \t]*.*[ \t]*\\\\*/" REQUIRED_LIBRARIES)
endif(WIN32)
# Iterate through those lines
foreach(REQUIRED_LIBRARY ${REQUIRED_LIBRARIES})
# Strip off the /* RequiredLibraries: and */ from the line
string(REGEX REPLACE "/\\*[ \t]*RequiredLibraries:[ \t]*([^ \t]*)[ \t]*\\*/" "\\1" REQUIRED_LIBRARY ${REQUIRED_LIBRARY})
string(REGEX REPLACE "/\\*[ \t]*Required.*Libraries:[ \t]*([^ \t]*)[ \t]*\\*/" "\\1" REQUIRED_LIBRARY ${REQUIRED_LIBRARY})
# Replace all commas with semicolons
string(REGEX REPLACE "," ";" REQUIRED_LIBRARY ${REQUIRED_LIBRARY})
# Iterate through the libraries given
@@ -445,7 +449,8 @@ macro(calculate_libraries SRC SRC_LDFLAGS EXTRA_DEPENDS)
if(DEFAULT_LIBRARY_DIRS OR WSDK_PATH OR DEFINED $ENV{VCINSTALLDIR})
find_library(FOUND_${LIBRARY}_LIBRARY NAMES ${LIBRARY} PATHS ${DEFAULT_LIBRARY_DIRS} ${WSDK_PATH}/lib $ENV{VCINSTALLDIR}/lib ${EXTRA_INCLUDE} ${EXTRA_LIBS})
else(DEFAULT_LIBRARY_DIRS OR WSDK_PATH OR DEFINED $ENV{VCINSTALLDIR})
find_library(FOUND_${LIBRARY}_LIBRARY NAMES ${LIBRARY} ${EXTRA_INCLUDE} ${EXTRA_LIBS})
find_library(FOUND_${LIBRARY}_LIBRARY NAMES ${LIBRARY} PATHS ${EXTRA_INCLUDE} ${EXTRA_LIBS} NO_DEFAULT_PATH)
find_library(FOUND_${LIBRARY}_LIBRARY NAMES ${LIBRARY} PATHS ${EXTRA_INCLUDE} ${EXTRA_LIBS})
endif(DEFAULT_LIBRARY_DIRS OR WSDK_PATH OR DEFINED $ENV{VCINSTALLDIR})
# If the library was found, we will add it to the linker flags
if(FOUND_${LIBRARY}_LIBRARY)
+6 -14
View File
@@ -2,33 +2,25 @@
if(NOT WIN32)
find_path(GETTEXT_INCLUDE libintl.h /usr/include /usr/local/include ${EXTRA_INCLUDE})
find_library(GETTEXT_LIBRARY intl PATHS /usr/lib /usr/lib64 ${EXTRA_LIBS})
find_library(ICONV_LIBRARY iconv PATHS /usr/lib /usr/lib64 ${EXTRA_LIBS})
find_program(GETTEXT_MSGFMT msgfmt PATHS /usr/bin/ /usr/local/bin ${EXTRA_INCLUDE})
if(GETTEXT_INCLUDE AND GETTEXT_MSGFMT)
set(GETTEXT_FOUND TRUE)
if(GETTEXT_LIBRARY)
set(GETTEXT_LIBRARIES ${GETTEXT_LIBRARY})
endif(GETTEXT_LIBRARY)
endif(GETTEXT_INCLUDE AND GETTEXT_MSGFMT)
else(NOT WIN32)
find_path(GETTEXT_INCLUDE libintl.h ${DEFAULT_INCLUDE_DIRS} ${WSDK_PATH}/include $ENV{VCINSTALLDIR}/include gettext/include ${EXTRA_INCLUDE})
find_library(GETTEXT_LIBRARY libintl PATHS ${DEFAULT_LIBRARY_DIRS} ${WSDK_PATH}/lib $ENV{VCINSTALLDIR}/lib gettext/lib ${EXTRA_LIBS})
find_library(ICONV_LIBRARY libiconv PATHS ${DEFAULT_LIBRARY_DIRS} ${WSDK_PATH}/lib $ENV{VCINSTALLDIR}/lib gettext/lib ${EXTRA_LIBS})
find_library(MINGWEX_LIBRARY libmingwex PATHS ${DEFAULT_LIBRARY_DIRS} ${WSDK_PATH}/lib $ENV{VCINSTALLDIR}/lib gettext/lib ${EXTRA_LIBS})
find_library(GCC_LIBRARY libgcc PATHS ${DEFAULT_LIBRARY_DIRS} ${WSDK_PATH}/lib $ENV{VCINSTALLDIR}/lib gettext/lib ${EXTRA_LIBS})
find_program(GETTEXT_MSGFMT msgfmt PATHS ${DEFAULT_INCLUDE_DIRS} ${WSDK_PATH}/bin $ENV{VCINSTALLDIR}/bin gettext/bin ${EXTRA_INCLUDE})
if(GETTEXT_INCLUDE AND GETTEXT_MSGFMT AND ICONV_LIBRARY AND MINGWEX_LIBRARY AND GCC_LIBRARY)
if(GETTEXT_INCLUDE AND GETTEXT_LIBRARY AND GETTEXT_MSGFMT)
set(GETTEXT_FOUND TRUE)
endif(GETTEXT_INCLUDE AND GETTEXT_MSGFMT AND ICONV_LIBRARY AND MINGWEX_LIBRARY AND GCC_LIBRARY)
set(GETTEXT_LIBRARIES ${GETTEXT_LIBRARY})
endif(GETTEXT_INCLUDE AND GETTEXT_LIBRARY AND GETTEXT_MSGFMT)
endif(NOT WIN32)
# If we found everything we need set variables correctly for lang/CMakeLists.txt to use
if(GETTEXT_FOUND)
include_directories("${GETTEXT_INCLUDE}")
set(GETTEXT_MSGFMT_EXECUTABLE ${GETTEXT_MSGFMT})
if(WIN32)
set(GETTEXT_LIBRARIES libiconv libintl libmingwex libgcc)
else(WIN32)
if(GETTEXT_LIBRARY)
set(GETTEXT_LIBRARIES ${GETTEXT_LIBRARY} ${ICONV_LIBRARY})
endif(GETTEXT_LIBRARY)
endif(WIN32)
endif(GETTEXT_FOUND)
+5 -4
View File
@@ -10,7 +10,7 @@
* client, the client becomes no different from a normal service bot, so you will have to use botserv/bot
* to manually delete the client.
*
* You may then waant to map some of the below commands to other services, like placing botserv/bot on
* You may then want to map some of the below commands to other services, like placing botserv/bot on
* OperServ so you can delete the below client, and mapping assign and unassign to ChanServ so users are
* able to control whether or not ChanServ is in the channel. You may also want to map botserv/set/nobot
* to OperServ so you can restrict who can assign the other core service clients.
@@ -202,7 +202,7 @@ command { service = "BotServ"; name = "BADWORDS"; command = "botserv/badwords";
* Used for administrating BotServ bots.
*/
module { name = "bs_bot" }
command { service = "BotServ"; name = "BOT"; command = "botserv/bot"; }
command { service = "BotServ"; name = "BOT"; command = "botserv/bot"; permission = "botserv/bot"; }
/*
* bs_botlist
@@ -242,7 +242,7 @@ command { service = "BotServ"; name = "INFO"; command = "botserv/info"; }
* botserv/kick - Dummy help wrapper for the KICK command.
* botserv/kick/amsg - Configures BotServ's AMSG kicker.
* botserv/kick/badwords - Configures BotServ's badwords kicker.
* botserv/kick/bolds - Configures BotServ's bold text kiceker.
* botserv/kick/bolds - Configures BotServ's bold text kicker.
* botserv/kick/caps - Configures BotServ's capital letters kicker.
* botserv/kick/colors - Configures BotServ's color kicker.
* botserv/kick/flood - Configures BotServ's flood kicker.
@@ -333,7 +333,7 @@ privilege
/*
* fantasy
*
* Allows 'fantaisist' commands to be used in channels.
* Allows 'fantasist' commands to be used in channels.
*
* Provides the commands:
* botserv/set/fantasy - Used for enabling or disabling BotServ's fantasist commands.
@@ -386,6 +386,7 @@ fantasy { name = "LEVELS"; command = "chanserv/levels"; }
fantasy { name = "LIST"; command = "chanserv/list"; prepend_channel = false; }
fantasy { name = "LOG"; command = "chanserv/log"; }
fantasy { name = "MODE"; command = "chanserv/mode"; }
fantasy { name = "MUTE"; command = "chanserv/ban"; kick = no; mode = "QUIET"; }
fantasy { name = "OP"; command = "chanserv/modes"; }
fantasy { name = "OWNER"; command = "chanserv/modes"; }
fantasy { name = "PROTECT"; command = "chanserv/modes"; }
+46 -22
View File
@@ -79,7 +79,7 @@ module
* - cs_secure: Enable channel security, requiring the user to be identified with NickServ in
* order to be considered for being on the access list of the channel
* - secureops: Only allow operator status to be given if the user is on the access list
* - securefounder: Only allow the real founder of the channel to drop the channel, change it's
* - securefounder: Only allow the real founder of the channel to drop the channel, change its
* password, or change the founder or successor
* - signkick: Use of ChanServ's KICK command will cause the user's nick to be signed to the kick.
* - signkick_level: Same as above, but the kick will not be signed if the user is at the same access
@@ -151,6 +151,13 @@ module
*/
reasonmax = 200
/*
* The message formatting to use for signed kick messages.
* %n is the nick of the kicker
* %m is the message specified
*/
signkickformat = "%m (%n)"
/*
* If set, prevents channel access entries from containing hostmasks.
*/
@@ -186,12 +193,12 @@ module
*
* If you load cs_xop, you may define a XOP command to associate the privilege with.
*
* The name of privileges are uesd to associate them with channel modes. If you are using an IRCd that allows you to define additional
* The name of privileges are used to associate them with channel modes. If you are using an IRCd that allows you to define additional
* channel status modes, such as InspIRCd, you can associate privileges (and thus access levels, flags, xop) with the mode by naming
* the privileges appropriately. For example, if you had a channel mode called admin, you could create AUTOADMIN, ADMIN, and ADMINME
* privileges which would automatically be associated with that channel mode.
*
* Defining new privileges here is not useful unless you have a module (eg, a third party one) made to check for
* Defining new privileges here is not useful unless you have a module (e.g. a third party one) made to check for
* the specific level you are defining.
*
* Sane defaults are provided below that do not need to be edited unless you wish to change the default behavior.
@@ -413,7 +420,7 @@ privilege
*
* Used by chanserv/getkey and nickserv/ajoin.
*
* Users with this permission can get they channel key with GETKEY and
* Users with this permission can get their channel key with GETKEY and
* can use nickserv/ajoin to join channels with keys.
*/
privilege
@@ -658,7 +665,7 @@ privilege
rank = 300
level = 10
flag = "a"
xop = "AOP"
xop = "SOP"
}
/*
@@ -685,7 +692,7 @@ privilege
* chanserv/saset/noexpire and chanserv/set.
*
* Users with this permission can set what BotServ will kick for, change
* BotServ and ChanServ settings, clone ChanServ channel setings, and
* BotServ and ChanServ settings, clone ChanServ channel settings, and
* set ChanServ logging options.
*/
privilege
@@ -799,25 +806,25 @@ privilege
command_group
{
name = "chanserv/access"
description = "Used to manage the list of privileged users"
description = _("Used to manage the list of privileged users")
}
command_group
{
name = "chanserv/status"
description = "Used to modify the channel status of you or other users"
description = _("Used to modify the channel status of you or other users")
}
command_group
{
name = "chanserv/management"
description = "Used to manage channels"
description = _("Used to manage channels")
}
command_group
{
name = "chanserv/admin"
description = "Services Operator commands"
description = _("Services Operator commands")
}
/* Give it a help command. */
@@ -829,8 +836,8 @@ command { service = "ChanServ"; name = "HELP"; command = "generic/help"; }
* Provides commands chanserv/access and chanserv/levels.
* Provides the access system "levels".
*
* Used for giving users access in channels using a levels system. Allows allows redefining which privileges
* are representated by given level on a per channel basis.
* Used for giving users access in channels using a levels system. Allows redefining which privileges
* are represented by given level on a per channel basis.
*
* The "LIST" subcommand of chanserv/access will show every access entry on the channel, including access
* entries not added by cs_access. The "level" of these entries will be the representation of the access
@@ -868,6 +875,12 @@ command { service = "ChanServ"; name = "AKICK"; command = "chanserv/akick"; grou
*
* Provides the command chanserv/ban.
*
* The configuration option 'kick' may be set in a command block for this command to control
* whether or not users will be kicked from the channel once banned. The default is 'yes'.
*
* The configuration option 'mode' may be set to control which mode is set, such as BAN or QUIET.
* The default is BAN.
*
* Used for banning users from channels.
*/
module { name = "cs_ban" }
@@ -928,8 +941,8 @@ command { service = "ChanServ"; name = "ENTRYMSG"; command = "chanserv/entrymsg"
* Used for giving users access in channels.
*
* The "LIST" subcommand of chanserv/flags will show every access entry on the channel, including access
* entries not added by cs_flags. The "Flags" of these entries will be the flags representation of the
* privilege set granted by the access entry.
* entries not added by cs_flags. The "flags" of these entries will be the flags representation of the
* privilege set granted by the access entry.
*/
module { name = "cs_flags" }
command { service = "ChanServ"; name = "FLAGS"; command = "chanserv/flags"; group = "chanserv/access"; }
@@ -1042,7 +1055,7 @@ command { service = "ChanServ"; name = "LOG"; command = "chanserv/log"; group =
* Provides the command chanserv/mode and chanserv/modes.
*
* Used for changing mode locks and changing modes. Multiple commands may be mapped to chanserv/modes, the
* configuration directive 'set' and 'unset' are used to tell chanserv/modes which modes should be set or
* configuration directives 'set' and 'unset' are used to tell chanserv/modes which modes should be set or
* unset when the command is executed.
*/
module
@@ -1055,6 +1068,13 @@ module
* If not set, the default is +nt.
*/
mlock = "+nt"
/*
* The maximum number of entries that may be on a mode lock list.
*
* This directive is optional.
*/
max = 32
}
command { service = "ChanServ"; name = "MODE"; command = "chanserv/mode"; group = "chanserv/management"; }
@@ -1101,9 +1121,6 @@ module
/* Sets the time to keep seen entries in the seen database. */
purgetime = "30d"
/* Sets the delay between checks for expired seen entries. */
expiretimeout = "1d"
}
command { service = "OperServ"; name = "SEEN"; command = "operserv/seen"; permission = "operserv/seen"; }
@@ -1146,7 +1163,7 @@ module
defbantype = 2
/*
* If set, persisent channels have their creation times lowered to their
* If set, persistent channels have their creation times lowered to their
* original registration dates.
*/
persist_lower_ts = true
@@ -1155,7 +1172,7 @@ command { service = "ChanServ"; name = "SET"; command = "chanserv/set"; group =
command { service = "ChanServ"; name = "SET AUTOOP"; command = "chanserv/set/autoop"; }
command { service = "ChanServ"; name = "SET BANTYPE"; command = "chanserv/set/bantype"; }
command { service = "ChanServ"; name = "SET DESCRIPTION"; command = "chanserv/set/description"; }
command { service = "ChanServ"; name = "SET DESC"; command = "chanserv/set/description"; }
command { service = "ChanServ"; name = "SET DESC"; command = "chanserv/set/description"; hide = yes; }
command { service = "ChanServ"; name = "SET FOUNDER"; command = "chanserv/set/founder"; }
command { service = "ChanServ"; name = "SET KEEPMODES"; command = "chanserv/set/keepmodes"; }
command { service = "ChanServ"; name = "SET PEACE"; command = "chanserv/set/peace"; }
@@ -1209,6 +1226,13 @@ module
* If not set, the default is never.
*/
expire = 90d
/*
* Settings to show to non-opers in ChanServ's INFO output.
* Comment to completely disable showing any information about
* suspended channels to non-opers.
*/
show = "suspended, by, reason, on, expires"
}
command { service = "ChanServ"; name = "SUSPEND"; command = "chanserv/suspend"; permission = "chanserv/suspend"; group = "chanserv/admin"; }
command { service = "ChanServ"; name = "UNSUSPEND"; command = "chanserv/unsuspend"; permission = "chanserv/suspend"; group = "chanserv/admin"; }
@@ -1263,7 +1287,7 @@ command { service = "ChanServ"; name = "UP"; command = "chanserv/up"; group = "c
* Provides the access system "XOP".
*
* Used for giving users access in channels. Many commands may be linked to chanserv/xop, but the
* privileges given by each is determined by the privilege:xop settings above. These commands should
* privileges given by each are determined by the privilege:xop settings above. These commands should
* be ordered from highest to lowest, as each command inherits the privileges of the commands below
* it.
*
@@ -1285,7 +1309,7 @@ command { service = "ChanServ"; name = "VOP"; command = "chanserv/xop"; group =
/*
* cs_statusupdate
*
* This module automatically updates users status on channels when the
* This module automatically updates users' status on channels when the
* channel's access list is modified.
*/
module { name = "cs_statusupdate" }
+1 -1
View File
@@ -32,7 +32,7 @@ module
}
command { service = "ChanServ"; name = "SET CHANSTATS"; command = "chanserv/set/chanstats"; }
command { service = "NickServ"; name = "SET CHANSTATS"; command = "nickserv/set/chanstats"; }
command { service = "NickServ"; name = "SASET CHANSTATS"; command = "nickserv/saset/chanstats"; }
command { service = "NickServ"; name = "SASET CHANSTATS"; command = "nickserv/saset/chanstats"; permission = "nickserv/saset/chanstats"; }
module { name = "cs_fantasy_stats" }
command { service = "ChanServ"; name = "STATS"; command = "chanserv/stats"; }
+2 -1
View File
@@ -37,7 +37,8 @@ cd $ANOPATH
if [ -f "$ANODATA/$ANOPIDF" ]
then
ANOPID=`cat "$ANODATA/$ANOPIDF"`
if [ `ps auwx | grep $ANOPROG | grep $ANOPID | grep -v -c grep` = 1 ]
kill -0 $ANOPID 2>/dev/null
if [ $? -eq 0 ]
then
exit
fi
+96 -70
View File
@@ -80,7 +80,7 @@
* [OPTIONAL] Defines
*
* You can define values to other values, which can be used to easily change
* many values in the configuration. at once.
* many values in the configuration at once.
*/
/*
@@ -110,7 +110,7 @@ define
#include
{
type = "executable"
name = "/usr/bin/wget -q -O - http://some.misconfigured.network.com/services.conf"
name = "/usr/bin/wget -q -O - https://some.misconfigured.network.com/services.conf"
}
/*
@@ -126,6 +126,7 @@ define
* An example configuration for InspIRCd that is compatible with the below uplink
* and serverinfo configuration would look like:
*
* # This goes in inspircd.conf, *NOT* your Anope config!
* <link name="services.localhost.net"
* ipaddr="127.0.0.1"
* port="7000"
@@ -137,19 +138,22 @@ define
* An example configuration for UnrealIRCd that is compatible with the below uplink
* and serverinfo configuration would look like:
*
* link services.localhost.net
* {
* username *;
* hostname *;
* bind-ip "127.0.0.1";
* port 7000;
* hub *;
* password-connect "mypassword";
* password-receive "mypassword";
* class servers;
* // This goes in unrealircd.conf, *NOT* your Anope config!
* listen {
* ip 127.0.0.1;
* port 7000;
* options {
* serversonly;
* };
* };
* link services.localhost.net {
* incoming {
* mask *@127.0.0.1;
* };
* password "mypassword";
* class servers;
* };
* ulines { services.localhost.net; };
* listen 127.0.0.1:7000;
*/
uplink
{
@@ -205,7 +209,7 @@ serverinfo
name = "services.localhost.net"
/*
* The text which should appear as the server's information in /whois and similar
* The text which should appear as the server's information in /WHOIS and similar
* queries.
*/
description = "Services for IRC Networks"
@@ -252,10 +256,12 @@ serverinfo
* - hybrid
* - inspircd12
* - inspircd20
* - inspircd3
* - ngircd
* - plexus
* - ratbox
* - unreal
* - unreal (for 3.2.x)
* - unreal4
*/
module
{
@@ -319,6 +325,16 @@ networkinfo
*/
modelistsize = 100
/*
* Characters allowed in nicknames. This always includes the characters described
* in RFC1459, and so does not need to be set for normal behavior. Changing this to
* include characters your IRCd doesn't support will cause your IRCd and/or Services
* to break. Multibyte characters are not supported, nor are escape sequences.
*
* It is recommended you DON'T change this.
*/
#nick_chars = ""
/*
* The characters allowed in hostnames. This is used for validating hostnames given
* to services, such as BotServ bot hostnames and user vhosts. Changing this is not
@@ -462,7 +478,7 @@ options
/*
* If set, this will allow users to let Services send PRIVMSGs to them
* instead of NOTICEs. Also see the defmsg option of nickserv:defaults,
* instead of NOTICEs. Also see the "msg" option of nickserv:defaults,
* which also toggles the default communication (PRIVMSG or NOTICE) to
* use for unregistered users.
*
@@ -489,7 +505,7 @@ options
#hidestatso = yes
/*
* A space-separated list of ulined servers on your network, it is assumed that
* A space-separated list of U-lined servers on your network, it is assumed that
* the servers in this list are allowed to set channel modes and Services will
* not attempt to reverse their mode changes.
*
@@ -521,14 +537,14 @@ options
*
* Note for this to work the regex module providing the regex engine must be loaded.
*/
regexengine = "regex/pcre"
#regexengine = "regex/pcre"
/*
* A list of languages to load on startup that will be available in /nickserv set language.
* A list of languages to load on startup that will be available in /NICKSERV SET LANGUAGE.
* Useful if you translate Anope to your language. (Explained further in docs/LANGUAGE).
* Note that english should not be listed here because it is the base language.
* Note that English should not be listed here because it is the base language.
*
* Removing .UTF-8 will instead use the default encoding for the language, eg. iso-8859-1 for western European languages.
* Removing .UTF-8 will instead use the default encoding for the language, e.g. iso-8859-1 for western European languages.
*/
languages = "ca_ES.UTF-8 de_DE.UTF-8 el_GR.UTF-8 es_ES.UTF-8 fr_FR.UTF-8 hu_HU.UTF-8 it_IT.UTF-8 nl_NL.UTF-8 pl_PL.UTF-8 pt_PT.UTF-8 ru_RU.UTF-8 tr_TR.UTF-8"
@@ -657,19 +673,19 @@ log
/*
* The source(s) to only accept log messages from. Leave commented to allow all sources.
* This can be a users name, a channel name, one of our clients (eg, OperServ), or a server name.
* This can be a users name, a channel name, one of our clients (e.g. OperServ), or a server name.
*/
#source = ""
/*
* The bot used to log generic messages which have no predefined sender if there
* is a channel in the target directive.
* The bot used to log generic messages which have no predefined sender if the
* target directive is set to a channel or globops.
*/
bot = "Global"
/*
* The number of days to keep logfiles, only useful if you are logging to a file.
* Set to 0 to never delete old logfiles.
* The number of days to keep log files, only useful if you are logging to a file.
* Set to 0 to never delete old log files.
*
* Note that Anope must run 24 hours a day for this feature to work correctly.
*/
@@ -694,7 +710,7 @@ log
* means "* ~operserv/*" would log everything because * matches everything.
*
* Valid admin, override, and command options are:
* pesudo-serv/commandname (eg, operserv/akill, chanserv/set)
* pesudo-serv/commandname (e.g. operserv/akill, chanserv/set)
*
* Valid server options are:
* connect, quit, sync, squit
@@ -703,7 +719,7 @@ log
* create, destroy, join, part, kick, leave, mode
*
* Valid user options are:
* connect, disconnect, quit, nick, ident, host, mode, maxusers, oper
* connect, disconnect, quit, nick, ident, host, mode, maxusers, oper, away
*
* Rawio and debug are simple yes/no answers, there are no types for them.
*
@@ -725,8 +741,9 @@ log
*/
log
{
bot = "Global"
target = "globops"
admin = "global/* operserv/mode operserv/kick operserv/akill operserv/s*line operserv/noop operserv/jupe operserv/oline operserv/set operserv/svsnick operserv/svsjoin operserv/svspart nickserv/getpass */drop"
admin = "global/* operserv/chankill operserv/mode operserv/kick operserv/akill operserv/s*line operserv/noop operserv/jupe operserv/oline operserv/set operserv/svsnick operserv/svsjoin operserv/svspart nickserv/getpass */drop"
servers = "squit"
users = "oper"
other = "expire/* bados akill/*"
@@ -747,40 +764,39 @@ log
*
* Available privileges:
* botserv/administration - Can view and assign private BotServ bots
* botserv/fantasy - Can use fantasy commands without the FANTASIA privilege
* chanserv/administration - Can modify the settings of any channel (including changing of the owner!)
* chanserv/access/list - Can view channel access and akick lists, but not modify them
* chanserv/access/modify - Can modify channel access and akick lists, and use /chanserv enforce
* chanserv/auspex - Can see any information with /chanserv info
* chanserv/auspex - Can see any information with /CHANSERV INFO
* chanserv/no-register-limit - May register an unlimited number of channels and nicknames
* chanserv/kick - Can kick and ban users from channels through ChanServ
* memoserv/info - Can see any information with /memoserv info
* memoserv/info - Can see any information with /MEMOSERV INFO
* memoserv/set-limit - Can set the limit of max stored memos on any user and channel
* memoserv/no-limit - Can send memos through limits and throttles
* nickserv/access - Can modify other users access and certificate lists
* nickserv/alist - Can see the channel access list of other users
* nickserv/auspex - Can see any information with /nickserv info
* nickserv/auspex - Can see any information with /NICKSERV INFO
* nickserv/confirm - Can confirm other users nicknames
* nickserv/drop - Can drop other users nicks
* nickserv/recover - Can recover other users nicks
* operserv/config - Can modify services's configuration
* operserv/oper/modify - Can add and remove operators with at most the same privileges
* protected - Can not be kicked from channels by Services
*
* Available commands:
* botserv/bot/del botserv/bot/add botserv/bot/change botserv/set/private
* botserv/set/nobot
*
* chanserv/access/list chanserv/drop chanserv/getkey chanserv/invite
* chanserv/drop chanserv/getkey chanserv/invite
* chanserv/list chanserv/suspend chanserv/topic
*
* chanserv/saset/bantype chanserv/saset/description chanserv/saset/email chanserv/saset/keepmodes
* chanserv/saset/founder chanserv/saset/keeptopic chanserv/saset/restricted
* chanserv/saset/peace chanserv/saset/persist chanserv/saset/private
* chanserv/saset/secure chanserv/saset/securefounder chanserv/saset/secureops
* chanserv/saset/signkick chanserv/saset/successor chanserv/saset/topiclock
* chanserv/saset/url chanserv/saset/noexpire chanserv/saset/autoop
* chanserv/saset/noexpire
*
* memoserv/sendall memoserv/staff
*
* nickserv/getpass nickserv/getemail nickserv/suspend nickserv/ajoin
* nickserv/resetpass nickserv/list
* nickserv/list
*
* nickserv/saset/autoop nickserv/saset/email nickserv/saset/greet nickserv/saset/password
* nickserv/saset/display nickserv/saset/kill nickserv/saset/language nickserv/saset/message
@@ -803,6 +819,9 @@ log
* These can contain commands for oper-only strings (see above) which grants access to that specific command,
* and privileges (which grant access to more general permissions for the named area).
* Wildcard entries are permitted for both, e.g. 'commands = "operserv/*"' for all OperServ commands.
* You can also negate values with a ~. For example, "~operserv/akill operserv/*" would allow all OperServ
* commands except for operserv/akill. Note that processing stops at the first matching option, which
* means "* ~operserv/*" would allow everything because * matches everything.
*
* Below are some default example types, but this is by no means exhaustive,
* and it is recommended that you configure them to your needs.
@@ -822,11 +841,11 @@ opertype
/* The name of this opertype */
name = "Services Operator"
/* What opertype(s) this inherits from. Seperate with a comma. */
/* What opertype(s) this inherits from. Separate with a comma. */
inherits = "Helper, Another Helper"
/* What commands (see above) this opertype may use */
commands = "chanserv/list chanserv/suspend chanserv/topic memoserv/staff nickserv/list nickserv/resetpass nickserv/suspend operserv/mode operserv/chankill operserv/akill operserv/session operserv/modinfo operserv/sqline operserv/oper operserv/kick operserv/ignore operserv/snline"
commands = "chanserv/list chanserv/suspend chanserv/topic memoserv/staff nickserv/list nickserv/suspend operserv/mode operserv/chankill operserv/akill operserv/session operserv/modinfo operserv/sqline operserv/oper operserv/kick operserv/ignore operserv/snline"
/* What privs (see above) this opertype has */
privs = "chanserv/auspex chanserv/no-register-limit memoserv/* nickserv/auspex nickserv/confirm"
@@ -848,7 +867,7 @@ opertype
inherits = "Services Operator"
commands = "chanserv/access/list chanserv/drop chanserv/getkey chanserv/saset/noexpire memoserv/sendall nickserv/saset/* nickserv/getemail operserv/news operserv/jupe operserv/svs operserv/stats operserv/oline operserv/noop operserv/forbid global/*"
commands = "botserv/* chanserv/access/list chanserv/drop chanserv/getkey chanserv/saset/noexpire memoserv/sendall nickserv/saset/* nickserv/getemail operserv/news operserv/jupe operserv/svs operserv/stats operserv/oline operserv/noop operserv/forbid global/*"
privs = "*"
}
@@ -885,7 +904,7 @@ opertype
*/
require_oper = yes
/* An optional password. If defined the user must login using "/msg OperServ LOGIN" first */
/* An optional password. If defined, the user must login using "/OPERSERV LOGIN" first */
#password = "secret"
/* An optional SSL fingerprint. If defined, it's required to be able to use this opertype. */
@@ -952,18 +971,6 @@ mail
*/
sendfrom = "services@localhost.net"
/*
* If set, RESETPASS will be restricted to services operators with access to
* nickserv/resetpass in their opertype:commands.
* This directive is optional.
*
* WARNING: If you choose to not enable this option, you should limit the
* number of processes that the services user can have at a time (you can
* create a special user for this; remember to NEVER launch Services as
* root).
*/
restrict = yes
/*
* This controls the minimum amount of time a user must wait before sending
* another e-mail after they have sent one. It also controls the minimum time
@@ -987,6 +994,11 @@ mail
/*
* The subject and message of emails sent to users when they register accounts.
*
* Available tokens for this template are:
* %n - Gets replaced with the nickname
* %N - Gets replaced with the network name
* %c - Gets replaced with the confirmation code
*/
registration_subject = "Nickname registration for %n"
registration_message = "Hi,
@@ -1000,6 +1012,11 @@ mail
/*
* The subject and message of emails sent to users when they request a new password.
*
* Available tokens for this template are:
* %n - Gets replaced with the nickname
* %N - Gets replaced with the network name
* %c - Gets replaced with the confirmation code
*/
reset_subject = "Reset password request for %n"
reset_message = "Hi,
@@ -1013,11 +1030,18 @@ mail
/*
* The subject and message of emails sent to users when they request a new email address.
*
* Available tokens for this template are:
* %e - Gets replaced with the old email address
* %E - Gets replaced with the new email address
* %n - Gets replaced with the nickname
* %N - Gets replaced with the network name
* %c - Gets replaced with the confirmation code
*/
emailchange_subject = "Email confirmation"
emailchange_message = "Hi,
You have requested to change your email address to %e.
You have requested to change your email address from %e to %E.
Please type \" /msg NickServ CONFIRM %c \" to confirm this change.
If you don't know why this mail was sent to you, please ignore it silently.
@@ -1026,6 +1050,13 @@ mail
/*
* The subject and message of emails sent to users when they receive a new memo.
*
* Available tokens for this template are:
* %n - Gets replaced with the nickname
* %s - Gets replaced with the sender's nickname
* %d - Gets replaced with the memo number
* %t - Gets replaced with the memo text
* %N - Gets replaced with the network name
*/
memo_subject = "New memo"
memo_message = "Hi %n,
@@ -1165,7 +1196,7 @@ module
/*
* db_redis.
*
* This module allows using Redis (http://redis.io) as a database backend.
* This module allows using Redis (https://redis.io/) as a database backend.
* This module requires that m_redis is loaded and configured properly.
*
* Redis 2.8 supports keyspace notifications which allows Redis to push notifications
@@ -1204,23 +1235,14 @@ module
* encrypted by this module. Old passwords stored in another encryption method are
* automatically re-encrypted by the primary encryption module on next identify.
*
* NOTE: enc_old is Anope's previous (broken) MD5 implementation which is present in
* versions prior to Anope 1.7.17. If your databases were made using that module,
* use this and not enc_md5.
*
* NOTE: enc_sha1 relies on how the OS stores 2+ byte data internally, and is
* potentially broken when moving between 2 different OSes, such as moving from
* Linux to Windows. It is recommended that you use enc_sha256 instead if you want
* to use an SHA-based encryption. If you choose to do so, it is also recommended
* that you first try to get everyone's passwords converted to enc_sha256 before
* switching OSes by placing enc_sha256 at the beginning of the list.
* enc_md5, enc_sha1, and enc_old are deprecated, and are provided for users
* to upgrade to a newer encryption module. Do not use them as the primary
* encryption module. They will be removed in a future release.
*
*/
#module { name = "enc_bcrypt" }
module { name = "enc_sha256" }
#module { name = "enc_md5" }
#module { name = "enc_sha1" }
/*
* When using enc_none, passwords will be stored without encryption. This isn't secure
@@ -1228,6 +1250,10 @@ module { name = "enc_sha256" }
*/
#module { name = "enc_none" }
/* Deprecated encryption modules */
#module { name = "enc_md5" }
#module { name = "enc_sha1" }
/*
* enc_old is Anope's previous (broken) MD5 implementation used from 1.4.x to 1.7.16.
* If your databases were made using that module, load it here to allow conversion to the primary
+14 -1
View File
@@ -103,7 +103,20 @@ command { service = "HostServ"; name = "DELALL"; command = "hostserv/delall"; pe
*
* Used for grouping one vHost to many nicks.
*/
module { name = "hs_group" }
module
{
name = "hs_group"
/*
* Upon nickserv/group, this option syncs the nick's main vHost to the grouped nick.
*/
syncongroup = false
/*
* This makes vhosts act as if they are per account.
*/
synconset = false
}
command { service = "HostServ"; name = "GROUP"; command = "hostserv/group"; }
/*
+4 -5
View File
@@ -18,7 +18,7 @@ service
/*
* The hostname of the StatServ client.
*/
host = "services.host"
host = "stats.host"
/*
* The realname of the StatServ client.
@@ -45,7 +45,7 @@ service
*
* Prefixes may be given to the channels in the form of mode characters or prefix symbols.
*/
#channels = "@#services,#mychan"
#channels = "@#stats,#mychan"
}
module
@@ -58,7 +58,7 @@ module
*/
client = "StatServ"
/*
/*
* The name of the SQL engine to use.
* This must be MySQL and must match the name in the mysql{} block
*/
@@ -84,7 +84,7 @@ module
/*
* Get the CTCP version from users
* The users connecting to the network will receive a CTCP VERSION
* request from the above configured services client
* request from the above configured stats client
*/
ctcpuser = "yes"
@@ -95,4 +95,3 @@ module
*/
ctcpeob = "yes"
}
+11 -1
View File
@@ -137,7 +137,17 @@ command { service = "MemoServ"; name = "DEL"; command = "memoserv/del"; }
*
* Used to ignore memos from specific users.
*/
module { name = "ms_ignore" }
module
{
name = "ms_ignore"
/*
* The maximum number of entries that may be on a memo ignore list.
*
* This directive is optional.
*/
max = 32
}
command { service = "MemoServ"; name = "IGNORE"; command = "memoserv/ignore"; }
/*
+68 -43
View File
@@ -30,7 +30,7 @@ module { name = "help" }
/*
* The nameserver to use for resolving hostnames, must be an IP or a resolver configuration file.
* The below should work fine on all unix like systems. Windows users will have to find their nameservers
* The below should work fine on all UNIX-like systems. Windows users will have to find their nameservers
* from ipconfig /all and put the IP here.
*/
nameserver = "/etc/resolv.conf"
@@ -124,26 +124,58 @@ module { name = "help" }
* %g is the realname of the user
* %h is the hostname of the user
* %i is the IP of the user
* %r is the reason (configured below). Will be nothing if not configured.
* %r is the reply reason (configured below). Will be nothing if not configured.
* %N is the network name set in networkinfo:networkname
*/
reason = "You are listed in the efnet RBL, visit http://rbl.efnetrbl.org/?i=%i for info"
reason = "You are listed in the EFnet RBL, visit https://rbl.efnetrbl.org/?i=%i for info"
/* Replies to ban and their reason. If this is totally omitted all replies get banned. */
1 = "Open Proxy"
/* Don't ban for result 2 or 3 */
#2 = "spamtrap666"
#3 = "spamtrap50"
4 = "TOR"
5 = "Drones / Flooding"
/* Replies to ban and their reason. If no replies are configured, all replies get banned. */
reply
{
code = 1
reason = "Open Proxy"
}
#reply
{
code = 2
reason = "spamtrap666"
}
#reply
{
code = 3
reason = "spamtrap50"
}
reply
{
code = 4
reason = "TOR"
/*
* If set, users identified to services at the time the result comes back
* will not be banned.
*/
#allow_account = yes
}
reply
{
code = 5
reason = "Drones / Flooding"
}
}
blacklist
#blacklist
{
name = "dnsbl.dronebl.org"
time = 4h
reason = "You have a host listed in the DroneBL. For more information, visit http://dronebl.org/lookup_branded?ip=%i&network=%N"
reason = "You have a host listed in the DroneBL. For more information, visit https://dronebl.org/lookup_branded?ip=%i&network=%N"
}
/* Exempt localhost from DNSBL checks */
exempt { ip = "127.0.0.0/8" }
}
/*
@@ -191,8 +223,9 @@ module { name = "help" }
* extforward_headers set below, set this to its IP.
* This allows services to obtain the real IP of users by
* reading the forwarded-for HTTP header.
* Multiple IP addresses can be specified separated by a space character.
*/
#extforward_ip = "192.168.0.255"
#extforward_ip = "192.168.0.255 192.168.1.255"
/* The header to look for. These probably work as is. */
extforward_header = "X-Forwarded-For Forwarded-For"
@@ -211,7 +244,6 @@ module { name = "help" }
ldap
{
server = "ldap://127.0.0.1"
port = 389
/*
* Admin credentials used for performing searches and adding users.
@@ -267,16 +299,18 @@ module { name = "help" }
password_attribute = "userPassword"
/*
* If set, the reason to give the users who try to "/msg NickServ REGISTER".
* If set, the reason to give the users who try to register with NickServ,
* including nick registration from grouping.
*
* If not set, then registration is not blocked.
*/
#disable_register_reason = "To register on this network visit http://some.misconfigured.site/register"
#disable_register_reason = "To register on this network visit https://some.misconfigured.site/register"
/*
* If set, the reason to give the users who try to "/msg NickServ SET EMAIL".
* If not set, then email changing is not blocked.
*/
#disable_email_reason = "To change your email address visit http://some.misconfigured.site"
#disable_email_reason = "To change your email address visit https://some.misconfigured.site"
}
/*
@@ -340,6 +374,7 @@ module { name = "help" }
port = 3306
}
}
/*
* m_redis
*
@@ -404,7 +439,7 @@ module { name = "help" }
rewrite_source = "CLEAR $ USERS"
/*
* Message to rewrite the source message to. A $ followed by a number, eg $0, gets
* Message to rewrite the source message to. A $ followed by a number, e.g. $0, gets
* replaced by the number-th word from the source_message, starting from 0.
*/
rewrite_target = "KICK $1 *"
@@ -507,25 +542,7 @@ module { name = "help" }
* authenticating users through this mechanism. Supported mechanisms are:
* PLAIN, EXTERNAL.
*/
#module { name = "m_sasl" }
/*
* m_sasl_dh-aes [EXTRA]
*
* Add the DH-AES mechanism to SASL.
* Requires m_sasl to be loaded.
* Requires openssl.
*/
#module { name = "m_sasl_dh-aes" }
/*
* m_sasl_dh-aes [EXTRA]
*
* Add the DH-BLOWFISH mechanism to SASL.
* Requires m_sasl to be loaded.
* Requires openssl.
*/
#module { name = "m_sasl_dh-blowfish" }
module { name = "m_sasl" }
/*
* m_ssl_gnutls [EXTRA]
@@ -533,14 +550,14 @@ module { name = "help" }
* This module provides SSL services to Anope using GnuTLS, for example to
* connect to the uplink server(s) via SSL.
*
* You may only load either m_ssl_gnutls or m_ssl_openssl, bot not both.
* You may only load either m_ssl_gnutls or m_ssl_openssl, but not both.
*/
#module
{
name = "m_ssl_gnutls"
/*
* An optional certificate and key for m_gnutls to give to the uplink.
* An optional certificate and key for m_ssl_gnutls to give to the uplink.
*
* You can generate your own certificate and key pair by using:
*
@@ -571,7 +588,7 @@ module { name = "help" }
* This module provides SSL services to Anope using OpenSSL, for example to
* connect to the uplink server(s) via SSL.
*
* You may only load either m_ssl_openssl or m_ssl_gnutls, bot not both.
* You may only load either m_ssl_openssl or m_ssl_gnutls, but not both.
*
*/
#module
@@ -579,7 +596,7 @@ module { name = "help" }
name = "m_ssl_openssl"
/*
* An optional certificate and key for m_openssl to give to the uplink.
* An optional certificate and key for m_ssl_openssl to give to the uplink.
*
* You can generate your own certificate and key pair by using:
*
@@ -588,6 +605,14 @@ module { name = "help" }
*/
cert = "data/anope.crt"
key = "data/anope.key"
/*
* As of 2014 SSL 3.0 is considered insecure, but it might be enabled
* on some systems by default for compatibility reasons.
* You can use the following option to enable or disable it explicitly.
* Leaving this option not set defaults to the default system behavior.
*/
#sslv3 = no
}
/*
@@ -632,13 +657,13 @@ module { name = "help" }
* If set, the reason to give the users who try to "/msg NickServ REGISTER".
* If not set, then registration is not blocked.
*/
#disable_reason = "To register on this network visit http://some.misconfigured.site/register"
#disable_reason = "To register on this network visit https://some.misconfigured.site/register"
/*
* If set, the reason to give the users who try to "/msg NickServ SET EMAIL".
* If not set, then email changing is not blocked.
*/
#disable_email_reason = "To change your email address visit http://some.misconfigured.site"
#disable_email_reason = "To change your email address visit https://some.misconfigured.site"
}
/*
+30 -12
View File
@@ -79,7 +79,7 @@ module
confirmemailchanges = no
/*
* A message sent to users on connect if they use an unregistered nick.
* A message sent to users on connect if they use an unregistered nick. %n will be replaced with the user's nickname.
*
* This directive is optional.
*/
@@ -97,15 +97,18 @@ module
* - ns_secure: Enable nickname security, requiring the nick's password before any operations
* can be done on it
* - ns_private: Hide the nick from NickServ's LIST command
* - hide_email: Hide's the nick's e-mail address from NickServ's INFO command
* - hide_mask: Hide's the nick's last or current user@host from NickServ's INFO command
* - hide_quit: Hide's the nick's last quit message
* - hide_email: Hide the nick's e-mail address from NickServ's INFO command
* - hide_mask: Hide the nick's last or current user@host from NickServ's INFO command
* - hide_status: Hide the nick's services operator access status from NickServ's INFO command
* - hide_quit: Hide the nick's last quit message from NickServ's INFO command
* - memo_signon: Notify user if they have a new memo when they sign into the nick
* - memo_receive: Notify user if they have a new memo as soon as it's received
* - memo_mail: Notify user if they have a new memo by mail
* - autoop: User will be automatically opped in channels they enter and have access to
* - msg: Services messages will be sent as PRIVMSGs instead of NOTICEs, requires
* options:useprivmsg to be enabled as well
* - ns_keepmodes: Enables keepmodes, which retains user modes across sessions
* - ns_keep_modes: Enables keepmodes, which retains user modes across sessions
* - ns_no_expire: Enables no expire. Unconfirmed expire overrules this.
*
* This directive is optional, if left blank, the options will default to ns_secure, memo_signon, and
* memo_receive. If you really want no defaults, use "none" by itself as the option.
@@ -230,7 +233,7 @@ module
command_group
{
name = "nickserv/admin"
description = "Services Operator commands"
description = _("Services Operator commands")
}
/* Give it a help command. */
@@ -306,7 +309,7 @@ module
* The maximum number of entries allowed on a nickname's certificate fingerprint list.
* The default is 5. This number cannot be set to 0.
*/
accessmax = 5
max = 5
}
command { service = "NickServ"; name = "CERT"; command = "nickserv/cert"; }
@@ -380,7 +383,15 @@ command { service = "NickServ"; name = "UNGROUP"; command = "nickserv/ungroup";
*
* Used for identifying to accounts.
*/
module { name = "ns_identify" }
module
{
name = "ns_identify"
/*
* If set, limits the number of concurrent users that can be logged in as a given account at once.
*/
maxlogins = 10
}
command { service = "NickServ"; name = "ID"; command = "nickserv/identify"; hide = true; }
command { service = "NickServ"; name = "IDENTIFY"; command = "nickserv/identify"; }
@@ -389,7 +400,7 @@ command { service = "NickServ"; name = "IDENTIFY"; command = "nickserv/identify"
*
* Provides the commands:
* nickserv/info. - Used for gathering information about an account.
* nickserv/set/hide, nickserv/saset/hide - Used for configuring which options are publically shown in nickserv/info.
* nickserv/set/hide, nickserv/saset/hide - Used for configuring which options are publicly shown in nickserv/info.
*
*/
module { name = "ns_info" }
@@ -447,7 +458,7 @@ module
* If set, Services will svsnick and svsjoin users who use the recover
* command on an identified user to the nick and channels of the recovered user.
*
* This directive is opional.
* This directive is optional.
*/
restoreonrecover = yes
}
@@ -615,6 +626,13 @@ module
* This directive is optional. If not set, the default is never.
*/
#suspendexpire = 90d
/*
* Settings to show to non-opers in NickServ's INFO output.
* Comment to completely disable showing any information about
* suspended nicknames to non-opers.
*/
show = "suspended, by, reason, on, expires"
}
command { service = "NickServ"; name = "SUSPEND"; command = "nickserv/suspend"; permission = "nickserv/suspend"; group = "nickserv/admin"; }
command { service = "NickServ"; name = "UNSUSPEND"; command = "nickserv/unsuspend"; permission = "nickserv/suspend"; group = "nickserv/admin"; }
@@ -640,7 +658,7 @@ command { service = "NickServ"; name = "UPDATE"; command = "nickserv/update"; }
* Limits how many times the same email address may be used in Anope
* to register accounts.
*/
module
#module
{
name = "ns_maxemail"
@@ -649,5 +667,5 @@ module
* commented, there will be no limit enforced when registering new accounts or using
* /msg NickServ SET EMAIL.
*/
#maxemails = 1
maxemails = 1
}
+7 -9
View File
@@ -159,7 +159,7 @@ command { service = "OperServ"; name = "CHANKILL"; command = "operserv/chankill"
*
* Provides the command operserv/defcon.
*
* Allows you to set services in defcon mode, which can be used to restrict services access
* Allows you to set services in DefCon mode, which can be used to restrict services access
* during bot attacks.
*/
#module
@@ -260,7 +260,7 @@ command { service = "OperServ"; name = "CHANKILL"; command = "operserv/chankill"
*/
#akillreason = "This network is currently not accepting connections, please try again later."
}
#command { service = "OperServ"; name = "DEFCON"; command = "operserv/defcon"; }
#command { service = "OperServ"; name = "DEFCON"; command = "operserv/defcon"; permission = "operserv/defcon"; }
/*
* os_dns
@@ -511,11 +511,11 @@ command { service = "OperServ"; name = "NOOP"; command = "operserv/noop"; permis
*
* Provides the command operserv/oline.
*
* Used to set oper flags on users, and is specific to UnrealIRCd.
* Used to set oper flags on users, and is specific to UnrealIRCd 3.2.
* See /helpop ?svso on your IRCd for more information.
*/
module { name = "os_oline" }
command { service = "OperServ"; name = "OLINE"; command = "operserv/oline"; permission = "operserv/oline"; }
#module { name = "os_oline" }
#command { service = "OperServ"; name = "OLINE"; command = "operserv/oline"; permission = "operserv/oline"; }
/*
* os_oper
@@ -570,10 +570,8 @@ module
/*
* Sets the default expiry time for session exceptions.
*
* This directive is required if os_session is loaded.
*/
exceptionexpiry = 1d
#exceptionexpiry = 1d
/*
* The message that will be NOTICE'd to a user just before they are removed from the network because
@@ -594,7 +592,7 @@ module
*
* This directive is optional, if not set, nothing will be sent.
*/
#sessionlimitdetailsloc = "Please visit http://your.website.url/ for more information about session limits."
#sessionlimitdetailsloc = "Please visit https://your.website.url/ for more information about session limits."
/*
* If set and is not 0, this directive tells Services to add an AKILL if the number of subsequent kills
+37 -32
View File
@@ -80,17 +80,17 @@
* [OPTIONAL] Defines
*
* You can define values to other values, which can be used to easily change
* many values in the configuration. at once.
* many values in the configuration at once.
*/
/*
* The services.host define is used in multiple different locations throughout the
* configuration for services clients hostnames.
* The stats.host define is used in multiple different locations throughout the
* configuration for the stats client hostname.
*/
define
{
name = "services.host"
value = "services.localhost.net"
name = "stats.host"
value = "stats.localhost.net"
}
/*
@@ -110,7 +110,7 @@ define
#include
{
type = "executable"
name = "/usr/bin/wget -q -O - http://some.misconfigured.network.com/services.conf"
name = "/usr/bin/wget -q -O - https://some.misconfigured.network.com/stats.conf"
}
/*
@@ -126,30 +126,34 @@ define
* An example configuration for InspIRCd that is compatible with the below uplink
* and serverinfo configuration would look like:
*
* <link name="services.localhost.net"
* # This goes in inspircd.conf, *NOT* your Anope config!
* <link name="stats.localhost.net"
* ipaddr="127.0.0.1"
* port="7000"
* sendpass="mypassword"
* recvpass="mypassword">
* <uline server="services.localhost.net" silent="yes">
* <uline server="stats.localhost.net" silent="yes">
* <bind address="127.0.0.1" port="7000" type="servers">
*
* An example configuration for UnrealIRCd that is compatible with the below uplink
* and serverinfo configuration would look like:
*
* link services.localhost.net
* {
* username *;
* hostname *;
* bind-ip "127.0.0.1";
* port 7000;
* hub *;
* password-connect "mypassword";
* password-receive "mypassword";
* class servers;
* // This goes in unrealircd.conf, *NOT* your Anope config!
* listen {
* ip 127.0.0.1;
* port 7000;
* options {
* serversonly;
* };
* };
* ulines { services.localhost.net; };
* listen 127.0.0.1:7000;
* link stats.localhost.net {
* incoming {
* mask *@127.0.0.1;
* };
* password "mypassword";
* class servers;
* };
* ulines { stats.localhost.net; };
*/
uplink
{
@@ -205,7 +209,7 @@ serverinfo
name = "stats.localhost.net"
/*
* The text which should appear as the server's information in /whois and similar
* The text which should appear as the server's information in /WHOIS and similar
* queries.
*/
description = "Stats for IRC Networks"
@@ -231,13 +235,13 @@ serverinfo
* The filename containing the Services process ID. The path is relative to the
* services root directory.
*/
pid = "data/services.pid"
pid = "data/stats.pid"
/*
* The filename containing the Message of the Day. The path is relative to the
* services root directory.
*/
motd = "conf/services.motd"
motd = "conf/stats.motd"
}
/*
@@ -252,10 +256,12 @@ serverinfo
* - hybrid
* - inspircd12
* - inspircd20
* - inspircd3
* - ngircd
* - plexus
* - ratbox
* - unreal
* - unreal (for 3.2.x)
* - unreal4
*/
module
{
@@ -378,7 +384,7 @@ options
#hidestatso = yes
/*
* A space-separated list of ulined servers on your network, it is assumed that
* A space-separated list of U-lined servers on your network, it is assumed that
* the servers in this list are allowed to set channel modes and Services will
* not attempt to reverse their mode changes.
*
@@ -411,17 +417,17 @@ log
*/
target = "stats.log"
/* Log to both services.log and the channel #services
/* Log to both stats.log and the channel #stats
*
* Note that some older IRCds, such as Ratbox, require services to be in the
* log channel to be able to message it. To do this, configure service:channels to
* join your logging channel.
*/
#target = "stats.log #services"
#target = "stats.log #stats"
/*
* The source(s) to only accept log messages from. Leave commented to allow all sources.
* This can be a users name, a channel name, one of our clients (eg, OperServ), or a server name.
* This can be a users name, a channel name, one of our clients (e.g. OperServ), or a server name.
*/
#source = ""
@@ -432,8 +438,8 @@ log
bot = "Global"
/*
* The number of days to keep logfiles, only useful if you are logging to a file.
* Set to 0 to never delete old logfiles.
* The number of days to keep log files, only useful if you are logging to a file.
* Set to 0 to never delete old log files.
*
* Note that Anope must run 24 hours a day for this feature to work correctly.
*/
@@ -461,7 +467,7 @@ log
* create, destroy, join, part, kick, leave, mode
*
* Valid user options are:
* connect, disconnect, quit, nick, ident, host, mode, maxusers, oper
* connect, disconnect, quit, nick, ident, host, mode, maxusers, oper, away
*
* Rawio and debug are simple yes/no answers, there are no types for them.
*
@@ -510,4 +516,3 @@ include
type = "file"
name = "irc2sql.example.conf"
}
-4846
View File
File diff suppressed because it is too large Load Diff
-1
View File
@@ -1 +0,0 @@
git log --pretty=format:"Revision %h - %cD - %s" > version.log
+1 -1
View File
@@ -1 +1 @@
For all bug reports / updates please see http://bugs.anope.org
For all bug reports / updates please see https://bugs.anope.org/
+7 -7
View File
@@ -21,7 +21,7 @@ The syntax is usually *_cast<type>(var).
static_cast
-----------
From my expierence, this cast is closest to C-style casting for non-pointer
From my experience, this cast is closest to C-style casting for non-pointer
types as well as between some (but not all) pointer types. This type of cast,
like C-style casting, is performed at compile-time. static_cast can also do
a downcast of a derived class to a base class, but only if the base class is
@@ -80,7 +80,7 @@ Bad_cast exception.
Note that in Anope we prefer if Anope::debug_cast is used.
This uses dynamic_cast (and checks for a NULL pointer return) on debug builds
and static_cast on release builds, to speed up the program beacuse of dynamic_cast's
and static_cast on release builds, to speed up the program because of dynamic_cast's
reliance on RTTI.
reinterpret_cast
@@ -100,12 +100,12 @@ Links
The following links are web sites I've used to get this information, and might
describe some of the above a bit better than I have. :P
http://www.acm.org/crossroads/xrds3-1/ovp3-1.html
https://www.acm.org/crossroads/xrds3-1/ovp3-1.html
http://www.cplusplus.com/doc/tutorial/typecasting.html
http://www.codeguru.com/forum/showthread.php?t=312456
http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/BitOp/cast.html
http://msdn.microsoft.com/en-us/library/5f6c9f8h(VS.80).aspx
http://en.wikibooks.org/wiki/C%2B%2B_Programming/Type_Casting
http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=134
https://web.archive.org/web/20170810222238/http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/BitOp/cast.html
https://www.microsoft.com/en-us/download/details.aspx?id=55984
https://en.wikibooks.org/wiki/C%2B%2B_Programming/Type_Casting
https://web.archive.org/web/20160510114447/http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=134
-- CyberBotX, Nov 23, 2008
+1 -1
View File
@@ -1,4 +1,4 @@
Orginally pulled from: http://www.inspircd.org/wiki/Coding_Guidelines
Originally pulled from: https://wiki.inspircd.org/Coding_Guidelines
---
+145 -12
View File
@@ -1,9 +1,142 @@
Anope Version 2.0.7
-------------------
Fix not sending login data on successful NickServ GROUP
Fix m_httpd to not consider headers to be case sensitive
Add InspIRCd 3 protocol support
Add 'n' email token for use in the email change template
Add logging for NickServ UNGROUP
Fix setting swhois on UnrealIRCd
Add nickserv/recover permission to allow opers to recover other users
Fix superadmin not being removed when deopering
Fix setting nickserv access list in webcpanel
Add support for post-handshake SASL in Unreal 4.2.2+
Add logging for channel memo deletionso
Anope Version 2.0.6
-------------------
Log client IP for web clients running commands via webcpanel
Fix log file path for the config file could not be opened log message
Allow nickserv/group to be used via XMLRPC
Fix logsearch without wildcards
Support cidr exempts in m_dnsbl
Add support for IPv6 dnsbls
Add +u and +L channel modes for ircd-hybrid
Set +x after hostserv/off on InspIRCd and UnrealIRCd
Fix chanserv/mode not being able to set extbans
Send CHGIDENT/CHGHOST on SVSLOGIN on InspIRCd
Fix escaping replies from commands in webcpanel
Enable require_oper for all opers added via operserv/oper
Advertise SASL mechanisms to UnrealIRCd servers
Anope Version 2.0.5
-------------------
Fix negative levels to not match users with negative access
Fix memo sender to always be the account name of the sender
Allow unregistered users to use the ChanServ seen command
Fix secureops to not be enforced on operators with the chanserv/administration privilege
Fix command name in HELP syntax messages to always be upper case
Show unconfirmed nickname messages on registration in webcpanel
Fix NickServ SET EMAIL to be executable via XMLRPC
Fix OperServ USERLIST/CHANLIST to accept regexes
Allow OperServ USERLIST to also match realname syntax (n!u@h#r)
Fix db_old importing languages to use the UTF-8 version
Fix m_dns to return REFUSED if no answers could be found
Fix ns_maxemail to be case insensitive
Add MemoServ READ ALL command
Add support for NickServ GROUP to be executed via XMLRPC
Add support for logging hostname/ip of SASL authentication attempts, if supported by IRCd
Anope Version 2.0.4
-------------------
Add notice rpc method to XMLRPC
Fix access check in cs_updown to not allow actions on users with equal access
Fix randomnews to work when there are more than 'newscount' random news
Fix crash from handling nick introduction collisions on unreal4
Add support for GCC6
Fix handling /join 0 on ratbox
Fix saset display to update the account of the proper user
Fix nickserv/confirm to send account and +r when appropriate
Fix chankill to not add duplicate akills
Allow nickserv/maxemail to disregard gmail style aliases when comparing emails
Fix chanserv/mode when setting listmodes with CIDR ranges
Fix reported expiry time when the time is divisible by 1 year
Clearify botserv repeat kicker help and allow setting repeat times to 1
Send vident/vhost with SASL login
Add support for SASL reauth
Fix log and database backup directories to be properly created by the installer
Anope Version 2.0.3
-------------------
Add support for UnrealIRCd 4
Fix cs_access to respect chanserv/access/list privilege
Fix cs_access to match level -1 as every user, not any level <0
Fix problems related to object destruction order when using db_sql_live
Show memo notify settings in ms_info
Fix some actions bumping channels last used time that shouldn't have
Add maxlogins configuration directive to limit the number of concurrent logins to one account
Fix race with auto svsnick on ghost sometimes causing nick collisions instead
Fix saset langauge reply
Show akill/sxlines ids in VIEW
Fix crash when an oper is configured in both the configuration and via os_oper
Fix m_ldap reconnect logic not properly setting protocol and network timeout settings
Fix crash from unloading regex modules when regex xlines exist
Fix irc2sql to store away messages
Add notice method to m_xmlrpc_main
Fix numerics on InspIRCd from being sent to user UID
Fix usermode +I on UnrealIRCd to be considered oper only
Fix crash in webcpanel when deleting your own access on a channel
Fix webcpanel allowing suspended users to login
Fix hs_off on InspIRCd to not desync active user host
Fix bs_bot to not allow colliding bots into users
Don't allow hostserv modules to load if there is no hostserv
Fix ns_register allowing bot nicks to be registered through webcpanel
Don't update chanserv keepmodes during inhabit
Fix build on cmake 2.4
Allow searching emails by wildcard in ns_getemail
Anope Version 2.0.2
-------------------
Fix keepmodes preventing the first user of a channel from being deopped
Fix SQlines that don't begin with # from matching channels
Made cs_clone behave like the help describes, copying many settings and lists by default
Allow cs_clone to clone levels, too
Update Hybrid protocol module for 8.2
Fix not unescaping all characters sent over XMLRPC
Fix crash when os_mode is used to destroy channels, like when unsetting permanent channel mode from an empty channel
Allow users with topic change privilege to change the topic instead of requiring them to use ChanServ's topic command
Fix negatively locking param modes in default mlock
Change entrymsg to check for the SET privilege, not real founder
Allow configuring characters allowed in nicknames
Fix crash when non users register channels externally (like XMLRPC)
Remove operserv/exception MOVE, it did not function correctly. Instead reorder the list by deleting/adding entries.
Allow flood ttb to be 0.
Enforce mlock when disabling defcon modes
Fix cs_mode not being able to apply mlock on register
Add log message when users send memos
Fix old collide timers from staying around after successful identify. Fixes being able to identify and logout and still being hit by the old timers.
Fix undefined behavior in cs_mode which usually crashes when clearing large list modes
Show all opertypes in operserv/info, even if no opers use them
Anope Version 2.0.1
-------------------
Fix access entries on accounts sometimes not updating when a user's display name changes
Fix ns_group to properly validate the account of the user against the target
Fix os_stats not saving max user count and time when using SQL
Fix nickalias's 'nc' field sometimes not being updated when using SQL
Fix several crashes on Windows related to being unable to load modules
Fix bs_bot change not properly reintroducing bots after changing their ident, host, or realname
Add English language file to allow users to easily modify language strings
Add configuring which mode cs_ban sets, and added a MUTE command to BotServ's fantasy
Allow SVSPART to take an optional reason
Allow cs_list to search channel topics and descriptions
Anope Version 2.0.0
-------------------
Added irc2sql stats module
Anope Version 1.9.9
--------------------
-------------------
A Added a better webpanel template, removed the old one
A Added SQL logging support
A Added Redis database support
@@ -15,7 +148,7 @@ F Fixed setting BotServ's default settings in the config
F Fixed some names of config items, including NickServ's kill protect
Anope Version 1.9.8
--------------------
-------------------
A Ability to configure fantasy commands in the config
A Add SVSJOIN and SVSPART commands
F Fix "leave" channel log level from not logging
@@ -27,7 +160,7 @@ F Fix crash in os_forbid with expiring entries
F Fix several issues with db_sql_live
Anope Version 1.9.7
--------------------
-------------------
A Added ability for using regex as patterns for various commands
A Extended ability of operserv/akill to also match against nick and realname
A Added chanserv:require configuration option
@@ -37,7 +170,7 @@ A Added a web panel
A db_sql_live now allows all tables to be "live", not just a select few
Anope Version 1.9.6
--------------------
-------------------
A Added ability to configure emails sent by services
A Added chanserv/up and chanserv/down
A Added m_proxyscan
@@ -56,7 +189,7 @@ F Fixed crash in /os oper info
F Fixed eventfd Config check to work properly on OpenVZ
Anope Version 1.9.5
--------------------
-------------------
A Extended LDAP support
A Added os_oper, os_kill, os_forbid, m_statusupdate, cs_sync, and bs_autoassign
A Added a new configuration file format
@@ -74,7 +207,7 @@ F Fixed setting -P on channels with only a botserv bot in it
F Fixed modemanager complaining about prefixless modes on InspIRCd
Anope Version 1.9.4
--------------------
-------------------
A Automatically set channel founder to the user with the highest access if there is no successor
A /chanserv clone command to copy settings from one channel to another.
A /chanserv mode command
@@ -95,7 +228,7 @@ F Some failed logic in /operserv exception that prevents proper exceptions from
F Fixed the anope_os_sxlines MySQL table and code to work after restarting
Anope Version 1.9.3
--------------------
-------------------
A Added italics BotServ kicks support
A Tell users when their nicks expire in /ns glist and /ns info
A Added SSL support
@@ -122,7 +255,7 @@ F Anoperc start/stop to send the globaloncycle global, and fixed anoperc rehash
F Fixed a potential crash if HostServ or BotServ was disbled
Anope Version 1.9.2
--------------------
-------------------
A K alias to chanserv kick command
A KB alias to chanserv ban command
A The ability to register empty nonregistered channels
@@ -136,8 +269,8 @@ A Added ns_resetpass module to the core
A CS ACCESS VIEW which shows who added the access and last time used
A Last used time to CS AKICK VIEW
A Added a sha_256 encryption module
A Added the ability to load multiple encryption modules, and the ability to seamlessly convert your database between diferent encryptions
A Added configuration options to allow Anope to reconnect if it disconnects from the uplink instead of dieing
A Added the ability to load multiple encryption modules, and the ability to seamlessly convert your database between different encryptions
A Added configuration options to allow Anope to reconnect if it disconnects from the uplink instead of dying
A Added support for linking with IPv6
F Unban command to accept an optional nick arg
F Some typos in services.conf
@@ -153,7 +286,7 @@ F ms_rsend to really work
F SQUITing juped servers on InspIRCd1.2+
Anope Version 1.9.1
--------------------
-------------------
F Don't enforce akick/forbidden/etc.-restrictions on clients on ulined servers.
F Remove modules_unload_all fini + hack that goes with it.
F Signal handling cleanup.
@@ -194,7 +327,7 @@ Provided by Liber <Liber@jasonirc.net> - 2009
F Support operoverride and such things (stop reversing changes from nonopped people where unnecessary)
Anope Version 1.9.0
--------------------
-------------------
F Modified compile to use g++
F Improve protocol modules support (classes, virtual methods, etc)
F Move core services to use BotInfo
+48 -2
View File
@@ -1,8 +1,54 @@
Anope Version 2.0.7
-------------------
Add nickserv/recover permission
Add inspircd3 protocol module
Add default permission for chanstats saset chanstats command
Anope Version 2.0.6
-------------------
Mark enc_md5 and enc_sha1 as deprecated. Their use has been discouraged for years, and they will be removed in a future release.
Exempt all of 127.0.0.0/8 from m_dnsbl by default
Load m_sasl by default
Fix documentation for nickserv default option ns_keep_modes
Anope Version 2.0.5
-------------------
No significant changes.
Anope Version 2.0.4
-------------------
Removed m_sasl_dh-aes and m_sasl_dh-blowfish
Anope Version 2.0.3
-------------------
Add operserv/chankill to default globops log
Add ns_identify:maxlogins to limit the max number of concurrent logins per account
Document ns_no_expire nickserv default
Remove default session exception expiry time
Anope Version 2.0.2
-------------------
Add an operserv/oper/modify privilege, required to use oper add and oper del
Add a chanserv/access/list privilege, which allow readonly access to ChanServ access and akick lists
Changed m_dnsbl's result configuration to be more extensible
Add 'max' setting to cs_mode
Add 'nickchars' setting to networkinfo
Add 'botserv/fantasy', 'chanserv/access/list', and 'operserv/oper/modify' oper privileges
Fix 'emailchange_message' to include the proper email address
Set a default permission on operserv/defcon
Anope Version 2.0.1
-------------------
Add MUTE command to BotServ fantasy configuration
Document memo_mail option in nickserv.conf
Add 'show' setting to ns_info and cs_info to control which fields are shown to non opers
Anope Version 2.0.0
-------------------
options:passlen, enforceruser, enforcerhost, releasetimeout, and guestnickprefix moved to nickserv's module configuration
options:hideregisteredcommands added
m_ssl renamed to m_ssl_openssl
mail:restrict removed
Anope Version 1.9.9
-------------------
@@ -67,7 +113,7 @@ opertype:commands removed operserv/umode
operserv:modules removed os_umode
Anope Version 1.9.3
------------------
-------------------
** ADDED CONFIGURATION DIRECTIVES **
nickserv/auspex privilege added
SSL module added for SSL support
@@ -101,7 +147,7 @@ networkinfo:logchannel, logbot, logusers, logmaxusers, logchannel, and options:k
dumpcore because it really didn't do anything
Anope Version 1.9.2
--------------------
-------------------
** ADDED CONFIGURATION DIRECTIVES **
options:enablelogchannel added to auto turn on the logchannel on startup
options:mlock added to configure the default mlock modes on new channels
+18 -19
View File
@@ -1,4 +1,4 @@
Anope DefCon
Anope DefCon
------------
1) Introduction
@@ -11,7 +11,7 @@ Anope DefCon
1) Introduction
Anope 1.6 onwards supports a unique protection mechanism based on the
military "Defense Readiness Condition" (DefCon) system. It is based on
military "Defense Readiness Condition" (DefCon) system. It is based on
5 levels of defense readiness defined as:
DEFCON5 Normal peacetime readiness
@@ -23,9 +23,9 @@ Anope DefCon
These are configurable levels that mandates what actions Anope should
take in case of emergency and change in readiness status.
It is used to prevent abuse to both Services, and the ircd on which they
It is used to prevent abuse to both Services, and the ircd on which they
are running. Also to protect the users, primarily in the event of Clones
and/or FloodBOT attacks.
and/or FloodBOT attacks.
2) Installation
@@ -44,26 +44,26 @@ Anope DefCon
Pre-defined DefCon actions:
No new channel registrations
No New Nick Registrations
No new channel registrations
No New Nick Registrations
No Mode Lock changes
Force Chan Mode
Use Reduced Session Limit
KILL any new clients trying to connect
Services will ignore everyone but opers
Services will silently ignore everyone but opers
AKILL all new clients trying to connect
Force Chan Mode
Use Reduced Session Limit
KILL any new clients trying to connect
Services will ignore everyone but opers
Services will silently ignore everyone but opers
AKILL all new clients trying to connect
No new memos sent to block MemoServ attacks
Information regarding how to enable this for specific defcon levels can
be found in operserv.conf
4) Usage
Anope starts up in DEFCON5 (normal readiness). To change the Defcon level
in action use:
/msg OperServ DEFCON 1|2|3|4|5
Anope starts up in DEFCON5 (normal readiness). To change the Defcon level
in action use:
/msg OperServ DEFCON 1|2|3|4|5
5) Usage Example
@@ -89,6 +89,5 @@ Anope DefCon
6) Support
You might get DefCon support by posting on our online forum, or maybe on
You might get DefCon support by posting on our online forum, or maybe on
our #anope channel at /server irc.anope.org.
-1
View File
@@ -32,4 +32,3 @@ Anope Internal Events
The "anope_override" identifier is for compatibility with C++11.
Its usage is highly recommended.
+5 -5
View File
@@ -1,10 +1,10 @@
Frequently Asked Questions (FAQ) concerning Anope
------------------------------------------------
The information in the 1.9 FAQ is subject to change at any
-------------------------------------------------
The information in the 2.0 FAQ is subject to change at any
moment due to new developments. Please visit our website
for the most up to date information.
An updated version of the FAQ can be found here:
http://wiki.anope.org/index.php/FAQ
https://wiki.anope.org/index.php/2.0/FAQ
+11 -26
View File
@@ -19,27 +19,20 @@ Note: You should also read the README and FAQ files!
The very first thing you need to do is to get the Anope package (if not
already done). You can find it at:
http://www.anope.org/
https://www.anope.org/
Anope can be built one of two ways. The recommended way is to use CMake.
You can check if CMake is already installed on your system using the
command:
Anope requires cmake to build. You can check if CMake is already
installed on your system using the command:
cmake --version
If it's installed, you will get a line that says something similar to
"cmake version 2.6-patch 1". If the version is less than 2.4 or you get
"cmake version 2.8.12.2". If the version is less than 2.4 or you get
an error saying the command was not found, you will not be able to use
CMake unless you install it yourself into your home directory. CMake
can be downloaded from:
http://www.cmake.org/cmake/resources/software.html
If you are unable to install CMake yourself (either due to lack of space
or restrictions by your hosting provider), you still have the alternative
to use the provided configure script. This option is not recommended and
will eventually be phased out, but is provided for compatibility for those
lacking CMake.
https://cmake.org/download/
Next, unpack the package in your home directory, and go into the created
directory.
@@ -51,16 +44,8 @@ Note: You should also read the README and FAQ files!
Now type ./Config to start the configuration script. It will ask you a
few questions, and figure out how to compile Anope on your system. If
you are unsure about the answer to a question, use the default value.
The question to using configure or cmake depends on your decision from
above. If you have CMake and wish to use it, answer with cmake, otherwise
answer with configure.
You can now type make to compile Anope. If there are errors in the
Makefile, *try to use gmake* instead. If it still doesn't work, you (or
the system administrator if it's a shell) must install GNU make. You may
find it at ftp://prep.ai.mit.edu/pub/gnu/.
Now type make install (or gmake install; see above). This will install
Now cd build and type make and make install. This will install
all the needed files in the paths you specified with the configure
script, and setup file permissions. You should ensure that the data
directory is not accessible by other users, as malicious users may
@@ -74,8 +59,8 @@ Note: You should also read the README and FAQ files!
the file carefully. Using the default values is NOT a good idea, and will
most likely not work!
If you need help, you should visit http://forum.anope.org/ or #anope on
irc.anope.org. Provide *complete* error output, along with other relevant
If you need help, you should visit https://forum.anope.org/ or #anope on
irc.anope.org. Provide *complete* error output, along with other relevant
information eg. OS, compiler and C++ library versions.
See the README file for more information.
@@ -105,7 +90,7 @@ Note: You should also read the README and FAQ files!
You may also try our interactive link maker, which is located at:
http://anope.org/ilm.php
https://www.anope.org/ilm.php
4) Starting Anope
@@ -131,8 +116,8 @@ Note: You should also read the README and FAQ files!
still running, and restart it if not.
First rename the example.chk script that is in Anope path (by default,
this is ~/services/conf) to services.chk and edit it. You'll need to
modify the CONFIGURATION part of the file. Then ensure that the file is
this is ~/services/conf) to services.chk and edit it. You'll need to
modify the CONFIGURATION part of the file. Then ensure that the file is
marked as executable by typing chmod +x services.chk, and try to launch the
script to see if it works (Anope must not be running when you do this ;))
+93 -102
View File
@@ -1,5 +1,5 @@
Instructions d'installation d'Anope
------------------------------------
-----------------------------------
1) Installation d'Anope
2) Mettre à jour Anope
@@ -11,148 +11,139 @@ Note : Vous devrez également lire les fichiers README et FAQ !
1) Installation d'Anope
NOTE IMPORTANTE : il n'est pas recommandé d'utiliser (et même d'installer)
Anope en tant que root. Utilisez un utilisateur non
privilégié. Celui que vous utilisez pour l'IRCd ou un
utilisateur dédié suffira.
NOTE IMPORTANTE : il est déconseillé d'utiliser (et même d'installer)
Anope en tant que root. Utilisez un utilisateur non
privilégié. Celui que vous utilisez pour l'IRCd ou
un utilisateur dédié suffira.
La première chose que vous devez faire est d'obtenir le package Anope (si ce
n'est déjà fait). Vous pouvez le trouver ici :
La première chose que vous devez faire est d'obtenir le package Anope
(si ce n'est déjà fait). Vous pouvez le trouver ici :
http://www.anope.org/
https://www.anope.org/
Anope peut être installé de deux façons. La méthode recommandée est
d'utiliser CMake. Vous pouvez vérifier si CMake est déjà installé
sur votre système en utilisant la commande :
Anope nécessite cmake pour être compilé. Vous pouvez vérifier si CMake
est déjà installé sur votre système avec la commande :
cmake --version
Si CMake est installé, vous aurez une ligne qui dit quelque chose similaire
à "cmake version 2.6 cmake-patch 1". Si la version est inférieure à 2.4 ou
si vous obtenez une erreur disant que la commande n'a pas été trouvée,
vous ne serez pas en mesure d'utiliser CMake, sauf si vous l'installez
vous-même dans votre répertoire home. CMake peut être téléchargé ici :
Si CMake est installé, vous aurez une ligne qui dit quelque chose comme
"cmake version 2.8.12.2". Si la version est inférieure à 2.4 ou si vous
obtenez une erreur disant que la commande n'a pas été trouvée, vous ne
pourrez pas utiliser CMake à moins de l'installer vous-même dans votre
répertoire home. CMake peut être téléchargé ici :
http://www.cmake.org/cmake/resources/software.html
https://cmake.org/download/
Si vous n'arrivez pas à l'installer (soit en raison du manque d'espace
ou de restrictions par votre fournisseur d'hébergement), vous pouvez encore
utiliser le script de configuration fourni. Cette option n'est pas
recommandée et finira par être retirée, mais est fournie pour la
compatibilité de ceux à qui il manque CMake.
Ensuite, décompressez le package dans votre répertoire home, et allez
dans le répértoire qui vient d'être créé.
Ensuite, décompressez le package dans votre répertoire home, et allez dans
le répértoire qui vient d'être créé.
Si il y a des modules facultatifs que vous voulez activer comme m_mysql,
exécuter le script 'extras' pour les activer. Si vous ne savez pas, vous
pouvez les activer plus tard.
Maintenant, tapez ./Config pour lancer le script de configuration. Il va
vous poser quelques questions, et compiler Anope sur votre système. Si vous
ne savez pas répondre à une question, utilisez la valeur par défaut. La
question d'utiliser CMake ou configure dépend de la décision que vous avez
prise précedemment. Si vous avez CMake et que vous souhaitez l'utiliser,
répondez avec cmake, sinon répondez avec configure.
Maintenant, tapez ./Config pour lancer le script de configuration. Il
va vous poser quelques questions, et déterminer comment compiler Anope
sur votre système. Si vous ne savez pas comment répondre à une question,
utilisez la valeur par défaut.
Vous pouvez maintenant taper make pour compiler Anope. S'il y'a des erreurs
dans le Makefile, *essayez d'utiliser* gmake à la place. Si cela ne
fonctionne toujours pas, vous (ou votre administrateur système) devriez
installer GNU make.
Vous pouvez le trouver ici : ftp://prep.ai.mit.edu/pub/gnu/.
Allez dans le dossier build (cd build) et tapez make et make install.
Ceci va installer tous les fichiers nécessaires dans les dossiers que
vous avez indiqués avec le script Config et régler les permissions des
fichiers. Vous devez vous assurer que le répertoire data n'est pas
accessible par les autres utilisateurs, car des utilisateurs
malveillants pourraient causer des problèmes sur votre réseau, si les
mots de passe ne sont pas chiffrés, ou lire les mémos de tous les
utilisateurs.
Maintenant, tapez make install (ou gmake install ; voir ci-dessus). Cela
permet d'installer tous les fichiers nécessaires dans les chemins que vous
avez spécifié au script configure, et de régler les permissions des fichiers.
Vous devez vous assurer que le répertoire data n'est pas accessible par les
autres utilisateurs, des utilisateurs malveillants pourraient causer des
problèmes sur votre réseau, si les mots de passe ne sont pas chiffrés,
ou lire les mémos de tout utilisateur.
Allez maintenant dans le répertoire conf (par défaut, ~/services/conf).
Copiez l'exemple de fichier de configuration (example.conf) en
services.conf et ouvrez ce dernier avec votre éditeur de texte favori.
Il contient toutes les directives de configuration qu'Anope va utiliser
en démarrant. Lisez attentivement les instructions contenues dans le
fichier. L'utilisation des valeurs par défaut n'est pas toujours
recommandée, et Anope ne fonctionnera probablement pas !
Si vous voyez des erreurs lors de ce processus, merci de nous envoyer un
e-mail avec la sortie d'erreur *complète* et n'oubliez pas de mentionner
les versions de votre système, compilateur et bibliothèque C++.
Allez maintenant dans le répertoire de données (par défaut, ~/services/data).
Copiez l'exemple de fichier de configuration (example.conf) en services.conf
et ouvrez ce dernier avec votre éditeur de texte favori. Il contient toute
les directives de configuration. Anope va l'utiliser au démarrage.
Lisez attentivement les instructions contenues dans le fichier.
L'utilisation des valeurs par défaut n'est pas recommendé et Anope ne
fonctionnera probablement pas.
Si vous avez besoin d'aide, abonnez-vous à la liste de diffusion Anope
et envoyez-y vos e-mails pour obtenir de l'aide de la part des autres
utilisateurs. Voir le fichier README pour plus d'informations.
Si vous avez besoin d'aide, vous pouvez aller sur le site
https://forum.anope.org/ ou le canal #anope sur irc.anope.org.
Fournissez *l'essemble* des erreurs qui apparaîssent, en plus de
toutes informations utiles, comme les versions de votre OS, du
compilateur utilisé et de la librairie C++. Lisez le fichier README
pour plus d'informations.
2) Mettre à jour Anope
Pour mettre à jour Anope, suivez simplement les instructions d'installation
décrites dans la section 1. Il y a cependant une ligne de conduite
spécifique :
Pour mettre à jour Anope, suivez simplement les instructions
d'installation décrites dans la section 1. Prenez garde cependant :
* IMPORTANT : Sauvegardez vos anciennes bases de données !
* Si vous mettez à jour vers une nouvelle version majeure, toujours
redémarrer avec un fichier de configuration neuf depuis example.conf.
* Si vous mettez à jour vers une nouvelle version majeure,
recommencez *toujours* toute votre configuration à partir du
fichier example.conf.
3) Configuration de l'IRCd
Les Services agissent comme un serveur IRC avec des pseudo-clients.
Pour les relier à votre réseau, vous aurez besoin de configurer votre IRCd
pour permettre aux services de linker.
Les Services agissent comme un serveur IRC avec des pseudo-clients.
Pour les relier à votre réseau, vous aurez besoin de configurer votre
IRCd pour permettre aux services de se connecter.
La configuration varie selon les IRCd, mais vous aurez probablement besoin
d'un block link (aussi appelé connect block, ou C line), un U line (aussi
appelé shared block) et assurez-vous que l'IRCd écoute sur le port donné
dans le block link.
La configuration dépend de l'IRCd utilisé, mais vous aurez probablement
besoin d'un bloc link (aussi appelé connect block, ou C:line) et un
U:line (aussi appelé shared block). Assurez-vous que l'IRCd écoute
sur le port donné dans le bloc link.
Des exemples de configurations de link peuvent être trouvés dans le fichier
example.conf pour certains des IRCd les plus populaires.
Des exemples de configurations de bloc link peuvent être trouvés dans
le fichier example.conf pour certains des IRCd les plus populaires.
Souvenez-vous de /rehash votre IRCd pour appliquer les changements.
Vous pouvez également essayer notre créateur de link interactif situé ici :
Vous pouvez également essayer notre créateur de bloc link interactif
situé ici :
http://anope.org/ilm.php
https://www.anope.org/ilm.php
4) Mettre en route Anope
Allez dans le répertoire où les fichiers binaires ont été installés (par
défaut, ~/services/bin). Tapez ./services pour lancer Anope.
Allez dans le répertoire où les fichiers binaires ont été installés
(par défaut, ~/services/bin). Tapez ./services pour lancer Anope.
S'il ya des erreurs de syntaxe dans le fichier de configuration, elles
seront affichées sur l'écran. Corrigez-les jusqu'à ce qu'il n'y en ait plus.
Un démarrage réussi ne générera pas de message.
S'il y a des erreurs de syntaxe dans le fichier de configuration, elles
seront affichées à l'écran. Corrigez-les jusqu'à ce qu'il n'y en ait
plus. Un démarrage réussi ne générera pas de message.
Donnez aux services au moins une minute pour se connecter à votre réseau.
Certains IRCds sur certains systèmes peuvent être très lents pour le
processus de liaison. Si rien n'arrive après environ une minute, il y a
probablement un problème de configuration. Essayez de lancer Anope en mode
debug ./services -debug -nofork pour voir toutes les erreurs rencontrées
et essayez de les corriger.
Donnez aux services au moins une minute pour se connecter à votre
réseau, car certains IRCds sur certains systèmes peuvent être très
lents pour le processus de liaison. Si rien ne se passe après environ
une minute, il y a probablement un problème de configuration. Essayez
de lancer Anope en mode debug avec ./services -debug -nofork pour voir
toutes les erreurs rencontrées et essayez de les corriger.
Si vous avez besoin d'aide pour résoudre des erreurs, n'hésitez pas à vous
abonner à la liste de diffusion Anope et d'y poser vos question.
Si vous avez besoin d'aide pour résoudre des erreurs, n'hésitez pas à
vous abonner à la liste de diffusion Anope et d'y poser vos question.
Voir le fichier README pour plus de détails.
5) Mettre en place un crontab
Une entrée crontab vous permettra de vérifier périodiquement si Anope est
toujours en cours d'exécution et de le redémarrer s'il n'est pas.
Une entrée crontab vous permettra de vérifier périodiquement si Anope
est toujours en cours d'exécution et de le redémarrer s'il n'est pas.
D'abord renommez le script example.chk qui est dans le chemin d'Anope
(par défaut, ~/services/data) en services.chk et modifiez-le. Vous aurez
besoin de modifier la partie CONFIGURATION du fichier. Assurez-vous ensuite
que le fichier est marqué comme exécutable en tapant chmod +x services.chk
et essayez de lancer le script pour voir si cela fonctionne (Anope ne doit
pas être en marche lorsque vous faites cela ;))
D'abord renommez le script example.chk qui est dans les dossiers
d'Anope (par défaut, ~/services/conf) en services.chk et modifiez-le.
Vous aurez besoin de modifier la partie CONFIGURATION du fichier.
Assurez-vous ensuite que le fichier est marqué comme exécutable en
tapant chmod +x services.chk et essayez de lancer le script pour voir
si cela fonctionne (Anope ne doit pas être en marche lorsque vous
testez cela ;))
Lorsque c'est fait, vous devrez ajouter l'entrée crontab. Tapez crontab -e.
Cela va ouvrir l'éditeur de texte par défaut avec le fichier crontab.
Entrez la ligne suivante (avec le chemin correct) :
Lorsque c'est fait, vous devrez ajouter l'entrée crontab. Entrez
crontab -e. Cela va ouvrir l'éditeur de texte par défaut avec le
fichier crontab. Entrez la ligne suivante (avec le chemin correct) :
*/5 * * * * /home/ircd/services/data/services.chk > /dev/null 2>&1
*/5 * * * * /home/ircd/services/conf/services.chk > /dev/null 2>&1
Le */5 au début signifie "vérifier toutes les 5 minutes". Vous pouvez
remplacer le 5 par un autre numéro si vous voulez (mais moins de 60).
Consultez pages de manuel de votre système pour plus de détails sur la
syntaxe du fichier crontab. Les pages de manuel intéressantes sont
remplacer le 5 par un autre numéro si vous voulez (mais moins de 60).
Consultez les pages de manuel de votre système pour plus de détails sur
la syntaxe du fichier crontab. Les pages de manuel intéressantes sont
crontab(5), crontab(1) et cron(8).
Sauvegardez, quittez et c'est installé.
Sauvegardez, quittez, et c'est installé !
+2 -2
View File
@@ -22,13 +22,13 @@ Anope Mutli Language Support
2) Adding a new language
Anope uses gettext (http://www.gnu.org/software/gettext/) to translate messages for users. To add a new language
Anope uses gettext (https://www.gnu.org/software/gettext/) to translate messages for users. To add a new language
install gettext and run `msginit -l language -o anope.language.po -i anope.pot`. For example if I was translating to
Spanish I could run `msginit -l es_ES -o anope.es_ES.po -i anope.pot`. Open the newly generating .po file and start
translating. Once you are done simply rerun ./Config; make && make install and add the language to your services.conf.
Note that on Windows it is not quite this simple, windows.cpp must be edited and Anope recompiled and restarted.
Poedit (http://www.poedit.net/) is a popular po file editor, and we recommend using it or another editor designed to edit
Poedit (https://poedit.net/) is a popular po file editor, and we recommend using it or another editor designed to edit
po files (especially on Windows).
If you have finished a language file translation and you want others to use it, please send it to team@anope.org
+4 -4
View File
@@ -87,7 +87,7 @@ Anope Modules
5) More Modules
You can download more useful modules from http://modules.anope.org/. Just
You can download more useful modules from https://modules.anope.org/. Just
grab the module file (usually with a .cpp extension). Place the module
file in your modules (anope-1.9.x/modules/third) folder; although any of
the other folders within the modules directory will work.
@@ -117,12 +117,12 @@ Anope Modules
There are a number of useful documents on the Anope Wiki. The Anope Wiki
can be reached at:
* http://wiki.anope.org/
* https://wiki.anope.org/
8) Modules Repository
You can find modules at http://modules.anope.org
You can find modules at https://modules.anope.org/
These modules are 3rd party and as such are not supported by the Anope Team.
Contact the Module Author directly with problems, not the Anope Team.
-1
View File
@@ -4,4 +4,3 @@ Highlighted News in Anope 1.9
* Added in live updating SQL and the ability to execute commands through SQL
* Re-designed configuration file
* Code refresh / rewrite into C++
+12 -14
View File
@@ -1,16 +1,14 @@
Anope -- a set of IRC services for IRC networks
-----------------------------------------------
Anope is 2003-2014 Anope Team <team@anope.org>.
Anope is 2003-2019 Anope Team <team@anope.org>.
Based on Epona 2000-2002 PegSoft <epona@pegsoft.net>.
Based on Services 1996-1999 Andrew Church <achurch@achurch.org>.
This program is free but copyrighted software; see the file COPYING for
details.
Information about Anope may be found at http://www.anope.org/
Information about Epona may be found at http://www.epona.org/
Information about Services may be found at http://www.ircservices.esper.net/
Information about Anope may be found at https://www.anope.org/
Table of Contents
-----------------
@@ -19,7 +17,7 @@ Table of Contents
3) Installation
4) Command Line Options
5) Messages Translation
6) Contact and Mailing List
6) Contact
1) Credits
@@ -107,11 +105,11 @@ Table of Contents
Anope Translations:
* Robby <robby@chat.be> (nl_NL)
* Robby <robby@chatbelgie.be> (nl_NL)
* Kein <kein-of@yandex.ru> (ru_RU)
* Maik Funke <Han@mefalcon.org> (de_DE)
* Isaac Fontal <i_fontal@hotmail.com> (es_ES)
* Janos Kapitany <sarkanyka@cjbchat.hu> (hu_HU)
* Janos Kapitany <sarkanyka@cjbchat.hu> (hu_HU)
* Szymon S'wierkosz <szymek@adres.pl> (pl_PL)
* Christopher N. <saka@epiknet.org> (fr_FR)
* Yusuf Kurekci <ysfm.20@gmail.com> (tr_TR)
@@ -170,12 +168,12 @@ Table of Contents
* Bahamut 1.4.27 or later (including 1.8)
* Charybdis 3.4 or later
* Hybrid 8.1 or later
* InspIRCd 1.2 or 2.0
* Hybrid 8.2 or later
* InspIRCd 1.2 or later
* ngIRCd 19.2 or later
* Plexus 3 or later
* Ratbox 2.0.6 or later
* UnrealIRCd 3.2 or later
* UnrealIRCd 3.2 or 4
Anope could also work with some of the daemons derived by the ones listed
above, but there's no support for them if they work or don't work.
@@ -242,19 +240,19 @@ Table of Contents
6) Contact
For announcements and discussions about Anope, please visit our
Portal and Forums at http://www.anope.org/ -- make sure you register
Portal and Forums at https://www.anope.org/ -- make sure you register
yourself to get full benefits.
If you read the documentation carefully, and didn't find the answer to
your question, feel free to post on the website forums or join our irc
channel (irc.anope.org #anope). Once you join our Support channel be as
channel (irc.anope.org #anope). Once you join our Support channel be as
precise as possible when asking a question, because we have no extraordinary
powers and can't guess things if they aren't provided.
powers and can't guess things if they aren't provided.
The more precise you are the sooner you'll be likely to get an answer.
If you think you found a bug, add it to the bug tracking system
(http://bugs.anope.org) and - again - be as precise as possible. Also say
(https://bugs.anope.org/) and - again - be as precise as possible. Also say
whether the bug happens always or under what circumstances, and anything
that could be useful to track your bug down. If you wrote a patch, send
it over. :)
+5 -5
View File
@@ -1,8 +1,8 @@
Starting in Anope 1.9.9, Anope has Redis database support (http://redis.io/).
Starting in Anope 1.9.9, Anope has Redis database support (https://redis.io/).
This document explains the data structure used by Anope, and explains how
keyspace notification works.
This is not a tutorial on how to use Redis, see http://redis.io/documentation
This is not a tutorial on how to use Redis, see https://redis.io/documentation
for that.
Table of Contents
@@ -14,7 +14,7 @@ Table of Contents
1) Data structure
There are 4 key namespaces in Anope, they are:
id - The keys in id are used to atomically create object ids for new
objects. For example, if I were to create a new BotInfo I would first:
@@ -70,7 +70,7 @@ Table of Contents
2) Keyspace notifications
Redis 2.7 (unstable) and 2.8 (stable) and newer support keyspace notifications
(http://redis.io/topics/notifications). This allows Redis to notify Anope of
(https://redis.io/topics/notifications). This allows Redis to notify Anope of
any external changes to objects in the database. Once notified, Anope will
immediately update the object. Otherwise, Anope keeps all objects in memory
and will not regularly read from the databaes once started.
@@ -152,7 +152,7 @@ Table of Contents
HMSET hash:BotInfo:8 nick redis user redis host services.anope.org realname "Services for IRC Networks"
Note if you are using HSET instead of HMSET you will need to use a transaction, as shown in the above example.
If you are watching your services logs you will immediatly see:
If you are watching your services logs you will immediately see:
USERS: redis!redis@services.anope.org (Services for IRC Networks) connected to the network (services.anope.org)
+3 -4
View File
@@ -20,7 +20,6 @@ Anope Bundled Tools
address. This should generate a log file of what happened when it tried
to connect to the SMTP server.
Credits:
Originally written by Dominick Meglio <codemastr@unrealircd.com>
Ported to *nix by Trystan Scott Lee <trystan@nomadirc.net>
Credits:
Originally written by Dominick Meglio <codemastr@unrealircd.com>
Ported to *nix by Trystan Scott Lee <trystan@nomadirc.net>
+5 -14
View File
@@ -18,10 +18,10 @@ Anope for Windows
1) Download the required files:
* Current Anope source:
http://sourceforge.net/project/showfiles.php?group_id=94081
https://github.com/anope/anope/releases
* CMake:
http://www.cmake.org/cmake/resources/software.html
https://cmake.org/download/
(NOTE: When installing, tell CMake to add itself to the PATH.)
@@ -73,18 +73,10 @@ Anope for Windows
Some Anope modules require third party libraries, such as m_mysql and
the SSL modules. If these libraries are installed in nonstandard
locations, cmake will probably not find them and should be told where
they are by passing additional search paths to the last question in
Config, such as:
they are by passing their location to Config.
-DEXTRA_INCLUDE:STRING=c:/openssl/include;c:/mysql/include
-DEXTRA_LIBS:STRING=c:/openssl/lib;c:/mysql/lib
Building Anope with gettext requires libintl, libiconv, libgcc and
libmingex. We have precompiled these libraries for you that you may
use if you want. They are avaiable at http://anope.org/downloads/anope-extra.zip
The OpenSSL, MySQL, and OpenLDAP header files and libraries are also included in
this package. Once downloaded and extracted, you should run install.bat
then give Config the path to the new 'installed' directory.
The libraries used to build the 'extra' modules are available at
https://github.com/Adam-/windows-scripts.
5) You are now ready to compile. If you said you wanted to use NMake in step 4,
at the prompt type:
@@ -167,4 +159,3 @@ Anope for Windows
Anope's Windows Installer was made using:
* NSIS 2.20 <http://nsis.sourceforge.net>
+8 -5
View File
@@ -3,11 +3,11 @@ This allows external applications, such as websites, to execute remote procedure
Currently there are 5 supported XMLRPC calls, provided by m_xmlrpc_main:
checkAuthetication - Takes two parameters, an account name and a password. Checks if the account name is valid and the password
is correct for the account name, useful for making login pages on websites.
checkAuthentication - Takes two parameters, an account name and a password. Checks if the account name is valid and the password
is correct for the account name, useful for making login pages on websites.
command - Takes three parameters, a service name (BotServ, ChanServ, NickServ), a user name (whether online or not), and the command
to execute. This will execute a the given command to Anope using the given service name. If the user given is online, the
to execute. This will execute the given command to Anope using the given service name. If the user given is online, the
command reply will go to them, if not it is returned by XMLRPC.
stats - Takes no parameters, returns miscellaneous stats that can be found in the /operserv stats command.
@@ -17,10 +17,13 @@ channel - Takes one parameter, a channel name, and returns real time information
user - Takes one parameter, a user name, and returns real time information regarding that user.
opers - Takes no parameters, returns opertypes, their privileges and commands.
notice - Takes three parameters, source user, target user, and message. Sends a message to the user.
XMLRPC was designed to be used with db_sql, and will not return any information that can be pulled from the SQL
database, such as accounts and registered channel information. It is instead used for pulling realtime data such
as users and channels currently online. For examples on how to use these calls in PHP, see xmlrpc.php in docs/XMLRPC.
Also note that the parameter named "id" is reserved for query ID. If you pass a query to Anope containing a value for id. it will
be stored by Anope and the same id will be passed back in the result.
+126 -71
View File
@@ -1,90 +1,145 @@
<?php
/* XMLRPC Functions
/**
* XMLRPC Functions
*
* (C) 2003-2014 Anope Team
* (C) 2003-2019 Anope Team
* Contact us at team@anope.org
*
*/
class AnopeXMLRPC
{
private $Host;
/**
* The XMLRPC host
*
* @var string
*/
private $host;
function __construct($Host)
{
$this->Host = $Host;
}
/**
* Initiate a new AnopeXMLRPC instance
*
* @param $host
*/
public function __construct($host)
{
$this->host = $host;
}
/** Run an XMLRPC command. Name should be a query name and params an array of parameters, eg:
* $this->RunXMLRPC("checkAuthentication", array("adam", "qwerty"));
* If successful returns back an array of useful information.
*
* Note that $params["id"] is reserved for query ID, you may set it to something if you wish.
* If you do, the same ID will be passed back with the reply from Anope.
*/
function RunXMLRPC($name, $params)
{
$xmlquery = xmlrpc_encode_request($name, $params);
$context = stream_context_create(array("http" => array(
"method" => "POST",
"header" => "Content-Type: text/xml",
"content" => $xmlquery)));
/**
* Run an XMLRPC command. Name should be a query name and params an array of parameters, eg:
* $this->raw("checkAuthentication", ["adam", "qwerty"]);
* If successful returns back an array of useful information.
*
* Note that $params["id"] is reserved for query ID, you may set it to something if you wish.
* If you do, the same ID will be passed back with the reply from Anope.
*
* @param $name
* @param $params
* @return array|null
*/
public function run($name, $params)
{
$xmlquery = xmlrpc_encode_request($name, $params);
$context = stream_context_create(["http" => [
"method" => "POST",
"header" => "Content-Type: text/xml",
"content" => $xmlquery]]);
$inbuf = file_get_contents($this->Host, false, $context);
$response = xmlrpc_decode($inbuf);
$inbuf = file_get_contents($this->host, false, $context);
$response = xmlrpc_decode($inbuf);
if (isset($response[0]))
return $response[0];
return NULL;
}
if ($response) {
return $response;
}
/** Do Command on Service as User, eg:
* $anope->DoCommand("ChanServ", "Adam", "REGISTER #adam");
* Returns an array of information regarding the command execution, if
* If 'online' is set to yes, then the reply to the command was sent to the user on IRC.
* If 'online' is set to no, then the reply to the command is in the array member 'return'
*/
function DoCommand($Service, $User, $Command)
{
return $this->RunXMLRPC("command", array($Service, $User, $Command));
}
return null;
}
/** Check an account/nick name and password to see if they are valid
* Returns the account display name if valid
*/
function CheckAuthentication($Account, $Pass)
{
$ret = $this->RunXMLRPC("checkAuthentication", array($Account, $Pass));
/**
* Do Command on Service as User, eg:
* $anope->command("ChanServ", "Adam", "REGISTER #adam");
* Returns an array of information regarding the command execution, if
* If 'online' is set to yes, then the reply to the command was sent to the user on IRC.
* If 'online' is set to no, then the reply to the command is in the array member 'return'
*
* @param $service
* @param $user
* @param $command
* @return array|null
*/
public function command($service, $user, $command)
{
return $this->run("command", [$service, $user, $command]);
}
if ($ret && $ret["result"] == "Success")
return $ret["account"];
return NULL;
}
/**
* Check an account/nick name and password to see if they are valid
* Returns the account display name if valid
*
* @param $account
* @param $pass
* @return string|null
*/
public function auth($account, $pass)
{
$ret = $this->run("checkAuthentication", [$account, $pass]);
/* Returns an array of misc stats regarding Anope
*/
function DoStats()
{
return $this->RunXMLRPC("stats", NULL);
}
if ($ret && $ret["result"] == "Success") {
return $ret["account"];
}
/* Look up data for a channel
* Returns an array containing channel information, or an array of size one
* (just containing the name) if the channel does not exist
*/
function DoChannel($Channel)
{
return $this->RunXMLRPC("channel", array($Channel));
}
return null;
}
/* Like DoChannel(), but different.
*/
function DoUser($User)
{
return $this->RunXMLRPC("user", array($User));
}
/**
* Returns an array of misc stats regarding Anope
*
* @return array|null
*/
public function stats()
{
return $this->run("stats", null);
}
/**
* Look up data for a channel
* Returns an array containing channel information, or an array of size one
* (just containing the name) if the channel does not exist
*
* @param $channel
* @return array|null
*/
public function channel($channel)
{
return $this->run("channel", [$channel]);
}
/**
* Sent a notice to a user.
* Returns an array containing channel information, or an array of size one
* (just containing the name) if the channel does not exist
*
* @param $source
* @param $target
* @param $message
* @return array|null
*/
public function notice($source, $target, $message)
{
return $this->run("notice", [$source, $target, $message]);
}
/**
* Like channel(), but different.
*
* @param $user
* @return array|null
*/
public function user($user)
{
return $this->run("user", [$user]);
}
}
$anopexmlrpc = new AnopeXMLRPC("http://127.0.0.1:8080/xmlrpc");
?>
$anope = new AnopeXMLRPC("http://127.0.0.1:8080/xmlrpc");
+3 -8
View File
@@ -1,7 +1,7 @@
#!/usr/bin/env perl
#
# Script taken from InspIRCd, www.inspircd.org
# Script taken from InspIRCd, https://www.inspircd.org/
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
@@ -9,7 +9,7 @@
# details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
@@ -148,12 +148,7 @@ while (1)
if ($input eq "q") {
if (-e "build/CMakeFiles") {
if (-e "cmake-bin") {
my $cmake_path = `find cmake-bin -name cmake -print0`;
system($cmake_path, "build/.");
} else {
system("cmake", "build/.");
}
system("cmake", "build/.");
print "\nNow cd build, then run make to build Anope.\n\n";
} else {
print "\nBuild directory not found. You should run ./Config now.\n\n"
+9 -8
View File
@@ -1,20 +1,21 @@
# Set version.cpp to use C++ as well as set its compile flags
set_source_files_properties(version.cpp PROPERTIES LANGUAGE CXX COMPILE_FLAGS "${CXXFLAGS}")
# Generate version executable to modify version.h, setting it's linker flags as well
add_executable(version version.cpp)
set_target_properties(version PROPERTIES LINKER_LANGUAGE CXX LINK_FLAGS "${LDFLAGS}")
get_target_property(version_BINARY version LOCATION)
# Generate version-bin executable to modify version.h, setting it's linker flags as well
add_executable(version-bin version.cpp)
set_target_properties(version-bin PROPERTIES LINKER_LANGUAGE CXX LINK_FLAGS "${LDFLAGS}")
get_target_property(version_BINARY version-bin LOCATION)
# Modify version.h from the above executable, with dependencies to version.cpp
# and all of the source files in the main build
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/version_build
COMMAND ${version_BINARY} ${Anope_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/version.h
DEPENDS version ${SRC_SRCS}
COMMAND ${version_BINARY} ${Anope_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/version.h ${CMAKE_CURRENT_BINARY_DIR}/build.h
DEPENDS version-bin ${SRC_SRCS}
)
# Add version to list of files for CPack to ignore
# Add version-bin to list of files for CPack to ignore
get_filename_component(version_BINARY ${version_BINARY} NAME)
add_to_cpack_ignored_files("${version_BINARY}$" TRUE)
if(NOT WIN32)
add_to_cpack_ignored_files("version.h$" TRUE)
add_to_cpack_ignored_files("build.h$" TRUE)
endif(NOT WIN32)
set(PCH_SOURCES_GCH "")
@@ -60,4 +61,4 @@ if(USE_PCH AND CMAKE_COMPILER_IS_GNUCXX)
endif(USE_PCH AND CMAKE_COMPILER_IS_GNUCXX)
# Add a custom target to the above file
add_custom_target(headers DEPENDS version ${CMAKE_CURRENT_BINARY_DIR}/version_build ${PCH_SOURCES_GCH})
add_custom_target(headers DEPENDS version-bin ${CMAKE_CURRENT_BINARY_DIR}/version_build ${PCH_SOURCES_GCH})
+19 -17
View File
@@ -1,13 +1,12 @@
/*
*
* (C) 2003-2014 Anope Team
* (C) 2003-2019 Anope Team
* Contact us at team@anope.org
*
* 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.
*
*/
#ifndef ACCESS_H
@@ -74,21 +73,17 @@ class CoreExport AccessProvider : public Service
/* Represents one entry of an access list on a channel. */
class CoreExport ChanAccess : public Serializable
{
Anope::string mask;
/* account this access entry is for, if any */
Serialize::Reference<NickCore> nc;
public:
typedef std::multimap<const ChanAccess *, const ChanAccess *> Set;
/* shows the 'path' taken to determine if an access entry matches a user
* .first are access entries checked
* .second are access entries which match
*/
typedef std::pair<Set, Set> Path;
typedef std::vector<ChanAccess *> Path;
/* The provider that created this access entry */
AccessProvider *provider;
/* Channel this access entry is on */
Serialize::Reference<ChannelInfo> ci;
/* account this access entry is for, if any */
Serialize::Reference<NickCore> nc;
Anope::string mask;
Anope::string creator;
time_t last_seen;
time_t created;
@@ -96,15 +91,21 @@ class CoreExport ChanAccess : public Serializable
ChanAccess(AccessProvider *p);
virtual ~ChanAccess();
void SetMask(const Anope::string &mask, ChannelInfo *ci);
const Anope::string &Mask() const;
NickCore *GetAccount() const;
void Serialize(Serialize::Data &data) const anope_override;
static Serializable* Unserialize(Serializable *obj, Serialize::Data &);
static const unsigned int MAX_DEPTH = 4;
/** Check if this access entry matches the given user or account
* @param u The user
* @param nc The account
* @param p The path to the access object which matches will be put here
* @param next Next channel to check if any
*/
virtual bool Matches(const User *u, const NickCore *nc, Path &p) const;
virtual bool Matches(const User *u, const NickCore *nc, ChannelInfo* &next) const;
/** Check if this access entry has the given privilege.
* @param name The privilege name
@@ -132,13 +133,13 @@ class CoreExport ChanAccess : public Serializable
/* A group of access entries. This is used commonly, for example with ChannelInfo::AccessFor,
* to show what access a user has on a channel because users can match multiple access entries.
*/
class CoreExport AccessGroup : public std::vector<ChanAccess *>
class CoreExport AccessGroup
{
public:
/* access entries + paths */
std::vector<ChanAccess::Path> paths;
/* Channel these access entries are on */
const ChannelInfo *ci;
/* Path from these entries to other entries that they depend on */
ChanAccess::Path path;
/* Account these entries affect, if any */
const NickCore *nc;
/* super_admin always gets all privs. founder is a special case where ci->founder == nc */
@@ -166,7 +167,8 @@ class CoreExport AccessGroup : public std::vector<ChanAccess *>
bool operator<(const AccessGroup &other) const;
bool operator>=(const AccessGroup &other) const;
bool operator<=(const AccessGroup &other) const;
inline bool empty() const { return paths.empty(); }
};
#endif
+5 -5
View File
@@ -1,13 +1,12 @@
/*
*
* (C) 2003-2014 Anope Team
* (C) 2003-2019 Anope Team
* Contact us at team@anope.org
*
* 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.
*
*/
#ifndef ACCOUNT_H
@@ -26,7 +25,7 @@ extern CoreExport Serialize::Checker<nickalias_map> NickAliasList;
extern CoreExport Serialize::Checker<nickcore_map> NickCoreList;
/* A registered nickname.
* It matters that Base is here before Extensible (it is inherited by Serializable)
* It matters that Base is here before Extensible (it is inherited by Serializable)
*/
class CoreExport NickAlias : public Serializable, public Extensible
{
@@ -215,7 +214,7 @@ class CoreExport NickCore : public Serializable, public Extensible
* @return The account, if it exists
*/
static NickCore* Find(const Anope::string &nick);
void AddChannelReference(ChannelInfo *ci);
void RemoveChannelReference(ChannelInfo *ci);
void GetChannelReferences(std::deque<ChannelInfo *> &queue);
@@ -235,7 +234,7 @@ class CoreExport IdentifyRequest
std::set<Module *> holds;
bool dispatched;
bool success;
static std::set<IdentifyRequest *> Requests;
protected:
@@ -247,6 +246,7 @@ class CoreExport IdentifyRequest
virtual void OnSuccess() = 0;
virtual void OnFail() = 0;
Module *GetOwner() const { return owner; }
const Anope::string &GetAccount() const { return account; }
const Anope::string &GetPassword() const { return password; }
+8 -7
View File
@@ -1,13 +1,12 @@
/*
*
* (C) 2003-2014 Anope Team
* (C) 2003-2019 Anope Team
* Contact us at team@anope.org
*
* 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.
*
*/
#ifndef ANOPE_H
@@ -337,7 +336,9 @@ namespace Anope
template<typename T> class multimap : public std::multimap<string, T, ci::less> { };
template<typename T> class hash_map : public TR1NS::unordered_map<string, T, hash_ci, compare> { };
#ifndef REPRODUCIBLE_BUILD
static const char *const compiled = __TIME__ " " __DATE__;
#endif
/** The time Anope started.
*/
@@ -442,13 +443,13 @@ namespace Anope
*/
extern CoreExport void Unhex(const string &src, string &dest);
extern CoreExport void Unhex(const string &src, char *dest, size_t sz);
/** Base 64 encode a string
* @param src The string to encode
* @param target Where the encoded string is placed
*/
extern CoreExport void B64Encode(const string &src, string &target);
/** Base 64 decode a string
* @param src The base64 encoded string
* @param target The plain text result
@@ -543,7 +544,7 @@ namespace Anope
extern CoreExport Anope::string Random(size_t len);
}
/** sepstream allows for splitting token seperated lists.
/** sepstream allows for splitting token separated lists.
* Each successive call to sepstream::GetToken() returns
* the next token, until none remain, at which point the method returns
* an empty string.
@@ -615,7 +616,7 @@ class CoreExport sepstream
bool StreamEnd();
};
/** A derived form of sepstream, which seperates on commas
/** A derived form of sepstream, which separates on commas
*/
class commasepstream : public sepstream
{
@@ -625,7 +626,7 @@ class commasepstream : public sepstream
commasepstream(const Anope::string &source, bool allowempty = false) : sepstream(source, ',', allowempty) { }
};
/** A derived form of sepstream, which seperates on spaces
/** A derived form of sepstream, which separates on spaces
*/
class spacesepstream : public sepstream
{
+2 -4
View File
@@ -1,10 +1,9 @@
/*
*
* Copyright (C) 2008-2011 Adam <Adam@anope.org>
* Copyright (C) 2008-2014 Anope Team <team@anope.org>
* (C) 2008-2011 Adam <Adam@anope.org>
* (C) 2008-2019 Anope Team <team@anope.org>
*
* Please read COPYING and README for further details.
*
*/
#ifndef BASE_H
@@ -142,4 +141,3 @@ class Reference : public ReferenceBase
};
#endif // BASE_H
+4 -3
View File
@@ -1,10 +1,9 @@
/*
*
* Copyright (C) 2008-2011 Robin Burchell <w00t@inspircd.org>
* Copyright (C) 2008-2014 Anope Team <team@anope.org>
* (C) 2008-2011 Robin Burchell <w00t@inspircd.org>
* (C) 2008-2019 Anope Team <team@anope.org>
*
* Please read COPYING and README for further details.
*
*/
#ifndef BOTS_H
@@ -60,6 +59,8 @@ class CoreExport BotInfo : public User, public Serializable
void GenerateUID();
void OnKill();
/** Change the nickname for the bot.
* @param newnick The nick to change to
*/
+13 -7
View File
@@ -1,10 +1,9 @@
/* Channel support
*
* (C) 2008-2014 Anope Team
* (C) 2008-2019 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
*
*/
#ifndef CHANNELS_H
@@ -32,6 +31,8 @@ struct ChanUserContainer : public Extensible
class CoreExport Channel : public Base, public Extensible
{
static std::vector<Channel *> deleting;
public:
typedef std::multimap<Anope::string, Anope::string> ModeList;
private:
@@ -59,7 +60,7 @@ class CoreExport Channel : public Base, public Extensible
Anope::string topic;
/* Who set the topic */
Anope::string topic_setter;
/* The timestamp associated with the topic. Not necessarually anywhere close to Anope::CurTime.
/* The timestamp associated with the topic. Not necessarily anywhere close to Anope::CurTime.
* This is the time the topic was *originally set*. When we restore the topic we want to change the TS back
* to this, but we can only do this on certain IRCds.
*/
@@ -242,9 +243,9 @@ class CoreExport Channel : public Base, public Extensible
/** Get a list of modes on a channel
* @param name A mode name to get the list of
* @return a pair of iterators for the beginning and end of the list
* @return a vector of the list mode entries
*/
std::pair<ModeList::iterator, ModeList::iterator> GetModeList(const Anope::string &name);
std::vector<Anope::string> GetModeList(const Anope::string &name);
/** Get a string of the modes set on this channel
* @param complete Include mode parameters
@@ -258,7 +259,7 @@ class CoreExport Channel : public Base, public Extensible
* @param newtopic The new topic
* @param ts The time the new topic is being set
*/
void ChangeTopicInternal(const Anope::string &user, const Anope::string &newtopic, time_t ts = Anope::CurTime);
void ChangeTopicInternal(User *u, const Anope::string &user, const Anope::string &newtopic, time_t ts = Anope::CurTime);
/** Update the topic of the channel, and reset it if topiclock etc says to
* @param user The user setting the topic
@@ -276,10 +277,11 @@ class CoreExport Channel : public Base, public Extensible
/** Unbans a user from this channel.
* @param u The user to unban
* @param mode The mode to unban
* @param full Whether or not to match using the user's real host and IP
* @return whether or not a ban was removed
*/
bool Unban(User *u, bool full = false);
bool Unban(User *u, const Anope::string &mode, bool full = false);
/** Check whether a user is permitted to be on this channel
* @param u The user
@@ -299,6 +301,10 @@ class CoreExport Channel : public Base, public Extensible
* @param ts The time the channel was created
*/
static Channel *FindOrCreate(const Anope::string &name, bool &created, time_t ts = Anope::CurTime);
void QueueForDeletion();
static void DeleteChannels();
};
#endif // CHANNELS_H
+5 -1
View File
@@ -1,6 +1,6 @@
/* Declarations for command data.
*
* (C) 2003-2014 Anope Team
* (C) 2003-2019 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -59,6 +59,8 @@ class CoreExport CommandSource
public:
/* The account executing the command */
Reference<NickCore> nc;
/* for web clients */
Anope::string ip;
/* Where the reply should go */
CommandReply *reply;
/* Channel the command was executed on (fantasy) */
@@ -170,6 +172,8 @@ class CoreExport Command : public Service
*/
static void Run(CommandSource &source, const Anope::string &message);
void Run(CommandSource &source, const Anope::string &, const CommandInfo &, std::vector<Anope::string> &params);
/** Looks up a command name from the service name.
* Note that if the same command exists multiple places this will return the first one encountered
* @param command_service The command service to lookup, eg, nickserv/register
+14 -10
View File
@@ -1,13 +1,12 @@
/*
*
* (C) 2003-2014 Anope Team
* (C) 2003-2019 Anope Team
* Contact us at team@anope.org
*
* 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.
*
*/
#ifndef CONFIG_H
@@ -51,14 +50,13 @@ namespace Configuration
template<typename T> T Get(const Anope::string &tag, const Anope::string &def) const
{
const Anope::string &value = this->Get<const Anope::string>(tag, def);
try
{
return convertTo<T>(value);
}
catch (const ConvertException &)
{
return T();
}
if (!value.empty())
try
{
return convertTo<T>(value);
}
catch (const ConvertException &) { }
return T();
}
bool Set(const Anope::string &tag, const Anope::string &value);
@@ -80,6 +78,7 @@ namespace Configuration
File(const Anope::string &, bool);
~File();
const Anope::string &GetName() const;
Anope::string GetPath() const;
bool IsOpen() const;
bool Open();
@@ -104,6 +103,8 @@ namespace Configuration
time_t TimeoutCheck;
/* options:usestrictprivmsg */
bool UseStrictPrivmsg;
/* networkinfo:nickchars */
Anope::string NickChars;
/* either "/msg " or "/" */
Anope::string StrictPrivmsg;
@@ -132,11 +133,14 @@ namespace Configuration
~Conf();
void LoadConf(File &file);
void Post(Conf *old);
Block *GetModule(Module *);
Block *GetModule(const Anope::string &name);
BotInfo *GetClient(const Anope::string &name);
Block *GetCommand(CommandSource &);
};
struct Uplink
+1 -4
View File
@@ -1,16 +1,14 @@
/*
*
* (C) 2003-2014 Anope Team
* (C) 2003-2019 Anope Team
* Contact us at team@anope.org
*
* 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.
*
*/
class AccessGroup;
class AutoKick;
class BotInfo;
@@ -53,4 +51,3 @@ struct MemoInfo;
struct ModeLock;
struct Oper;
namespace SASL { struct Message; }
+7 -2
View File
@@ -1,10 +1,9 @@
/*
*
* (C) 2003-2014 Anope Team
* (C) 2003-2019 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
*
*/
#ifndef EXTENSIBLE_H
@@ -40,6 +39,8 @@ class CoreExport Extensible
virtual ~Extensible();
void UnsetExtensibles();
template<typename T> T* GetExt(const Anope::string &name) const;
bool HasExt(const Anope::string &name) const;
@@ -176,6 +177,8 @@ class SerializableExtensibleItem : public PrimitiveExtensibleItem<T>
T t;
if (data[this->name] >> t)
this->Set(e, t);
else
this->Unset(e);
}
};
@@ -196,6 +199,8 @@ class SerializableExtensibleItem<bool> : public PrimitiveExtensibleItem<bool>
data[this->name] >> b;
if (b)
this->Set(e);
else
this->Unset(e);
}
};
+3 -4
View File
@@ -1,10 +1,9 @@
/*
*
* Copyright (C) 2002-2011 InspIRCd Development Team
* Copyright (C) 2009-2014 Anope Team <team@anope.org>
* (C) 2002-2011 InspIRCd Development Team
* (C) 2009-2019 Anope Team <team@anope.org>
*
* Please read COPYING and README for further details.
*
*/
#ifndef HASHCOMP_H
@@ -123,7 +122,7 @@ namespace ci
* @param s1 String to find in
* @param n Position to search up to
* @param c Character to search for
* @return Pointer to the first occurance of c in s1
* @return Pointer to the first occurrence of c in s1
*/
static const char *find(const char *s1, int n, char c);
};
+4 -6
View File
@@ -1,10 +1,9 @@
/*
*
* (C) 2008-2014 Anope Team
* (C) 2008-2019 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
*
*/
#include "anope.h"
@@ -24,7 +23,7 @@ namespace Language
* and we detect a language file exists for at least one of the supported
* languages for the module, then we add the module's domain (its name)
* here.
*
*
* When strings are translated they are checked against all domains.
*/
extern std::vector<Anope::string> Domains;
@@ -74,7 +73,7 @@ namespace Language
#define MORE_OBSCURE_PASSWORD _("Please try again with a more obscure password. Passwords should be at least\n" \
"five characters long, should not be something easily guessed\n" \
"(e.g. your real name or your nick), and cannot contain the space or tab characters.")
#define PASSWORD_TOO_LONG _("Your password is too long. Please try again with a shorter password.")
#define PASSWORD_TOO_LONG _("Your password is too long. It must not exceed %u characters.")
#define NICK_NOT_REGISTERED _("Your nick isn't registered.")
#define NICK_X_NOT_REGISTERED _("Nick \002%s\002 isn't registered.")
#define NICK_X_NOT_IN_USE _("Nick \002%s\002 isn't currently in use.")
@@ -107,7 +106,7 @@ namespace Language
#define CHAN_SETTING_UNSET _("%s for %s unset.")
#define CHAN_ACCESS_LEVEL_RANGE _("Access level must be between %d and %d inclusive.")
#define CHAN_INFO_HEADER _("Information for channel \002%s\002:")
#define CHAN_EXCEPTED _("\002%s\002 matches an except on %s and cannot be banned until the except have been removed.")
#define CHAN_EXCEPTED _("\002%s\002 matches an except on %s and cannot be banned until the except has been removed.")
#define MEMO_NEW_X_MEMO_ARRIVED _("There is a new memo on channel %s.\n" \
"Type \002%s%s READ %s %d\002 to read it.")
#define MEMO_NEW_MEMO_ARRIVED _("You have a new memo from %s.\n" \
@@ -126,4 +125,3 @@ namespace Language
#define HOST_SET_IDENTTOOLONG _("Error! The vHost ident is too long, please use an ident shorter than %d characters.")
#define HOST_NOT_ASSIGNED _("Please contact an Operator to get a vHost assigned to this nick.")
#define HOST_NO_VIDENT _("Your IRCd does not support vIdent's, if this is incorrect, please report this as a possible bug")
+2 -4
View File
@@ -1,13 +1,12 @@
/*
*
* (C) 2003-2014 Anope Team
* (C) 2003-2019 Anope Team
* Contact us at team@anope.org
*
* 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.
*
*/
#ifndef LISTS_H
@@ -52,7 +51,7 @@ class CoreExport NumberList
virtual void HandleNumber(unsigned number);
/** Called when there is an error with the numbered list
* Return false to immediatly stop processing the list and return
* Return false to immediately stop processing the list and return
* This is all done before we start calling HandleNumber, so no numbers will have been processed yet
* @param list The list
* @return false to stop processing
@@ -93,4 +92,3 @@ class CoreExport InfoFormatter
};
#endif // LISTS_H
+6 -3
View File
@@ -1,13 +1,12 @@
/*
*
* (C) 2003-2014 Anope Team
* (C) 2003-2019 Anope Team
* Contact us at team@anope.org
*
* 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.
*
*/
#ifndef LOGGER_H
@@ -96,6 +95,11 @@ class CoreExport Log
~Log();
private:
Anope::string FormatSource() const;
Anope::string FormatCommand() const;
public:
Anope::string BuildPrefix() const;
template<typename T> Log &operator<<(T val)
@@ -138,4 +142,3 @@ class CoreExport LogInfo
};
#endif // LOGGER_H
+1 -3
View File
@@ -1,14 +1,12 @@
/*
*
* (C) 2003-2014 Anope Team
* (C) 2003-2019 Anope Team
* Contact us at team@anope.org
*
* 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.
*
*
*/
#ifndef MAIL_H
+2 -2
View File
@@ -1,13 +1,12 @@
/*
*
* (C) 2003-2014 Anope Team
* (C) 2003-2019 Anope Team
* Contact us at team@anope.org
*
* 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.
*
*/
#ifndef MEMO_H
@@ -19,6 +18,7 @@
class CoreExport Memo : public Serializable
{
public:
MemoInfo *mi;
bool unread;
bool receipt;
Memo();
+37 -39
View File
@@ -1,13 +1,12 @@
/*
*
* (C) 2003-2014 Anope Team
* (C) 2003-2019 Anope Team
* Contact us at team@anope.org
*
* 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.
*
*/
#include "protocol.h"
@@ -23,21 +22,21 @@ namespace Message
struct CoreExport Away : IRCDMessage
{
Away(Module *creator, const Anope::string &mname = "AWAY") : IRCDMessage(creator, mname, 0) { SetFlag(IRCDMESSAGE_REQUIRE_USER); SetFlag(IRCDMESSAGE_SOFT_LIMIT); }
void Run(MessageSource &source, const std::vector<Anope::string> &params) anope_override;
};
struct CoreExport Capab : IRCDMessage
{
Capab(Module *creator, const Anope::string &mname = "CAPAB") : IRCDMessage(creator, mname, 1) { SetFlag(IRCDMESSAGE_SOFT_LIMIT); }
void Run(MessageSource &source, const std::vector<Anope::string> &params) anope_override;
};
struct CoreExport Error : IRCDMessage
{
Error(Module *creator, const Anope::string &mname = "ERROR") : IRCDMessage(creator, mname, 1) { }
void Run(MessageSource &source, const std::vector<Anope::string> &params) anope_override;
};
@@ -47,15 +46,15 @@ namespace Message
void Run(MessageSource &source, const std::vector<Anope::string> &params) anope_override;
};
struct CoreExport Join : IRCDMessage
{
Join(Module *creator, const Anope::string &mname = "JOIN") : IRCDMessage(creator, mname, 1) { SetFlag(IRCDMESSAGE_REQUIRE_USER); SetFlag(IRCDMESSAGE_SOFT_LIMIT); }
void Run(MessageSource &source, const std::vector<Anope::string> &params) anope_override;
typedef std::pair<ChannelStatus, User *> SJoinUser;
/** Handle a SJOIN.
* @param source The source of the SJOIN
* @param chan The channel the users are joining to
@@ -65,35 +64,35 @@ namespace Message
*/
static void SJoin(MessageSource &source, const Anope::string &chan, time_t ts, const Anope::string &modes, const std::list<SJoinUser> &users);
};
struct CoreExport Kick : IRCDMessage
{
Kick(Module *creator, const Anope::string &mname = "KICK") : IRCDMessage(creator, mname, 2) { SetFlag(IRCDMESSAGE_SOFT_LIMIT); }
void Run(MessageSource &source, const std::vector<Anope::string> &params) anope_override;
};
struct CoreExport Kill : IRCDMessage
{
Kill(Module *creator, const Anope::string &mname = "KILL") : IRCDMessage(creator, mname, 2) { }
void Run(MessageSource &source, const std::vector<Anope::string> &params) anope_override;
};
struct CoreExport Mode : IRCDMessage
{
Mode(Module *creator, const Anope::string &mname = "MODE") : IRCDMessage(creator, mname, 2) { }
Mode(Module *creator, const Anope::string &mname = "MODE") : IRCDMessage(creator, mname, 2) { SetFlag(IRCDMESSAGE_SOFT_LIMIT); }
void Run(MessageSource &source, const std::vector<Anope::string> &params) anope_override;
};
struct CoreExport MOTD : IRCDMessage
{
MOTD(Module *creator, const Anope::string &mname = "MOTD") : IRCDMessage(creator, mname, 1) { }
void Run(MessageSource &source, const std::vector<Anope::string> &params) anope_override;
};
struct CoreExport Notice : IRCDMessage
{
Notice(Module *creator, const Anope::string &mname = "NOTICE") : IRCDMessage(creator, mname, 2) { SetFlag(IRCDMESSAGE_REQUIRE_USER); }
@@ -104,72 +103,71 @@ namespace Message
struct CoreExport Part : IRCDMessage
{
Part(Module *creator, const Anope::string &mname = "PART") : IRCDMessage(creator, mname, 1) { SetFlag(IRCDMESSAGE_REQUIRE_USER); SetFlag(IRCDMESSAGE_SOFT_LIMIT); }
void Run(MessageSource &source, const std::vector<Anope::string> &params) anope_override;
};
struct CoreExport Ping : IRCDMessage
{
Ping(Module *creator, const Anope::string &mname = "PING") : IRCDMessage(creator, mname, 1) { SetFlag(IRCDMESSAGE_SOFT_LIMIT); }
void Run(MessageSource &source, const std::vector<Anope::string> &params) anope_override;
};
struct CoreExport Privmsg : IRCDMessage
{
Privmsg(Module *creator, const Anope::string &mname = "PRIVMSG") : IRCDMessage(creator, mname, 2) { SetFlag(IRCDMESSAGE_REQUIRE_USER); }
void Run(MessageSource &source, const std::vector<Anope::string> &params) anope_override;
};
struct CoreExport Quit : IRCDMessage
{
Quit(Module *creator, const Anope::string &mname = "QUIT") : IRCDMessage(creator, mname, 1) { SetFlag(IRCDMESSAGE_REQUIRE_USER); }
void Run(MessageSource &source, const std::vector<Anope::string> &params) anope_override;
};
struct CoreExport SQuit : IRCDMessage
{
SQuit(Module *creator, const Anope::string &mname = "SQUIT") : IRCDMessage(creator, mname, 2) { SetFlag(IRCDMESSAGE_REQUIRE_SERVER); }
SQuit(Module *creator, const Anope::string &mname = "SQUIT") : IRCDMessage(creator, mname, 2) { }
void Run(MessageSource &source, const std::vector<Anope::string> &params) anope_override;
};
struct CoreExport Stats : IRCDMessage
{
Stats(Module *creator, const Anope::string &mname = "STATS") : IRCDMessage(creator, mname, 1) { SetFlag(IRCDMESSAGE_REQUIRE_USER); SetFlag(IRCDMESSAGE_SOFT_LIMIT); }
void Run(MessageSource &source, const std::vector<Anope::string> &params) anope_override;
};
struct CoreExport Time : IRCDMessage
{
Time(Module *creator, const Anope::string &mname = "TIME") : IRCDMessage(creator, mname, 0) { SetFlag(IRCDMESSAGE_SOFT_LIMIT); }
void Run(MessageSource &source, const std::vector<Anope::string> &params) anope_override;
};
struct CoreExport Topic : IRCDMessage
{
Topic(Module *creator, const Anope::string &mname = "TOPIC") : IRCDMessage(creator, mname, 2) { SetFlag(IRCDMESSAGE_REQUIRE_USER); }
void Run(MessageSource &source, const std::vector<Anope::string> &params) anope_override;
};
struct CoreExport Version : IRCDMessage
{
Version(Module *creator, const Anope::string &mname = "VERSION") : IRCDMessage(creator, mname, 0) { SetFlag(IRCDMESSAGE_SOFT_LIMIT); }
void Run(MessageSource &source, const std::vector<Anope::string> &params) anope_override;
};
struct CoreExport Whois : IRCDMessage
{
Whois(Module *creator, const Anope::string &mname = "WHOIS") : IRCDMessage(creator, mname, 1) { SetFlag(IRCDMESSAGE_SOFT_LIMIT); }
void Run(MessageSource &source, const std::vector<Anope::string> &params) anope_override;
};
} // namespace Message
+50 -16
View File
@@ -1,7 +1,7 @@
/* Mode support
*
* Copyright (C) 2008-2011 Adam <Adam@anope.org>
* Copyright (C) 2008-2014 Anope Team <team@anope.org>
* (C) 2008-2011 Adam <Adam@anope.org>
* (C) 2008-2019 Anope Team <team@anope.org>
*
* Please read COPYING and README for further details.
*/
@@ -88,7 +88,7 @@ class CoreExport UserModeParam : public UserMode
* @param value The param
* @return true or false
*/
virtual bool IsValid(const Anope::string &value) const { return true; }
virtual bool IsValid(Anope::string &value) const { return true; }
};
/** This class is a channel mode, all channel modes use this/inherit from this
@@ -96,6 +96,9 @@ class CoreExport UserModeParam : public UserMode
class CoreExport ChannelMode : public Mode
{
public:
/* channel modes that can posssibly unwrap this mode */
std::vector<ChannelMode *> listeners;
/** constructor
* @param name The mode name
* @param mc The mode char
@@ -103,6 +106,20 @@ class CoreExport ChannelMode : public Mode
ChannelMode(const Anope::string &name, char mc);
bool CanSet(User *u) const anope_override;
virtual void Check() { }
/** 'wrap' this channel mode and param to the underlying mode and param
*/
virtual ChannelMode *Wrap(Anope::string &param);
/** 'unwrap' this mode to our internal representation
*/
ChannelMode *Unwrap(Anope::string &param);
/** called when a mode is being unwrapped, and is asking us if we can unwrap it
*/
virtual ChannelMode *Unwrap(ChannelMode *, Anope::string &param);
};
/** This is a mode for lists, eg b/e/I. These modes should inherit from this
@@ -120,7 +137,7 @@ class CoreExport ChannelModeList : public ChannelMode
* @param mask The mask
* @return true for yes, false for no
*/
virtual bool IsValid(const Anope::string &mask) const { return true; }
virtual bool IsValid(Anope::string &mask) const;
/** Checks if mask affects user
* Should only be used for extbans or other weird ircd-specific things.
@@ -162,7 +179,7 @@ class CoreExport ChannelModeParam : public ChannelMode
* @param value The param
* @return true for yes, false for no
*/
virtual bool IsValid(const Anope::string &value) const { return true; }
virtual bool IsValid(Anope::string &value) const { return true; }
};
/** This is a mode that is a channel status, eg +v/h/o/a/q.
@@ -175,15 +192,36 @@ class CoreExport ChannelModeStatus : public ChannelMode
/* The "level" of the mode, used to compare with other modes.
* Used so we know op > halfop > voice etc.
*/
short level;
unsigned level;
/** constructor
* @param name The mode name
* @param mc The mode char
* @param msymbol The symbol for the mode, eg @ %
* @param msymbol The symbol for the mode, eg @ %
* @param mlevel A level for the mode, which is usually determined by the PREFIX capab
*/
ChannelModeStatus(const Anope::string &name, char mc, char msymbol, short mlevel);
ChannelModeStatus(const Anope::string &name, char mc, char msymbol, unsigned mlevel);
};
/** A virtual mode. This mode doesn't natively exist on the IRCd (like extbans),
* but we still have a representation for it.
*/
template<typename T>
class CoreExport ChannelModeVirtual : public T
{
Anope::string base;
ChannelMode *basech;
public:
ChannelModeVirtual(const Anope::string &mname, const Anope::string &basename);
~ChannelModeVirtual();
void Check() anope_override;
ChannelMode *Wrap(Anope::string &param) anope_override;
ChannelMode *Unwrap(ChannelMode *cm, Anope::string &param) = 0;
};
/* The status a user has on a channel (+v, +h, +o) etc */
@@ -225,7 +263,7 @@ class CoreExport ChannelModeKey : public ChannelModeParam
public:
ChannelModeKey(char mc) : ChannelModeParam("KEY", mc) { }
bool IsValid(const Anope::string &value) const anope_override;
bool IsValid(Anope::string &value) const anope_override;
};
/** This class is used for oper only channel modes
@@ -257,13 +295,6 @@ class CoreExport ChannelModeNoone : public ChannelMode
*/
class CoreExport ModeManager
{
protected:
/* Array of all modes Anope knows about. Modes are in this array at position
* modechar. Additionally, status modes are in this array (again) at statuschar.
*/
static std::vector<ChannelMode *> ChannelModes;
static std::vector<UserMode *> UserModes;
public:
/* Number of generic channel and user modes we are tracking */
@@ -364,6 +395,7 @@ class CoreExport Entry
Anope::string mask;
public:
unsigned short cidr_len;
int family;
Anope::string nick, user, host, real;
/** Constructor
@@ -377,6 +409,8 @@ class CoreExport Entry
*/
const Anope::string GetMask() const;
const Anope::string GetNUHMask() const;
/** Check if this entry matches a user
* @param u The user
* @param full True to match against a users real host and IP
+1 -1
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2003-2014 Anope Team
* (C) 2003-2019 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
+53 -27
View File
@@ -1,13 +1,12 @@
/* Modular support
*
* (C) 2003-2014 Anope Team
* (C) 2003-2019 Anope Team
* Contact us at team@anope.org
*
* 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.
*
*/
#include "serialize.h"
@@ -20,6 +19,7 @@
#include "timers.h"
#include "logger.h"
#include "extensible.h"
#include "version.h"
/** This definition is used as shorthand for the various classes
* and functions needed to make a module loadable by the OS.
@@ -40,6 +40,14 @@
extern "C" void AnopeFini(x *m) \
{ \
delete m; \
} \
extern "C" DllExport ModuleVersionC AnopeVersion() \
{ \
ModuleVersionC ver; \
ver.version_major = VERSION_MAJOR; \
ver.version_minor = VERSION_MINOR; \
ver.version_patch = VERSION_PATCH; \
return ver; \
}
#else
# define MODULE_INIT(x) \
@@ -50,13 +58,21 @@
extern "C" DllExport void AnopeFini(x *m) \
{ \
delete m; \
} \
extern "C" DllExport ModuleVersionC AnopeVersion() \
{ \
ModuleVersionC ver; \
ver.version_major = VERSION_MAJOR; \
ver.version_minor = VERSION_MINOR; \
ver.version_patch = VERSION_PATCH; \
return ver; \
}
#endif
/**
* This #define allows us to call a method in all
* loaded modules in a readable simple way, e.g.:
*
*
* FOREACH_MOD(OnUserConnect, (user, exempt));
*/
#define FOREACH_MOD(ename, args) \
@@ -88,7 +104,7 @@ else \
* This define is similar to the one above but returns a result.
* The first module to return a result other than EVENT_CONTINUE is the value to be accepted,
* and any modules after are ignored. This is used like:
*
*
* EventReturn MOD_RESULT;
* FOREACH_RESULT(OnUserConnect, MOD_RESULT, (user, exempt));
*/
@@ -173,6 +189,11 @@ enum
};
typedef unsigned short ModType;
struct ModuleVersionC
{
int version_major, version_minor, version_patch;
};
/** Returned by Module::GetVersion, used to see what version of Anope
* a module is compiled against.
*/
@@ -184,12 +205,7 @@ class ModuleVersion
int version_patch;
public:
/** Constructor
* @param major The major version number
* @param minor The minor version number
* @param patch The patch version number
*/
ModuleVersion(int major, int minor, int patch);
ModuleVersion(const ModuleVersionC &);
/** Get the major version of Anope this was built against
* @return The major version
@@ -279,16 +295,17 @@ class CoreExport Module : public Extensible
*/
void SetAuthor(const Anope::string &author);
/** Get the version of Anope this module was
* compiled against
* @return The version
*/
ModuleVersion GetVersion() const;
virtual void Prioritize();
/* Everything below here are events. Modules must ModuleManager::Attach to these events
* before they will be called.
*/
/** Called on startup after database load, but before
* connecting to the uplink.
*/
virtual void OnPostInit() { throw NotImplementedException(); }
/** Called before a user has been kicked from a channel.
* @param source The kicker
* @param cu The user, channel, and status of the user being kicked
@@ -472,11 +489,12 @@ class CoreExport Module : public Extensible
virtual void OnJoinChannel(User *u, Channel *c) { throw NotImplementedException(); }
/** Called when a new topic is set
* @param source The user changing the topic, if any
* @param c The channel
* @param setter The user who set the new topic
* @param setter The user who set the new topic, if there is no source
* @param topic The new topic
*/
virtual void OnTopicUpdated(Channel *c, const Anope::string &user, const Anope::string &topic) { throw NotImplementedException(); }
virtual void OnTopicUpdated(User *source, Channel *c, const Anope::string &user, const Anope::string &topic) { throw NotImplementedException(); }
/** Called before a channel expires
* @param ci The channel
@@ -719,11 +737,6 @@ class CoreExport Module : public Extensible
*/
virtual void OnNickDrop(CommandSource &source, NickAlias *na) { throw NotImplementedException(); }
/** Called when a nick is forbidden
* @param na The nick alias of the forbidden nick
*/
virtual void OnNickForbidden(NickAlias *na) { throw NotImplementedException(); }
/** Called when a user groups their nick
* @param u The user grouping
* @param target The target they're grouping to
@@ -748,8 +761,15 @@ class CoreExport Module : public Extensible
/** Called when a nick is registered
* @param user The user registering the nick, of any
* @param The nick
* @param pass The password of the newly registered nick
*/
virtual void OnNickRegister(User *user, NickAlias *na) { throw NotImplementedException(); }
virtual void OnNickRegister(User *user, NickAlias *na, const Anope::string &pass) { throw NotImplementedException(); }
/** Called when a nick is confirmed. This will never be called if registration confirmation is not enabled.
* @param user The user confirming the nick
* @param The account being confirmed
*/
virtual void OnNickConfirm(User *user, NickCore *) { throw NotImplementedException(); }
/** Called when a nick is suspended
* @param na The nick alias
@@ -1000,7 +1020,7 @@ class CoreExport Module : public Extensible
*/
virtual void OnLogMessage(LogInfo *li, const Log *l, const Anope::string &msg) { throw NotImplementedException(); }
/** Called when a DNS request (question) is recieved.
/** Called when a DNS request (question) is received.
* @param req The dns request
* @param reply The reply that will be sent
*/
@@ -1010,7 +1030,7 @@ class CoreExport Module : public Extensible
* mostly to ensure mlock/+r are set.
* @param c The channel
*/
virtual void OnCheckModes(Channel *c) { throw NotImplementedException(); }
virtual void OnCheckModes(Reference<Channel> &c) { throw NotImplementedException(); }
/** Called when a channel is synced.
* Channels are synced after a sjoin is finished processing
@@ -1084,6 +1104,7 @@ class CoreExport Module : public Extensible
enum Implementation
{
I_OnPostInit,
I_OnPreUserKicked, I_OnUserKicked, I_OnReload, I_OnPreBotAssign, I_OnBotAssign, I_OnBotUnAssign, I_OnUserConnect,
I_OnNewServer, I_OnUserNickChange, I_OnPreHelp, I_OnPostHelp, I_OnPreCommand, I_OnPostCommand, I_OnSaveDatabase,
I_OnLoadDatabase, I_OnEncrypt, I_OnDecrypt, I_OnBotFantasy, I_OnBotNoFantasyAccess, I_OnBotBan, I_OnBadWordAdd,
@@ -1094,8 +1115,8 @@ enum Implementation
I_OnPreUserLogoff, I_OnPostUserLogoff, I_OnBotCreate, I_OnBotChange, I_OnBotDelete, I_OnAccessDel, I_OnAccessAdd,
I_OnAccessClear, I_OnLevelChange, I_OnChanDrop, I_OnChanRegistered, I_OnChanSuspend, I_OnChanUnsuspend,
I_OnCreateChan, I_OnDelChan, I_OnChannelCreate, I_OnChannelDelete, I_OnAkickAdd, I_OnAkickDel, I_OnCheckKick,
I_OnChanInfo, I_OnCheckPriv, I_OnGroupCheckPriv, I_OnNickDrop, I_OnNickForbidden, I_OnNickGroup, I_OnNickIdentify,
I_OnUserLogin, I_OnNickLogout, I_OnNickRegister, I_OnNickSuspend, I_OnNickUnsuspended, I_OnDelNick, I_OnNickCoreCreate,
I_OnChanInfo, I_OnCheckPriv, I_OnGroupCheckPriv, I_OnNickDrop, I_OnNickGroup, I_OnNickIdentify,
I_OnUserLogin, I_OnNickLogout, I_OnNickRegister, I_OnNickConfirm, I_OnNickSuspend, I_OnNickUnsuspended, I_OnDelNick, I_OnNickCoreCreate,
I_OnDelCore, I_OnChangeCoreDisplay, I_OnNickClearAccess, I_OnNickAddAccess, I_OnNickEraseAccess, I_OnNickClearCert,
I_OnNickAddCert, I_OnNickEraseCert, I_OnNickInfo, I_OnBotInfo, I_OnCheckAuthentication, I_OnNickUpdate,
I_OnFingerprint, I_OnUserAway, I_OnInvite, I_OnDeleteVhost, I_OnSetVhost, I_OnSetDisplayedHost, I_OnMemoSend, I_OnMemoDel,
@@ -1201,6 +1222,11 @@ class CoreExport ModuleManager
* @return MOD_ERR_OK on success, anything else on fail
*/
static ModuleReturn DeleteModule(Module *m);
/** Get the version of Anope the module was compiled against
* @return The version
*/
static ModuleVersion GetVersion(void *handle);
};
#endif // MODULES_H
+1 -4
View File
@@ -1,14 +1,12 @@
/* BotServ core functions
*
* (C) 2003-2014 Anope Team
* (C) 2003-2019 Anope Team
* Contact us at team@anope.org
*
* 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.
*
*
*/
/** Flags for badwords
@@ -70,4 +68,3 @@ struct BadWords
virtual void Check() = 0;
};
+1 -3
View File
@@ -1,14 +1,12 @@
/* BotServ core functions
*
* (C) 2003-2014 Anope Team
* (C) 2003-2019 Anope Team
* Contact us at team@anope.org
*
* 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.
*
*
*/
/* Indices for TTB (Times To Ban) */
+34
View File
@@ -0,0 +1,34 @@
/*
*
* (C) 2003-2019 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
*/
struct EntryMsg
{
Anope::string chan;
Anope::string creator;
Anope::string message;
time_t when;
virtual ~EntryMsg() { }
protected:
EntryMsg() { }
};
struct EntryMessageList : Serialize::Checker<std::vector<EntryMsg *> >
{
protected:
EntryMessageList() : Serialize::Checker<std::vector<EntryMsg *> >("EntryMsg") { }
public:
virtual ~EntryMessageList()
{
for (unsigned i = (*this)->size(); i > 0; --i)
delete (*this)->at(i - 1);
}
virtual EntryMsg* Create() = 0;
};
+1 -2
View File
@@ -1,6 +1,6 @@
/* ChanServ core functions
*
* (C) 2003-2014 Anope Team
* (C) 2003-2019 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -40,4 +40,3 @@ struct LogSettings : Serialize::Checker<std::vector<LogSetting *> >
virtual ~LogSettings() { }
virtual LogSetting *Create() = 0;
};
+2 -3
View File
@@ -1,6 +1,6 @@
/* ChanServ core functions
*
* (C) 2003-2014 Anope Team
* (C) 2003-2019 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -80,11 +80,10 @@ struct ModeLocks
virtual const ModeLock *GetMLock(const Anope::string &mname, const Anope::string &param = "") = 0;
/** Get the current mode locks as a string
* @param complete True to show mlock parameters aswell
* @param complete True to show mlock parameters as well
* @return A string of mode locks, eg: +nrt
*/
virtual Anope::string GetMLockAsString(bool complete) const = 0;
virtual void Check() = 0;
};
+20 -23
View File
@@ -1,15 +1,14 @@
/*
*
* (C) 2003-2014 Anope Team
* (C) 2003-2019 Anope Team
* Contact us at team@anope.org
*
* 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.
*
*/
#ifndef DNS_H
#define DNS_H
@@ -53,7 +52,7 @@ namespace DNS
QUERYFLAGS_Z = 0x70,
QUERYFLAGS_RCODE = 0xF
};
enum Error
{
ERROR_NONE,
@@ -70,42 +69,42 @@ namespace DNS
ERROR_NO_RECORDS,
ERROR_INVALIDTYPE
};
struct Question
{
Anope::string name;
QueryType type;
unsigned short qclass;
Question() : type(QUERY_NONE), qclass(0) { }
Question(const Anope::string &n, QueryType t, unsigned short c = 1) : name(n), type(t), qclass(c) { }
inline bool operator==(const Question & other) const { return name == other.name && type == other.type && qclass == other.qclass; }
inline bool operator==(const Question & other) const { return name == other.name && type == other.type && qclass == other.qclass; }
struct hash
{
size_t operator()(const Question &q) const
size_t operator()(const Question &q) const
{
return Anope::hash_ci()(q.name);
}
};
};
struct ResourceRecord : Question
{
unsigned int ttl;
Anope::string rdata;
time_t created;
ResourceRecord(const Anope::string &n, QueryType t, unsigned short c = 1) : Question(n, t, c), ttl(0), created(Anope::CurTime) { }
ResourceRecord(const Question &q) : Question(q), ttl(0), created(Anope::CurTime) { }
};
struct Query
{
std::vector<Question> questions;
std::vector<ResourceRecord> answers, authorities, additional;
Error error;
Query() : error(ERROR_NONE) { }
Query(const Question &q) : error(ERROR_NONE) { questions.push_back(q); }
};
@@ -123,14 +122,14 @@ namespace DNS
virtual void Process(Request *req) = 0;
virtual void RemoveRequest(Request *req) = 0;
virtual bool HandlePacket(ReplySocket *s, const unsigned char *const data, int len, sockaddrs *from) = 0;
virtual void UpdateSerial() = 0;
virtual void Notify(const Anope::string &zone) = 0;
virtual uint32_t GetSerial() const = 0;
};
/** A DNS query.
*/
class Request : public Timer, public Question
@@ -146,22 +145,22 @@ namespace DNS
Request(Manager *mgr, Module *c, const Anope::string &addr, QueryType qt, bool cache = false) : Timer(0), Question(addr, qt), manager(mgr),
use_cache(cache), id(0), creator(c) { }
virtual ~Request()
{
manager->RemoveRequest(this);
}
/** Called when this request succeeds
* @param r The query sent back from the nameserver
*/
virtual void OnLookupComplete(const Query *r) = 0;
/** Called when this request fails or times out.
* @param r The query sent back from the nameserver, check the error code.
*/
virtual void OnError(const Query *r) { }
/** Used to time out the query, xalls OnError and lets the TimerManager
* delete this request.
*/
@@ -173,9 +172,7 @@ namespace DNS
this->OnError(&rr);
}
};
} // namespace DNS
#endif // DNS_H
+1 -3
View File
@@ -1,13 +1,12 @@
/*
*
* (C) 2003-2014 Anope Team
* (C) 2003-2019 Anope Team
* Contact us at team@anope.org
*
* 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.
*
*/
namespace Encryption
@@ -34,4 +33,3 @@ namespace Encryption
virtual IV GetDefaultIV() = 0;
};
}
+13 -2
View File
@@ -1,3 +1,11 @@
/*
*
* (C) 2012-2019 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
*/
#ifndef ANOPE_HTTPD_H
#define ANOPE_HTTPD_H
@@ -15,7 +23,7 @@ struct HTTPReply
{
HTTPError error;
Anope::string content_type;
std::map<Anope::string, Anope::string> headers;
std::map<Anope::string, Anope::string, ci::less> headers;
typedef std::list<std::pair<Anope::string, Anope::string> > cookie;
std::vector<cookie> cookies;
@@ -133,7 +141,7 @@ class HTTPProvider : public ListenSocket, public Service
unsigned short port;
bool ssl;
public:
Anope::string ext_ip;
std::vector<Anope::string> ext_ips;
std::vector<Anope::string> ext_headers;
HTTPProvider(Module *c, const Anope::string &n, const Anope::string &i, const unsigned short p, bool s) : ListenSocket(i, p, i.find(':') != Anope::string::npos), Service(c, "HTTPProvider", n), ip(i), port(p), ssl(s) { }
@@ -220,6 +228,9 @@ namespace HTTPUtils
case '"':
dst += "&quot;";
break;
case '&':
dst += "&amp;";
break;
default:
dst += src[i];
}
+24 -26
View File
@@ -1,8 +1,14 @@
/*
*
* (C) 2011-2019 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
*/
#ifndef ANOPE_LDAP_H
#define ANOPE_LDAP_H
typedef int LDAPQuery;
class LDAPException : public ModuleException
{
public:
@@ -59,28 +65,26 @@ struct LDAPAttributes : public std::map<Anope::string, std::vector<Anope::string
}
};
enum QueryType
{
QUERY_UNKNOWN,
QUERY_BIND,
QUERY_SEARCH,
QUERY_ADD,
QUERY_DELETE,
QUERY_MODIFY
};
struct LDAPResult
{
std::vector<LDAPAttributes> messages;
Anope::string error;
enum QueryType
{
QUERY_UNKNOWN,
QUERY_BIND,
QUERY_SEARCH,
QUERY_ADD,
QUERY_DELETE,
QUERY_MODIFY
};
QueryType type;
LDAPQuery id;
LDAPResult()
{
this->type = QUERY_UNKNOWN;
this->id = -1;
}
size_t size() const
@@ -126,48 +130,42 @@ class LDAPProvider : public Service
/** Attempt to bind to the LDAP server as an admin
* @param i The LDAPInterface the result is sent to
* @return The query ID
*/
virtual LDAPQuery BindAsAdmin(LDAPInterface *i) = 0;
virtual void BindAsAdmin(LDAPInterface *i) = 0;
/** Bind to LDAP
* @param i The LDAPInterface the result is sent to
* @param who The binddn
* @param pass The password
* @return The query ID
*/
virtual LDAPQuery Bind(LDAPInterface *i, const Anope::string &who, const Anope::string &pass) = 0;
virtual void Bind(LDAPInterface *i, const Anope::string &who, const Anope::string &pass) = 0;
/** Search ldap for the specified filter
* @param i The LDAPInterface the result is sent to
* @param base The base DN to search
* @param filter The filter to apply
* @return The query ID
*/
virtual LDAPQuery Search(LDAPInterface *i, const Anope::string &base, const Anope::string &filter) = 0;
virtual void Search(LDAPInterface *i, const Anope::string &base, const Anope::string &filter) = 0;
/** Add an entry to LDAP
* @param i The LDAPInterface the result is sent to
* @param dn The dn of the entry to add
* @param attributes The attributes
* @return The query ID
*/
virtual LDAPQuery Add(LDAPInterface *i, const Anope::string &dn, LDAPMods &attributes) = 0;
virtual void Add(LDAPInterface *i, const Anope::string &dn, LDAPMods &attributes) = 0;
/** Delete an entry from LDAP
* @param i The LDAPInterface the result is sent to
* @param dn The dn of the entry to delete
* @return The query ID
*/
virtual LDAPQuery Del(LDAPInterface *i, const Anope::string &dn) = 0;
virtual void Del(LDAPInterface *i, const Anope::string &dn) = 0;
/** Modify an existing entry in LDAP
* @param i The LDAPInterface the result is sent to
* @param base The base DN to modify
* @param attributes The attributes to modify
* @return The query ID
*/
virtual LDAPQuery Modify(LDAPInterface *i, const Anope::string &base, LDAPMods &attributes) = 0;
virtual void Modify(LDAPInterface *i, const Anope::string &base, LDAPMods &attributes) = 0;
};
#endif // ANOPE_LDAP_H
+1 -2
View File
@@ -1,6 +1,6 @@
/* NickServ core functions
*
* (C) 2003-2014 Anope Team
* (C) 2003-2019 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -68,4 +68,3 @@ class CertService : public Service
virtual NickCore* FindAccountFromCert(const Anope::string &cert) = 0;
};
+10 -1
View File
@@ -1,3 +1,11 @@
/*
*
* (C) 2011-2019 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
*/
#ifndef OS_FORBID_H
#define OS_FORBID_H
@@ -37,10 +45,11 @@ class ForbidService : public Service
virtual ForbidData *FindForbid(const Anope::string &mask, ForbidType type) = 0;
virtual ForbidData *FindForbidExact(const Anope::string &mask, ForbidType type) = 0;
virtual std::vector<ForbidData *> GetForbids() = 0;
};
static ServiceReference<ForbidService> forbid_service("ForbidService", "forbid");
#endif
+2 -4
View File
@@ -1,6 +1,6 @@
/* OperServ ignore interface
*
* (C) 2003-2014 Anope Team
* (C) 2003-2019 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -9,7 +9,6 @@
* Based on the original code of Services by Andy Church.
*/
struct IgnoreData
{
Anope::string mask;
@@ -26,7 +25,7 @@ class IgnoreService : public Service
{
protected:
IgnoreService(Module *c) : Service(c, "IgnoreService", "ignore") { }
public:
virtual void AddIgnore(IgnoreData *) = 0;
@@ -42,4 +41,3 @@ class IgnoreService : public Service
};
static ServiceReference<IgnoreService> ignore_service("IgnoreService", "ignore");
+11 -4
View File
@@ -1,3 +1,11 @@
/*
*
* (C) 2011-2019 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
*/
#ifndef OS_NEWS
#define OS_NEWS
@@ -31,15 +39,14 @@ class NewsService : public Service
NewsService(Module *m) : Service(m, "NewsService", "news") { }
virtual NewsItem *CreateNewsItem() = 0;
virtual void AddNewsItem(NewsItem *n) = 0;
virtual void DelNewsItem(NewsItem *n) = 0;
virtual std::vector<NewsItem *> &GetNewsList(NewsType t) = 0;
};
static ServiceReference<NewsService> news_service("NewsService", "news");
#endif // OS_NEWS
+10 -3
View File
@@ -1,3 +1,11 @@
/*
*
* (C) 2011-2019 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
*/
#ifndef OS_SESSION_H
#define OS_SESSION_H
@@ -7,7 +15,7 @@ struct Session
unsigned count; /* Number of clients with this host */
unsigned hits; /* Number of subsequent kills for a host */
Session(const Anope::string &ip, int len) : addr(ip, len), count(1), hits(0) { }
Session(const sockaddrs &ip, int len) : addr(ip, len), count(1), hits(0) { }
};
struct Exception : Serializable
@@ -40,7 +48,7 @@ class SessionService : public Service
virtual Exception *FindException(User *u) = 0;
virtual Exception *FindException(const Anope::string &host) = 0;
virtual Exception *FindException(const Anope::string &host) = 0;
virtual ExceptionVector &GetExceptions() = 0;
@@ -84,4 +92,3 @@ Serializable* Exception::Unserialize(Serializable *obj, Serialize::Data &data)
}
#endif
+8 -1
View File
@@ -1,3 +1,11 @@
/*
*
* (C) 2011-2019 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
*/
#ifndef CHANSERV_H
#define CHANSERV_H
@@ -15,4 +23,3 @@ class ChanServService : public Service
};
#endif // CHANSERV_H
+8 -1
View File
@@ -1,3 +1,11 @@
/*
*
* (C) 2011-2019 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
*/
#ifndef GLOBAL_H
#define GLOBAL_H
@@ -17,4 +25,3 @@ class GlobalService : public Service
};
#endif // GLOBAL_H
+8 -1
View File
@@ -1,3 +1,11 @@
/*
*
* (C) 2011-2019 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
*/
#ifndef MEMOSERV_H
#define MEMOSERV_H
@@ -31,4 +39,3 @@ class MemoServService : public Service
};
#endif // MEMOSERV_H
+8 -1
View File
@@ -1,3 +1,11 @@
/*
*
* (C) 2011-2019 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
*/
#ifndef NICKSERV_H
#define NICKSERV_H
@@ -14,4 +22,3 @@ class NickServService : public Service
};
#endif // NICKSERV_H
+4 -4
View File
@@ -1,10 +1,9 @@
/*
*
* (C) 2003-2014 Anope Team
* (C) 2003-2019 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
*
*/
namespace Redis
@@ -24,7 +23,7 @@ namespace Redis
Reply() { Clear(); }
~Reply() { Clear(); }
void Clear()
{
type = NOT_PARSED;
@@ -59,6 +58,8 @@ namespace Redis
public:
Provider(Module *c, const Anope::string &n) : Service(c, "Redis::Provider", n) { }
virtual bool IsSocketDead() = 0;
virtual void SendCommand(Interface *i, const std::vector<Anope::string> &cmds) = 0;
virtual void SendCommand(Interface *i, const Anope::string &str) = 0;
@@ -71,4 +72,3 @@ namespace Redis
virtual void CommitTransaction() = 0;
};
}
+28 -4
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2014 Anope Team
* (C) 2014-2019 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -46,6 +46,7 @@ namespace SASL
{
time_t created;
Anope::string uid;
Anope::string hostname, ip;
Reference<Mechanism> mech;
Session(Mechanism *m, const Anope::string &u) : created(Anope::CurTime), uid(u), mech(m) { }
@@ -76,9 +77,10 @@ namespace SASL
class IdentifyRequest : public ::IdentifyRequest
{
Anope::string uid;
Anope::string hostname, ip;
public:
IdentifyRequest(Module *m, const Anope::string &id, const Anope::string &acc, const Anope::string &pass) : ::IdentifyRequest(m, acc, pass), uid(id) { }
IdentifyRequest(Module *m, const Anope::string &id, const Anope::string &acc, const Anope::string &pass, const Anope::string &h, const Anope::string &i) : ::IdentifyRequest(m, acc, pass), uid(id), hostname(h), ip(i) { }
void OnSuccess() anope_override
{
@@ -86,12 +88,21 @@ namespace SASL
return;
NickAlias *na = NickAlias::Find(GetAccount());
if (!na)
if (!na || na->nc->HasExt("NS_SUSPENDED") || na->nc->HasExt("UNCONFIRMED"))
return OnFail();
unsigned int maxlogins = Config->GetModule("ns_identify")->Get<unsigned int>("maxlogins");
if (maxlogins && na->nc->users.size() >= maxlogins)
return OnFail();
Session *s = sasl->GetSession(uid);
if (s)
{
Anope::string user = "A user";
if (!hostname.empty() && !ip.empty())
user = hostname + " (" + ip + ")";
Log(this->GetOwner(), "sasl", Config->GetClient("NickServ")) << user << " identified to account " << this->GetAccount() << " using SASL";
sasl->Succeed(s, na->nc);
delete s;
}
@@ -109,7 +120,20 @@ namespace SASL
delete s;
}
Log(Config->GetClient("NickServ")) << "A user failed to identify for account " << this->GetAccount() << " using SASL";
Anope::string accountstatus;
NickAlias *na = NickAlias::Find(GetAccount());
if (!na)
accountstatus = "nonexistent ";
else if (na->nc->HasExt("NS_SUSPENDED"))
accountstatus = "suspended ";
else if (na->nc->HasExt("UNCONFIRMED"))
accountstatus = "unconfirmed ";
Anope::string user = "A user";
if (!hostname.empty() && !ip.empty())
user = hostname + " (" + ip + ")";
Log(this->GetOwner(), "sasl", Config->GetClient("NickServ")) << user << " failed to identify for " << accountstatus << "account " << this->GetAccount() << " using SASL";
}
};
}
+2 -2
View File
@@ -1,5 +1,6 @@
/*
* (C) 2003-2014 Anope Team
*
* (C) 2003-2019 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -14,4 +15,3 @@ struct MiscData
MiscData() { }
virtual ~MiscData() { }
};
+2 -2
View File
@@ -1,5 +1,6 @@
/*
* (C) 2003-2014 Anope Team
*
* (C) 2003-2019 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -213,4 +214,3 @@ namespace SQL
};
}
+8 -2
View File
@@ -1,9 +1,15 @@
/*
*
* (C) 2010-2019 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
*/
class SSLService : public Service
{
public:
SSLService(Module *o, const Anope::string &n) : Service(o, "SSLService", n) { }
virtual void Init(Socket *s) = 0;
};
+2 -1
View File
@@ -1,5 +1,6 @@
/*
* (C) 2003-2014 Anope Team
*
* (C) 2003-2019 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
+9 -2
View File
@@ -1,3 +1,11 @@
/*
*
* (C) 2010-2019 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
*/
#include "httpd.h"
class XMLRPCRequest
@@ -9,7 +17,7 @@ class XMLRPCRequest
Anope::string id;
std::deque<Anope::string> data;
HTTPReply& r;
XMLRPCRequest(HTTPReply &_r) : r(_r) { }
inline void reply(const Anope::string &dname, const Anope::string &ddata) { this->replies.insert(std::make_pair(dname, ddata)); }
inline const std::map<Anope::string, Anope::string> &get_replies() { return this->replies; }
@@ -37,4 +45,3 @@ class XMLRPCServiceInterface : public Service
virtual void Reply(XMLRPCRequest &request) = 0;
};
+4 -4
View File
@@ -1,9 +1,9 @@
/*
* Copyright (C) 2008-2011 Robin Burchell <w00t@inspircd.org>
* Copyright (C) 2008-2014 Anope Team <team@anope.org>
*
* (C) 2008-2011 Robin Burchell <w00t@inspircd.org>
* (C) 2008-2019 Anope Team <team@anope.org>
*
* Please read COPYING and README for further details.
*
*/
#ifndef OPERTYPE_H
@@ -33,7 +33,7 @@ struct CoreExport Oper
virtual ~Oper();
static std::vector<Oper *> opers;
/** Find an oper block by name
* @param name The name
* @return the oper block
+47 -6
View File
@@ -1,13 +1,12 @@
/*
*
* (C) 2003-2014 Anope Team
* (C) 2003-2019 Anope Team
* Contact us at team@anope.org
*
* 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.
*
*/
#ifndef PROTOCOL_H
@@ -40,6 +39,9 @@ class CoreExport IRCDProto : public Service
virtual void SendNumericInternal(int numeric, const Anope::string &dest, const Anope::string &buf);
const Anope::string &GetProtocolName();
virtual bool Parse(const Anope::string &, Anope::map<Anope::string> &, Anope::string &, Anope::string &, std::vector<Anope::string> &);
virtual Anope::string Format(const Anope::string &source, const Anope::string &message);
/* Modes used by default by our clients */
Anope::string DefaultPseudoclientModes;
/* Can we force change a users's nick? */
@@ -64,11 +66,17 @@ class CoreExport IRCDProto : public Service
bool CanCertFP;
/* Whether this IRCd requires unique IDs for each user or server. See TS6/P10. */
bool RequiresID;
/* If this IRCd has unique ids, whether the IDs and nicknames are ambiguous */
bool AmbiguousID;
/* The maximum number of modes we are allowed to set with one MODE command */
unsigned MaxModes;
/* The maximum number of bytes a line may have */
unsigned MaxLine;
/* Retrieves the next free UID or SID */
virtual Anope::string UID_Retrieve();
virtual Anope::string SID_Retrieve();
/** Sets the server in NOOP mode. If NOOP mode is enabled, no users
* will be able to oper on the server.
* @param s The server
@@ -111,6 +119,8 @@ class CoreExport IRCDProto : public Service
virtual void SendSQLine(User *, const XLine *x) { }
virtual void SendSQLineDel(const XLine *x) { }
virtual void SendKill(const MessageSource &source, const Anope::string &target, const Anope::string &reason);
/** Kills a user
* @param source Who is doing the kill
* @param user The user to be killed
@@ -185,9 +195,9 @@ class CoreExport IRCDProto : public Service
* initial handshake requirements.
*/
virtual void SendConnect() = 0;
/** Called right before we begin our burst, after we have handshaked successfully with the uplink/
* At this point none of our servesr, users, or channels exist on the uplink
/** Called right before we begin our burst, after we have handshaked successfully with the uplink.
* At this point none of our servers, users, or channels exist on the uplink
*/
virtual void SendBOB() { }
virtual void SendEOB() { }
@@ -217,8 +227,9 @@ class CoreExport IRCDProto : public Service
*/
virtual void SendOper(User *u);
virtual void SendSASLMechanisms(std::vector<Anope::string> &) { }
virtual void SendSASLMessage(const SASL::Message &) { }
virtual void SendSVSLogin(const Anope::string &uid, const Anope::string &acc) { }
virtual void SendSVSLogin(const Anope::string &uid, const Anope::string &acc, const Anope::string &vident, const Anope::string &vhost) { }
virtual bool IsNickValid(const Anope::string &);
virtual bool IsChannelValid(const Anope::string &);
@@ -230,6 +241,8 @@ class CoreExport IRCDProto : public Service
* Defaults to Config->ListSize
*/
virtual unsigned GetMaxListFor(Channel *c);
virtual Anope::string NormalizeMask(const Anope::string &mask);
};
class CoreExport MessageSource
@@ -265,11 +278,39 @@ class CoreExport IRCDMessage : public Service
IRCDMessage(Module *owner, const Anope::string &n, unsigned p = 0);
unsigned GetParamCount() const;
virtual void Run(MessageSource &, const std::vector<Anope::string> &params) = 0;
virtual void Run(MessageSource &, const std::vector<Anope::string> &params, const Anope::map<Anope::string> &tags);
void SetFlag(IRCDMessageFlag f) { flags.insert(f); }
bool HasFlag(IRCDMessageFlag f) const { return flags.count(f); }
};
/** MessageTokenizer allows tokens in the IRC wire format to be read from a string */
class CoreExport MessageTokenizer
{
private:
/** The message we are parsing tokens from. */
Anope::string message;
/** The current position within the message. */
Anope::string::size_type position;
public:
/** Create a tokenstream and fill it with the provided data. */
MessageTokenizer(const Anope::string &msg);
/** Retrieve the next \<middle> token in the message.
* @param token The next token available, or an empty string if none remain.
* @return True if a token was retrieved; otherwise, false.
*/
bool GetMiddle(Anope::string &token);
/** Retrieve the next \<trailing> token in the message.
* @param token The next token available, or an empty string if none remain.
* @return True if a token was retrieved; otherwise, false.
*/
bool GetTrailing(Anope::string &token);
};
extern CoreExport IRCDProto *IRCD;
#endif // PROTOCOL_H
+13 -13
View File
@@ -5,11 +5,11 @@
*
* Copyright (c) 2005-2011 Paul Hsieh
* All rights reserved.
*
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
@@ -17,7 +17,7 @@
* documentation and/or other materials provided with the distribution.
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
@@ -73,7 +73,7 @@
* include stdint.h. The hope is that one or the other can be
* used with no real difference.
*
* 5) In the current verison, if your platform can't represent
* 5) In the current version, if your platform can't represent
* int32_t, int16_t and int8_t, it just dumps out with a compiler
* error.
*
@@ -730,15 +730,15 @@ typedef uint_least32_t uint_fast32_t;
#if defined (__TEST_PSTDINT_FOR_CORRECTNESS)
/*
/*
* Please compile with the maximum warning settings to make sure macros are not
* defined more than once.
*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define glue3_aux(x,y,z) x ## y ## z
#define glue3(x,y,z) glue3_aux(x,y,z)
@@ -748,7 +748,7 @@ typedef uint_least32_t uint_fast32_t;
#define DECL(us,bits) glue3(DECL,us,) (bits)
#define TESTUMAX(bits) glue3(u,bits,=) glue3(~,u,bits); if (glue3(UINT,bits,_MAX) glue3(!=,u,bits)) printf ("Something wrong with UINT%d_MAX\n", bits)
int main () {
DECL(I,8)
DECL(U,8)
@@ -765,7 +765,7 @@ int main () {
char str0[256], str1[256];
sprintf (str0, "%d %x\n", 0, ~0);
sprintf (str1, "%d %x\n", i8, ~0);
if (0 != strcmp (str0, str1)) printf ("Something wrong with i8 : %s\n", str1);
sprintf (str1, "%u %x\n", u8, ~0);
@@ -773,20 +773,20 @@ int main () {
sprintf (str1, "%d %x\n", i16, ~0);
if (0 != strcmp (str0, str1)) printf ("Something wrong with i16 : %s\n", str1);
sprintf (str1, "%u %x\n", u16, ~0);
if (0 != strcmp (str0, str1)) printf ("Something wrong with u16 : %s\n", str1);
if (0 != strcmp (str0, str1)) printf ("Something wrong with u16 : %s\n", str1);
sprintf (str1, "%" PRINTF_INT32_MODIFIER "d %x\n", i32, ~0);
if (0 != strcmp (str0, str1)) printf ("Something wrong with i32 : %s\n", str1);
sprintf (str1, "%" PRINTF_INT32_MODIFIER "u %x\n", u32, ~0);
if (0 != strcmp (str0, str1)) printf ("Something wrong with u32 : %s\n", str1);
#ifdef INT64_MAX
#ifdef INT64_MAX
sprintf (str1, "%" PRINTF_INT64_MODIFIER "d %x\n", i64, ~0);
if (0 != strcmp (str0, str1)) printf ("Something wrong with i64 : %s\n", str1);
#endif
sprintf (str1, "%" PRINTF_INTMAX_MODIFIER "d %x\n", imax, ~0);
if (0 != strcmp (str0, str1)) printf ("Something wrong with imax : %s\n", str1);
sprintf (str1, "%" PRINTF_INTMAX_MODIFIER "u %x\n", umax, ~0);
if (0 != strcmp (str0, str1)) printf ("Something wrong with umax : %s\n", str1);
if (0 != strcmp (str0, str1)) printf ("Something wrong with umax : %s\n", str1);
TESTUMAX(8);
TESTUMAX(16);
TESTUMAX(32);
+9 -5
View File
@@ -1,10 +1,9 @@
/*
*
* (C) 2008-2014 Anope Team
* (C) 2008-2019 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
*
*/
#ifndef REGCHANNEL_H
@@ -133,8 +132,8 @@ class CoreExport ChannelInfo : public Serializable, public Extensible
/** Retrieve the access for a user or group in the form of a vector of access entries
* (as multiple entries can affect a single user).
*/
AccessGroup AccessFor(const User *u);
AccessGroup AccessFor(const NickCore *nc);
AccessGroup AccessFor(const User *u, bool updateLastUsed = true);
AccessGroup AccessFor(const NickCore *nc, bool updateLastUsed = true);
/** Get the size of the accss vector for this channel
* @return The access vector size
@@ -198,6 +197,11 @@ class CoreExport ChannelInfo : public Serializable, public Extensible
*/
void ClearAkick();
/** Get the level entries for the channel.
* @return The levels for the channel.
*/
const Anope::map<int16_t> &GetLevelEntries();
/** Get the level for a privilege
* @param priv The privilege name
* @return the level
@@ -227,7 +231,7 @@ class CoreExport ChannelInfo : public Serializable, public Extensible
*/
Anope::string GetIdealBan(User *u) const;
/** Finds a ChannelInfo
/** Finds a ChannelInfo
* @param name channel name to lookup
* @return the ChannelInfo associated with the channel
*/
+1 -3
View File
@@ -1,13 +1,12 @@
/*
*
* (C) 2003-2014 Anope Team
* (C) 2003-2019 Anope Team
* Contact us at team@anope.org
*
* 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.
*
*/
#ifndef REGEXPR_H
@@ -44,4 +43,3 @@ class CoreExport RegexProvider : public Service
};
#endif // REGEXPR_H
+6 -7
View File
@@ -1,13 +1,12 @@
/*
*
* (C) 2003-2014 Anope Team
* (C) 2003-2019 Anope Team
* Contact us at team@anope.org
*
* 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.
*
*/
#ifndef SERIALIZE_H
@@ -60,14 +59,14 @@ class CoreExport Serializable : public virtual Base
* constructed before other objects are if it isn't.
*/
static std::list<Serializable *> *SerializableItems;
friend class Serialize::Type;
/* The type of item this object is */
Serialize::Type *s_type;
private:
/* Iterator into serializable_items */
std::list<Serializable *>::iterator s_iter;
/* The hash of the last serialized form of this object commited to the database */
/* The hash of the last serialized form of this object committed to the database */
size_t last_commit;
/* The last time this object was commited to the database */
/* The last time this object was committed to the database */
time_t last_commit_time;
protected:
@@ -109,7 +108,7 @@ class CoreExport Serializable : public virtual Base
* of class that inherits from Serialiable. Used for unserializing objects
* of this type, as it requires a function pointer to a static member function.
*/
class CoreExport Serialize::Type
class CoreExport Serialize::Type : public Base
{
typedef Serializable* (*unserialize_func)(Serializable *obj, Serialize::Data &);
@@ -188,7 +187,7 @@ class Serialize::Checker
{
Anope::string name;
T obj;
mutable Serialize::Type *type;
mutable ::Reference<Serialize::Type> type;
inline void Check() const
{
+1 -6
View File
@@ -1,13 +1,12 @@
/*
*
* (C) 2003-2014 Anope Team
* (C) 2003-2019 Anope Team
* Contact us at team@anope.org
*
* 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.
*
*/
#ifndef SERVERS_H
@@ -23,10 +22,6 @@ extern CoreExport Server *Me;
namespace Servers
{
/* Retrieves the next free TS6 UID or SID */
extern CoreExport const Anope::string TS6_UID_Retrieve();
extern CoreExport const Anope::string TS6_SID_Retrieve();
/* Gets our uplink. Note we don't actually have an "uplink", this is just
* the only server whose uplink *is* Me that is not a juped server.
* @return Our uplink, or NULL if not uplinked to anything
+1 -3
View File
@@ -1,13 +1,12 @@
/*
*
* (C) 2003-2014 Anope Team
* (C) 2003-2019 Anope Team
* Contact us at team@anope.org
*
* 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.
*
*/
#ifndef SERVICE_H
@@ -172,4 +171,3 @@ class ServiceAlias
};
#endif // SERVICE_H
+1 -2
View File
@@ -1,13 +1,12 @@
/*
*
* (C) 2003-2014 Anope Team
* (C) 2003-2019 Anope Team
* Contact us at team@anope.org
*
* 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.
*
*/
#ifndef SERVICES_H
+1 -2
View File
@@ -1,13 +1,12 @@
/*
*
* (C) 2003-2014 Anope Team
* (C) 2003-2019 Anope Team
* Contact us at team@anope.org
*
* 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.
*
*/
#ifndef SOCKETENGINE_H
+13 -6
View File
@@ -1,13 +1,12 @@
/*
*
* (C) 2003-2014 Anope Team
* (C) 2003-2019 Anope Team
* Contact us at team@anope.org
*
* 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.
*
*/
#ifndef SOCKETS_H
@@ -39,6 +38,10 @@ union CoreExport sockaddrs
*/
void clear();
/** Get address family.
*/
int family() const;
/** Get the size of the sockaddr we represent
* @return The size
*/
@@ -54,12 +57,17 @@ union CoreExport sockaddrs
*/
Anope::string addr() const;
/** Get the reverse address represented by this addr
* @return The reverse address
*/
Anope::string reverse() const;
/* Is this address ipv6? */
bool ipv6() const;
/** Check if this sockaddr has data in it
*/
bool operator()() const;
bool valid() const;
/** Compares with sockaddr with another. Compares address type, port, and address
* @return true if they are the same
@@ -82,8 +90,6 @@ union CoreExport sockaddrs
* @throws A socket exception if given an invalid structure
*/
void ntop(int type, const void *src);
bool valid() const;
};
class CoreExport cidr
@@ -94,6 +100,7 @@ class CoreExport cidr
public:
cidr(const Anope::string &ip);
cidr(const Anope::string &ip, unsigned char len);
cidr(const sockaddrs &ip, unsigned char len);
Anope::string mask() const;
bool match(const sockaddrs &other);
bool valid() const;
@@ -373,7 +380,7 @@ class CoreExport ListenSocket : public virtual Socket
virtual ~ListenSocket();
/** Process what has come in from the connection
* @return false to destory this socket
* @return false to destroy this socket
*/
bool ProcessRead();

Some files were not shown because too many files have changed in this diff Show More