Simple Nextcloud Forms https://forms.42l.fr
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
neil e496e5ae9a Mise à jour de 'README.md' 2 weeks ago
db removing zero-octet file 2 months ago
migrations/20200809180000_create_form initial commit and v1? 2 months ago
src adding comments in config.rs 1 month ago
templates adding lang_code entry in lang.json, fixes #19 2 weeks ago
.gitignore initial commit and v1? 2 months ago
Cargo.toml updating deps 1 month ago
LICENSE Initial commit 2 months ago
README.md Mise à jour de 'README.md' 2 weeks ago
adj-list.txt initial commit and v1? 2 months ago
config.toml.sample initial commit and v1? 2 months ago
lang.json adding lang_code entry in lang.json, fixes #19 2 weeks ago
name-list.txt initial commit and v1? 2 months ago

README.md

sncf

Simple Nextcloud Forms (sncf) is a lightweight proxy written in Rust with the Actix framework.

It is meant to make form creation easier, through the use of the Nextcloud Forms application, by generating administration links for forms: users do not need to log in or register, they just need to keep a link (in the form of https://your-instance.com/admin/<45-byte base64 key>) to log them in and give them access to their forms.

How ?

I really used black voodoo magic on this one.

This software acts as a proxy between the client and the Nextcloud instance. Here are some of its features :

  • When a link is created from the main page, sncf connects to the Nextcloud API and creates an account with a random username and password. Those credentials are stored in its SQLite database, along with a randomly-generated token (used in the administration link).
  • When an administration link is used, sncf uses its database to find the associated username and password, then fills the login form on the Nextcloud instance (taking in account its CSRF token) and proxies the generated Set-Cookie headers to the client (to log the user in), then redirects it to the Forms app.
  • When a form is created, sncf automatically forges a request to update some fields in the form (set isAnonymous to true, for instance). Those parameters can't be changed by the client.
  • When a form is updated, sncf parses the requests before proxying it in order to prevent the client to edit some specific fields (isAnonymous or form access policy, which must not set to allow the users of the same instance to see the form). If an unwanted request is made, sncf does not proxy it.
  • A lot of routes are restricted (settings, API) to prevent the instance from being used for anything else than the Forms app.

Those tweaks are completed by server-side CSS edits (using an application) to hide unwanted fields.

Setup

See the dedicated wiki page.

Note: There is currently no script to make the installation easier (see #12).

Compatibility table

Compatibility with sncf has been tested for the following Nextcloud and Nextcloud Forms versions.

sncf Nextcloud Nextcloud Forms
1.0.0 19.0.1, 19.0.2 2.0.2, 2.0.3
1.0.1, 1.0.2 19.0.1, 19.0.2, 20.0.0* 2.0.4

* Breaking changes, please check the wiki if you need to upgrade from a previous version.

If your NC or NC Forms version isn't in this list, sncf may or may not work. We do not ensure backwards compatibility with older versions.

Avoid upgrading software without checking its compatibility with sncf.

If you upgrade anyway and notice a breaking change, please file an issue.

Contribute

Donations

If you like this work, please donate to the 42l association (maintaining sncf) or Nextcloud (maintaining Nextcloud and Nextcloud Forms).

Translating

Currently, this software is translated in French and English.

Feel free to take a look at the lang.json file and send a pull request.

Code

Check the opened issues. Feel free to take a look at the code (it's really small). There's yet a lot of place for improvement. If you need info, you can create an issue with the question tag on it.

FAQ

What is the CPU/RAM consumption of this setup?

The "setup" we're talking about is the main instance's, forms.42l.fr.

  • sncf consumes between 20 and 60 MB of RAM and isn't CPU-hungry.
  • Nextcloud consumes between 60 MB and 120 MB of RAM. It's quite lightweight compared to other Nextcloud instances since the usual apps are disabled. It's eating some CPU like any regular PHP application.

Why didn't you write a Nextcloud application instead ?

That sounds appropriate, but I don't feel like writing PHP and I don't know Nextcloud internals. Feel free to write it, though.

Are you crazy? This tweak is gonna break at every single update.

Yeah, well, you're probably right. A Nextcloud app would be more suitable, I guess. But anyway, feel free to use something else if this is too much tweaking for you. But I'd prefer some pull requests to help me keep this software up-to-date with Nextcloud and Nextcloud Forms updates.