summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2005-12-16 08:15:18 +0100
committerAndrew Dolgov <[email protected]>2005-12-16 08:15:18 +0100
commit47c6c988d9fd6e043bb322c7c07e9bb35ffd6759 (patch)
tree2b5078cb9fc09e505329b1d2c9adf9cc6f97d926
parent855d0ecfda212ef36f35fff63e93dc8c6afd1126 (diff)
support for feed http auth
-rw-r--r--backend.php38
-rw-r--r--functions.php18
-rw-r--r--prefs.js130
-rw-r--r--tt-rss.css2
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 "<td><input id=\"iedit_purgintl\"
value=\"$purge_interval\"></td></tr>";
+// print "<tr><td colspan=\"2\"><b>Authentication</b></td></tr>";
+
+ $row_class = toggleEvenOdd($row_class);
+ $auth_login = db_fetch_result($result, 0, "auth_login");
+
+ print "<tr class='$row_class'><td>Login:</td>";
+ print "<td><input id=\"iedit_login\"
+ value=\"$auth_login\"></td></tr>";
+
+ $row_class = toggleEvenOdd($row_class);
+ $auth_pass = db_fetch_result($result, 0, "auth_pass");
+
+ print "<tr class='$row_class'><td>Password:</td>";
+ print "<td><input type=\"password\" id=\"iedit_pass\"
+ value=\"$auth_pass\"></td></tr>";
+
print "</table>";
print "</div>";
@@ -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 &gt;= 0 (0 = default)");
- return;
- }
+ try {
- if (purge_intl < 0) {
- notify("Purge days must be &gt;= 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 &gt;= 0 (0 = default)");
+ return;
+ }
+
+ if (purge_intl < 0) {
+ notify("Purge days must be &gt;= 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;
}