syncthing/lib/config
Jakob Borg a2b8f2361e
lib/config: Add file inside folder marker directory (#9525)
### Purpose

Avoid the issue where the folder marker is deleted by overzealous
cleanup tools because it's just a useless, empty directory.

We create a small file containing a an admonishment to not delete the
directory, and some metadata that is just for human consumption at the
moment. (But it would parse as a valid yaml file if we wanted to read
this, at some point.)

This will only apply when _creating_ a folder marker, that is, existing
setups will not gain the file automatically. Obviously, when using a
custom folder marker none of this applies.

Also, slightly adjust the permission bits for the folder marker directory and file on Unixes, making sure the group & write bits are unset.

### Testing

I've created and deleted a few folders and it appears to behave as I
expect.

### Screenshots

```
jb@ok:~/somefolder % ls -la
total 0
drwxr-xr-x   3 jb  staff   96 May  1 08:52 ./
drwx------  12 jb  staff  384 May  1 08:52 ../
drwxr-xr-x   3 jb  staff   96 May  1 08:52 .stfolder/
jb@ok:~/somefolder % ls -l .stfolder
total 8
-rw-r--r--  1 jb  staff  122 May  1 08:52 syncthing-folder-39a4b0.txt
jb@ok:~/somefolder % cat .stfolder/syncthing-folder-39a4b0.txt
# This directory is a Syncthing folder marker.
# Do not delete.

folderID: xtdca-cudyf
created: 2024-05-01T08:52:49+02:00
```
2024-05-24 08:51:02 +02:00
..
mocks lib, gui: Default ignores for new folders (fixes #7428) (#7530) 2022-01-13 23:38:21 +01:00
testdata lib/config, gui: Disallow some options in combination with "untrusted" (fixes #8920) (#8921) 2023-06-14 09:24:31 +02:00
authmode.go all: Use protobuf to generate config structs (fixes #6734) (#6900) 2020-08-25 08:11:14 +02:00
authmode.pb.go all: Move remaining protos to use the vanity plugin (#7009) 2020-10-02 08:07:05 +02:00
blockpullorder.go all: Use protobuf to generate config structs (fixes #6734) (#6900) 2020-08-25 08:11:14 +02:00
blockpullorder.pb.go all: Move remaining protos to use the vanity plugin (#7009) 2020-10-02 08:07:05 +02:00
commit_test.go all: Remove unused method receivers (#8462) 2022-07-28 17:32:45 +02:00
config_test.go lib/config: Accept pre-hashed password (fixes #9123) (#9124) 2023-09-24 19:23:49 +02:00
config.go all: Support multiple device connections (fixes #141) (#8918) 2023-09-06 12:52:01 +02:00
config.pb.go all: Support syncing ownership (fixes #1329) (#8434) 2022-07-26 08:24:58 +02:00
debug.go all, lib/logger: Refactor SetDebug calls (#6054) 2019-10-04 13:03:34 +02:00
deviceconfiguration.go all: Support multiple device connections (fixes #141) (#8918) 2023-09-06 12:52:01 +02:00
deviceconfiguration.pb.go all: Support multiple device connections (fixes #141) (#8918) 2023-09-06 12:52:01 +02:00
folderconfiguration.go lib/config: Add file inside folder marker directory (#9525) 2024-05-24 08:51:02 +02:00
folderconfiguration.pb.go lib/config, lib/watchaggregator: Add config for max FS watcher delay (#9558) 2024-05-23 16:21:00 +02:00
foldertype.go all: Add untrusted folders behind feature flag (ref #62) (#7055) 2020-11-09 15:33:32 +01:00
foldertype.pb.go all: Add untrusted folders behind feature flag (ref #62) (#7055) 2020-11-09 15:33:32 +01:00
guiconfiguration.go Hide log out button when auth is not enabled (#9158) 2023-10-15 14:10:41 +02:00
guiconfiguration.pb.go Add HTML login form (fixes #4137) (#8757) 2023-10-06 13:00:58 +02:00
ldapconfiguration.go all: Use protobuf to generate config structs (fixes #6734) (#6900) 2020-08-25 08:11:14 +02:00
ldapconfiguration.pb.go all: Regenerate proto (#7696) 2021-05-19 13:30:20 +02:00
ldaptransport.go all: Use protobuf to generate config structs (fixes #6734) (#6900) 2020-08-25 08:11:14 +02:00
ldaptransport.pb.go all: Move remaining protos to use the vanity plugin (#7009) 2020-10-02 08:07:05 +02:00
migrations_test.go lib/api: Add /rest/config endpoint (fixes #6540) (#7001) 2020-10-22 19:54:35 +02:00
migrations.go all: Remove lib/util package (#9049) 2023-08-21 19:44:33 +02:00
observed.pb.go build: Update all dependencies (#7968) 2021-09-26 12:08:23 +02:00
optionsconfiguration.go all: Remove lib/util package (#9049) 2023-08-21 19:44:33 +02:00
optionsconfiguration.pb.go lib/config, lib/connections: Configurable protocol priority (ref #8626) (#8868) 2023-04-16 14:54:28 +02:00
pullorder.go all: Use protobuf to generate config structs (fixes #6734) (#6900) 2020-08-25 08:11:14 +02:00
pullorder.pb.go all: Move remaining protos to use the vanity plugin (#7009) 2020-10-02 08:07:05 +02:00
size_test.go all: Remove lib/util package (#9049) 2023-08-21 19:44:33 +02:00
size.go all: Fix check for empty string (#8456) 2022-07-28 16:51:03 +02:00
size.pb.go all: Regenerate proto (#7696) 2021-05-19 13:30:20 +02:00
tuning_test.go Implement database abstraction, error checking (ref #5907) (#6107) 2019-11-29 09:11:52 +01:00
tuning.go all: Use protobuf to generate config structs (fixes #6734) (#6900) 2020-08-25 08:11:14 +02:00
tuning.pb.go all: Move remaining protos to use the vanity plugin (#7009) 2020-10-02 08:07:05 +02:00
versioningconfiguration.go all: Remove lib/util package (#9049) 2023-08-21 19:44:33 +02:00
versioningconfiguration.pb.go all: Regenerate proto (#7696) 2021-05-19 13:30:20 +02:00
wrapper.go all: Support multiple device connections (fixes #141) (#8918) 2023-09-06 12:52:01 +02:00