From 8cf07b67ae9f7f9a8e9f54d78e630251f680e09c Mon Sep 17 00:00:00 2001 From: Jacob Parker Date: Thu, 10 Nov 2011 22:17:58 -0500 Subject: [PATCH] starting some test client code, minor changes --- .gitignore | 6 +++- database/Makefile | 8 +++-- database/client.cpp | 68 ++++++++++++++++++++++++++++++++++++----- database/db_if.cpp | 2 +- database/dump.cpp | 43 ++++++++++++++++++++++++++ database/linus_sha1.c | 2 +- database/nameserver.cpp | 1 + 7 files changed, 117 insertions(+), 13 deletions(-) create mode 100644 database/dump.cpp diff --git a/.gitignore b/.gitignore index 5f4ed6d..09fd6cc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,8 @@ a.out db *.swp - +*.o +*.d +dump +client +server diff --git a/database/Makefile b/database/Makefile index dd24e1a..0d78513 100644 --- a/database/Makefile +++ b/database/Makefile @@ -1,6 +1,6 @@ # POS -CXX = g++ +CXX = @g++ ifndef NDEBUG CXXFLAGS = -g -O0 -Wall -I/users/m4burns/thrift/include/thrift -I. -Igen-cpp else @@ -17,12 +17,13 @@ DEPS = $(patsubst %.c,%.d,$(CPPDEPS)) SERVER = server CLIENT = client +DUMP = dump ################################################################## .PHONY : all clean -all : $(SERVER) $(CLIENT) +all : $(SERVER) $(CLIENT) $(DUMP) %.d : %.cpp $(CXX) -MM $(CXXFLAGS) $^ > $@ @@ -46,6 +47,9 @@ $(SERVER) : $(OBJECTS) gen-cpp/Pos_server.skeleton.o $(CLIENT) : $(OBJECTS) client.o $(CXX) $(CXXFLAGS) $(OBJECTS) client.o -o $@ $(LDFLAGS) +$(DUMP) : $(OBJECTS) dump.o + $(CXX) $(CXXFLAGS) $(OBJECTS) dump.o -o $@ $(LDFLAGS) + ################################################################# clean : diff --git a/database/client.cpp b/database/client.cpp index cdc8d18..f2d1c9b 100644 --- a/database/client.cpp +++ b/database/client.cpp @@ -17,23 +17,75 @@ using namespace pos; using namespace boost; int main(int argc, char** argv) { - shared_ptr socket(new TSocket("localhost", 9090)); - shared_ptr transport(new TBufferedTransport(socket)); + if (argc != 2) { + cout << "Usage: client \n"; + exit(1); + } + shared_ptr socket(new TSocket(argv[1], 9090)); + shared_ptr transport(new TFramedTransport(socket)); shared_ptr protocol(new TBinaryProtocol(transport)); PosClient client(protocol); try { transport->open(); - - client.ping(); - std::string s; - client.getSalt(s); - cout << (s = SHA1Hash(s + "balls").toHex()) << "\n"; - cout << s << " " << client.associateHashWithName(s, "dongs dongs dongs", "m4burns") << "\n"; } catch(TException & e) { std::cerr << e.what() << "\n"; } + string s; + while(1) { + uint32_t in; + std::cout << "(0) Exit\n(1) Add card to member\n(2) Register new product\n(3) Buy a product\n(4) Deposit money\n(5) Print balance\n> "; + std::cin >> in; + switch(in) { + case 0: exit(0); + case 1: { + string user, card; + cout << "Username: "; + cin >> user; + cout << "Swipe card: "; + getline(cin,s); + getline(cin,card); + client.getSalt(s); + s = SHA1Hash(s+"balls").toHex(); + client.associateHashWithName(s, card, user); + break; + } + case 4: { + string user; + int32_t delta; + cout << "Username: "; + cin >> user; + cout << "Amount to change balance by: "; + cin >> delta; + client.getSalt(s); + s = SHA1Hash(s+"balls").toHex(); + client.doTransactionOnHash(s, user, delta); + break; + } + case 5: { + string user; + cout << "Username: "; + cin >> user; + cout << "$" << client.getNameAccountBalance(user) << "\n"; + break; + } + } + } + + + + for (uint32_t i =0; i < 5000; i++) { + std::string s; + client.getSalt(s); + s = SHA1Hash(s + "balls").toHex(); + client.doTransactionOnName(s, "j3parker", 1); + } + + + cout << "j3parker balance: " << client.getNameAccountBalance("j3parker") << "\n"; + cout << "m4burns balance: " << client.getNameAccountBalance("m4burns") << "\n"; + return 0; } diff --git a/database/db_if.cpp b/database/db_if.cpp index e91a2f5..4790899 100644 --- a/database/db_if.cpp +++ b/database/db_if.cpp @@ -50,7 +50,7 @@ std::string DbIf::getSalt() { fclose(rand_in); // zero-terminated strings suck - for(int i=0;i +#include +#include +#include +#include +#include "Pos.h" +#include "sha1.h" +#include + +using namespace std; +using namespace apache::thrift; +using namespace apache::thrift::protocol; +using namespace apache::thrift::transport; + +using namespace pos; + +using namespace boost; + +int main(int argc, char** argv) { + if (argc != 2) { + cout << "Usage: dump \n"; + exit(1); + } + shared_ptr socket(new TSocket(argv[1], 9090)); + shared_ptr transport(new TFramedTransport(socket)); + shared_ptr protocol(new TBinaryProtocol(transport)); + PosClient client(protocol); + + try { + transport->open(); + } catch(TException & e) { + std::cerr << e.what() << "\n"; + exit(1); + } + + vector data; + client.toString(data); + for (uint32_t i = 0; i < data.size(); i++) { + cout << data[i] << "\n"; + } + return 0; +} + diff --git a/database/linus_sha1.c b/database/linus_sha1.c index 497c192..fce745c 100644 --- a/database/linus_sha1.c +++ b/database/linus_sha1.c @@ -38,7 +38,7 @@ void blk_SHA1_Update(blk_SHA_CTX *ctx, const void *data, unsigned long len) */ if (lenW) { int left = 64 - lenW; - if (len < left) + if (len < (unsigned long)left) left = len; memcpy(lenW + (char *)ctx->W, data, left); lenW = (lenW + left) & 63; diff --git a/database/nameserver.cpp b/database/nameserver.cpp index 434dbb9..6ffa94a 100644 --- a/database/nameserver.cpp +++ b/database/nameserver.cpp @@ -12,6 +12,7 @@ std::string NameServer::get_name (uint32_t id) { return "???"; } cache[pwd->pw_name] = id; + std::cerr << "Did reverse LDAP lookup on " << pwd->pw_name << "\n"; return pwd->pw_name; }