]> git.wh0rd.org - tt-rss.git/commitdiff
support for feed http auth
authorAndrew Dolgov <fox@madoka.spb.ru>
Fri, 16 Dec 2005 07:15:18 +0000 (08:15 +0100)
committerAndrew Dolgov <fox@madoka.spb.ru>
Fri, 16 Dec 2005 07:15:18 +0000 (08:15 +0100)
backend.php
functions.php
prefs.js
tt-rss.css

index ec1ffcc20247e759dbbe20732fdb2fd9a1028be8..50d04e6b4a46c93c0cbbc5f01eb34a7d01390683 100644 (file)
 
        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"]);
                        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>";
 
                }
 
                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;
                                $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"]);                    
                }
 
index dbdc1ce69bc0d2a5556ee752731f70b4e9a7c606..5a4683bf974b702a7d42907217ca284ead436896 100644 (file)
                        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);
 
index 55f3abe6703326ddd1a37765495170e0b7d2918c..06092774b4e1ca2e97e834296877e99b9e1223d1 100644 (file)
--- 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() {
index 28387a309e71bb39c376a84be059e4ae573fc8e0..696bf48cce92abb5ad78b29caf423b9e3b8f2423 100644 (file)
@@ -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;
 }