about summary refs log tree commit diff
Commit message (Collapse)AuthorAgeFilesLines
* chore(.github): enable cache.nixos.org binary cachesternenseemann2023-04-181-2/+2
| | | | | When the TVL binary cache gets gc'd, we are left with nothing — we want to avoid bootstrapping nixpkgs from scratch at least.
* fix(.github): adjust for changed tag naming schemesternenseemann2023-04-181-1/+1
|
* chore(.github/doc): update third party actionssternenseemann2023-04-181-4/+4
|
* chore(.github): update third party actionssternenseemann2023-04-181-3/+3
|
* chore: release test suite fixes as 1.0.0.2 1.0.0.2sternenseemann2022-10-033-4/+14
|
* fix(cabal): move executable-specific settings into own common blocksternenseemann2022-10-031-4/+7
| | | | | Cabal is a bit pedantic about not putting useless ghc-options into common blocks if they are included by a library.
* chore(docs): bump depot to 2022-09-22sternenseemann2022-09-221-1/+1
|
* fix: force -threaded in test suite to avoid CurlBadFunctionArg errorsternenseemann2022-09-221-3/+9
| | | | | See also https://github.com/GaloisInc/curl/pull/25, seems to be a relatively recent development.
* chore: work around cabal-install 3.8.1.0 picking the wrong Main.hssternenseemann2022-09-222-1/+1
| | | | | | | | See https://github.com/haskell/cabal/issues/8458 for details. Basically, cabal-install 3.8.1.0 sorts source-dirs and then picks the first matching module from that list whereas it'd respect the order in the source file before. This caused it to pick up server/Main.hs over test/Main.hs when building the test suite, failing the build.
* chore: remove policeman from dev environmentsternenseemann2022-09-221-3/+1
| | | | Upstream seems abandoned and it no longer builds in nixpkgs.
* chore: use cabalSdist utility from nixpkgssternenseemann2022-09-221-6/+4
| | | | | We need to reinvent less and also get the workaround for cabal-install 3.8.1.0 requiring GHC in PATH for free.
* chore(server): allow building with aeson 2.0 1.0.0.1sternenseemann2021-11-293-2/+15
| | | | | | | | | | | | | | | The actual change is a bit cheesy, since we could have a non-CPP solution as well by adding a FromString constraint, but this one is stupid and simple. Additionally tested with both GHC 8.10.7, 9.0.1 and cabal v2-build --constraint='aeson >= 2.0' Increase version number to 1.0.0.1 (no observable changes) for a release that benefits Stackage Nightly mostly. Resolves #51.
* feat(workflows/doc): use cache.tvl.su over cachixsternenseemann2021-11-291-1/+3
| | | | | | This will avoid compiling cheddar in GitHub Actions. The rest of the build is very quick and doesn't really benefit from persistent cache between runs.
* chore(docs): bump depot to 2021-11-28sternenseemann2021-11-291-1/+1
|
* chore(workflows): bump GitHub actionssternenseemann2021-11-292-7/+7
|
* chore(cabal): introduce upper bound on aesonsternenseemann2021-11-291-1/+1
| | | | 2.0 does indeed break compilation of spacecookie, ref #51.
* chore(docs/web): depot 2021-03-11 -> 2021-09-18sternenseemann2021-09-191-1/+1
|
* doc(spacecookie.json): typo fixsternenseemann2021-03-201-1/+1
|
* chore(treewide): release as 1.0.0.0 1.0.0.0sternenseemann2021-03-163-7/+9
| | | | | | | | | The 1.0.0.0 version number was chosen not to indicate completeness, but rather to indicate how harsh of a jump it is from 0.2.1.2 to 1.0.0.0 for library users since the core API was changed. For server users which are probably the majority it should go relatively smoothly in comparison.
* fix(README): fix link to hackage for developer documentationsternenseemann2021-03-161-1/+1
|
* doc(CHANGELOG): improve wording, fix smaller mistakessternenseemann2021-03-161-22/+21
|
* doc(spacecookie.json): document deprecated port settingsternenseemann2021-03-161-0/+13
|
* chore(default.nix): clean up, receive pkgs as inputsternenseemann2021-03-161-34/+38
|
* doc(CHANGELOG): add dates for every releasesternenseemann2021-03-161-0/+10
|
* doc(gophermap): rename spacecookie-gophermap(5) to spacecookie.gophermap(5)sternenseemann2021-03-166-8/+8
|
* feat(Network.Gopher): always return a Builder from responsesternenseemann2021-03-161-7/+5
| | | | | This allows us to use sendAllBuilder which should make MenuResponses more efficient as less conversions and passing around are required.
* doc(Network.Gopher): link gophermap module in appropiate sectionsternenseemann2021-03-161-0/+5
|
* fix(Util.Socket): actually close the socket in gracefulClosesternenseemann2021-03-161-3/+3
| | | | | | The close call was missing due to a previous oversight. While the socket should have been closed by its finalizer, doing it explicitly is cleaner and probably also means more predictable performance.
* chore(cabal): add baseline lower bounds for every dependencysternenseemann2021-03-161-11/+11
| | | | | | | | | | | Upper bounds need constant maintenance which is not really worth it as often the downstream usage doesn't break and if it breaks it breaks at compile time, so we don't really need upper bounds to tell us that beforehand. Ideally I'll notice in time so nobody wastes time with futile compilation. This should be possible with the cron CI and stackage could also help if we add spacecookie to that.
* chore(cabal): add autogen-modules as required for cabal >= 2.0sternenseemann2021-03-161-0/+1
|
* chore(cabal): update meta infosternenseemann2021-03-161-2/+6
|
* feat(default.nix): build from sdiststernenseemann2021-03-161-7/+18
| | | | | This should allow CI to pick up on build issues we introduce by forgetting to add stuff to extra-source-files.
* chore(cabal): distribute integration test filessternenseemann2021-03-161-0/+7
|
* doc(spacecookie-gophermap): minor fixes for clarity and readabilitysternenseemann2021-03-161-2/+2
|
* doc(spacecookie.json): minor language fixessternenseemann2021-03-161-3/+3
|
* doc(spacecookie.json): spacecookie now fails for broken user settingssternenseemann2021-03-161-6/+0
|
* doc(spacecookie): mention requirement of IPv6 socketsternenseemann2021-03-161-15/+28
| | | | | Redo section on socket activation whilst adding a note about the requirement of the spacecookie.socket file describing a v6 socket.
* doc(CHANGELOG): reflect request parsing changessternenseemann2021-03-151-3/+5
|
* feat(receiveRequest): make more robust, report errorssternenseemann2021-03-151-36/+59
| | | | | | | | | | Additionally to limiting the request size we * Perform multiple recvs if no newline is contained within the initial message received. * Fail if there is no newline is contained within the received request (i. e. it was truncated) or data is sent after the newline * Fail if a timeout of 10s runs out
* doc(CHANGELOG): add missing entries, restructuresternenseemann2021-03-151-81/+86
| | | | | | | | * Don't duplicate changes affecting both types of users * Add TL;DR section * Add note about man pages * Add note about new closing behavior * Change next version number to 1.0.0.0
* feat(Network.Gopher): remove cRunUserName from GopherConfigsternenseemann2021-03-154-29/+39
| | | | | | | | | | | | | | | | | | | | | | | | It is not necessary to implement privilege dropping as part of the main Network.Gopher API anymore since it can easily be done in the ready action passed to runGopherManual. To ease transition we expose an exception-throwing version of the formerly internal function dropPrivileges via Network.Gopher.Util which can be plugged into the ready action of runGopherManual if desired. feat(server): exit if dropPrivileges fails We don't catch the exception of dropPrivileges anymore, exiting on a failure related to it instead (user doesn't exist, insufficient privileges). BREAKING CHANGES: * cRunUserName has been removed from GopherConfig. This breaks all library usage which relied on this feature. * The spacecookie server daemon now exits if changing user fails instead of just logging an error like before.
* doc(README): clean up portability paragraphsternenseemann2021-03-151-7/+9
|
* fix(Network.Gopher): give client time to close client socketsternenseemann2021-03-154-7/+71
| | | | | | | | | | After sending the response, we now send TCP FIN by calling shutdown(2) on the socket. We then wait up to 1 second for the client to finish reading and closing the socket on their end before finally closing the socket on our side. This prevents read broken pipes for clients like curl which would occasionally happen. Resolves #42.
* fix(Spacecookie.Systemd): keep Socket MVar populatedsternenseemann2021-03-151-2/+6
| | | | | | | Mimic the behavior of 'close' in toFd: replace the old file descriptor with (-1). This ensures that further calls on the 'Socket' are “safe” in a sense as they won't block indefinetely. Instead they will throw an exception as if close was called on the Socket.
* refactor(Spacecookie.Systemd): move {to,from}Fd to top-levelsternenseemann2021-03-151-21/+37
| | | | | | | | Move file descriptor conversion into top level bindings, throw IOExceptions on errors and document them. SystemdException no longer contains the invalid file descriptor exception.
* doc(README): fix double dotsternenseemann2021-03-111-1/+1
|
* doc(README): strip down README and link man pages where relevantsternenseemann2021-03-111-93/+21
|
* doc(web): link gopher page from github pagesternenseemann2021-03-111-0/+1
|
* doc(web): render man pages to html and deploy via gh-pagessternenseemann2021-03-112-0/+64
| | | | | | | | | | This uses htmlman from tvl's depot and should allow us to deduplicate the documentation by removing all the stuff we explain in the man pages from the README and just link the appropriate man page in its place. See also: https://code.tvl.fyi/about/users/sterni/htmlman Fingers crossed this works first try.
* doc(library): couple of smaller fixes for haddock docsternenseemann2021-03-114-6/+6
|