summaryrefslogtreecommitdiff
path: root/IkiWiki/CGI.pm
AgeCommit message (Collapse)Author
2009-02-26detect sslcookie set and no httpsJoey Hess
This is likely a misconfiguration and can cause login to fail as the browser refuses the send the session cookie back over http. Not entirely happy with putting the check where I did, since users have to try to log in, and fail, to see the misconfiguration explained. But I could not find a better place to put the check.
2009-01-31factor out IE stupididy workaroundJoey Hess
2009-01-31Split cgi_goto into a goto pluginSimon McVittie
2009-01-31Split apache404 into an independent pluginSimon McVittie
Also make it ignore the 'do' parameter at Joey's suggestion, to have one less thing to remember when configuring.
2009-01-31CGI: pad error responses with 512 bytes of spaces so IE will display themSimon McVittie
IE displays its own error responses unless the server's was >= 512 bytes. http://support.microsoft.com/default.aspx?scid=kb;en-us;Q294807
2009-01-31CGI: set up goto hook so that /ikiwiki.cgi?do=goto can be an Apache ↵Simon McVittie
ErrorDocument
2009-01-31CGI: add cgi_page_from_404(), which remaps a path like $REDIRECT_URL to an ↵Simon McVittie
IkiWiki page name Also add a regression test
2009-01-31CGI: if the page is missing, give the "missing page" a 404 statusSimon McVittie
2009-01-31CGI: document why commenter and recentchanges_link are supportedSimon McVittie
2009-01-31CGI: if the "do" parameter is goto, recentchanges_link or commenter, ↵Simon McVittie
redirect to a page This can replace equivalent functionality in comments and recentchanges.
2009-01-31CGI: add cgi_goto(CGI, [page])Simon McVittie
This redirects to the given page (or if none is given, the page parameter given to the CGI), or displays an error with a create link if the page doesn't exist.
2008-12-24remove deprecated admin prefsJoey Hess
A new ikiwiki-transition moveprefs subcommand can pull the old data out of the userdb and inject it into the setup file. Note that it leaves the old values behind in the userdb too. I did this because I didn't want to lose data if it fails writing the setup file for some reason, and the old data in the userdb will only use a small amount of space. Running the command multiple times will mostly not change anything.
2008-12-17Coding style change: Remove explcit vim folding markers.Joey Hess
2008-12-17checksessionexpiry: reworkJoey Hess
This function as factored out was a bit confusing, I think this makes more sense.
2008-12-11editpage: factor out checksessionexpiry into IkiWiki::CGISimon McVittie
2008-10-19Fix issue with utf-8 in wikiname breaking session cookies, by ↵Joey Hess
entity-encoding the wikiname in the session cookie.
2008-09-05editpage: New core plugin factoring out page editing to allow disabling it ↵Joey Hess
if desired.
2008-08-28Set cookies HttpOnly.Joey Hess
2008-08-05typoJoey Hess
2008-08-02relocateJoey Hess
2008-08-01banned_users move to setup file, stage 1Joey Hess
2008-07-22add a rename summaryJoey Hess
2008-07-22Split out error messages from editpage.tmpl into several separate templates.Joey Hess
2008-07-12only htmlize errors when cgi is actually runningJoey Hess
2008-07-11fix use orderingJoey Hess
The recent setup revamp exposed some latent bugs in use/package ordering that caused some symbols to not the exported into the correct scope.
2008-07-10Fixes creation of pages when clicking on WikiLinks starting with "/".Joey Hess
2008-07-10work around CGI::Session constructor issuesJoey Hess
The constructor can fail with a useless error message if module fail to load. Work around this by evaling it, and checking for failures, and printing CGI::Session->errstr to get a more useful message.
2008-07-06editpage escaping fixesJoey Hess
* The editpage form now uses the raw page name, not the page title, in its 'page' cgi parameter. Using the title was ambiguous and made it impossible to tell between some pages, like "foo/bar" and "foo__47__bar", sometimes causing the wrong page to be edited. * This change means that some edit links need to be updated. Force a rebuild on upgrade to this version. * Above change also allowed really fixing escaped slashes from the blogpost form.
2008-07-01better approach for cgi upload disablingJoey Hess
Make it a config setting, this way subtle load order issues don't come into play. (As much?)
2008-07-01simplificationJoey Hess
2008-06-30disable cgi uploads earlierJoey Hess
This allows plugins that want to enable uploads to do so by changing the value of $CGI::DISABLE_UPLOADS at some point before the cgi hook is run.
2008-06-30remove unused editpage titleJoey Hess
The title was set to editpage, but then always changed. And some code tested for this. Remove this dead code.
2008-06-30Configure CGI.pm to disable file uploads by default.Joey Hess
2008-06-28call format hooks when generating page previewsJoey Hess
* toc: Revert change in 2.45 that made it run at sanitize time. This breaks use of toc in a sidebar. * Call format hooks when generating page previews, thus fixing toc display there, as well as fixing inlins to again display in page previews, since it's started using format hooks. This also allows several other things, like embed, that use format hooks, to work during page preview time. * Format hooks should not rely on getting an entire html document, as they will only get the body during page preview. * toggle: Deal with preview mode when adding javascript.
2008-06-04Pass a destpage parameter to the sanitize hook.Joey Hess
Because the search plugin needed it, also because it's one of the few plugins that didn't already have it. I also considered adding it to htmlize, but I really cannot imagine caring what the destpage is when htmlizing. (I'll probably be poven wrong later.)
2008-05-21Perls older than 5.10 need to use the old method of decoding utf-8 in CGI ↵Joey Hess
values. Neither method will work for all versions of perl, so check version number at runtime.
2008-05-21display an error message if CGI::Session fails to loadJoey Hess
2008-05-12Fixes for behavior changes in perl 5.10's CGIJoey Hess
Something has changed in CGI.pm in perl 5.10. It used to not care if STDIN was opened using :utf8, but now it'll mis-encode utf-8 values when used that way by ikiwiki. Now I have to binmode(STDIN) before instantiating the CGI object. In 57bba4dac132a06729eeec809f5e1a5adf829806, I changed from decoding CGI::Formbuilder fields to utf-8, to decoding cgi parameters before setting up the form object. As of perl 5.10, that approach no longer has any effect (reason unknown). To get correctly encoded values in FormBuilder forms, they must once again be decoded after the form is set up. As noted in 57bba4da, this can cause one set of problems for formbuilder_setup hooks if decode_form_utf8 is called before the hooks, and a different set if it's called after. To avoid both sets of problems, call it both before and after. (Only remaining problem is the sheer ugliness and inefficiency of that..) I think that these changes will also work with older perl versions, but I haven't checked. Also, in the case of the poll plugin, the cgi parameter needs to be explcitly decoded before it is used to handle utf-8 values. (This may have always been broken, not sure if it's related to perl 5.10 or not.)
2008-05-02Fix ugly display when editing a page that has vanished.Joey Hess
srcfile now has an optional second parameter to avoid it throwing an error if the source file does not exist.
2008-04-10Fix CSRF attacks against the preferences and edit forms. Closes: #475445Joey Hess
The fix involved embedding the session id in the forms, and not allowing the forms to be submitted if the embedded id does not match the session id. In the case of the preferences form, if the session id is not embedded, then the CGI parameters are cleared. This avoids a secondary attack where the link to the preferences form prefills password or other fields, and the user hits "submit" without noticing these prefilled values. In the case of the editpage form, the anonok plugin can allow anyone to edit, and so I chose not to guard against CSRF attacks against users who are not logged in. Otherwise, it also embeds the session id and checks it. For page editing, I assume that the user will notice if content or commit message is changed because of CGI parameters, and won't blndly hit save page. So I didn't block those CGI paramters. (It's even possible to use those CGI parameters, for good, not for evil, I guess..) The only other CSRF attack I can think of in ikiwiki involves the poll plugin. It's certianly possible to set up a link that causes the user to unknowingly vote in a poll. However, the poll plugin is not intended to be used for things that people would want to attack, since anyone can after all edit the poll page and fill in any values they like. So this "attack" is ignorable.
2008-03-17* Record new pages in %pagesources temporarily when previewing so thatJoey Hess
things that need to know the page source or type can query it from there. Fixes previewing of tables when creating a new page.
2008-03-12* Use forcebaseurl to make page previews be displayed with the html baseJoey Hess
set to the destination page. This avoids need for hacks to munge the urls in preview mode, which fixes several bugs. * Several destpage fixes in plugins.
2008-02-24Fix links generated by preprocessor directives when previewing.Joey Hess
As was already done for linkfication, links generated in a prevew page are relative to the top of the wiki, so it has to be told that the destpage is there. I was using "" to indicate this, but that may confuse some preprocessor plugins, which treat parameters with an empry value specially (sparkline is one such). Instead, use "/", which is more accurate anyway and works just as well.
2008-02-14* Preview limits the page dropdown to what's selected previouslyJoey Hess
(as preserving the full list across preview would be tricky). Userdirs were still being offered as an option there, remove them. * Fix a bug where user A created a page concurrently with user B, and when B previewed it would redirect B to A's new page, losing B's work. Instead, don't redirect and let conflict handling resolve it.
2008-02-03move saveindex call into preview blockJoey Hess
This call is only present to handle the case where previewing a page actually causes files to be rendered.
2008-02-03remove another commit mail mentionJoey Hess
2008-02-03* cgi hooks are now run before ikiwiki state is loaded.Joey Hess
* This allows locking the wiki before loading state, which avoids some tricky locking code when saving a web edit.
2008-01-29non-tabular recentchanges displayJoey Hess
Doesn't look as good as the old table, but works as a rss feed.
2008-01-29* Removed support for sending commit notification mails. Along with it wentJoey Hess
the svnrepo and notify settings, though both will be ignored if left in setup files.
2008-01-28support for internal-use page typesJoey Hess
If a page type starts with an underscore, hide it from the list of page types in the edit form, and don't allow editing pages of that type. This allows for plugins to add page types for internal use.