Commit graph

213 commits

Author SHA1 Message Date
fr33domlover
57374ec816 When POSTing activities, set a Digest header using SHA-256 2019-04-25 15:49:15 +00:00
fr33domlover
f37b9b3f52 Run the delivery worker priodically, settings control how often to run 2019-04-18 10:38:01 +00:00
fr33domlover
d5eefd1553 Implement outbox remote delivery, in handler and periodic, not used yet 2019-04-16 14:27:50 +00:00
fr33domlover
9a306e762c Unfinished updated outbox handler 2019-04-11 13:44:44 +00:00
fr33domlover
c2415301bc More type-safe handling of DB key Hashids 2019-03-29 03:25:32 +00:00
fr33domlover
85c6354291 Switch jsonb support from persistent-postgresql to a custom module
The custom module provides a parametric wrapper, allowing any specific
FromJSON/ToJSON instance to be used. It's a standalone module though, and not a
wrapper of persistent-postgresql, because persistent-postgresql uses aeson
Value and it prevents using toEncoding to get from the value directly to a
string.
2019-03-23 15:29:50 +00:00
fr33domlover
88d4c976ee Add route getMessageR, returns an Activity Note for any locally created Message 2019-03-22 20:46:42 +00:00
fr33domlover
ad3a20d783 Receive remote comments on local ticket discussion 2019-03-21 22:57:15 +00:00
fr33domlover
3f2a178830 New module Yesod.FedURI: Render routes into FedURI and LocalURI 2019-03-20 10:08:36 +00:00
fr33domlover
2a39378468 HTTP Signature verification: RSA-SHA256 and PEM/ASN1 support
Before, things worked like this:

* Only signatures of Ed25519 keys could be verified
* Key encoding placed the plain binary Ed25519 key in the PEM, instead of the
  key's ASN1 encoding

With this patch it now works like this:

* Ed25519 signatures are supported as before
* RSA keys are now supported too, assuming RSA-SHA256 signatures
* Both Ed25519 and RSA keys are encoded and decoded using actual PEM with ASN1
2019-03-10 23:15:42 +00:00
fr33domlover
61d1aa6720 Define HMAC based access token and switch CapSignKey from Ed25519 to HMAC 2019-03-09 21:21:36 +00:00
fr33domlover
fdbe46741b When POSTing an activity, protect remote actor DB insertion with withHostLock 2019-03-09 17:12:43 +00:00
fr33domlover
37216d9045 Move remote actor DB code from Foundation to separate module 2019-03-09 15:40:02 +00:00
fr33domlover
c2bf470fb6 Generate and keep permanent salt for generating hashids for URIs 2019-02-08 21:54:22 +00:00
fr33domlover
9536d870e5 Add utility for loading permanent key files, and use it for ocap signing key 2019-02-08 03:13:56 +00:00
fr33domlover
8ac559d064 New datatype FedURI for @id URIs
Using a dedicated type allows to record in the type the guarantees that we
provide, such as scheme being HTTPS and authority being present. Allows to
replace ugly `fromJust` and such with direct field access.
2019-02-07 23:08:28 +00:00
fr33domlover
991296faa1 Move some JSON/AP codec utils to new Data.Aeson.Local module 2019-02-03 11:01:36 +00:00
fr33domlover
20c0e40638 Determine operation access in Vervis.Access, reuse it everywhere it's needed 2019-01-26 22:22:49 +00:00
fr33domlover
250701712a Move most of the DB graph modules to a separate persistent-graph library 2019-01-26 22:20:19 +00:00
fr33domlover
1f47ca39eb Federation test outbox page with form for entering JSON 2019-01-21 15:54:57 +00:00
fr33domlover
df01560ea6 ActivityPub inbox test page
This patch includes some ugliness and commented out code. Sorry for that. I'll
clean it up soon.

Basically there's a TVar holding a Vector of at most 10 AP activities. You can
freely POST stuff to /inbox, and then GET /inbox and see what you posted, or an
error description saying why your activity was rejected.
2019-01-19 01:44:21 +00:00
fr33domlover
499e26db48 Periodically rotated AP actor key for signing ActivityPub requests
The actor key will be used for all actors on the server. It's held in a `TVar`
so that it can always be safely updated and safely retrieved (technically there
is a single writer so IORef and MVar could work, but they require extra care
while TVar is by design suited for this sort of thing).
2019-01-14 22:08:44 +00:00
fr33domlover
adaa920aa4 Launch service thread with a function that re-throws if they fail
In Haskell by default if a thread has an exception, the main thread isn't
notified at all. This patch changes service thread launching to re-throw their
exceptions in the main thread, so that their failure is noticed.
2019-01-14 22:03:49 +00:00
fr33domlover
5862b03019 Remove HTTP connection manager, it's not being used
I suppose there's no performance difference in using one, but it requires
`http-conduit` as a build dependency, so potentially we may be reducing build
time by removing unnecessary deps.
2019-01-14 02:30:39 +00:00
fr33domlover
33338a73cc Upgrade to GHC 8.4 and LTS 12 2018-12-05 03:41:19 +00:00
fr33domlover
c420b8d8ea Make the cookie encryption key and timeout configurable in settings file 2018-07-01 08:15:23 +00:00
fr33domlover
e29280959b Update the Vervis instance domain name everywhere 2018-06-11 12:39:06 +00:00
fr33domlover
7d237b7540 Adapt to darcs-lights and changes in darcs-rev 2018-05-24 21:45:01 +00:00
fr33domlover
9f77ea69cb Display commit diff for Git repos 2018-05-21 20:32:34 +00:00
fr33domlover
dbec638415 Generate commit diff data for git repos 2018-05-19 16:10:03 +00:00
fr33domlover
6d97636b0f Commit info display, no diff diplay yet 2018-05-17 23:33:37 +00:00
fr33domlover
8eca3fa647 Upgrade to GHC 8 and LTS 10.10 2018-05-16 00:02:54 +00:00
fr33domlover
54fded2f0c Rename NEWS.md to CHANGELOG.md 2018-05-14 15:25:16 +00:00
fr33domlover
3cc2810d4e Fix DB migrations and use the validating addEntities 2018-04-05 00:04:39 +00:00
fr33domlover
7c2faa7faa Email tokens expire within 1 day 2018-04-01 03:02:35 +00:00
fr33domlover
bfa6436bb3 Atom and RSS feeds for repo history 2018-03-31 22:04:33 +00:00
fr33domlover
bec9290783 Complete DB migration list, allowing to upgrade 2016-08-04 running instance
Until now the list of DB migration actions was incomplete, containing only
changes made since I added the migration system itself. It now contains the
2016-08-04 model, and then every change made since then.

IMPORTANT: The 2016-08-04 instance doesn't have a schema version entity at all,
so it is assigned version 0, while the actual version of its schema is 1. I'm
going to patch persistent-migration to allow it to be 1, making the migration
path smooth.
2018-03-27 14:28:56 +00:00
fr33domlover
f149da8ec6 getPersonR respond with minimal ActivityPub actor 2018-03-25 19:26:30 +00:00
fr33domlover
abfb77479f Move DarcsRev and code we're sharing with it into a separate library 2018-03-20 23:45:09 +00:00
fr33domlover
ff5bb97383 Move Yesod.Mail.Send to a new dedicated separate library 2018-03-20 16:01:33 +00:00
fr33domlover
f196bf38d6 Unverified variants of setCreds and clearCreds 2018-03-17 22:16:02 +00:00
fr33domlover
7b39381388 Releases are under AGPL 3 2018-03-17 18:21:51 +00:00
fr33domlover
139cc996d6 Write unverified login user functions 2018-03-17 17:30:46 +00:00
fr33domlover
d026cf0656 Treat email address as EmailAddress instead of Text including in the mailer 2018-03-06 02:26:27 +00:00
fr33domlover
33af9fb289 Use HTTPS for avatar URL if approot in settings is https:// 2018-03-06 00:55:52 +00:00
fr33domlover
3398b56931 Switch to yesod-auth-account and make the mail code independent of Vervis 2018-03-03 21:33:59 +00:00
fr33domlover
829fd72fef Use my new persistent-migration library, to which I moved the related modules 2018-02-26 14:23:02 +00:00
fr33domlover
3b4bd2a5e8 I made upgrades to the DB migration system in Funbot, apply them here too 2018-02-25 11:14:07 +00:00
fr33domlover
31410c7278 Update project URLs, Vervis is now officially hosted on a Vervis instance 2018-02-25 09:41:36 +00:00
fr33domlover
c2d1bb444b Add email sending capability to Vervis 2018-02-25 09:28:55 +00:00
fr33domlover
dc74456a6a Use the new migration system in place of persistent's one 2016-08-31 16:51:02 +00:00
fr33domlover
400c29289d Persistent schema backend, and PostgreSQL impl 2016-08-20 17:41:16 +00:00
fr33domlover
3329b49b2e Turn boolean ticketDone into TicketStatus enum 2016-08-11 00:44:11 +00:00
fr33domlover
941bd0ea03 Ticket content edit form lets you edit custom ticket params 2016-08-10 18:52:26 +00:00
fr33domlover
ec7dd4ee7e Experimental typeclass for ident+name model entities 2016-08-08 19:17:25 +00:00
fr33domlover
6e5ab77466 Projects must specify a ticket workflow 2016-08-08 19:05:22 +00:00
fr33domlover
01385c480b Per-workflow custom ticket fields 2016-08-08 14:01:06 +00:00
fr33domlover
687aa68a04 Per-sharer ticket workflows
A workflow is a new entity in Vervis. It defines the workflow of a
projects' ticket system. That includes the possible ticket states,
custom ticket fields, various filters and so on. All ticket system
customization is currently planned to be managed using workflows.

Currently workflows are private and per sharer, but the plan is to
support public workflows that can be shared and cloned.
2016-08-08 11:05:19 +00:00
fr33domlover
dc54a89503 Ticket tree view page 2016-08-04 07:36:24 +00:00
fr33domlover
e7abd8eb9d DAG tree view model builder, based on (V, E) and user choices 2016-08-03 23:09:42 +00:00
fr33domlover
5c153b0294 Ticket dependency add/remove and some fixes to recursive SQL 2016-07-28 16:40:10 +00:00
fr33domlover
a41f111bee Split recursive SQL query huge module into smaller modules 2016-07-20 10:08:42 +00:00
fr33domlover
87205772bb Transitive reduction of DAGs for FGL 2016-07-14 00:39:00 +00:00
fr33domlover
7a33ef16f8 PersistEntityGraph is for any graph, PersistEntityHierarchy for DAGs 2016-07-05 16:13:48 +00:00
fr33domlover
7d8596c52b Path existence checking between graph nodes 2016-07-05 12:37:31 +00:00
fr33domlover
644670b494 Not-yet-added empty test suite 2016-07-05 12:36:40 +00:00
fr33domlover
879ad873e3 DB graph cycle existence checking using recursive SQL query 2016-07-05 08:46:58 +00:00
fr33domlover
fcb68ceea7 List ticket deps and reverse deps in ticket page 2016-07-04 09:58:25 +00:00
fr33domlover
1191a3c5cd Role graph widget 2016-07-02 09:02:13 +00:00
fr33domlover
7be410f329 Upgrade LTS from 5.13 to 6.5 2016-07-02 08:51:29 +00:00
fr33domlover
063caab86d Insert links to DAG diagram 2016-06-28 22:19:48 +00:00
fr33domlover
5b4607e64d Initial code for intransitive DAG drawing 2016-06-28 19:46:54 +00:00
fr33domlover
a4eeb61a44 Define colors for use with 'diagrams' 2016-06-26 08:03:18 +00:00
fr33domlover
386d499a61 Define colors in dedicated Vervis.Palette module 2016-06-22 20:58:42 +00:00
fr33domlover
c7de6119ab Build role graph 2016-06-21 07:35:19 +00:00
fr33domlover
7886d9a515 Layering of intransitive DAGs 2016-06-20 22:50:16 +00:00
fr33domlover
5340cf23f1 Project role inheritance and graph queries with some raw SQL 2016-06-17 20:17:39 +00:00
fr33domlover
5e2e7f806a Forgot to record a file, darcs amend decided not to work 2016-06-13 13:48:31 +00:00
fr33domlover
76a627385c Recursive SQL queries, still need to test before use 2016-06-12 22:37:52 +00:00
fr33domlover
ae83a5f3ad Ticket un/assign (like un/claim but for other people) 2016-06-07 07:33:19 +00:00
fr33domlover
f8e1442e72 Initial minimal optional per-project wiki 2016-06-04 06:57:54 +00:00
fr33domlover
ef810f2854 Add simple Display class for showing-as-strict-Text 2016-06-03 09:12:33 +00:00
fr33domlover
c0e8ed0d2e Initial minimal limited per-repo RBAC system 2016-05-29 13:17:55 +00:00
fr33domlover
ec49a4c424 Libravatar support \o/ 2016-05-25 21:10:41 +00:00
fr33domlover
4c3aa8b269 Add group roles and make a group's creator its admin 2016-05-25 15:52:15 +00:00
fr33domlover
b7d443d031 Show creation date in group page 2016-05-25 07:50:10 +00:00
fr33domlover
bc66463776 Add group routes 2016-05-24 21:48:21 +00:00
fr33domlover
c6c41b485c Finish route change, it builds now
I used this chance to make some name changes, add some utils, tweak some
imports, remove more `setTitle`s and so on. I also made person, repo,
key and project creation forms verify CI-uniqueness.
2016-05-23 20:46:54 +00:00
fr33domlover
49807ed27f Start big route change, doesn't build yet
I decided to add some safety to routes:

- Use dedicated newtypes
- Use CI for the CI-unique DB fields

Since such a change requires so many changes in many source files, this
is also a chance to do other such breaking changes. I'm recording the
change gradually. It won't build until I finish, so for now don't waste
time trying to build the app.
2016-05-23 12:24:14 +00:00
fr33domlover
3a65568d8f PersistField instance for CI, i.e. case-insensitive DB fields 2016-05-22 21:43:59 +00:00
fr33domlover
1a3f976a81 Ticket filtering 2016-05-22 14:31:56 +00:00
fr33domlover
a56a7575fe Implement reply-to-existing-comment 2016-05-19 22:07:25 +00:00
fr33domlover
c942c7d398 Ticket discussion and message routes 2016-05-19 16:58:23 +00:00
fr33domlover
93aeae36a8 Implement building discussion message tree from DB 2016-05-19 12:06:27 +00:00
fr33domlover
ad9629d3f3 Dummy discussion widget 2016-05-18 10:10:07 +00:00
fr33domlover
1b1e4b978d Much richer set of Darcs rev TH splices 2016-05-18 07:00:19 +00:00
fr33domlover
e76c1f7206 Compressed inventory parser and DarcsRev TH utils 2016-05-17 20:34:22 +00:00
fr33domlover
9ba6761459 Darcs inventory parser: Add hash types and parse previous inventory 2016-05-16 14:02:43 +00:00
fr33domlover
0d7349cb5d Split git and darcs specific handlers into separate submodules 2016-05-13 10:11:17 +00:00
fr33domlover
b2f5b20184 Minimal pagination for git and darcs change log 2016-05-13 08:49:19 +00:00