Commit Graph

2038 Commits

Author SHA1 Message Date
psychon
4d149f3d5f Use GetSession() instead of m_spSession
m_spSession could be a NULL pointer while GetSession() new returns a NULL
pointer.


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1858 726aef4b-f618-498e-8847-2d620e286838
2010-03-30 12:11:27 +00:00
psychon
12629f8e94 Make sure CWebSock::GetSession() only generates one session
When one sent a basic-auth header, OnLogin() was called with the request's data
which caused a GetSession() call which generated a new session. Sadly, this
session wasn't saved anywhere, so a new one session was generated later when
OnPageRequest() triggered. This could lead to a NULL pointer dereference.


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1857 726aef4b-f618-498e-8847-2d620e286838
2010-03-30 12:06:27 +00:00
cflakes
555be2b724 "Fix" trailing whitespace in /settings' textareas.
git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1856 726aef4b-f618-498e-8847-2d620e286838
2010-03-30 10:17:56 +00:00
psychon
b22c63c6c4 And again a little less spamminess
Meh, so much work to do on these --debug spam. :(


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1855 726aef4b-f618-498e-8847-2d620e286838
2010-03-30 10:10:26 +00:00
cflakes
3fbcb24e78 Fix (hide) "Add Channel" link while creating new users. Regression
from porting webadmin to webmods.


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1854 726aef4b-f618-498e-8847-2d620e286838
2010-03-30 09:59:37 +00:00
cflakes
79e7316e87 Minor webmods skin fixes.
git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1853 726aef4b-f618-498e-8847-2d620e286838
2010-03-30 09:48:23 +00:00
cflakes
b9abdf06f4 Remember "automatically connect + reconnect" flag across restarts by writing it to the config file.
git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1852 726aef4b-f618-498e-8847-2d620e286838
2010-03-30 09:24:24 +00:00
cflakes
bb79dd338f Added "Connect to IRC & automatically re-connect" checkbox to webadmin.
Sets the internal "automatically connect" flag just like /msg *status connect and
/msg *status disconnect do. Idea by Advis0r, thanks!


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1851 726aef4b-f618-498e-8847-2d620e286838
2010-03-30 09:16:09 +00:00
psychon
72293bed64 Oh look, invisible, pink unicorns!
No really, over there! You really should take a look. Come on, I'm not messing
with you. There really are those IPU (invisible pink unicorns) right behind you.
DarthGandalf found them. Oh, now they flew away. :(


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1850 726aef4b-f618-498e-8847-2d620e286838
2010-03-29 19:29:20 +00:00
psychon
5d2f3a03d0 Make OnConfigLine() a user module hook
It's only called for stuff defined in that user's section. The stuff outside of
a user section still can only be caught by global modules.


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1849 726aef4b-f618-498e-8847-2d620e286838
2010-03-29 19:23:48 +00:00
psychon
5b29a28a55 Move OnWrite{User,Chan}Config() to CModule
That way, user modules can write stuff to the user section, too.

OnWriteConfig() is still a global module call. A later commit will have to make
OnConfigLine() a user module hook...


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1848 726aef4b-f618-498e-8847-2d620e286838
2010-03-29 19:04:37 +00:00
cflakes
b3b937fa2d Fix admin.cpp. Search and replace isn't what it used to be.
git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1847 726aef4b-f618-498e-8847-2d620e286838
2010-03-28 21:06:40 +00:00
cflakes
263d596379 Fix whitespace and general cleanup for admin.cpp. Let's hope this doesn't break anything. :P
git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1846 726aef4b-f618-498e-8847-2d620e286838
2010-03-28 21:04:25 +00:00
cflakes
5afb3097a5 Add LoadModule, UnLoadModule, ListMods commands to the admin module.
This means that admins can now load user modules for other users.

Patch by Nirjen. Thanks, great job!


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1845 726aef4b-f618-498e-8847-2d620e286838
2010-03-28 20:37:48 +00:00
cflakes
c89d8bbb9e Add some doxygen comments for WebMods module stuff.
git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1844 726aef4b-f618-498e-8847-2d620e286838
2010-03-25 16:57:37 +00:00
cflakes
cf3fbdffff Add a robots.txt file. Since WebMods now deliver (albeit basic) pages to visitors
that have not logged into any ZNC account, we certainly want to protect peoples'
ZNC's from Google's crawlers.


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1843 726aef4b-f618-498e-8847-2d620e286838
2010-03-23 23:26:38 +00:00
cflakes
5b723fe7a4 WebSock: Add PAGE_DONE to EPageReqResult. It's used to better differentiate between
async processing (PAGE_DEFERRED) and redirects and other synchronous stuff (-> PAGE_DONE).


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1842 726aef4b-f618-498e-8847-2d620e286838
2010-03-23 18:03:12 +00:00
cflakes
437eef7fdd Add OnWebPreRequest web module hook to allow modules to do PAGE_DEFERRED style async processing.
git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1841 726aef4b-f618-498e-8847-2d620e286838
2010-03-23 17:59:42 +00:00
cflakes
4daa637130 WebMods/HTTPSock: Do not send Set-Cookie headers if the cookie has not changed.
To achieve that, split internal cookie jar into a jar for received cookies
and one for cookies that are to be sent with the response.


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1840 726aef4b-f618-498e-8847-2d620e286838
2010-03-23 16:48:25 +00:00
cflakes
bf5e56c04f WebMods: Add an error message for users that have cookie support turned off.
git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1839 726aef4b-f618-498e-8847-2d620e286838
2010-03-23 16:12:38 +00:00
psychon
39c5a677a9 Fix a couple of places where WebMods tried to send multiple pages
git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1838 726aef4b-f618-498e-8847-2d620e286838
2010-03-16 10:04:31 +00:00
psychon
082008ed98 CHTTPSock: Print warnings if one tries to send multiple pages
git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1837 726aef4b-f618-498e-8847-2d620e286838
2010-03-16 09:55:10 +00:00
psychon
fffa0f7d36 Remove the spamminess of --debug a little
git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1836 726aef4b-f618-498e-8847-2d620e286838
2010-03-16 09:53:58 +00:00
psychon
3e49639cc9 Really fix auth modules
It turns out that there was still another Close() hiding in CHTTPSock which made
stuff fail. However, just removing it fixes stuff.

Thanks to DarthGandalf for noticing that my fix wasn't fixing the bug that was
bugging him.


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1835 726aef4b-f618-498e-8847-2d620e286838
2010-03-16 09:23:32 +00:00
psychon
b764aa7b42 Fix WebModules with auth modules
When e.g. imapauth started handling a login from WebMods it opened a new TCP
connection etc. This took time, but WebMods didn't actually wait for the login
to finish which caused the login to fail later on since the HTTP socket was
already destroyed.

This fixes it by letting the HTTP sock just hang. Once the login finishes,
CHTTPSock::Redirect() is called to let it come back to life again.

Thanks to DarthGandalf for finding this issue.


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1834 726aef4b-f618-498e-8847-2d620e286838
2010-03-15 16:06:56 +00:00
psychon
1d7fdc2954 Change the return type of OnPageRequestInternal()
Instead of return a bool, this now returns an enum. This explains the meaning of
the returned value better and will be used in the next commit to fix a bug.


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1833 726aef4b-f618-498e-8847-2d620e286838
2010-03-15 15:58:15 +00:00
psychon
e54b0bda0a Revert r1831
No, I'm not going to explain why. :P


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1832 726aef4b-f618-498e-8847-2d620e286838
2010-03-15 15:43:22 +00:00
psychon
d76f193b6b Remove a self-assignment due to copy&paste
git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1831 726aef4b-f618-498e-8847-2d620e286838
2010-03-15 15:36:04 +00:00
psychon
cb193d8f72 Make it possible to process HTTP requests async
This changes CHTTPSock so that one can handle HTTP requests asynchronously.
This is done by not forcing a page to be sent out in the caller of
OnPageRequest() but instead requiring a call to the new function
CHTTPSock::PrintPage().


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1830 726aef4b-f618-498e-8847-2d620e286838
2010-03-15 15:27:02 +00:00
psychon
5a8193565d Fix some minor "Whooops"
Someone semi-messed-up Makefile.in and the very same guy forgot to regenerate
configure when he modified configure.in. Whooops.


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1829 726aef4b-f618-498e-8847-2d620e286838
2010-03-14 12:19:54 +00:00
psychon
5267e647e7 autoreply: Ignore messages from self
antiidle and autoreply didn't like each other, that's fixed now.

Thanks to Werring for reporting this.


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1828 726aef4b-f618-498e-8847-2d620e286838
2010-03-12 12:22:40 +00:00
psychon
c3728f4cb3 Fix a crash with WebMods and deleting User
If a user who is currently logged in to WebMods is deleted, his CWebSession
still kept a stale CUser pointer around. The next time he loaded a web page,
Bad Things(tm) happened.

This is fixed by deleting all of a user's sessions when that user is deleted.

Thanks to DarthGandalf for spotting the bug and writing the patch.


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1827 726aef4b-f618-498e-8847-2d620e286838
2010-03-11 17:29:36 +00:00
psychon
547b603488 Fix a crash bug with WebMods and auth modules
When a CWebSock was destroyed before its CWebAuth, the CWebAuth dereferenced a
stale pointer once it was used again. Fix this by calling
CAuthBase::Invalidate() appropriately.

Thanks to DarthGandalf for finding this.


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1826 726aef4b-f618-498e-8847-2d620e286838
2010-03-10 20:47:48 +00:00
psychon
5ff69d8e05 Fix traffic accounting of WebModules
The traffic generated by it was just discarded. Now it's accounted towards a
user if one is logged in, else towards the global traffic usage.


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1825 726aef4b-f618-498e-8847-2d620e286838
2010-03-10 19:34:21 +00:00
psychon
a7d26bb598 Fix a crash bug in WebModules
WebModules use CHTTPSock for the HTTP server. That class requires a CModule
instance for working since it's based on CSocket. This was solved by creating a
fake module instance which is destroyed when the socket is destroyed.

The problem here was that CSocket's destructor tried to access that module
instance which was already destroyed resulting in a use-after-free.


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1824 726aef4b-f618-498e-8847-2d620e286838
2010-03-10 19:16:38 +00:00
psychon
f6f7dce129 Use TCacheMap for saving the WebModules session
With this change, sessions are automatically "garbage collected" 24h after the
last request using this session.


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1823 726aef4b-f618-498e-8847-2d620e286838
2010-03-10 17:53:57 +00:00
psychon
7bff1c4d7c Change the default ConnectDelay from 30s to 5s
Now that we have the new ServerThrottle, we should be able to live with this
higher connect rate. Connecting lots of users is still awfully slow. :(


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1822 726aef4b-f618-498e-8847-2d620e286838
2010-03-10 13:28:15 +00:00
cflakes
ca48efc0a0 Fix previous commit. That's why I said let psychon do it. Hahaha.
Seriously though, why does stuff return TRUE when it fails and FALSE when everything's fine? Pretty weird.


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1821 726aef4b-f618-498e-8847-2d620e286838
2010-03-10 01:35:47 +00:00
cflakes
28022ca771 Added a new module hook
EModRet OnAddUser(CUser& User, CString& sErrorRet)
for global modules. Idea by BrianC.


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1820 726aef4b-f618-498e-8847-2d620e286838
2010-03-09 20:24:43 +00:00
psychon
cbb6e14c3a Generate session IDs more securely
We now use a lot more data for generating the session id which is fed to a hash
to make it impossible to attack specific parts of the input.

Also we now retry generating a new session id in the (improbable) case of
collision with an existing session id.

Thanks a lot to cnu for pointing out the weakness in the old code by stealing my
session cookie, you evil hacker!


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1819 726aef4b-f618-498e-8847-2d620e286838
2010-03-09 19:44:24 +00:00
psychon
9036f5de74 Fix CSmartPtr's operator== to actually work
The old code only worked when the CSmartPtr instance was at the left side of the
comparison and comparing two CSmartPtr directly resulted in a compiler error.


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1818 726aef4b-f618-498e-8847-2d620e286838
2010-03-09 18:58:31 +00:00
psychon
2ca15364d4 Use Listen and Listen4 in --makeconf
Before this, --makeconf used "Listen" if you said "no" to "do you want ipv6?"
and "Listen6" else. Since yesterday, "Listen" means "v4 and v6 please" (thanks
to DarthGandalg) which means we now use "Listen4" for "no" and "Listen" else.


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1817 726aef4b-f618-498e-8847-2d620e286838
2010-03-09 16:47:07 +00:00
psychon
6acaebf775 Add "Listen4" config option
"Listen6" and "Listen4" now do what the name implies and "Listen" listens on
both ipv4 and ipv6 (unless a bind host was set which forces something
different).

This also changes webadmin appropriately.

Thanks to DarthGandalf for the idea and the patch.


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1816 726aef4b-f618-498e-8847-2d620e286838
2010-03-08 17:23:53 +00:00
silverleo
aa9edc13b9 Added debug output for the listeners IsHostAllowed check.
git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1815 726aef4b-f618-498e-8847-2d620e286838
2010-03-08 16:51:00 +00:00
psychon
8d37abf312 Update to latest Csocket
git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1814 726aef4b-f618-498e-8847-2d620e286838
2010-03-07 15:46:36 +00:00
psychon
32a5fda809 Use a better seed for srand()
Instead of just time() (which can be easily guessed by an attacker when he gets
a couple of samples of rand() results), this now also uses the current
microseconds, znc's pid and the old PRNG state for computing a seed.


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1813 726aef4b-f618-498e-8847-2d620e286838
2010-03-07 14:55:20 +00:00
psychon
19ecd6e508 Add basic support for CAP
This adds support for the general CAP protocol and the multi-prefix and
userhost-in-names (NAMESX and UHNAMES) to znc. There is no module call for CAP
tokens yet, but if modules really want to "catch" capabilities, we should most
likely add one.


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1812 726aef4b-f618-498e-8847-2d620e286838
2010-03-07 13:44:56 +00:00
psychon
3e780e8058 route_replies: Send 353 through ForwardRaw353()
Before, route_replies bypassed this function which caused "wrong" replies to
/names, because clients who didnt understand it still got NAMESX and UHNAMES
replies.


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1811 726aef4b-f618-498e-8847-2d620e286838
2010-03-07 13:24:14 +00:00
psychon
ec0d52e675 Split up CIRCSock::ForwardRaw353() into two function, one which is per-client
git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1810 726aef4b-f618-498e-8847-2d620e286838
2010-03-07 13:16:17 +00:00
psychon
5a02c73794 saslauth: Error out "better" on invalid module arguments
git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1809 726aef4b-f618-498e-8847-2d620e286838
2010-03-07 13:12:41 +00:00