mirror of https://github.com/PurpleI2P/i2pd.git
I2P: End-to-End encrypted and anonymous Internet
https://i2pd.website/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
2.8 KiB
94 lines
2.8 KiB
var I2PControl = I2PControl || {} |
|
|
|
I2PControl.Session = function(password) { |
|
this.token = ""; |
|
this.ready = false; |
|
this.error = false; |
|
this.password = password; |
|
}; |
|
|
|
I2PControl.Session.prototype = { |
|
|
|
request : function(method, params, handler) { |
|
var request = new XMLHttpRequest(); |
|
request.open("POST", "", true); |
|
request.setRequestHeader('Content-Type', 'application/json'); |
|
var self = this; |
|
request.onreadystatechange = function() { |
|
if(this.readyState == 4 && this.status == "200" && this.responseText != "") { |
|
var result = JSON.parse(this.responseText).result; |
|
if(result.hasOwnProperty("error")) { |
|
self.error = true; |
|
} |
|
handler(result, self); |
|
} |
|
}; |
|
if(this.token != "") |
|
params["Token"] = this.token; |
|
|
|
var rpc = { |
|
"id" : 0, |
|
"method" : method , |
|
"params" : params, |
|
"jsonrpc": "2.0" |
|
} |
|
request.send(JSON.stringify(rpc)); |
|
}, |
|
|
|
start : function(onReady) { |
|
var self = this; |
|
|
|
var handleAuthenticate = function(result) { |
|
self.token = result["Token"]; |
|
self.ready = true; |
|
onReady(); |
|
}; |
|
|
|
this.request( |
|
"Authenticate", |
|
{"API" : 1, "Password" : this.password}, |
|
handleAuthenticate |
|
); |
|
}, |
|
|
|
}; |
|
|
|
I2PControl.statusToString = function(status) { |
|
switch(status) { |
|
case 0: return "OK"; |
|
case 1: return "TESTING"; |
|
case 2: return "FIREWALLED"; |
|
case 3: return "HIDDEN"; |
|
case 4: return "WARN_FIREWALLED_AND_FAST"; |
|
case 5: return "WARN_FIREWALLED_AND_FLOODFILL"; |
|
case 6: return "WARN_FIREWALLED_WITH_INBOUND_TCP"; |
|
case 7: return "WARN_FIREWALLED_WITH_UDP_DISABLED"; |
|
case 8: return "ERROR_I2CP"; |
|
case 9: return "ERROR_CLOCK_SKEW"; |
|
case 10: return "ERROR_PRIVATE_TCP_ADDRESS"; |
|
case 11: return "ERROR_SYMMETRIC_NAT"; |
|
case 12: return "ERROR_UDP_PORT_IN_USE"; |
|
case 13: return "ERROR_NO_ACTIVE_PEERS_CHECK_CONNECTION_AND_FIREWALL"; |
|
case 14: return "ERROR_UDP_DISABLED_AND_TCP_UNSET"; |
|
default: return "UNKNOWN"; |
|
} |
|
}; |
|
|
|
I2PControl.msToString = function(mseconds) { |
|
var seconds = mseconds / 1000; |
|
var numdays = Math.floor(seconds / 86400); |
|
var numhours = Math.floor((seconds % 86400) / 3600); |
|
var numminutes = Math.floor(((seconds % 86400) % 3600) / 60); |
|
var numseconds = ((seconds % 86400) % 3600) % 60; |
|
|
|
return numdays + "d " + numhours + "h " + numminutes + "m " + numseconds + "s"; |
|
} |
|
|
|
I2PControl.updateDocument = function(values) { |
|
|
|
for(id in values) { |
|
if(!values.hasOwnProperty(id)) |
|
continue; |
|
document.getElementById(id).innerHTML = values[id]; |
|
} |
|
};
|
|
|