fsconfig.html 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414
  1. {{define "fshtml"}}
  2. <div class="card bg-light mb-3">
  3. <div class="card-header">
  4. <b>Filesystem</b>
  5. </div>
  6. <div class="card-body pb-1">
  7. <div class="form-group row">
  8. <label for="idFilesystem" class="col-sm-2 col-form-label">Storage</label>
  9. <div class="col-sm-10">
  10. <select class="form-control" id="idFilesystem" name="fs_provider"
  11. onchange="onFilesystemChanged(this.value)">
  12. {{ range ListFSProviders }}
  13. <option value="{{.Name}}" {{if eq . $.Provider }}selected{{end}}>{{.ShortInfo}}</option>
  14. {{end}}
  15. </select>
  16. </div>
  17. </div>
  18. {{if .IsUserPage}}
  19. <div class="form-group row">
  20. <label for="idHomeDir" class="col-sm-2 col-form-label">Home Dir</label>
  21. <div class="col-sm-10">
  22. <input type="text" class="form-control" id="idHomeDir" name="home_dir" placeholder="Absolute path to a local directory"
  23. value="{{.DirPath}}" aria-describedby="homeDirHelpBlock">
  24. <small id="homeDirHelpBlock" class="form-text text-muted">
  25. {{if not .DirPath}}{{if .HasUsersBaseDir}}Leave blank for an appropriate default{{else}}Required for local storage providers. For non-local filesystems it will store temporary files, you can leave blank for an appropriate default{{end}}{{end}}
  26. </small>
  27. </div>
  28. </div>
  29. {{else}}
  30. <div class="form-group row">
  31. <label for="idMappedPath" class="col-sm-2 col-form-label">Home Dir</label>
  32. <div class="col-sm-10">
  33. <input type="text" class="form-control" id="idMappedPath" name="mapped_path" placeholder="Absolute path to a local directory"
  34. value="{{.DirPath}}" aria-describedby="mappedPathHelpBlock">
  35. <small id="mappedPathHelpBlock" class="form-text text-muted">
  36. Required for local storage providers. For non-local filesystems it will store temporary files, you can leave blank for an appropriate default
  37. </small>
  38. </div>
  39. </div>
  40. {{end}}
  41. <div class="form-group row fsconfig fsconfig-s3fs">
  42. <label for="idS3Bucket" class="col-sm-2 col-form-label">Bucket</label>
  43. <div class="col-sm-3">
  44. <input type="text" class="form-control" id="idS3Bucket" name="s3_bucket" placeholder=""
  45. value="{{.S3Config.Bucket}}" maxlength="255">
  46. </div>
  47. <div class="col-sm-2"></div>
  48. <label for="idS3Region" class="col-sm-2 col-form-label">Region</label>
  49. <div class="col-sm-3">
  50. <input type="text" class="form-control" id="idS3Region" name="s3_region" placeholder=""
  51. value="{{.S3Config.Region}}" maxlength="255">
  52. </div>
  53. </div>
  54. <div class="form-group row fsconfig fsconfig-s3fs">
  55. <label for="idS3AccessKey" class="col-sm-2 col-form-label">Access Key</label>
  56. <div class="col-sm-3">
  57. <input type="text" class="form-control" id="idS3AccessKey" name="s3_access_key" placeholder=""
  58. value="{{.S3Config.AccessKey}}" maxlength="255">
  59. </div>
  60. <div class="col-sm-2"></div>
  61. <label for="idS3AccessSecret" class="col-sm-2 col-form-label">Access Secret</label>
  62. <div class="col-sm-3">
  63. <input type="password" class="form-control" id="idS3AccessSecret" name="s3_access_secret" placeholder=""
  64. value="{{if .S3Config.AccessSecret.IsEncrypted}}{{.RedactedSecret}}{{else}}{{.S3Config.AccessSecret.GetPayload}}{{end}}">
  65. </div>
  66. </div>
  67. <div class="form-group row fsconfig fsconfig-s3fs">
  68. <label for="idS3StorageClass" class="col-sm-2 col-form-label">Storage Class</label>
  69. <div class="col-sm-3">
  70. <input type="text" class="form-control" id="idS3StorageClass" name="s3_storage_class" placeholder=""
  71. value="{{.S3Config.StorageClass}}" maxlength="255">
  72. </div>
  73. <div class="col-sm-2"></div>
  74. <label for="idS3Endpoint" class="col-sm-2 col-form-label">Endpoint</label>
  75. <div class="col-sm-3">
  76. <input type="text" class="form-control" id="idS3Endpoint" name="s3_endpoint" placeholder=""
  77. value="{{.S3Config.Endpoint}}" maxlength="255">
  78. </div>
  79. </div>
  80. <div class="form-group row fsconfig fsconfig-s3fs">
  81. <label for="idS3PartSize" class="col-sm-2 col-form-label">UL Part Size (MB)</label>
  82. <div class="col-sm-3">
  83. <input type="number" class="form-control" id="idS3PartSize" name="s3_upload_part_size" placeholder=""
  84. value="{{.S3Config.UploadPartSize}}" aria-describedby="S3PartSizeHelpBlock">
  85. <small id="S3PartSizeHelpBlock" class="form-text text-muted">
  86. The buffer size for multipart uploads. Zero means the default (5 MB). Minimum is 5
  87. </small>
  88. </div>
  89. <div class="col-sm-2"></div>
  90. <label for="idS3UploadConcurrency" class="col-sm-2 col-form-label">UL Concurrency</label>
  91. <div class="col-sm-3">
  92. <input type="number" class="form-control" id="idS3UploadConcurrency" name="s3_upload_concurrency"
  93. placeholder="" value="{{.S3Config.UploadConcurrency}}" min="0"
  94. aria-describedby="S3ConcurrencyHelpBlock">
  95. <small id="S3ConcurrencyHelpBlock" class="form-text text-muted">
  96. How many parts are uploaded in parallel. Zero means the default (5)
  97. </small>
  98. </div>
  99. </div>
  100. <div class="form-group row fsconfig fsconfig-s3fs">
  101. <label for="idS3DLPartSize" class="col-sm-2 col-form-label">DL Part Size (MB)</label>
  102. <div class="col-sm-3">
  103. <input type="number" class="form-control" id="idS3DLPartSize" name="s3_download_part_size" placeholder=""
  104. value="{{.S3Config.DownloadPartSize}}" aria-describedby="S3DLPartSizeHelpBlock">
  105. <small id="S3DLPartSizeHelpBlock" class="form-text text-muted">
  106. The buffer size for multipart downloads. Zero means the default (5 MB). Minimum is 5
  107. </small>
  108. </div>
  109. <div class="col-sm-2"></div>
  110. <label for="idS3DownloadConcurrency" class="col-sm-2 col-form-label">DL Concurrency</label>
  111. <div class="col-sm-3">
  112. <input type="number" class="form-control" id="idS3DownloadConcurrency" name="s3_download_concurrency"
  113. placeholder="" value="{{.S3Config.DownloadConcurrency}}" min="0"
  114. aria-describedby="S3DLConcurrencyHelpBlock">
  115. <small id="S3DLConcurrencyHelpBlock" class="form-text text-muted">
  116. How many parts are downloaded in parallel. Zero means the default (5)
  117. </small>
  118. </div>
  119. </div>
  120. <div class="form-group row fsconfig fsconfig-s3fs">
  121. <label for="idS3UploadTimeout" class="col-sm-2 col-form-label">UL Part Timeout (secs)</label>
  122. <div class="col-sm-3">
  123. <input type="number" class="form-control" id="idS3UploadTimeout" name="s3_upload_part_max_time"
  124. placeholder="" value="{{.S3Config.UploadPartMaxTime}}" min="0"
  125. aria-describedby="S3UploadTimeoutHelpBlock">
  126. <small id="S3UploadTimeoutHelpBlock" class="form-text text-muted">
  127. Max time limit, in seconds, to upload a single part. 0 means no limit
  128. </small>
  129. </div>
  130. <div class="col-sm-2"></div>
  131. <label for="idS3DownloadTimeout" class="col-sm-2 col-form-label">DL Part Timeout (secs)</label>
  132. <div class="col-sm-3">
  133. <input type="number" class="form-control" id="idS3DownloadTimeout" name="s3_download_part_max_time"
  134. placeholder="" value="{{.S3Config.DownloadPartMaxTime}}" min="0"
  135. aria-describedby="S3DownloadTimeoutHelpBlock">
  136. <small id="S3DownloadTimeoutHelpBlock" class="form-text text-muted">
  137. Max time limit, in seconds, to download a single part. 0 means no limit
  138. </small>
  139. </div>
  140. </div>
  141. <div class="form-group row fsconfig fsconfig-s3fs">
  142. <label for="idS3ACL" class="col-sm-2 col-form-label">ACL</label>
  143. <div class="col-sm-10">
  144. <input type="text" class="form-control" id="idS3ACL" name="s3_acl" placeholder=""
  145. value="{{.S3Config.ACL}}" maxlength="255" aria-describedby="S3ACLHelpBlock">
  146. <small id="S3ACLHelpBlock" class="form-text text-muted">
  147. ACL for uploaded objects. For more info take a look <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl" target="_blank">here</a>
  148. </small>
  149. </div>
  150. </div>
  151. <div class="form-group row fsconfig fsconfig-s3fs">
  152. <label for="idS3KeyPrefix" class="col-sm-2 col-form-label">Key Prefix</label>
  153. <div class="col-sm-10">
  154. <input type="text" class="form-control" id="idS3KeyPrefix" name="s3_key_prefix" placeholder=""
  155. value="{{.S3Config.KeyPrefix}}" aria-describedby="S3KeyPrefixHelpBlock">
  156. <small id="S3KeyPrefixHelpBlock" class="form-text text-muted">
  157. Similar to a chroot for local filesystem. Cannot start with "/". Example: "somedir/subdir/".
  158. </small>
  159. </div>
  160. </div>
  161. <div class="form-group fsconfig fsconfig-s3fs">
  162. <div class="form-check">
  163. <input type="checkbox" class="form-check-input" id="idS3ForcePathStyle" name="s3_force_path_style"
  164. {{if .S3Config.ForcePathStyle}}checked{{end}}>
  165. <label for="idS3ForcePathStyle" class="form-check-label">Use path-style addressing, i.e., "`endpoint`/BUCKET/KEY"</label>
  166. </div>
  167. </div>
  168. <div class="form-group row fsconfig fsconfig-gcsfs">
  169. <label for="idGCSBucket" class="col-sm-2 col-form-label">Bucket</label>
  170. <div class="col-sm-10">
  171. <input type="text" class="form-control" id="idGCSBucket" name="gcs_bucket" placeholder=""
  172. value="{{.GCSConfig.Bucket}}" maxlength="255">
  173. </div>
  174. </div>
  175. <div class="form-group row fsconfig fsconfig-gcsfs">
  176. <label for="idGCSCredentialFile" class="col-sm-2 col-form-label">Credentials file</label>
  177. <div class="col-sm-4">
  178. <input type="file" class="form-control-file" id="idGCSCredentialFile" name="gcs_credential_file"
  179. aria-describedby="GCSCredentialsHelpBlock">
  180. <small id="GCSCredentialsHelpBlock" class="form-text text-muted">
  181. Add or update credentials from a JSON file
  182. </small>
  183. </div>
  184. <div class="col-sm-1"></div>
  185. <label for="idGCSStorageClass" class="col-sm-2 col-form-label">Storage Class</label>
  186. <div class="col-sm-3">
  187. <input type="text" class="form-control" id="idGCSStorageClass" name="gcs_storage_class" placeholder=""
  188. value="{{.GCSConfig.StorageClass}}" maxlength="255">
  189. </div>
  190. </div>
  191. <div class="form-group fsconfig fsconfig-gcsfs">
  192. <div class="form-check">
  193. <input type="checkbox" class="form-check-input" id="idGCSAutoCredentials" name="gcs_auto_credentials"
  194. {{if gt .GCSConfig.AutomaticCredentials 0}}checked{{end}}>
  195. <label for="idGCSAutoCredentials" class="form-check-label">Automatic credentials</label>
  196. </div>
  197. </div>
  198. <div class="form-group row fsconfig fsconfig-gcsfs">
  199. <label for="idGCSKeyPrefix" class="col-sm-2 col-form-label">Key Prefix</label>
  200. <div class="col-sm-3">
  201. <input type="text" class="form-control" id="idGCSKeyPrefix" name="gcs_key_prefix" placeholder=""
  202. value="{{.GCSConfig.KeyPrefix}}" aria-describedby="GCSKeyPrefixHelpBlock">
  203. <small id="GCSKeyPrefixHelpBlock" class="form-text text-muted">
  204. Similar to a chroot for local filesystem. Cannot start with "/". Example: "somedir/subdir/".
  205. </small>
  206. </div>
  207. <div class="col-sm-2"></div>
  208. <label for="idGCSACL" class="col-sm-2 col-form-label">ACL</label>
  209. <div class="col-sm-3">
  210. <input type="text" class="form-control" id="idGCSACL" name="gcs_acl" placeholder=""
  211. value="{{.GCSConfig.ACL}}" maxlength="255" aria-describedby="GCSACLHelpBlock">
  212. <small id="GCSACLHelpBlock" class="form-text text-muted">
  213. ACL for uploaded objects. For more info refer to the JSON API <a href="https://cloud.google.com/storage/docs/access-control/lists#predefined-acl" target="_blank">here</a>
  214. </small>
  215. </div>
  216. </div>
  217. <div class="form-group row fsconfig fsconfig-azblobfs">
  218. <label for="idAzContainer" class="col-sm-2 col-form-label">Container</label>
  219. <div class="col-sm-3">
  220. <input type="text" class="form-control" id="idAzContainer" name="az_container" placeholder=""
  221. value="{{.AzBlobConfig.Container}}" maxlength="255">
  222. </div>
  223. <div class="col-sm-2"></div>
  224. <label for="idAzAccountName" class="col-sm-2 col-form-label">Account Name</label>
  225. <div class="col-sm-3">
  226. <input type="text" class="form-control" id="idAzAccountName" name="az_account_name" placeholder=""
  227. value="{{.AzBlobConfig.AccountName}}" maxlength="255">
  228. </div>
  229. </div>
  230. <div class="form-group row fsconfig fsconfig-azblobfs">
  231. <label for="idAzAccountKey" class="col-sm-2 col-form-label">Account Key</label>
  232. <div class="col-sm-10">
  233. <input type="password" class="form-control" id="idAzAccountKey" name="az_account_key" placeholder=""
  234. value="{{if .AzBlobConfig.AccountKey.IsEncrypted}}{{.RedactedSecret}}{{else}}{{.AzBlobConfig.AccountKey.GetPayload}}{{end}}">
  235. </div>
  236. </div>
  237. <div class="form-group row fsconfig fsconfig-azblobfs">
  238. <label for="idAzSASURL" class="col-sm-2 col-form-label">SAS URL</label>
  239. <div class="col-sm-10">
  240. <input type="password" class="form-control" id="idAzSASURL" name="az_sas_url" placeholder=""
  241. value="{{if .AzBlobConfig.SASURL.IsEncrypted}}{{.RedactedSecret}}{{else}}{{.AzBlobConfig.SASURL.GetPayload}}{{end}}">
  242. </div>
  243. </div>
  244. <div class="form-group row fsconfig fsconfig-azblobfs">
  245. <label for="idAzEndpoint" class="col-sm-2 col-form-label">Endpoint</label>
  246. <div class="col-sm-10">
  247. <input type="text" class="form-control" id="idAzEndpoint" name="az_endpoint" placeholder=""
  248. value="{{.AzBlobConfig.Endpoint}}" maxlength="255">
  249. </div>
  250. </div>
  251. <div class="form-group row fsconfig fsconfig-azblobfs">
  252. <label for="idAzAccessTier" class="col-sm-2 col-form-label">Access Tier</label>
  253. <div class="col-sm-10">
  254. <select class="form-control" id="idAzAccessTier" name="az_access_tier">
  255. <option value="" {{if eq .AzBlobConfig.AccessTier "" }}selected{{end}}>Default</option>
  256. <option value="Hot" {{if eq .AzBlobConfig.AccessTier "Hot" }}selected{{end}}>Hot</option>
  257. <option value="Cool" {{if eq .AzBlobConfig.AccessTier "Cool" }}selected{{end}}>Cool</option>
  258. <option value="Archive" {{if eq .AzBlobConfig.AccessTier "Archive" }}selected{{end}}>Archive
  259. </option>
  260. </select>
  261. </div>
  262. </div>
  263. <div class="form-group row fsconfig fsconfig-azblobfs">
  264. <label for="idAzPartSize" class="col-sm-2 col-form-label">UL Part Size (MB)</label>
  265. <div class="col-sm-3">
  266. <input type="number" class="form-control" id="idAzPartSize" name="az_upload_part_size" placeholder=""
  267. value="{{.AzBlobConfig.UploadPartSize}}" aria-describedby="AzPartSizeHelpBlock">
  268. <small id="AzPartSizeHelpBlock" class="form-text text-muted">
  269. The buffer size for multipart uploads. Zero means the default (4 MB)
  270. </small>
  271. </div>
  272. <div class="col-sm-2"></div>
  273. <label for="idAzUploadConcurrency" class="col-sm-2 col-form-label">UL Concurrency</label>
  274. <div class="col-sm-3">
  275. <input type="number" class="form-control" id="idAzUploadConcurrency" name="az_upload_concurrency"
  276. placeholder="" value="{{.AzBlobConfig.UploadConcurrency}}" min="0"
  277. aria-describedby="AzConcurrencyHelpBlock">
  278. <small id="AzConcurrencyHelpBlock" class="form-text text-muted">
  279. How many parts are uploaded in parallel. Zero means the default (2)
  280. </small>
  281. </div>
  282. </div>
  283. <div class="form-group row fsconfig fsconfig-azblobfs">
  284. <label for="idAzKeyPrefix" class="col-sm-2 col-form-label">Key Prefix</label>
  285. <div class="col-sm-10">
  286. <input type="text" class="form-control" id="idAzKeyPrefix" name="az_key_prefix" placeholder=""
  287. value="{{.AzBlobConfig.KeyPrefix}}" aria-describedby="AzKeyPrefixHelpBlock">
  288. <small id="AzKeyPrefixHelpBlock" class="form-text text-muted">
  289. Similar to a chroot for local filesystem. Cannot start with "/". Example: "somedir/subdir/".
  290. </small>
  291. </div>
  292. </div>
  293. <div class="form-group fsconfig fsconfig-azblobfs">
  294. <div class="form-check">
  295. <input type="checkbox" class="form-check-input" id="idUseEmulator" name="az_use_emulator" {{if
  296. .AzBlobConfig.UseEmulator}}checked{{end}}>
  297. <label for="idUseEmulator" class="form-check-label">Use Azure Blob emulator</label>
  298. </div>
  299. </div>
  300. <div class="form-group row fsconfig fsconfig-cryptfs">
  301. <label for="idCryptPassphrase" class="col-sm-2 col-form-label">Passphrase</label>
  302. <div class="col-sm-10">
  303. <input type="password" class="form-control" id="idCryptPassphrase" name="crypt_passphrase"
  304. placeholder=""
  305. value="{{if .CryptConfig.Passphrase.IsEncrypted}}{{.RedactedSecret}}{{else}}{{.CryptConfig.Passphrase.GetPayload}}{{end}}">
  306. </div>
  307. </div>
  308. <div class="form-group row fsconfig fsconfig-sftpfs">
  309. <label for="idSFTPEndpoint" class="col-sm-2 col-form-label">Endpoint</label>
  310. <div class="col-sm-3">
  311. <input type="text" class="form-control" id="idSFTPEndpoint" name="sftp_endpoint" placeholder=""
  312. value="{{.SFTPConfig.Endpoint}}" maxlength="255" aria-describedby="SFTPEndpointHelpBlock">
  313. <small id="SFTPEndpointHelpBlock" class="form-text text-muted">
  314. Endpoint as host:port, port is always required
  315. </small>
  316. </div>
  317. <div class="col-sm-2"></div>
  318. <label for="idSFTPUploadBufferSize" class="col-sm-2 col-form-label">Buffer size (MB)</label>
  319. <div class="col-sm-3">
  320. <input type="number" class="form-control" id="idSFTPBufferSize" name="sftp_buffer_size" placeholder=""
  321. value="{{.SFTPConfig.BufferSize}}" min="0" max="16" aria-describedby="SFTPBufferHelpBlock">
  322. <small id="SFTPBufferHelpBlock" class="form-text text-muted">
  323. A buffer size > 0 enables concurrent transfers
  324. </small>
  325. </div>
  326. </div>
  327. <div class="form-group row fsconfig fsconfig-sftpfs">
  328. <label for="idSFTPUsername" class="col-sm-2 col-form-label">Username</label>
  329. <div class="col-sm-3">
  330. <input type="text" class="form-control" id="idSFTPUsername" name="sftp_username" placeholder=""
  331. value="{{.SFTPConfig.Username}}" maxlength="255">
  332. </div>
  333. <div class="col-sm-2"></div>
  334. <label for="idSFTPPassword" class="col-sm-2 col-form-label">Password</label>
  335. <div class="col-sm-3">
  336. <input type="password" class="form-control" id="idSFTPPassword" name="sftp_password" placeholder=""
  337. value="{{if .SFTPConfig.Password.IsEncrypted}}{{.RedactedSecret}}{{else}}{{.SFTPConfig.Password.GetPayload}}{{end}}">
  338. </div>
  339. </div>
  340. <div class="form-group row fsconfig fsconfig-sftpfs">
  341. <label for="idSFTPPrivateKey" class="col-sm-2 col-form-label">Private key</label>
  342. <div class="col-sm-10">
  343. <textarea type="password" class="form-control" id="idSFTPPrivateKey" name="sftp_private_key"
  344. rows="3">{{if .SFTPConfig.PrivateKey.IsEncrypted}}{{.RedactedSecret}}{{else}}{{.SFTPConfig.PrivateKey.GetPayload}}{{end}}</textarea>
  345. </div>
  346. </div>
  347. <div class="form-group row fsconfig fsconfig-sftpfs">
  348. <label for="idSFTPFingerprints" class="col-sm-2 col-form-label">Fingerprints</label>
  349. <div class="col-sm-10">
  350. <textarea class="form-control" id="idSFTPFingerprints" name="sftp_fingerprints" rows="3"
  351. aria-describedby="SFTPFingerprintsHelpBlock">{{range .SFTPConfig.Fingerprints}}{{.}}&#10;{{end}}</textarea>
  352. <small id="SFTPFingerprintsHelpBlock" class="form-text text-muted">
  353. SHA256 fingerprints to validate when connecting to the external SFTP server, one per line. If
  354. empty any host key will be accepted: this is a security risk!
  355. </small>
  356. </div>
  357. </div>
  358. <div class="form-group row fsconfig fsconfig-sftpfs">
  359. <label for="idSFTPPrefix" class="col-sm-2 col-form-label">Prefix</label>
  360. <div class="col-sm-10">
  361. <input type="text" class="form-control" id="idSFTPPrefix" name="sftp_prefix" placeholder=""
  362. value="{{.SFTPConfig.Prefix}}" aria-describedby="SFTPPrefixHelpBlock">
  363. <small id="SFTPPrefixHelpBlock" class="form-text text-muted">
  364. Similar to a chroot for local filesystem. Example: "/somedir/subdir".
  365. </small>
  366. </div>
  367. </div>
  368. <div class="form-group fsconfig fsconfig-sftpfs">
  369. <div class="form-check">
  370. <input type="checkbox" class="form-check-input" id="idDisableConcurrentReads"
  371. name="sftp_disable_concurrent_reads" {{if .SFTPConfig.DisableCouncurrentReads}}checked{{end}}>
  372. <label for="idDisableConcurrentReads" class="form-check-label">Disable concurrent reads</label>
  373. </div>
  374. </div>
  375. </div>
  376. </div>
  377. {{end}}
  378. {{define "fsjs"}}
  379. function onFilesystemChanged(val){
  380. // each fsconfig form-group has the 'fsconfig' css class
  381. // as well as a 'fsconfig-{name}' class where name is the FilesystemProvider.Name
  382. // we're simply hiding all of them and then showing the ones that match the selected vfs provider
  383. $('.form-group.fsconfig').hide();
  384. $('.form-group.fsconfig-'+val).show();
  385. }
  386. {{end}}