Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updates on option parser & testing #19

Merged
merged 4 commits into from Jan 31, 2014
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitignore
@@ -1,5 +1,5 @@
# i2pd
*.o
obj/*.o
router.info
router.keys
i2p
Expand Down
18 changes: 10 additions & 8 deletions Makefile
@@ -1,26 +1,28 @@

CC = g++
CFLAGS = -g -Wall -std=c++0x
OBJECTS = i2p.o base64.o NTCPSession.o RouterInfo.o Transports.o RouterContext.o \
NetDb.o LeaseSet.o Tunnel.o TunnelEndpoint.o TunnelGateway.o TransitTunnel.o \
I2NPProtocol.o Log.o Garlic.o HTTPServer.o Streaming.o Identity.o SSU.o util.o
OBJECTS = obj/i2p.o obj/base64.o obj/NTCPSession.o obj/RouterInfo.o obj/Transports.o \
obj/RouterContext.o obj/NetDb.o obj/LeaseSet.o obj/Tunnel.o obj/TunnelEndpoint.o \
obj/TunnelGateway.o obj/TransitTunnel.o obj/I2NPProtocol.o obj/Log.o obj/Garlic.o \
obj/HTTPServer.o obj/Streaming.o obj/Identity.o obj/SSU.o obj/util.o
INCFLAGS =
LDFLAGS = -Wl,-rpath,/usr/local/lib -lcryptopp -lboost_system -lboost_filesystem -lpthread
LIBS =

all: i2p

i2p: $(OBJECTS)
$(CC) -o i2p $(OBJECTS) $(LDFLAGS) $(LIBS)
i2p: $(OBJECTS:obj/%=obj/%)
$(CC) -o $@ $^ $(LDFLAGS) $(LIBS)

.SUFFIXES:
.SUFFIXES: .c .cc .C .cpp .o

.cpp.o :
$(CC) -o $@ -c $(CFLAGS) $< $(INCFLAGS)
obj/%.o : %.cpp
mkdir -p obj
$(CC) -o $@ $< -c $(CFLAGS) $(INCFLAGS)

clean:
rm -f *.o
rm -fr obj

.PHONY: all
.PHONY: clean
30 changes: 30 additions & 0 deletions README.md
Expand Up @@ -8,3 +8,33 @@ Requires gcc 4.6 and higher, boost 1.46 and higher, crypto++
on Windows

Requires msvs2013, boost 1.46 and higher, crypto++


Testing
-------

First, build it.

* $ cd i2pd
* $ make

Now, copy your netDb folder from your Java I2P config dir. (The one with r0, r1, r2, ... folders in it) to the source folder where your i2p binary is.

Next, find out your public ip. (find it for example at http://www.whatismyip.com/)

Then, run it with:

$ ./i2p --host=YOUR_PUBLIC_IP


Other options:
* --port= - The port to listen on
* --httpport= - The http port to listen on


To visit an I2P page, you need to find the b32 address of your destination.
After that, go to the webconsole and add it behind the url. (Remove http:// and b32.i2p from the address)

This should resulting in for example:
http://localhost:7070/4oes3rlgrpbkmzv4lqcfili23h3cvpwslqcfjlk6vvguxyggspwa

5 changes: 4 additions & 1 deletion i2p.cpp
Expand Up @@ -14,14 +14,17 @@

int main( int argc, char* argv[] )
{
i2p::util::ParseArguments(argc,argv);
i2p::util::OptionParser(argc,argv);
#ifdef _WIN32
setlocale(LC_CTYPE, "");
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
setlocale(LC_ALL, "Russian");
#endif

//TODO: This is an ugly workaround. fix it.
//TODO: Autodetect public IP.
i2p::context.OverrideNTCPAddress(i2p::util::GetCharArg("--host", "127.0.0.1"), i2p::util::GetIntArg("--port", 17070));
int httpport = i2p::util::GetIntArg("--httpport", 7070);

i2p::util::HTTPServer httpServer (httpport);
Expand Down
8 changes: 4 additions & 4 deletions util.cpp
Expand Up @@ -6,7 +6,7 @@ namespace util
{
std::map<std::string, std::string> mapArgs;

void ParseArguments(int argc, const char* const argv[])
void OptionParser(int argc, const char* const argv[])
{
mapArgs.clear();
for (int i = 1; i < argc; i++)
Expand All @@ -33,11 +33,11 @@ int GetIntArg(const std::string& strArg, int nDefault)
return nDefault;
}

std::string GetStringArg(const std::string& strArg, std::string nDefault)
const char* GetCharArg(const std::string& strArg, const std::string& nDefault)
{
if (mapArgs.count(strArg))
return mapArgs[strArg];
return nDefault;
return mapArgs[strArg].c_str();
return nDefault.c_str();
}


Expand Down
3 changes: 2 additions & 1 deletion util.h
Expand Up @@ -9,8 +9,9 @@ namespace i2p
namespace util
{
extern std::map<std::string, std::string> mapArgs;
void ParseArguments(int argc, const char* const argv[]);
void OptionParser(int argc, const char* const argv[]);
int GetIntArg(const std::string& strArg, int nDefault);
const char* GetCharArg(const std::string& strArg, const std::string& nDefault);

}
}
Expand Down