Skip to content

Commit

Permalink
Rework webset path tokens
Browse files Browse the repository at this point in the history
  • Loading branch information
fireduck64 committed Nov 9, 2019
1 parent 9e3646e commit 784e818
Showing 1 changed file with 50 additions and 17 deletions.
67 changes: 50 additions & 17 deletions src/WebServer.java
Expand Up @@ -13,6 +13,7 @@
import java.net.InetSocketAddress;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import java.util.BitSet;
import java.util.StringTokenizer;
import java.util.logging.Logger;
Expand Down Expand Up @@ -71,29 +72,44 @@ public void handle(HttpExchange t) throws IOException {

print_out.println("Request: " + uri);

ArrayList<String> tokens = tokenizePath(uri);
List<String> tokens = tokenizePath(uri);
print_out.println("Tokens: " + tokens);

try
{
ChannelID cid = null;
String host = t.getRequestHeaders().get("Host").get(0);
cid = getChannelFromHost(host);

if ((tokens.size() >= 2) && (tokens.get(0).equals("channel")))
{
cid = ChannelID.fromString(tokens.get(1));
tokens = tokens.subList(2, tokens.size());
}

if (tokens.size() == 0)
{
handleRoot(t);
return;
if (cid == null)
{
handleRoot(t);
return;
}
else
{
tokens.add("index.html");
}

}
else if ((tokens.get(0).equals("channel")) && (tokens.size() >= 2))
if (cid != null)
{
ChannelID cid = ChannelID.fromString(tokens.get(1));
if ((tokens.size() >= 3) && (tokens.get(2).equals("api")))
if ((tokens.size() >= 1) && (tokens.get(0).equals("api")))
{
handleChannelApi(cid, tokens, t);

}
else
{
handleChannelGet(cid, tokens, t);
}

}
else
{
Expand All @@ -117,7 +133,7 @@ else if ((tokens.get(0).equals("channel")) && (tokens.size() >= 2))
out.close();

}
private void handleChannelApi(ChannelID cid, ArrayList<String> tokens, HttpExchange t)
private void handleChannelApi(ChannelID cid, List<String> tokens, HttpExchange t)
throws Exception
{
ChannelContext ctx = node.getChannelSubscriber().openChannel(cid);
Expand All @@ -126,7 +142,7 @@ private void handleChannelApi(ChannelID cid, ArrayList<String> tokens, HttpExcha
int code = 200;

String api_path = "";
for(int i=3; i<tokens.size(); i++)
for(int i=1; i<tokens.size(); i++)
{
api_path += "/" + tokens.get(i);
}
Expand Down Expand Up @@ -177,9 +193,6 @@ else if (api_path.equals("/beta/am_i_block_signer"))
else if (api_path.equals("/beta/block/submit_files"))
{
processFileUpload(print_out, t, ctx);



}
else
{
Expand All @@ -196,7 +209,7 @@ else if (api_path.equals("/beta/block/submit_files"))
}


private void handleChannelGet(ChannelID cid, ArrayList<String> tokens, HttpExchange t)
private void handleChannelGet(ChannelID cid, List<String> tokens, HttpExchange t)
throws IOException
{
ChannelContext ctx = node.getChannelSubscriber().openChannel(cid);
Expand All @@ -205,15 +218,15 @@ private void handleChannelGet(ChannelID cid, ArrayList<String> tokens, HttpExcha
int code = 200;

String path = "/web";
for(int i=2; i<tokens.size(); i++)
for(int i=0; i<tokens.size(); i++)
{
path += "/" + tokens.get(i);
}

ByteString content_id = ChanDataUtils.getData(ctx, path);
if ((content_id == null) && (path.startsWith("/web/content_direct/")))
{
content_id = HexUtil.hexStringToBytes(tokens.get(3));
content_id = HexUtil.hexStringToBytes(tokens.get(1));

}
if (content_id == null)
Expand Down Expand Up @@ -334,8 +347,28 @@ private void handleRoot(HttpExchange t)
}
}

private ChannelID getChannelFromHost(String host)
throws Exception
{
if (host.endsWith(".snowblossom.io"))
{
StringTokenizer stok = new StringTokenizer(host,".");
ArrayList<String> tokens = new ArrayList<>();

while(stok.hasMoreTokens())
{
tokens.add( stok.nextToken());
}
if (tokens.size() == 3)
{
return ChannelID.fromString(tokens.get(0));
}
}

return null;
}

ArrayList<String> tokenizePath(URI uri)
private ArrayList<String> tokenizePath(URI uri)
{
StringTokenizer stok = new StringTokenizer(uri. getPath(), "/");
ArrayList<String> tokens = new ArrayList<>();
Expand Down

0 comments on commit 784e818

Please sign in to comment.