Commit Graph

384 Commits

Author SHA1 Message Date
Alexey Sokolov
370659895b Increase the version number to 1.5 2014-04-14 22:48:50 +01:00
Alexey Sokolov
9cf61ac6d4 Argh, fuck it. Rename fixed (pointer) versions of OnMode to OnMode2 2014-04-12 08:51:04 +01:00
J-P Nurmi
2b0c47aa8e Add CChan::SendBuffer(client, buffer) overload
This allows interested parties eg. modules to to send a partial
buffer playback without reinventing the wheel.
2014-03-04 08:27:10 +01:00
J-P Nurmi
76bfa99dd0 Add module hooks for raw client and server messages 2014-03-04 00:24:15 +01:00
Alexey Sokolov
77652768c6 Merge pull request #493 from jpnurmi/server-time
Promote server-time formatting to Utils
2014-03-03 22:44:49 +00:00
Alexey Sokolov
7d2f74acf4 Merge pull request #500 from jpnurmi/find-chans
Add CIRCNetwork::FindChans()
2014-03-03 22:38:41 +00:00
J-P Nurmi
ed25ca21e6 Add CIRCNetwork::FindChans() 2014-03-02 23:24:34 +01:00
J-P Nurmi
5f8f747704 Add CUtils::Get/SetMessageTags() 2014-03-02 23:18:39 +01:00
J-P Nurmi
bbd84a06bf Promote server-time formatting to Utils 2014-03-02 02:01:40 +01:00
Alexey Sokolov
618d9c58a4 Fix chansaver's channel keys by adding other OnMode() hooks 2014-02-27 00:49:45 +00:00
Alexey Sokolov
1c8e9b9355 Merge pull request #485 from uu1101/uriprefix
Allow serving the web interface under a subpath
Fix #480
Fix #138
2014-02-17 00:44:37 +00:00
uu1101
88c85b0396 Add URIPrefix listener option 2014-02-16 12:45:09 +01:00
uu1101
d3ddb9b69d The Listener of a RealListener is never NULL 2014-02-15 14:57:33 +01:00
uu1101
7a9ce630ef Add CString::StartsWith and CString::EndsWith 2014-02-15 12:41:54 +01:00
Alexey Sokolov
b7592008af Merge pull request #484 from KiNgMaR/singleton
Allow more control over CZNC singleton
2014-02-08 18:03:06 +00:00
Ingmar Runge
4c505946ac Patch ZNC core for more control over singleton... 2014-02-08 01:25:28 +01:00
Ingmar Runge
13040d9c72 Fix AddServerThrottle. 2014-02-06 23:36:01 +01:00
Ingmar Runge
b3021f913e squash some compiler warnings 2014-02-06 17:52:42 +01:00
Alexey Sokolov
dbdfa1e612 Merge pull request #466 from dgw/fix-shell-timeout
Remove accidental timeout in shell module
2014-01-27 14:18:04 -08:00
Alexey Sokolov
c0a5ecb40b Add support for character encodings
Previous commit added support of it to Csocket.
When encoding is specified, core will convert incoming messages to UTF-8,
and outgoing messages from UTF-8.
When no encoding is specified, it will do nothing to bytes, like before.
This is to be changed somewhere in future, to have UTF-8 on wire by
default too.
When encoding's name starts with *, incoming messages will be treated as
UTF-8, if it is already correct UTF-8. Otherwise, it's converted.

Fix #151
Fix #366
2014-01-25 13:50:07 +00:00
Alexey Sokolov
6012cdee77 Update Csocket to e818c7b0d31b0ed71c74f9d0035b58efd73f3988
This adds support for character encodings, and decreases CPU usage in
some cases
2014-01-25 13:50:07 +00:00
dgw
38fc398c2a Remove accidental timeout in shell module 2014-01-21 00:26:01 +04:00
Wuggingston Wugsalot
adafe9d197 Added CString::Join and CString::Convert
CString::Join works like python's string join, except that it takes 2
iterators (or pointers) instead of a whole collection
CString::Convert casts a string to another type using an intermediary
stringstream.
2014-01-18 21:37:59 +00:00
Alexey Sokolov
e0fd211053 Merge pull request #441 from psychon/websocks-expire-oldest
WebModules: Discard sessions in LRU order
2014-01-16 15:21:27 -08:00
Falk Seidel
f19b4caa43 Welcome to 2014 - year 10 with ZNC 2013-12-31 10:10:55 +01:00
Uli Schlachter
414fa40eb5 WebModules: Discard sessions in LRU order
Currently, znc has a limit of 5 web sessions per IP address. This limit exists
to defend against some obvious DoS attacks. When this limit is hit, some session
is discarded.

Previously, we would discard the session that std::multimap::find() would give
us. The multimap used mapped from IP addresses to sessions. Thus, we would
discard the oldest session.

This commit changes this into some least-recently-used logic. Whenever a session
is used, we record the timestamp of this. Then when a session has to be picked
for discarding, the one with the oldest timestamp is used.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2013-12-07 20:56:27 +01:00
Alexey Sokolov
3e56f093f2 X-Forwarded-For: verify the whole chain, from the end 2013-11-14 22:37:36 +04:00
Alexey Sokolov
ccbc469168 Merge commit 'refs/pull/349/head' of github.com:znc/znc 2013-11-14 08:27:50 +04:00
Alexey Sokolov
e8e95d770e Increase the version number to 1.3 2013-11-04 16:25:07 +04:00
Alexey Sokolov
49cf40b19c Increase the version number to 1.2 2013-11-04 16:07:13 +04:00
Alexey Sokolov
feca415c23 Fix a random crash with module hooks
How to reproduce:
1. have a global module which in a hook does something which calls
hooks too, e.g. Broadcast()
2. have another global module loaded after the first one which uses
m_pNetwork in that hook
3. enjoy the crash (or just weird behavior if you're unlucky)

So, when ZNC is setup with the "proper" global modules and in a special
order, one can crash it just from IRC, by triggering the needed module hooks.

Affected version: 1.0

Thanks to ChauffeR (Simone Esposito) for reporting the issue
and helping to debug it.
2013-10-20 22:33:57 +04:00
Alexey Sokolov
11efcee422 Merge commit 'refs/pull/422/head' of github.com:znc/znc 2013-10-20 17:42:45 +04:00
Ingmar Runge
b5c898eaff modules: add OnAddNetwork, OnDeleteNetwork hooks. 2013-10-18 20:35:21 +02:00
Toon Schoenmakers
9166f5a250 Renamed IsNick to NickEquals
Also added a TODO to add proper IRC case comparing.

Signed-off-by: Toon Schoenmakers <nighteyes1993@gmail.com>
2013-10-10 18:36:03 +02:00
Toon Schoenmakers
83b9a28e4c Implemented a nick compare function
As suggested by the todos in IRCSock, added IsNick(CString) method
so the ugly Nick.GetNick().Equals(GetNick()) could be simplified.

Signed-off-by: Toon Schoenmakers <nighteyes1993@gmail.com>
2013-10-10 17:22:16 +02:00
Stéphan Kochen
3d3ca53bf1 Add missing include for sys/stat.h. 2013-09-10 22:37:24 +02:00
Alexey Sokolov
d5e03cb736 Fix support for /msg @#chan :hi
005 STATUSMSG defines list of characters prependable to channel name,
but we used simple modes instead.

See
https://tools.ietf.org/html/draft-brocklesby-irc-isupport-03#section-3.16

Fix #272

Thanks to grawity for the link to 005 docs draft, and to carrot for
testing the patch.
2013-08-29 22:31:25 +04:00
Alexey Sokolov
b2dcad5fd4 Change ZNC license to Apache 2.0
The following people agreed with the change, in alphabetical order:
(people who approved in several ways are listed only once)
By email:
- Adam (from Anope)
- Austin Morton
- Brian Campbell
- Christian Walde
- Daniel Holbert
- Daniel Wallace
- Falk Seidel
- Heiko Hund
- Ingmar Runge
- Jim Hull
- Kyle Fuller
- Lee Aylward
- Martin Martimeo
- Matt Harper
- Michael J Edgar
- Michael Ziegler
- Nick Bebout
- Paul Driver
- Perry Nguyen
- Philippe (cycomate)
- Reuben Morais
- Roland Hieber
- Sebastian Ramacher
- Stefan Rado
- Stéphan Kochen
- Thomas Ward
- Toon Schoenmakers
- Veit Wahlich
- Wulf C. Krueger

By IRC:
- CNU
- Jonas Gorski
- Joshua M. Clulow
- Prozac/SHiZNO
- SilverLeo
- Uli Schlachter

At https://github.com/znc/znc/issues/311 :
- Alexey Sokolov
- Elizabeth Myers
- flakes
- Jens-Andre Koch
- Jyzee
- KindOne/ineedalifetoday
- Lee Williams
- Mantas Mikulėnas
- md-5
- Reed Loden

At the last few pull requests' comments:
- Allan Odgaard
- Jacob Baines
- Lluís Batlle i Rossell
- ravomavain
- protomouse

The following commits' authors didn't respond:
Trivial changes:
- f70f1086fd
- 4ca8b50e45

The changes which are not presented in master anymore:
- 5512ed2ea0
- 960a4498f7
- 0f739de2c0
- 7f53cc810b

Fix #311
Fix #218
2013-06-14 00:43:34 +04:00
Alexey Sokolov
a06b6495e8 Revert "Rewrite the JOIN channel logic, dropping MaxJoins"
This reverts commit db7c47f97d.

Too many joined channels at once started to cause disconnect because of
"Max SendQ Exceeded", which is not much better than previous Flood.

Now MaxJoins is 0 by default, which preserves the current behavior of
joining all channels at once. If someone experiences those disconnects
due to SendQ, they can tune MaxJoins.

Fix #329

Conflicts:
	include/znc/User.h
	modules/controlpanel.cpp
	modules/webadmin.cpp
	src/User.cpp
2013-06-09 23:39:10 +04:00
Alexey Sokolov
99895c77df Rewrite printing timestamps in znc -D
Previous commit doing it was 0f739de2c0
2013-06-04 23:13:17 +04:00
Ravomavain
10a982b6d3 Add CString::StripControls to strip controls (Colors, C0) from strings 2013-05-20 12:23:32 +02:00
Ravomavain
0c37fb1858 Add EDEBUG to CString::Escape function to escape debug output. 2013-05-12 12:22:26 +02:00
Alexey Sokolov
6569508522 Merge commit 'refs/pull/306/head' of github.com:znc/znc 2013-05-12 08:59:01 +04:00
Siyo
3d5ba6af3e Whitelisted X-Forwarded-For header support 2013-05-10 14:19:58 +02:00
Elizabeth Myers
f578bf9424 Implement DH-AES encrypted password scheme.
This is superior to DH-BLOWFISH as Blowfish may suffer from certain
classes of weak keys, which is difficult to mitigate against without
regenerating DH parameters repeatedly. AES also has faced far more
scrutiny and is believed to be more secure.

Reference implementation (services-side):
https://github.com/atheme/atheme/blob/master/modules/saslserv/dh-aes.c
2013-04-16 05:39:10 -05:00
Alexey Sokolov
9f4f2817d1 Fix #293
In GetAvailableMods() modules paths were returned like "moddir//module.pm",
but when they are loaded, they use path "moddir/module.pm".

Because of that our hack of cleaning %INC when the module is unloaded,
which enables UpdateMod, removed wrong record from %INC, left right
record in it, and erased the module's namespace.

When the module was loaded again, the namespace was not restored,
because "require" didn't load the module, because it was still in %INC.

So, when we call a function of that module, the function does not exist
anymore.
2013-03-16 23:35:19 +07:00
Uli Schlachter
53c579b296 CJob: Add a way to do stuff on the main thread
This just moves the pipe from the socket code to the thread pool. However, now
all CJobs can use this and there is a single place for them to get deleted.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2013-03-15 11:58:27 +01:00
Uli Schlachter
75f2e3fa41 Add a generic threads abstraction
This should make it easier to work with threads. It provides classes for mutexes
and condition variables. Additionally, there is a special CMutexGuard that
automatically unlocks the mutex on destruction and a CThreadPool class.

This thread pool is used to replace the thread pool in the sockets code.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2013-03-15 11:58:22 +01:00
Ingmar Runge
ea94795646 HTTPSock: Gzip compression for static files (text/* mime types + files
with .js extension) and dynamic HTML responses (if gzip is available and
the compression method is supported by the requesting HTTP client).
2013-03-08 09:49:45 +01:00
Un1matr1x
3a34593359 The same procedure as last year, Miss sophie?
Same procedure as every year, James.
2012-12-31 12:44:31 +01:00