Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | http: Add blank contrib/%d template | Runxi Yu | 2025-02-19 | 3 | -1/+36 | |
| | ||||||
* | contrib/index: Remove erroneous go-git/v5 | Runxi Yu | 2025-02-19 | 1 | -2/+0 | |
| | ||||||
* | repo/contrib: Remove unnecessary blank assign | Runxi Yu | 2025-02-19 | 1 | -2/+0 | |
| | ||||||
* | http: Fix detecting subgroups with separator_index | Runxi Yu | 2025-02-19 | 1 | -1/+1 | |
| | | | | | | In eabdb3c93cd7118deb5745cca7be9f11a196a9b8 we caused an error message whenver subgroups are used which was written erroneously, causing e.g. the forge front page to be handled here. | |||||
* | url.go: Reformat | Runxi Yu | 2025-02-19 | 1 | -1/+1 | |
| | ||||||
* | contrib: Add contrib/MR index page | Runxi Yu | 2025-02-19 | 5 | -7/+89 | |
| | ||||||
* | http: Consistently use redirect_with{out,}_slash, never r.URL.Path | Runxi Yu | 2025-02-19 | 2 | -5/+20 | |
| | ||||||
* | hooks: Check error on conn.Write | Runxi Yu | 2025-02-18 | 1 | -12/+36 | |
| | ||||||
* | http: Refactor more handler code duplication into the router | Runxi Yu | 2025-02-18 | 6 | -47/+42 | |
| | ||||||
* | TODO: Update (e.g. potentially using fasthttp in the future) | Runxi Yu | 2025-02-18 | 1 | -6/+7 | |
| | ||||||
* | git_hooks_client.c: Don't print wrongly-lengthed cookies | Runxi Yu | 2025-02-18 | 1 | -2/+1 | |
| | ||||||
* | *.go: Reformat | Runxi Yu | 2025-02-18 | 2 | -1/+4 | |
| | ||||||
* | http_server.go: Error out on subgroups | Runxi Yu | 2025-02-18 | 1 | -0/+6 | |
| | ||||||
* | *.tmpl: Update <title>'s | Runxi Yu | 2025-02-18 | 7 | -7/+7 | |
| | ||||||
* | README.md: Add more mirrors | Runxi Yu | 2025-02-18 | 1 | -0/+2 | |
| | ||||||
* | ssh_server.go: Don't use path.Join for config.HTTP.Root | Runxi Yu | 2025-02-18 | 1 | -2/+1 | |
| | ||||||
* | *.go: Add some comments for docs | Runxi Yu | 2025-02-18 | 17 | -20/+52 | |
| | ||||||
* | README.md: Mention that anonymous pushes to contrib/ are possible now | Runxi Yu | 2025-02-18 | 1 | -1/+2 | |
| | ||||||
* | git_hooks_handle: Allow anonymous pushes to contrib/ | Runxi Yu | 2025-02-18 | 1 | -2/+74 | |
| | ||||||
* | main.go: Remove stale UNIX domain sockets | Runxi Yu | 2025-02-18 | 1 | -4/+35 | |
| | ||||||
* | hooks: Fix the race condition that causes EPIPE | Runxi Yu | 2025-02-18 | 2 | -0/+17 | |
| | | | | | | | | | | | | The hooks handler in the main daemon didn't wait for the hook client to write fully, and sometimes prematurely closes the connection, causing the hook client's splice to return EPIPE (or SIGPIPE if the signal handler wasn't installed). To remedy this, we call shutdown(sock, SHUT_WR) in the client, so that attempts to read on the server side return EOF. Then we can simply use io.Copy(&buf, conn) on the server side to fetch all of the data into a buffer. | |||||
* | repo_index.html: Move the repo description before the clone URLs | Runxi Yu | 2025-02-18 | 1 | -6/+6 | |
| | ||||||
* | repo_commit.html: Move the commit message out of the table | Runxi Yu | 2025-02-18 | 1 | -4/+3 | |
| | ||||||
* | git_hooks_client.c: Ignore SIGPIPE | Runxi Yu | 2025-02-18 | 1 | -0/+6 | |
| | ||||||
* | git_hooks_client.c: Allow ECONNRESET when splicing sock -> stderr | Runxi Yu | 2025-02-18 | 1 | -1/+2 | |
| | | | | | Not exactly sure what's happening, but it looks like conn.Close() in Go sometimes produces an ECONNRESET in here. | |||||
* | Revert "style.css: Make it more concise" | Runxi Yu | 2025-02-18 | 1 | -35/+69 | |
| | | | | | | This reverts commit ff7e33a9c443fd49a67664d01e50655cc1dc58d3. Broke too much stuff. | |||||
* | Revert "style.css: Fix .chunk-addition" | Runxi Yu | 2025-02-18 | 1 | -5/+3 | |
| | | | | This reverts commit 9f19bcb50de2ced13a22bbe44078d8a47bf9ce41. | |||||
* | style.css: Fix .chunk-addition | Runxi Yu | 2025-02-18 | 1 | -3/+5 | |
| | ||||||
* | hooks, etc.: Restructure concurrency and data flow | Runxi Yu | 2025-02-17 | 2 | -31/+29 | |
| | | | | | | | | | | | | | | | | | | | | | | | | | Previously we accepted handler connections at hooks_handle and used a mess of channels and concurrent maps to let receive_pack handle the session. This doesn't work well because there are conditions where a push occurs but the hook is not called, e.g. when the destination branch is up to date. There is no reliable way of checking whether the subprocess is going to call the hook or not; it's technically possible to parse stderr but that interface is not guaranteed to be stable and IIRC has changed in the past). So receive_pack would be waiting on the channel to receive a hooks connection to handle but it'll never receive one, causing a deadlock. This entire thing was overengineered and was very prone to error. Here we let receive_pack put the cookie into the map, then start and wait for the subprocess to finish. When the hook actually runs and connects to its UNIX domain socket, the handler would check its cookie within the map. If the hook doesn't run, then nothing happens. The git-receive-pack subprocess blocks the execution of the SSH handler, and when git-receive-pack exists, the SSH handler (using a defer) deletes the cookie from the map. There may be caveats in signal handling or other cases that cause the cookie to be deleted from the map prematurely. | |||||
* | remote_url.go: Don't use path.Join (it strips :// into :/) | Runxi Yu | 2025-02-17 | 1 | -3/+3 | |
| | ||||||
* | style.css: Make it more concise | Runxi Yu | 2025-02-17 | 1 | -69/+35 | |
| | ||||||
* | ssh_handle_receive_pack.go: Move unauthorized rejection | Runxi Yu | 2025-02-17 | 1 | -4/+6 | |
| | ||||||
* | git_hooks_handle.go: Remove err_not_unixconn | Runxi Yu | 2025-02-17 | 1 | -1/+0 | |
| | | | | | As this always suggests a programming mistake, we do not check the type assertion, causing it to panic if the types don't match. | |||||
* | ssh_handle_receive_pack.go: Allow pushes for now | Runxi Yu | 2025-02-17 | 1 | -1/+1 | |
| | ||||||
* | ssh_handle_receive_pack.go: Rename c -> deployer_channel | Runxi Yu | 2025-02-17 | 1 | -3/+3 | |
| | ||||||
* | hooks, etc.: Authenticate hooks, and handle them in the spawning thread | Runxi Yu | 2025-02-17 | 3 | -3/+87 | |
| | ||||||
* | go.mod: Bump lindenii-common (cmap split into ComparableMap and Map) | Runxi Yu | 2025-02-17 | 2 | -3/+3 | |
| | ||||||
* | git_hooks_handle.go: Read argv from hook | Runxi Yu | 2025-02-17 | 1 | -7/+33 | |
| | ||||||
* | git_hooks_client: Send argc/argv over the UNIX domain socket | Runxi Yu | 2025-02-17 | 1 | -5/+34 | |
| | ||||||
* | git_hooks_handle.go: Refactor for clarity | Runxi Yu | 2025-02-17 | 1 | -14/+13 | |
| | ||||||
* | README.md: Prominently note Lindenii's own instance | Runxi Yu | 2025-02-17 | 1 | -0/+6 | |
| | ||||||
* | style.css: :focus -> :focus-visible | Runxi Yu | 2025-02-17 | 1 | -3/+3 | |
| | | | | | | | | Users who actually click on the header label won't get that focus outline any more. It's still provided for keyboard users, for whom the outline may be necessary for accessibility. References: https://stackoverflow.com/questions/31402576 | |||||
* | go.mod: go-billy is now indirect | Runxi Yu | 2025-02-17 | 1 | -1/+1 | |
| | ||||||
* | Makefile: Compile static Go binary | Runxi Yu | 2025-02-17 | 1 | -1/+1 | |
| | ||||||
* | style.css: Reformat and improve checkbox accessibility | Runxi Yu | 2025-02-17 | 2 | -13/+19 | |
| | | | | | | | | Previously the expandable checkboxes were { display: none; } which made them impossible to focus via the keyboard. Here we change it to { opacity: 0; position: absolute; }, so it becomes keyboard-focusable. Then we add an outline to the <label> when the checkbox is focused so users could visually identify that the checkbox has been focused. | |||||
* | git_hooks_client.c: Explain the code in more detail | Runxi Yu | 2025-02-17 | 1 | -7/+28 | |
| | ||||||
* | main.go: Restructure for uniformity | Runxi Yu | 2025-02-17 | 1 | -25/+19 | |
| | ||||||
* | git_hooks_handle.go: Exit on UID mismatch, handle >1 connections | Runxi Yu | 2025-02-17 | 1 | -15/+21 | |
| | ||||||
* | git_hooks_handle.go, etc.: Listen for connections from hooks | Runxi Yu | 2025-02-17 | 3 | -14/+39 | |
| | ||||||
* | git_hooks_client.c: Splice socket to stderr | Runxi Yu | 2025-02-17 | 1 | -15/+42 | |
| | | | | This allows the daemon to send status messages to the hook handler. |