diff --git a/dist/backupper-0.1.5-x86_64-1.txz.sha256 b/dist/backupper-0.1.5-x86_64-1.txz.sha256 deleted file mode 100644 index a386c39..0000000 --- a/dist/backupper-0.1.5-x86_64-1.txz.sha256 +++ /dev/null @@ -1 +0,0 @@ -9f9f8be1af5c6fc9aca24eef9f3d9726ac041132eb64d05811b64ece4342d182 backupper-0.1.5-x86_64-1.txz diff --git a/dist/backupper-0.1.5-x86_64-1.txz b/dist/backupper-0.1.6-x86_64-1.txz similarity index 55% rename from dist/backupper-0.1.5-x86_64-1.txz rename to dist/backupper-0.1.6-x86_64-1.txz index 86248bf..6f34905 100644 Binary files a/dist/backupper-0.1.5-x86_64-1.txz and b/dist/backupper-0.1.6-x86_64-1.txz differ diff --git a/dist/backupper-0.1.6-x86_64-1.txz.sha256 b/dist/backupper-0.1.6-x86_64-1.txz.sha256 new file mode 100644 index 0000000..38cea1d --- /dev/null +++ b/dist/backupper-0.1.6-x86_64-1.txz.sha256 @@ -0,0 +1 @@ +22d71250e0e7336fa9cc6a1a09115c9b7740ab21275163694ca3986b76a81a21 backupper-0.1.6-x86_64-1.txz diff --git a/dist/backupper.plg b/dist/backupper.plg index 494ccfa..e64cceb 100644 --- a/dist/backupper.plg +++ b/dist/backupper.plg @@ -2,13 +2,16 @@ - + - + ]> +### 0.1.6 +- Fix false CSRF errors by relying on Unraid's native request validation. + ### 0.1.5 - Add delayed German tooltips with examples throughout the WebGUI. diff --git a/plugin/backupper.plg b/plugin/backupper.plg index f536fb3..17ef128 100644 --- a/plugin/backupper.plg +++ b/plugin/backupper.plg @@ -2,13 +2,16 @@ - + ]> +### 0.1.6 +- Fix false CSRF errors by relying on Unraid's native request validation. + ### 0.1.5 - Add delayed German tooltips with examples throughout the WebGUI. diff --git a/webgui/Backupper.page b/webgui/Backupper.page index 7c711d3..a4cc0c9 100644 --- a/webgui/Backupper.page +++ b/webgui/Backupper.page @@ -9,7 +9,7 @@ Tag="backup restic snapshots restore" - +

Backupper

Encrypted Restic backups for Unraid

@@ -29,4 +29,4 @@ $pluginRoot = '/plugins/backupper';
- + diff --git a/webgui/api.php b/webgui/api.php index 9575ad3..5fc3e49 100644 --- a/webgui/api.php +++ b/webgui/api.php @@ -13,17 +13,6 @@ if (!preg_match('#^/v1/[A-Za-z0-9_./?=&%:-]*$#', $path) || str_contains($path, ' exit; } -if ($method !== 'GET') { - $provided = $_SERVER['HTTP_X_CSRF_TOKEN'] ?? ''; - $runtime = @parse_ini_file('/var/local/emhttp/var.ini') ?: []; - $expected = $runtime['csrf_token'] ?? ''; - if ($expected === '' || !hash_equals((string)$expected, (string)$provided)) { - http_response_code(403); - echo json_encode(['error' => 'invalid CSRF token']); - exit; - } -} - if (!file_exists($socket)) { http_response_code(503); echo json_encode(['error' => 'Backupper daemon is not running']); diff --git a/webgui/assets/backupper.js b/webgui/assets/backupper.js index deb45fb..0bb7663 100644 --- a/webgui/assets/backupper.js +++ b/webgui/assets/backupper.js @@ -64,7 +64,7 @@ const api = async (path, options = {}) => { const response = await fetch(`${root.dataset.api}?path=${encodeURIComponent(path)}`, { ...options, - headers: {'Content-Type':'application/json', 'X-CSRF-Token':window.BACKUPPER_CSRF || '', ...(options.headers || {})} + headers: {'Content-Type':'application/json', 'X-CSRF-Token':window.BACKUPPER_CSRF || window.csrf_token || '', ...(options.headers || {})} }); const text = await response.text(); let body = null;