folderconfiguration.proto 5.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. syntax = "proto3";
  2. package config;
  3. import "lib/config/foldertype.proto";
  4. import "lib/config/size.proto";
  5. import "lib/config/pullorder.proto";
  6. import "lib/config/versioningconfiguration.proto";
  7. import "lib/config/blockpullorder.proto";
  8. import "lib/fs/types.proto";
  9. import "lib/fs/copyrangemethod.proto";
  10. import "ext.proto";
  11. message FolderDeviceConfiguration {
  12. bytes device_id = 1 [(ext.goname) = "DeviceID", (ext.xml) = "id,attr", (ext.json) = "deviceID", (ext.device_id) = true];
  13. bytes introduced_by = 2 [(ext.xml) = "introducedBy,attr", (ext.device_id) = true];
  14. string encryption_password = 3;
  15. }
  16. message FolderConfiguration {
  17. string id = 1 [(ext.goname) = "ID", (ext.xml) = "id,attr", (ext.nodefault) = true];
  18. string label = 2 [(ext.xml) = "label,attr", (ext.restart) = false];
  19. fs.FilesystemType filesystem_type = 3;
  20. string path = 4 [(ext.xml) = "path,attr", (ext.default) = "~"];
  21. FolderType type = 5 [(ext.xml) = "type,attr"];
  22. repeated FolderDeviceConfiguration devices = 6;
  23. int32 rescan_interval_s = 7 [(ext.xml) = "rescanIntervalS,attr", (ext.default) = "3600"];
  24. bool fs_watcher_enabled = 8 [(ext.goname) = "FSWatcherEnabled", (ext.xml) = "fsWatcherEnabled,attr", (ext.default) = "true"];
  25. double fs_watcher_delay_s = 9 [(ext.goname) = "FSWatcherDelayS", (ext.xml) = "fsWatcherDelayS,attr", (ext.default) = "10"];
  26. double fs_watcher_timeout_s = 40 [(ext.goname) = "FSWatcherTimeoutS", (ext.xml) = "fsWatcherTimeoutS,attr"];
  27. bool ignore_perms = 10 [(ext.xml) = "ignorePerms,attr"];
  28. bool auto_normalize = 11 [(ext.xml) = "autoNormalize,attr", (ext.default) = "true"];
  29. Size min_disk_free = 12 [(ext.default) = "1 %"];
  30. VersioningConfiguration versioning = 13;
  31. int32 copiers = 14;
  32. int32 puller_max_pending_kib = 15 [(ext.goname) = "PullerMaxPendingKiB", (ext.xml) = "pullerMaxPendingKiB", (ext.json) = "pullerMaxPendingKiB"];
  33. int32 hashers = 16;
  34. PullOrder order = 17;
  35. bool ignore_delete = 18;
  36. int32 scan_progress_interval_s = 19;
  37. int32 puller_pause_s = 20;
  38. int32 max_conflicts = 21 [(ext.default) = "10"];
  39. bool disable_sparse_files = 22;
  40. bool disable_temp_indexes = 23;
  41. bool paused = 24;
  42. int32 weak_hash_threshold_pct = 25;
  43. string marker_name = 26;
  44. bool copy_ownership_from_parent = 27;
  45. int32 mod_time_window_s = 28 [(ext.goname) = "RawModTimeWindowS"];
  46. int32 max_concurrent_writes = 29 [(ext.default) = "2"];
  47. bool disable_fsync = 30;
  48. BlockPullOrder block_pull_order = 31;
  49. fs.CopyRangeMethod copy_range_method = 32 [(ext.default) = "standard"];
  50. bool case_sensitive_fs = 33 [(ext.goname) = "CaseSensitiveFS", (ext.xml) = "caseSensitiveFS", (ext.json) = "caseSensitiveFS"];
  51. bool follow_junctions = 34 [(ext.goname) = "JunctionsAsDirs", (ext.xml) = "junctionsAsDirs", (ext.json) = "junctionsAsDirs"];
  52. bool sync_ownership = 35;
  53. bool send_ownership = 36;
  54. bool sync_xattrs = 37;
  55. bool send_xattrs = 38;
  56. XattrFilter xattr_filter = 39;
  57. // Legacy deprecated
  58. bool read_only = 9000 [deprecated=true, (ext.xml) = "ro,attr,omitempty"];
  59. double min_disk_free_pct = 9001 [deprecated=true];
  60. int32 pullers = 9002 [deprecated=true];
  61. bool scan_ownership = 9003 [deprecated=true];
  62. }
  63. // Extended attribute filter. This is a list of patterns to match (glob
  64. // style), each with an action (permit or deny). First match is used. If the
  65. // filter is empty, all strings are permitted. If the filter is non-empty,
  66. // the default action becomes deny. To counter this, you can use the "*"
  67. // pattern to match all strings at the end of the filter. There are also
  68. // limits on the size of accepted attributes.
  69. message XattrFilter {
  70. repeated XattrFilterEntry entries = 1 [(ext.xml) = "entry"];
  71. int32 max_single_entry_size = 2 [(ext.xml) = "maxSingleEntrySize", (ext.default) = "1024"];
  72. int32 max_total_size = 3 [(ext.xml) = "maxTotalSize", (ext.default) = "4096"];
  73. }
  74. message XattrFilterEntry {
  75. string match = 1 [(ext.xml) = "match,attr"];
  76. bool permit = 2 [(ext.xml) = "permit,attr"];
  77. }