Commit Graph

45 Commits

Author SHA1 Message Date
psychon 10d1fa41a9 Move module templates to DATADIR
The file hierarchy standard wants that!


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1982 726aef4b-f618-498e-8847-2d620e286838
2010-05-13 16:51:17 +00:00
psychon 8e8463092b WebModules: Make PAGE_DONE imply Close()
When one now finishes a web request with PAGE_DONE, the code actively calls
Close(CLT_AFTERWRITE) which one previously had to call explicitly. This means
there is finally a difference between PAGE_DONE and PAGE_DEFERRED. ;)


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1981 726aef4b-f618-498e-8847-2d620e286838
2010-05-13 15:54:06 +00:00
psychon 83bedc10b0 Some debug output less
git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1968 726aef4b-f618-498e-8847-2d620e286838
2010-05-03 17:53:47 +00:00
psychon dd8dabdfd1 WebMods: Calculate the module's web path correctly
Until now, the code checked for <moddir>/www/<mod name> and just used
./modules/www/<mod name> if the other dir didn't exist.

Now we calculate the correct path from the module's shared object's path, which
is the correct thing to do.


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1967 726aef4b-f618-498e-8847-2d620e286838
2010-05-03 13:49:45 +00:00
psychon 5631a20499 Some more fun with tabs
git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1966 726aef4b-f618-498e-8847-2d620e286838
2010-05-02 08:36:57 +00:00
cflakes 316277132a WebMods: Fix cookie check and menu entry variables to use the new GetParam methods.
git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1936 726aef4b-f618-498e-8847-2d620e286838
2010-04-25 14:45:22 +00:00
cflakes 70d8919835 WebMods: Delete obsolete login.tpl template. The login form has been
on / and /help and so on for some months.


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1934 726aef4b-f618-498e-8847-2d620e286838
2010-04-25 13:52:19 +00:00
cflakes da954bb4a6 WebMods: Following the last commit, this adds the CSRF check token
to existing action="post" forms. Right now, we don't have much of a
real protection against CSRF yet, but psychon is working on making
that happen :)


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1933 726aef4b-f618-498e-8847-2d620e286838
2010-04-25 13:35:06 +00:00
psychon 16a55d09df Webmods: Only accept POST requests with a secret parameter
This is a first step against CSRF. Thanks to flakes for the idea.


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1932 726aef4b-f618-498e-8847-2d620e286838
2010-04-25 13:04:51 +00:00
psychon cdf97a5b91 Webmods: Only accept "/login"
Nothing uses a "/login/bla"-style URI and thus we shouldn't have to check for it


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1931 726aef4b-f618-498e-8847-2d620e286838
2010-04-25 12:52:03 +00:00
cflakes 9ea1d2cf8e Clarify the meaning of returning false from OnWebRequest.
git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1886 726aef4b-f618-498e-8847-2d620e286838
2010-04-05 15:17:23 +00:00
psychon 0c7b2f96d2 Cosmetic fix for the debug output
PrintStaticFile() called ExpandFile() twice if debug output was enabled which
caused it's DEBUG() error messages to be printed twice.

It then called CHTTPSock::PrintFile() to print the actual file. PrintFile()
always sends a result page, no matter if this is an error page or a proper
result page. Thus we should always return PAGE_DONE here, since PAGE_NOTFOUND
was already handled.


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1882 726aef4b-f618-498e-8847-2d620e286838
2010-04-04 18:54:44 +00:00
cflakes e67b07f07a Do not expose ZNC's version number through the web interface
unless there's an active user session.


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1877 726aef4b-f618-498e-8847-2d620e286838
2010-04-04 15:20:22 +00:00
cflakes e4f8935c17 Deleted obsolete modules/webadmin dir, copied CSS files for ice & default to
webskins dir, made default the _default_ skin, moved dark-clouds to dark-clouds,
added /skinfiles/ feature to base skins on each other (and not only on default).

Next up: re-adding help texts that got lost during webadmin->webmods transition,
making skins look nice again.


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1868 726aef4b-f618-498e-8847-2d620e286838
2010-04-04 10:27:33 +00:00
psychon 4eb7d604a2 GetSession(): Properly cache the result
This function caches its result for not-logged-in users since r1857. With this
commit, it also now works properly for logged-in ones.


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1862 726aef4b-f618-498e-8847-2d620e286838
2010-03-30 19:52:17 +00:00
psychon 2039f4e831 Bugfix for CWebSock::GetRequestCookie()
When a module page is requested, m_sModName is set. When then GetSession() tries
to look up its session cookie, it doesn't find it since GetRequestCookie()
actually looks up Mod::<modname>::<cookie name>.

The fix is to look up the global cookie name if the mod one doesnt exist.


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1861 726aef4b-f618-498e-8847-2d620e286838
2010-03-30 19:49:51 +00:00
psychon 9bf75ce0e7 Remove CWebSock::m_bLoggedIn
We can just check if m_pUser is NULL for the very same thing.


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1859 726aef4b-f618-498e-8847-2d620e286838
2010-03-30 12:20:31 +00:00
psychon fd750daa5f 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 ede188aaa5 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
psychon c4703fb709 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 f358130220 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 8b52393eb7 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 44d2114f37 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 968a0bd3ff 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 72dccb5560 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 6228055bb9 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 1fae97ab92 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 f87b69b3dc 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 8447db4da6 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 e91690c283 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 4b75861993 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 92121d20a8 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 4303c3c200 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 a74c2a4625 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 e8e0065e71 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 c26775c5d6 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 47728017c2 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 a78addefa6 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 3526b740b3 Move the list of sessions to a more "public" place
git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1806 726aef4b-f618-498e-8847-2d620e286838
2010-03-04 14:10:45 +00:00
psychon e49685fb01 Use a random string instead of an md5 hash for session IDs
This string has the same length as the md5 hash, but it does actually contain
more entropy. Also, why md5? :/


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1804 726aef4b-f618-498e-8847-2d620e286838
2010-03-04 14:03:27 +00:00
prozacx 78c1399992 Added support for cookies and sessions. Logging in is now done via cookies.
git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1799 726aef4b-f618-498e-8847-2d620e286838
2010-03-01 01:22:02 +00:00
psychon ceb65b2205 Add our copyright header to WebModules.cpp
git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1795 726aef4b-f618-498e-8847-2d620e286838
2010-02-25 12:30:14 +00:00
prozacx 6a07b44dcb Added F_ADMIN flag to CWebSubPage to require admin privs on a page-by-page basis
git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1792 726aef4b-f618-498e-8847-2d620e286838
2010-02-24 06:28:39 +00:00
prozacx 28b010f7b9 Renamed GetWebNavTitle() to GetWebMenuTitle() to keep in line with the name of the Menu.tmpl file
git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1787 726aef4b-f618-498e-8847-2d620e286838
2010-02-23 06:09:21 +00:00
prozacx c09dca3b8e Initial commit of webmods - still lots of work to be done
git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1784 726aef4b-f618-498e-8847-2d620e286838
2010-02-22 07:40:22 +00:00