|
|
|
@ -1263,12 +1263,15 @@ namespace http {
@@ -1263,12 +1263,15 @@ namespace http {
|
|
|
|
|
ident.FromBase32 (b32); |
|
|
|
|
auto dest = i2p::client::context.FindLocalDestination (ident); |
|
|
|
|
|
|
|
|
|
if (dest) { |
|
|
|
|
if (dest) |
|
|
|
|
{ |
|
|
|
|
std::size_t pos; |
|
|
|
|
pos = name.find (".i2p"); |
|
|
|
|
if (pos == (name.length () - 4)) { |
|
|
|
|
if (pos == (name.length () - 4)) |
|
|
|
|
{ |
|
|
|
|
pos = name.find (".b32.i2p"); |
|
|
|
|
if (pos == std::string::npos) { |
|
|
|
|
if (pos == std::string::npos) |
|
|
|
|
{ |
|
|
|
|
auto signatureLen = dest->GetIdentity ()->GetSignatureLen (); |
|
|
|
|
uint8_t * signature = new uint8_t[signatureLen]; |
|
|
|
|
char * sig = new char[signatureLen*2]; |
|
|
|
@ -1280,16 +1283,17 @@ namespace http {
@@ -1280,16 +1283,17 @@ namespace http {
|
|
|
|
|
sig[len] = 0; |
|
|
|
|
out << "#!sig=" << sig; |
|
|
|
|
s << "<b>SUCCESS</b>:<br>\r\n<textarea readonly cols=\"80\" rows=\"10\" wrap=\"on\">" << out.str () << "</textarea>\r\n<br>\r\n<br>\r\n"; |
|
|
|
|
delete[] signature, sig; |
|
|
|
|
} else { |
|
|
|
|
s << "<b>ERROR</b>: Domain can't end with .b32.i2p\r\n<br>\r\n<br>\r\n"; |
|
|
|
|
delete[] signature; |
|
|
|
|
delete[] sig; |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
s << "<b>ERROR</b>: Domain must end with .i2p\r\n<br>\r\n<br>\r\n"; |
|
|
|
|
else |
|
|
|
|
s << "<b>ERROR</b>: Domain can't end with .b32.i2p\r\n<br>\r\n<br>\r\n"; |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
s << "<b>ERROR</b>: Such destination is not found\r\n<br>\r\n<br>\r\n"; |
|
|
|
|
else |
|
|
|
|
s << "<b>ERROR</b>: Domain must end with .i2p\r\n<br>\r\n<br>\r\n"; |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
s << "<b>ERROR</b>: Such destination is not found\r\n<br>\r\n<br>\r\n"; |
|
|
|
|
|
|
|
|
|
s << "<a href=\"" << webroot << "?page=local_destination&b32=" << b32 << "\">Return to destination page</a>\r\n"; |
|
|
|
|
return; |
|
|
|
|