aboutsummaryrefslogtreecommitdiffstats
path: root/filters (unfollow)
Commit message (Collapse)Author
2026-07-18md2html: auto-link bare repo paths in rendered markdownHEADmainJason A. Dönerfield
Detect path tokens in prose (must contain a "/") and inline <code> spans (matched verbatim, so bare Makefile/README link too) and turn them into links to the tree/ (or about/ for *.md) view — but ONLY when the token resolves to a path that actually exists in the repo, which we learn from `git ls-tree -r -t` at the default branch. <pre> code blocks, existing <a> links (no nested anchors) and tag attributes are never touched; tokens resolve relative to the rendered file dir or the repo root.
2026-07-18md2html: do not loosen tight lists with multi-line itemsJason A. Dönerfield
The list-interrupt preprocessor inserted a blank line before any bullet that followed a non-item, non-4-space-indented line. When a list item wrapped onto a 2-space-indented continuation line, the *next* item looked like a paragraph->list transition, so a blank got injected between items — turning a tight list into a loose one (every <li> wrapped in <p>), as seen in docs/internals.md "Writing programs in C". Track list state and only interrupt an actual paragraph: a bullet that continues an already-open list (or its indented continuation lines) no longer triggers a blank-line insert. The original paragraph->list interrupt and the "1985." ordered-list guard are unchanged.
2026-07-18md2html: render linked .md via the about view, fix relative baseJason A. Dönerfield
Links to markdown files now point at /<repo>/about/<path> (rendered through the about-filter) instead of /<repo>/tree/<path> (raw blob), so clicking a README link to another .md shows rendered markdown. Also resolve relative links against the rendered file's own directory: about-formatting.sh now forwards the filename cgit passes ($1) to md2html as argv[1], and md2html uses dirname(argv[1]) as the base. This makes links *inside* a rendered subpage (docs/foo.md -> ./bar.md, ../README.md, images) resolve correctly. Non-markdown files and directories still go to tree/; images to plain/; about/ links carry no ?h= since the about view renders against the configured readme ref.
2026-07-18md2html: rewrite relative README links to the tree/ blob URLJason A. Dönerfield
The image-rewrite patch only fixed relative <img src>; relative <a href> links (e.g. [docs/x.md](docs/x.md)) were still resolved by the browser against the about/summary page URL, not the repo root, so they 404d. Rewrite relative <a href> to absolute cgit URLs the same way: in-repo path -> /<repo>/tree/<path>?h=<branch> ../sibling -> resolved against the repo URL location (/<sibling>) Fragments are preserved; anchors, absolute, scheme and query-only URLs are left untouched.
2026-07-18md2html: let bullet/1. lists interrupt paragraphs (GitHub-style)Jason A. Dönerfield
Python-Markdown, unlike CommonMark/GitHub, refuses to start a list that immediately follows a paragraph line without an intervening blank line, so a very common README shape renders as one run-on paragraph: Passing: - foo - bar Add a preprocessor that inserts the blank line when a bullet (- * +) or a 1./1) ordered marker follows a paragraph line, restoring GitHub behavior. Only '1' interrupts for ordered lists (matching CommonMark) so prose like '... the year\n1985. was ...' is not turned into a list. Fenced/indented code and lines already inside a list are left untouched.
2026-07-15md2html: rewrite relative image links to the plain/ blob URLJason A. Dönerfield
A README's relative image paths (screenshots/foo.png) are repo blobs that cgit only serves via its plain command, but a browser resolves a relative <img src> against the about-page URL, so the image 404s. Rewrite relative <img src> to an absolute /<repo>/plain/<path>?h=<branch> URL using the CGIT_REPO_URL / CGIT_REPO_DEFBRANCH environment cgit gives the about-filter. Absolute so it also works with ui-summary readme rendering.
2021-05-12md2html: use proper formatting for hrChristian Hesse
This addressed a non-existent background image and made the element invisible. Drop the style and use something sane. Signed-off-by: Christian Hesse <mail@eworm.de>
2020-12-29md2html: use sane_lists extensionJason A. Donenfeld
This allows for cleaner nesting semantics and matches github more closely. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2020-10-20global: replace hard coded hash lengthChristian Hesse
With sha1 we had a guaranteed length of 40 hex chars. This changes now that we have to support sha256 with 64 hex chars... Support both. Signed-off-by: Christian Hesse <mail@eworm.de>
2019-01-03filters: migrate from luacrypto to luaosslJason A. Donenfeld
luaossl has no upstream anymore and doesn't support OpenSSL 1.1, whereas luaossl is quite active. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-08-28filters: generate anchor links from markdownChristian Hesse
This makes the markdown filter generate anchor links for headings. Signed-off-by: Christian Hesse <mail@eworm.de> Tested-by: jean-christophe manciot <actionmystique@gmail.com>
2018-08-03auth-filters: add simple file-based authentication schemeJason A. Donenfeld
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-07-15auth-filters: use crypt() in simple-authenticationJason A. Donenfeld
There's no use in giving a silly example to folks who will just copy it, so instead try to do something slightly better. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-07-15auth-filters: generate secret securelyJason A. Donenfeld
This is much better than having the user generate it themselves. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-07-14auth-filters: do not crash on nil usernameJason A. Donenfeld
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-07-14auth-filters: do not use HMAC-SHA1Jason A. Donenfeld
Though SHA1 is broken, HMAC-SHA1 is still fine. But let's not push our luck; SHA256 is more sensible anyway. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-01-19ui-blame: Allow syntax highlightingJeff Smith
Place file contents into a single block so that syntax highlighting can be applied in the usual fashion. Place the alternating color bars behind the file contents. Force the default syntax highlighting background to transparent. Signed-off-by: Jeff Smith <whydoubt@gmail.com> Reviewed-by: John Keeping <john@keeping.me.uk>
2017-10-15global: spelling fixesVille Skyttä
Signed-off-by: Ville Skyttä <ville.skytta@iki.fi>
2017-01-22syntax-highlighting: replace invalid unicode with ?Jason A. Donenfeld
2016-06-17md2html: use utf-8 and flush output bufferJason A. Donenfeld
Otherwise we get the classic Python UTF-8 errors, and the text is all out of order. While we're at it, switch to python3 so we only have to support one set of oddball semantics. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> Suggested-by: Daniel Campbell <dlcampbell@gmx.com>
2016-06-07Hosted on HTTPS nowJason A. Donenfeld
2016-02-23md2html: Do syntax highlighting tooJason A. Donenfeld
2016-01-18syntax-highlighting: always use utf-8 to avoid ascii codec issuesJason A. Donenfeld
2015-11-12about-formatting.sh: comment text out of dateJason A. Donenfeld
2015-10-12filters: port syntax-highlighting.py to python 3.xChristian Hesse
Signed-off-by: Christian Hesse <mail@eworm.de>
2015-10-12md2html: the default of stdin works fineJason A. Donenfeld
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2015-10-12filters: misc cleanupsJason A. Donenfeld
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2015-10-12md2html: use pure pythonJason A. Donenfeld
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2015-10-09filters: Simplify convertersJason A. Donenfeld
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2015-08-12filters: apply HTML escapingLazaros Koromilas
http://www.w3.org/International/questions/qa-escapes#use
2015-03-13filters: Add sample gentoo scriptJason A. Donenfeld
2015-03-05simple-authentication.lua: tie secure cookies to field namesJason A. Donenfeld
2014-12-23match other common markdown file extensionsChris Burroughs
2014-12-23repolist: add owner-filterChris Burroughs
This allows custom links to be used for repository owners by configuring a filter to be applied in the "Owner" column in the repository list.
2014-12-13filter: fix libravatar email-filter https issueChristian Hesse
Serving cgit via https and getting avatar via http gives error messages about untrusted content. This decides whether or not to use https link by looking at the environment variable HTTPS, which is set in CGI.
2014-04-17remove trailing whitespaces from source filesChristian Hesse
2014-03-13filter: add libravatar email-filter lua scriptChristian Hesse
2014-01-23simple-authentication: styleJason A. Donenfeld
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2014-01-17auth: document tweakables in lua scriptJason A. Donenfeld
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2014-01-16auth: have cgit calculate login addressJason A. Donenfeld
This way we're sure to use virtual root, or any other strangeness encountered. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2014-01-16auth: lua string comparisons are time invariantJason A. Donenfeld
By default, strings are compared by hash, so we can remove this comment. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2014-01-16authentication: use hidden form instead of refererJason A. Donenfeld
This also gives us some CSRF protection. Note that we make use of the hmac to protect the redirect value. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2014-01-16auth: add basic authentication filter frameworkJason A. Donenfeld
This leverages the new lua support. See filters/simple-authentication.lua for explaination of how this works. There is also additional documentation in cgitrc.5.txt. Though this is a cookie-based approach, cgit's caching mechanism is preserved for authenticated pages. Very plugable and extendable depending on user needs. The sample script uses an HMAC-SHA1 based cookie to store the currently logged in user, with an expiration date. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2014-01-15email-gravatar: fix html syntax issuesChristian Hesse
an attribute value specification must be an attribute value literal unless SHORTTAG YES is specified
2014-01-14email-gravatar: do not scale icons upJason A. Donenfeld
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2014-01-14filter: allow returning exit code from filterJason A. Donenfeld
Filters can now indicate a status back to cgit by means of the exit code for exec, or the return value from close for Lua. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2014-01-14email-gravatar: fix html syntax issuesChristian Hesse
* make ampersand a html entity * add required alt attribute * add required img end tag
2014-01-14email-gravatar.py: fix UTF-8Christian Hesse
2014-01-14email-gravatar.lua: fix for lua 5.2Christian Hesse
2014-01-14filter: add page source to email filterJason A. Donenfeld
Since the email filter is called from lots of places, the script might benefit from knowing the origin. That way it can modify its contents and/or size depending. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>