]> git.proxmox.com Git - proxmox-backup.git/blobdiff - src/tools.rs
server/rest.rs: verify auth cookie
[proxmox-backup.git] / src / tools.rs
index 8b522cd3feb00d518f77b901b0f202cea6adbba3..6932fc56f0c39ef6bb903e3dd529fa11566f30c4 100644 (file)
@@ -416,3 +416,27 @@ pub fn assert_if_modified(digest1: &str, digest2: &str) -> Result<(), Error> {
     }
     Ok(())
 }
+
+/// Extract authentication cookie from cookie header.
+/// We assume cookie_name is already url encoded.
+pub fn extract_auth_cookie(cookie: &str, cookie_name: &str) -> Option<String> {
+
+    for pair in cookie.split(';') {
+
+        let (name, value) = match pair.find('=') {
+            Some(i) => (pair[..i].trim(), pair[(i + 1)..].trim()),
+            None => return None, // Cookie format error
+        };
+
+        if name == cookie_name {
+            use url::percent_encoding::percent_decode;
+            if let Ok(value) = percent_decode(value.as_bytes()).decode_utf8() {
+                return Some(value.into());
+            } else {
+                return None; // Cookie format error
+            }
+        }
+    }
+
+    None
+}