From 47c6c988d9fd6e043bb322c7c07e9bb35ffd6759 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Fri, 16 Dec 2005 08:15:18 +0100 Subject: support for feed http auth --- backend.php | 38 +++++++++++++---- functions.php | 18 +++++++- prefs.js | 130 +++++++++++++++++++++++++++++++++------------------------- tt-rss.css | 2 +- 4 files changed, 119 insertions(+), 69 deletions(-) diff --git a/backend.php b/backend.php index ec1ffcc20..50d04e6b4 100644 --- a/backend.php +++ b/backend.php @@ -1425,8 +1425,8 @@ if ($op == "pref-feeds") { - $subop = $_GET["subop"]; - $quiet = $_GET["quiet"]; + $subop = $_REQUEST["subop"]; + $quiet = $_REQUEST["quiet"]; if ($subop == "editfeed") { $feed_id = db_escape_string($_GET["id"]); @@ -1513,6 +1513,22 @@ print ""; +// print "Authentication"; + + $row_class = toggleEvenOdd($row_class); + $auth_login = db_fetch_result($result, 0, "auth_login"); + + print "Login:"; + print ""; + + $row_class = toggleEvenOdd($row_class); + $auth_pass = db_fetch_result($result, 0, "auth_pass"); + + print "Password:"; + print ""; + print ""; print ""; @@ -1525,12 +1541,14 @@ } if ($subop == "editSave") { - $feed_title = db_escape_string($_GET["t"]); - $feed_link = db_escape_string($_GET["l"]); - $upd_intl = db_escape_string($_GET["ui"]); - $purge_intl = db_escape_string($_GET["pi"]); - $feed_id = db_escape_string($_GET["id"]); - $cat_id = db_escape_string($_GET["catid"]); + $feed_title = db_escape_string($_POST["t"]); + $feed_link = db_escape_string($_POST["l"]); + $upd_intl = db_escape_string($_POST["ui"]); + $purge_intl = db_escape_string($_POST["pi"]); + $feed_id = db_escape_string($_POST["id"]); + $cat_id = db_escape_string($_POST["catid"]); + $auth_login = db_escape_string($_POST["login"]); + $auth_pass = db_escape_string($_POST["pass"]); if (strtoupper($upd_intl) == "DEFAULT") $upd_intl = 0; @@ -1554,7 +1572,9 @@ $category_qpart, title = '$feed_title', feed_url = '$feed_link', update_interval = '$upd_intl', - purge_interval = '$purge_intl' + purge_interval = '$purge_intl', + auth_login = '$auth_login', + auth_pass = '$auth_pass' WHERE id = '$feed_id' AND owner_uid = " . $_SESSION["uid"]); } diff --git a/functions.php b/functions.php index dbdc1ce69..5a4683bf9 100644 --- a/functions.php +++ b/functions.php @@ -169,17 +169,31 @@ return; } - $result = db_query($link, "SELECT update_interval + $result = db_query($link, "SELECT update_interval,auth_login,auth_pass FROM ttrss_feeds WHERE id = '$feed'"); + $auth_login = db_fetch_result($result, 0, "auth_login"); + $auth_pass = db_fetch_result($result, 0, "auth_pass"); + $update_interval = db_fetch_result($result, 0, "update_interval"); if ($update_interval < 0) { return; } $feed = db_escape_string($feed); + $fetch_url = $feed_url; + + if ($auth_login && $auth_pass) { + $url_parts = array(); + preg_match("/(^[^:]*):\/\/(.*)/", $fetch_url, $url_parts); + + if ($url_parts[1] && $url_parts[2]) { + $fetch_url = $url_parts[1] . "://$auth_login:$auth_pass@" . $url_parts[2]; + } + + } error_reporting(0); - $rss = fetch_rss($feed_url); + $rss = fetch_rss($fetch_url); error_reporting (DEFAULT_ERROR_LEVEL); diff --git a/prefs.js b/prefs.js index 55f3abe67..06092774b 100644 --- a/prefs.js +++ b/prefs.js @@ -29,21 +29,25 @@ if (!xmlhttp && typeof XMLHttpRequest!='undefined') { function feedlist_callback() { if (xmlhttp.readyState == 4) { - var container = document.getElementById('prefContent'); - container.innerHTML=xmlhttp.responseText; - if (active_feed) { - var row = document.getElementById("FEEDR-" + active_feed); - if (row) { - if (!row.className.match("Selected")) { - row.className = row.className + "Selected"; - } - } - var checkbox = document.getElementById("FRCHK-" + active_feed); - if (checkbox) { - checkbox.checked = true; + try { + var container = document.getElementById('prefContent'); + container.innerHTML=xmlhttp.responseText; + if (active_feed) { + var row = document.getElementById("FEEDR-" + active_feed); + if (row) { + if (!row.className.match("Selected")) { + row.className = row.className + "Selected"; + } + } + var checkbox = document.getElementById("FRCHK-" + active_feed); + if (checkbox) { + checkbox.checked = true; + } } + p_notify(""); + } catch (e) { + exception_error("feedlist_callback", e); } - p_notify(""); } } @@ -654,54 +658,66 @@ function feedCatEditCancel() { function feedEditSave() { - var feed = active_feed; - - if (!xmlhttp_ready(xmlhttp)) { - printLockingError(); - return - } - - var link = document.getElementById("iedit_link").value; - var title = document.getElementById("iedit_title").value; - var upd_intl = document.getElementById("iedit_updintl").value; - var purge_intl = document.getElementById("iedit_purgintl").value; - var fcat = document.getElementById("iedit_fcat"); - - var fcat_id = fcat[fcat.selectedIndex].id; - -// notify("Saving feed."); - -/* if (upd_intl < 0) { - notify("Update interval must be >= 0 (0 = default)"); - return; - } + try { - if (purge_intl < 0) { - notify("Purge days must be >= 0 (0 = default)"); - return; - } */ + var feed = active_feed; + + if (!xmlhttp_ready(xmlhttp)) { + printLockingError(); + return + } + + var link = document.getElementById("iedit_link").value; + var title = document.getElementById("iedit_title").value; + var upd_intl = document.getElementById("iedit_updintl").value; + var purge_intl = document.getElementById("iedit_purgintl").value; + var fcat = document.getElementById("iedit_fcat"); + + var fcat_id = fcat[fcat.selectedIndex].id; + + // notify("Saving feed."); + + /* if (upd_intl < 0) { + notify("Update interval must be >= 0 (0 = default)"); + return; + } + + if (purge_intl < 0) { + notify("Purge days must be >= 0 (0 = default)"); + return; + } */ + + if (link.length == 0) { + notify("Feed link cannot be blank."); + return; + } + + if (title.length == 0) { + notify("Feed title cannot be blank."); + return; + } + + var auth_login = document.getElementById("iedit_login").value; + var auth_pass = document.getElementById("iedit_pass").value; + + active_feed = false; + + notify("Saving feed..."); - if (link.length == 0) { - notify("Feed link cannot be blank."); - return; - } + var query = "op=pref-feeds&subop=editSave&id=" + + feed + "&l=" + param_escape(link) + "&t=" + param_escape(title) + + "&ui=" + param_escape(upd_intl) + "&pi=" + param_escape(purge_intl) + + "&catid=" + param_escape(fcat_id) + "&login=" + param_escape(auth_login) + + "&pass=" + param_escape(auth_pass); - if (title.length == 0) { - notify("Feed title cannot be blank."); - return; + xmlhttp.open("POST", "backend.php", true); + xmlhttp.onreadystatechange=feedlist_callback; + xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); + xmlhttp.send(query); + + } catch (e) { + exception_error("feedEditSave", e); } - - active_feed = false; - - notify("Saving feed..."); - - xmlhttp.open("GET", "backend.php?op=pref-feeds&subop=editSave&id=" + - feed + "&l=" + param_escape(link) + "&t=" + param_escape(title) + - "&ui=" + param_escape(upd_intl) + "&pi=" + param_escape(purge_intl) + - "&catid=" + param_escape(fcat_id), true); - xmlhttp.onreadystatechange=feedlist_callback; - xmlhttp.send(null); - } function feedCatEditSave() { diff --git a/tt-rss.css b/tt-rss.css index 28387a309..696bf48cc 100644 --- a/tt-rss.css +++ b/tt-rss.css @@ -311,7 +311,7 @@ a:hover { #iedit_title, #iedit_link, #iedit_regexp, #iedit_descr, #iedit_expr, #iedit_updintl, #iedit_purgintl, #iedit_ulogin, #iedit_ulevel, #iedit_match, #iedit_feed, -#iedit_fcat, #iedit_filter_action { +#iedit_fcat, #iedit_filter_action, #iedit_login, #iedit_pass { width : 100%; padding-left : 2px; } -- cgit v1.2.3