summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2011-03-18 17:39:23 +0300
committerAndrew Dolgov <[email protected]>2011-03-18 17:39:23 +0300
commitebb948c24e667f651fe882100cc478f0534b8760 (patch)
treead1817f8625575ba03614863e413bb1acb869a66
parent81f6deea473257379ef43ceb07077527b9d91dbb (diff)
rework initial sanitycheck to use JSON
-rw-r--r--backend.php19
-rw-r--r--errors.php4
-rw-r--r--functions.js18
-rw-r--r--functions.php23
-rw-r--r--modules/backend-rpc.php16
-rw-r--r--prefs.js17
-rw-r--r--tt-rss.js52
7 files changed, 22 insertions, 127 deletions
diff --git a/backend.php b/backend.php
index 5839c0d2b..d13b2d62a 100644
--- a/backend.php
+++ b/backend.php
@@ -69,18 +69,6 @@
authenticate_user($link, "admin", null);
}
- /* if (!($_SESSION["uid"] && validate_session($link)) && $op != "globalUpdateFeeds"
- && $op != "rss" && $op != "getUnread" && $op != "publish" && $op != "getProfiles") {
-
- if ($op == "rpc" || $op == "viewfeed" || $op == "view") {
- print_error_xml(6); exit;
- } else {
- header("Location: tt-rss.php?return=" .
- urlencode($_SERVER['REQUEST_URI']));
- }
- exit;
- } */
-
if (!($_SESSION["uid"] && validate_session($link)) && $op != "globalUpdateFeeds" &&
$op != "rss" && $op != "getUnread" && $op != "getProfiles") {
@@ -144,7 +132,12 @@
require_once "modules/pref-labels.php";
require_once "modules/pref-users.php";
- if (!sanity_check($link)) { return; }
+ $error = sanity_check($link);
+
+ if ($error['code'] != 0) {
+ print json_encode(array("error" => $error));
+ return;
+ }
switch($op) { // Select action according to $op value.
case "rpc":
diff --git a/errors.php b/errors.php
index cd76d10a6..12aeffe75 100644
--- a/errors.php
+++ b/errors.php
@@ -1,7 +1,7 @@
<?php
require_once "functions.php";
- $ERRORS[0] = __("Unknown error");
+ $ERRORS[0] = "";
$ERRORS[1] = __("This program requires XmlHttpRequest " .
"to function properly. Your browser doesn't seem to support it.");
@@ -25,7 +25,7 @@
$ERRORS[9] = __("Configuration check failed");
- $ERRORS[10] = __("Your version of MySQL is not currently supported. Please see
+ $ERRORS[10] = __("Your version of MySQL is not currently supported. Please see
official site for more information.");
$ERRORS[11] = "[This error is not returned by server]";
diff --git a/functions.js b/functions.js
index 411c82494..ba82ebe11 100644
--- a/functions.js
+++ b/functions.js
@@ -1055,36 +1055,26 @@ function backend_sanity_check_callback(transport) {
return;
}
- if (!transport.responseXML) {
- if (!store) {
- fatalError(3, "Sanity check: Received reply is not XML",
- transport.responseText);
- return;
- }
- }
-
- var reply = transport.responseXML.getElementsByTagName("error")[0];
+ var reply = JSON.parse(transport.responseText);
if (!reply) {
fatalError(3, "Sanity check: invalid RPC reply", transport.responseText);
return;
}
- var error_code = reply.getAttribute("error-code");
+ var error_code = reply['error']['code'];
if (error_code && error_code != 0) {
- return fatalError(error_code, reply.getAttribute("error-msg"));
+ return fatalError(error_code, reply['error']['message']);
}
console.log("sanity check ok");
- var params = transport.responseXML.getElementsByTagName("init-params")[0];
+ var params = reply['init-params'];
if (params) {
console.log('reading init-params...');
- params = JSON.parse(params.firstChild.nodeValue);
-
if (params) {
for (k in params) {
var v = params[k];
diff --git a/functions.php b/functions.php
index b0c768ff8..1e9e5a576 100644
--- a/functions.php
+++ b/functions.php
@@ -2227,6 +2227,8 @@
function sanity_check($link) {
+ global $ERRORS;
+
$error_code = 0;
$schema_version = get_schema_version($link);
@@ -2245,12 +2247,7 @@
$error_code = 12;
}
- if ($error_code != 0) {
- print_error_xml($error_code);
- return false;
- } else {
- return true;
- }
+ return array("code" => $error_code, "message" => $ERRORS[$error_code]);
}
function file_is_locked($filename) {
@@ -2851,20 +2848,6 @@
return $version[1];
}
- function print_error_xml($code, $add_msg = "") {
- global $ERRORS;
-
- $error_msg = $ERRORS[$code];
-
- if ($add_msg) {
- $error_msg = "$error_msg; $add_msg";
- }
-
- print "<rpc-reply>";
- print "<error error-code=\"$code\" error-msg=\"$error_msg\"/>";
- print "</rpc-reply>";
- }
-
/**
* Subscribes the user to the given feed
*
diff --git a/modules/backend-rpc.php b/modules/backend-rpc.php
index bb76fd168..ea1867e0c 100644
--- a/modules/backend-rpc.php
+++ b/modules/backend-rpc.php
@@ -307,23 +307,21 @@
return;
}
- // XML method
if ($subop == "sanityCheck") {
+ header("Content-Type: text/plain");
$_SESSION["hasAudio"] = $_REQUEST["hasAudio"] === "true";
- print "<rpc-reply>";
- if (sanity_check($link)) {
- print "<error error-code=\"0\"/>";
+ $reply = array();
- print "<init-params><![CDATA[";
- print json_encode(make_init_params($link));
- print "]]></init-params>";
+ $reply['error'] = sanity_check($link);
- print_runtime_info($link);
+ if ($reply['error']['code'] == 0) {
+ $reply['init-params'] = make_init_params($link);
+ $reply['runtime-info'] = make_runtime_info($link);
}
- print "</rpc-reply>";
+ print json_encode($reply);
return;
}
diff --git a/prefs.js b/prefs.js
index 012e0432a..2d7f9dff1 100644
--- a/prefs.js
+++ b/prefs.js
@@ -1539,23 +1539,6 @@ function clearFeedAccessKeys() {
return false;
}
-function handle_rpc_reply(transport, scheduled_call) {
- try {
- if (transport.responseXML) {
-
- if (!transport_error_check(transport)) return false;
-
- } else {
- notify_error("Error communicating with server.");
- }
-
- } catch (e) {
- exception_error("handle_rpc_reply", e, transport);
- }
-
- return true;
-}
-
function resetFeedOrder() {
try {
notify_progress("Loading, please wait...");
diff --git a/tt-rss.js b/tt-rss.js
index 3d0f53044..57b62c710 100644
--- a/tt-rss.js
+++ b/tt-rss.js
@@ -1022,58 +1022,6 @@ function showFeedsWithErrors() {
displayDlg('feedUpdateErrors');
}
-function handle_rpc_reply(transport, scheduled_call) {
- try {
- if (transport.responseXML) {
-
- if (!transport_error_check(transport)) return false;
-
- var seq = transport.responseXML.getElementsByTagName("seq")[0];
-
- if (seq) {
- seq = seq.firstChild.nodeValue;
-
- if (get_seq() != seq) {
- //console.log("[handle_rpc_reply] sequence mismatch: " + seq);
- return true;
- }
- }
-
- var message = transport.responseXML.getElementsByTagName("message")[0];
-
- if (message) {
- message = message.firstChild.nodeValue;
-
- if (message == "UPDATE_COUNTERS") {
- console.log("need to refresh counters...");
- setInitParam("last_article_id", -1);
- _force_scheduled_update = true;
- }
- }
-
- var counters = transport.responseXML.getElementsByTagName("counters")[0];
-
- if (counters)
- parse_counters(JSON.parse(counters.firstChild.nodeValue), scheduled_call);
-
- var runtime_info = transport.responseXML.getElementsByTagName("runtime-info")[0];
-
- if (runtime_info)
- parse_runtime_info(JSON.parse(runtime_info.firstChild.nodeValue));
-
- hideOrShowFeeds(getInitParam("hide_read_feeds") == 1);
-
- } else {
- notify_error("Error communicating with server.");
- }
-
- } catch (e) {
- exception_error("handle_rpc_reply", e, transport);
- }
-
- return true;
-}
-
function scheduleFeedUpdate(id, is_cat) {
try {
if (!id) {