/* Command line client to test trlid */ #include #include #include #include #include #include #include #include #include #include #include "fdpass.h" #include "hostname.h" using namespace std; #define trlid_client_listnews_v1_NOTNEED #define trlid_client_listnews_v2_NOTNEED #define trlid_client_listnews_v3_NOTNEED #define trlid_client_getnews_NOTNEED #define trlid_client_getnews_v2_NOTNEED #define trlid_client_validextraurl_NOTNEED #include "proto/trlid_client.protoch" #include "proto/trlid_admin.protoch" #define trli_sessiond_admin_getsessioninfo_NOTNEED #define trli_sessiond_admin_test_NOTNEED #define trli_sessiond_admin_createsession_NOTNEED #define trli_sessiond_admin_deletesessions_NOTNEED #define trli_sessiond_admin_setsession_NOTNEED #define trli_sessiond_admin_getsession_NOTNEED #include "proto/trli-sessiond_admin.protoch" static string trlid_createsession(CONNECT_INFO &con) { glocal string ret; (con); glocal.ret = sessionid; return glocal.ret; } static void trlid_deletesession(CONNECT_INFO &con, string &sessionid) { (con,sessionid); } static bool verbose = true; static string trlid_login (CONNECT_INFO &con, PARAM_STRING email, PARAM_STRING password) { glocal string ret; glocal const char *email = email.ptr; glocal string sessionid = trlid_createsession(con); (con,glocal.sessionid,email,password); if (verbose || !success) printf ("\tlogin %s success=%d sessionid=%s\n",glocal.email,success,glocal.sessionid.c_str()); if (success) glocal.ret = glocal.sessionid; return glocal.ret; } static string trlid_login (CONNECT_INFO &con, const char *user_suffix) { glocal string ret; if (user_suffix == NULL){ tlmp_error ("trlid_login user_suffix=NULL\n"); exit (-1); }else if (strcmp(user_suffix,"admin")==0){ glocal.ret = trlid_login(con,"admin@" TRUELIES,"admin"); }else if (strcmp(user_suffix,"anonymous")==0){ glocal.ret = trlid_createsession(con); }else{ glocal const char *user_suffix = user_suffix; string email=string("jacques-")+user_suffix+string("@" TRUELIES); string password=string("pass-")+user_suffix; glocal.ret = trlid_login(con,email.c_str(),password.c_str()); } return glocal.ret; } static void trlid_logout (CONNECT_INFO &con, const PARAM_STRING sessionid) { (con,sessionid); if (verbose) printf ("\tlogout\n"); } static void test_execute (const char *cmd) { if (cmd != NULL) system(cmd); } struct XURL{ string url; string content; XURL (const char *_url){ url = _url; } }; int main (int argc, char *argv[]) { glocal int ret = -1; glocal const char *cli_port = "9000"; glocal const char *adm_port = "9000"; glocal const char *sessport = "9200"; glocal const char *host = "192.168.4.1"; glocal const char *client_bind = "192.168.5.5"; glocal const char *admin_bind = "192.168.5.6"; glocal const char *sess_bind = "192.168.5.3"; glocal const char *testadduser = NULL; glocal const char *testaddincomplete = NULL; glocal const char *testlogin = NULL; glocal const char *testdeleteuser = NULL; glocal const char *testaddnews = NULL; glocal const char *testaddnewsurl = NULL; glocal const char *testvalidnews = NULL; glocal const char *testaddblog = NULL; glocal const char *testaddblogcomment = NULL; glocal const char *testaddproof = NULL; glocal const char *testaddcomment = NULL; glocal const char *testaddargument = NULL; glocal const char *testlistarguments = NULL; glocal const char *testgetnews = NULL; glocal const char *testgetnewnews = NULL; glocal bool testapprovenews = false; glocal bool testapprovenewsurl = false; glocal bool testgetextraurls = false; glocal bool testrejectnews = false; glocal bool testlistsubjects = false; glocal bool testlistnews = false; glocal const char *testlistnewsv2 = NULL; glocal bool testlistnewnews = false; glocal bool testlistblog = false; glocal const char *testlistblogcomments=NULL; glocal const char *testlistproofs = NULL; glocal const char *testlistcomments = NULL; glocal bool testsystem = false; glocal bool testcreatesessions = false; glocal bool testgetstats = false; glocal const char *exec1 = NULL; glocal const char *exec2 = NULL; glocal string client_secret; glocal string admin_secret; glocal int workers = 1; glocal int nbrep = 1; glocal int nbrows = 10; glocal const char *extra = ""; glocal const char *extra2 = ""; glocal bool idonly = false; glocal const char *loadnewsdir = NULL; glocal const char *loadblogdir = NULL; glocal const char *loaduserfile = NULL; glocal.ret = (argc,argv); setproginfo ("trlid-client",VERSION ,"Command line client to test trlid\n" "\n" "\tlogin email password\n" "\tlogout user\n" "\tadduser name email password = confirmid\n" "\tconfirmuser id\n" "\tdeleteuser userid = confirmid\n" "\tconfirmdelete id\n" "\taddnews sessionid url title text\n" "\taddproof sessionid newsid valid type title text\n" "\taddcomment sessionid proofid vote text\n" "\tlistnews offset nb = newsid title url\n" "\tlistproofs newsid offset nb\n" "\tlistcomments proofid offset nb\n"); setarg ('h',"host","Host name of IP of trlid server",glocal.host,false); setarg ('p',"cli_port","client TCP port of trlid server (or unix path)",glocal.cli_port,false); setarg (' ',"adm_port","admin TCP port of trlid server (or unix path)",glocal.adm_port,false); setarg (' ',"sessport","TCP port of sessiond server",glocal.sessport,false); setarg (' ',"client_secret","Secret used to sign client requests",glocal.client_secret,true); setarg (' ',"client_bind","Client IP used to reach the host",glocal.client_bind,false); setarg (' ',"admin_secret","Secret used to sign admin requests",glocal.admin_secret,true); setarg (' ',"admin_bind","Client IP used to reach the host",glocal.admin_bind,false); setarg (' ',"sess_bind","Client IP used to reach sessiond",glocal.sess_bind,false); setgrouparg ("File operations"); setarg (' ',"loadnews","Load news from files",glocal.loadnewsdir,false); setarg (' ',"loadusers","Load user accounts from file",glocal.loaduserfile,false); setarg (' ',"loadblog","Load blog from files",glocal.loadblogdir,false); setgrouparg ("Tests"); setarg (' ',"exec1","Execute a command in the middle of the test",glocal.exec1,false); setarg (' ',"exec2","Execute a command in the middle of the test",glocal.exec2,false); setarg (' ',"testadduser","Sequence adduser confirmuser",glocal.testadduser,false); setarg (' ',"testaddincomplete","Sequence adduser without confirm",glocal.testaddincomplete,false); setarg (' ',"testlogin","Sequence login logout",glocal.testlogin,false); setarg (' ',"testdeleteuser","Sequence login deleteuser",glocal.testdeleteuser,false); setarg (' ',"testaddnews","Sequence addnews",glocal.testaddnews,false); setarg (' ',"testaddnewsurl","Sequence addnews url",glocal.testaddnewsurl,false); setarg (' ',"testvalidnews","Sequence validnews",glocal.testvalidnews,false); setarg (' ',"testaddblog","Sequence addblog",glocal.testaddblog,false); setarg (' ',"testaddblogcomment","Sequence addblogcomment",glocal.testaddblogcomment,false); setarg (' ',"testaddproof","Sequence addproof",glocal.testaddproof,false); setarg (' ',"testaddcomment","Sequence addcomment",glocal.testaddcomment,false); setarg (' ',"testaddargument","Sequence addargument",glocal.testaddargument,false); setarg (' ',"testlistarguments","Sequence listarguments",glocal.testlistarguments,false); setarg (' ',"testapprovenews","Approve all pending news",glocal.testapprovenews,false); setarg (' ',"testrejectnews","Reject first pending news",glocal.testrejectnews,false); setarg (' ',"testapprovenewsurl","Approve all pending extra news url",glocal.testapprovenewsurl,false); setarg (' ',"testgetextraurls","Get the extra URLs for all news",glocal.testgetextraurls,false); setarg (' ',"testgetnews","get one news",glocal.testgetnews,false); setarg (' ',"testgetnewnews","get one news to approve",glocal.testgetnewnews,false); setarg (' ',"testlistsubjects","List all subjects",glocal.testlistsubjects,false); setarg (' ',"testlistnews","List all news",glocal.testlistnews,false); setarg (' ',"testlistnewsv2","List all news for one subject",glocal.testlistnewsv2,false); setarg (' ',"testlistnewnews","List all new news",glocal.testlistnewnews,false); setarg (' ',"testlistproofs","List all proofs for a news",glocal.testlistproofs,false); setarg (' ',"testlistcomments","List all comments for a proof",glocal.testlistcomments,false); setarg (' ',"testlistblog","List all blogs",glocal.testlistblog,false); setarg (' ',"testlistblogcomments","List all comments for a blog",glocal.testlistblogcomments,false); setarg (' ',"testsystem","Test components",glocal.testsystem,false); setarg (' ',"testcreatesessions","Create many sessions",glocal.testcreatesessions,false); setarg (' ',"testgetstats","Get statistics about news",glocal.testgetstats,false); setarg (' ',"workers","Test concurent access",glocal.workers,false); setarg (' ',"nbrep","Number of repetition per worker",glocal.nbrep,false); setarg (' ',"nbrows","Number of rows requested",glocal.nbrows,false); setarg (' ',"extra","Extra string when adding something",glocal.extra,false); setarg (' ',"extra2","Extra second string when adding something",glocal.extra2,false); setarg (' ',"idonly","Shows only ID when listing records",glocal.idonly,false); glocal int ret = -1; // Used for testing glocal CONNECT_INFO con_cli; glocal CONNECT_INFO con_adm; glocal CONNECT_INFO con_sess; glocal.con_cli.secret = glocal.client_secret; glocal.con_cli.host = glocal.host; glocal.con_cli.port = glocal.cli_port; glocal.con_cli.bind = glocal.client_bind; glocal.con_adm.secret = glocal.admin_secret; glocal.con_adm.host = glocal.host; glocal.con_adm.port = glocal.adm_port; glocal.con_adm.bind = glocal.admin_bind; glocal.con_sess.secret = glocal.admin_secret; glocal.con_sess.host = glocal.host; glocal.con_sess.port = glocal.sessport; glocal.con_sess.bind = glocal.sess_bind; if (glocal.loaduserfile != NULL){ (glocal.loaduserfile,true); vector tb; int n = str_splitline(line,' ',tb); if (n == 3){ glocal string name = tb[0]; string &email = tb[1]; string &pass = tb[2]; string sessionid = trlid_createsession(glocal.con_cli); if (sessionid.size() > 0){ (glocal.con_cli,sessionid,glocal.name,email,pass); //printf ("\tid=%s msg=%s\n",confirmid,msg); if (confirmid[0] == '\0'){ printf ("\tEmpty confirmid msg=%s\n",msg); }else{ (glocal.con_cli,confirmid); printf ("\t%-15s %s\n",glocal.name.c_str(),msg); } trlid_deletesession(glocal.con_sess,sessionid); } } return 0; }else if (glocal.loadnewsdir != NULL){ verbose = false; glocal string admin_sessionid = trlid_login(glocal.con_cli,"admin@" TRUELIES,glocal.extra); if (glocal.admin_sessionid.size() > 0){ (glocal.loadnewsdir); if (strcmp(basename,"copy.sh")==0) return; glocal string user; glocal string password; glocal string title; glocal string url; glocal string content; glocal vector subjects; glocal const char *filename = basename; glocal bool error = false; glocal vector xurls; (path,true); if (noline == 0){ glocal.user = line; }else if (noline == 1){ vector tb; int n = str_splitlineq (line,tb); if (n >= 1){ glocal.password = tb[0]; for (int i=1; i 0){ string &c = glocal.xurls[glocal.xurls.size()-1].content; c += line; c += "\n"; }else{ glocal.content += line; glocal.content += "\n"; } return 0; if (glocal.content.empty()){ tlmp_error ("*** Invalid news, empty content: %s\n",path); }else if (glocal.error){ tlmp_error ("!!! File %s not processed\n",path); }else{ // Removes trailing blank lines strip_end (glocal.content); glocal.content += "\n"; for (auto &x:glocal.xurls){ strip_end(x.content); x.content += "\n"; } glocal string sessionid = trlid_login (glocal.con_cli,glocal.user,glocal.password); if (glocal.sessionid.size() > 0){ (glocal.con_cli,glocal.url); glocal string newsid = newsid; if (success){ (glocal.con_adm,glocal.admin_sessionid,newsid,glocal.content); if (!success || strcasecmp(msg,"content identical")!=0){ printf ("%s modifynews: success=%d msg=%s %s\n" ,success ? " " : "***" ,success,msg,glocal.filename); } }else{ (glocal.con_cli,glocal.sessionid,glocal.url,glocal.title,glocal.content); printf ("%s addnews:success=%d newsid=%s msg=%s %s\n" ,success ? " " : "***" ,success,newsid,msg,glocal.filename); if (success){ glocal.newsid = newsid; glocal const char *newsid = newsid; (glocal.con_adm,glocal.admin_sessionid,glocal.newsid); printf ("%s approvenews %s success=%d msg=%s %s\n" ,success ? " " : "***" ,glocal.newsid,success,msg,glocal.filename); } } if (glocal.newsid.size() > 0){ if (glocal.subjects.size() > 0){ (glocal.con_adm,glocal.admin_sessionid,glocal.newsid.c_str(),glocal.subjects); if (!success || strcasecmp(msg,"no change")!=0){ printf ("%s assignsubject success=%d msg=%s %s\n" ,success ? " " : "***" ,success,msg,glocal.filename); } } for (auto x:glocal.xurls){ glocal const char *url = x.url.c_str(); (glocal.con_cli,glocal.admin_sessionid,glocal.newsid,x.url,x.content); if (success || strncmp(msg,"Url al",6)!=0){ printf ("\t\txurl: %s success=%d msg=%s url=%s\n",glocal.filename,success,msg,glocal.url); } } } trlid_logout (glocal.con_cli,glocal.sessionid); } } trlid_logout (glocal.con_cli,glocal.admin_sessionid); } }else if (glocal.testadduser){ string name=string("jacques-")+glocal.testadduser; string email=string("jacques-")+glocal.testadduser+string("@" TRUELIES); string password=string("pass-")+glocal.testadduser; if (strcmp(glocal.testadduser,"admin")==0){ name="admin"; email="admin@" TRUELIES; password="admin"; } printf ("testadduser email=%s\n",email.c_str()); string sessionid = trlid_createsession(glocal.con_cli); if (sessionid.size() > 0){ (glocal.con_cli,sessionid,name,email,password); printf ("\tid=%s msg=%s\n",confirmid,msg); if (confirmid[0] == '\0'){ printf ("\tEmpty confirmid\n"); }else{ (glocal.con_cli,confirmid); printf ("\tsuccess=%d %s\n",success,msg); } trlid_deletesession(glocal.con_sess,sessionid); } }else if (glocal.testaddincomplete){ string name=string("jacques-")+glocal.testaddincomplete; string email=string("jacques-")+glocal.testaddincomplete+string("@" TRUELIES); string password=string("pass-")+glocal.testaddincomplete; printf ("testaddincomplete email=%s\n",email.c_str()); string sessionid = trlid_createsession(glocal.con_cli); if (sessionid.size() > 0){ (glocal.con_cli,sessionid,name,email,password); if (confirmid[0] == '\0'){ printf ("\tEmpty confirmid: msg=%s\n",msg); }else{ printf ("\tid=%s msg=%s\n",confirmid,msg); } trlid_deletesession(glocal.con_sess,sessionid); } }else if (glocal.testlogin){ glocal string sessionid = trlid_createsession(glocal.con_cli); string email=string("jacques-")+glocal.testlogin+string("@" TRUELIES); string password=string("pass-")+glocal.testlogin; (glocal.con_cli,glocal.sessionid,email,password); printf ("testlogin success=%d\n",success); test_execute (glocal.exec1); if (success){ (glocal.con_cli,glocal.sessionid); printf ("\tlogout ok\n"); } }else if (glocal.testdeleteuser){ // We log twice with the same account and then delete the account (A user is allowed to do so) glocal string email=string("jacques-")+glocal.testdeleteuser+string("@" TRUELIES); glocal string password=string("pass-")+glocal.testdeleteuser; glocal string sessionid1 = trlid_createsession(glocal.con_cli); if (strcmp(glocal.testdeleteuser,"admin")==0){ glocal.email="admin@" TRUELIES; glocal.password="admin"; } // We start with a login to get a session id (glocal.con_cli,glocal.sessionid1,glocal.email,glocal.password); printf ("login1 success=%d sessionid=%s\n",success,glocal.sessionid1.c_str()); glocal string sessionid2 = trlid_createsession(glocal.con_cli); (glocal.con_cli,glocal.sessionid2,glocal.email,glocal.password); printf ("login2 success=%d sessionid=%s\n",success,glocal.sessionid2.c_str()); if (success){ test_execute (glocal.exec1); (glocal.con_cli,glocal.sessionid2); printf ("deleteuser email=%s deleteid=%s\n",email,confirmid); (glocal.con_cli,confirmid); printf ("delete done success=%d msg=%s\n",success,msg); test_execute (glocal.exec2); } }else if (glocal.testaddnews){ printf ("addnews %s extra=%s\n",glocal.testaddnews,glocal.extra); string sessionid = trlid_login (glocal.con_cli,glocal.testaddnews); if (sessionid.size() > 0){ string url = string_f ("url-%s-%s",glocal.testaddnews,glocal.extra); string title = string_f("title-%s %s",glocal.testaddnews,glocal.extra); string text = string_f("text-%s %s",glocal.testaddnews,glocal.extra2); (glocal.con_cli,sessionid,url,title,text); printf ("\tsuccess=%d newsid=%s msg=%s\n",success,newsid,msg); trlid_logout (glocal.con_cli,sessionid); } }else if (glocal.testaddnewsurl){ const char *newsid = glocal.testaddnewsurl; printf ("addnewsurl %s extra=%s\n",newsid,glocal.extra); string sessionid = trlid_login (glocal.con_cli,glocal.extra); if (sessionid.size() > 0){ string url = string_f ("extraurl-{%s}-%s",newsid,glocal.extra); string text = string_f("text-{%s} %s",newsid,glocal.extra2); (glocal.con_cli,sessionid,newsid,url,text); printf ("\tsuccess=%d msg=%s\n",success,msg); trlid_logout (glocal.con_cli,sessionid); } }else if (glocal.testvalidnews){ (glocal.con_cli,glocal.testvalidnews); printf ("\tsuccess=%d validnews=%s\n",success,glocal.testvalidnews); }else if (glocal.testaddproof){ printf ("addproof %s extra %s\n",glocal.testaddproof,glocal.extra); glocal string sessionid = trlid_login (glocal.con_cli,glocal.testaddproof); if (glocal.sessionid.size() > 0){ (glocal.con_cli,0,1); if (newsids.size() == 1){ printf ("\tnewsid = %s title = %s\n",newsids[0],titles[0]); string url = string_f("url-%s-%s",glocal.testaddproof,glocal.extra); string title = string_f("title-%s %s",glocal.testaddproof,glocal.extra); string text = string_f("text-%s %s",glocal.testaddproof,glocal.extra); unsigned valid = 1; unsigned type = 0; // sessionid newsid valid type title text (glocal.con_cli,glocal.sessionid,newsids[0],valid,type,title,text); printf ("\taddproof success=%d proofid=%s msg=%s\n",success,proofid,msg); } trlid_logout (glocal.con_cli,glocal.sessionid); } }else if (glocal.testaddcomment){ printf ("addcomment %s extra=%s\n",glocal.testaddcomment,glocal.extra); string sessionid = trlid_login (glocal.con_cli,glocal.testaddcomment); if (sessionid.size() > 0){ string text = string("text-")+glocal.testaddcomment; glocal string proofid; (glocal.con_cli,0,1); if (newsids.size() == 1){ printf ("\tnewsid=%s\n",newsids[0]); (glocal.con_cli,newsids[0],0,1); if (proofids.size()==1){ glocal.proofid = proofids[0]; } } printf ("\tproofid=%s\n",glocal.proofid.c_str()); unsigned vote = 1; // addcomment sessionid proofid vote:u text = success:b commentid msg (glocal.con_cli,sessionid,glocal.proofid,vote,text); printf ("\taddcomment success=%d commentid=%s msg=%s\n",success,commentid,msg); trlid_logout (glocal.con_cli,sessionid); } }else if (glocal.testrejectnews){ printf ("rejectnews (first pending)\n"); // Reject the first pending news glocal string sessionid = trlid_login(glocal.con_cli,"admin@" TRUELIES,"admin"); if (glocal.sessionid.size() > 0){ (glocal.con_adm,glocal.sessionid,0,10); for (auto n:newsids){ glocal const char *newsid = n; (glocal.con_adm,glocal.sessionid,glocal.newsid); printf ("\trejectnews %s success=%d msg=%s\n",glocal.newsid,success,msg); break; } trlid_logout (glocal.con_cli,glocal.sessionid); } }else if (glocal.testapprovenews){ printf ("Approvenews (all pending)\n"); // Approve all pending news glocal string sessionid = trlid_login(glocal.con_cli,"admin@" TRUELIES,"admin"); if (glocal.sessionid.size() > 0){ (glocal.con_adm,glocal.sessionid,0,200); printf ("\tlistnewnews newsids size=%lu\n",newsids.size()); for (auto n:newsids){ glocal const char *newsid = n; (glocal.con_adm,glocal.sessionid,glocal.newsid); printf ("\tapprovenews %s success=%d msg=%s\n",glocal.newsid,success,msg); } trlid_logout (glocal.con_cli,glocal.sessionid); } }else if (glocal.testapprovenewsurl){ printf ("Approvenewsurl (all pending)\n"); // Approve all pending news extra urls glocal string sessionid = trlid_login(glocal.con_cli,"admin@" TRUELIES,"admin"); if (glocal.sessionid.size() > 0){ (glocal.con_adm,glocal.sessionid,0,200); printf ("\tlistnewnewsurl success=%d newsids size=%lu\n",success,newsids.size()); for (unsigned i=0; i(glocal.con_adm,glocal.sessionid,glocal.newsid,u); printf ("\tapprovenewsurl %s url %s success=%d msg=%s\n",glocal.newsid,glocal.url,success,msg); } } trlid_logout (glocal.con_cli,glocal.sessionid); } }else if (glocal.testgetextraurls){ (glocal.con_cli,0,200,0,1); for (auto n:newsids){ printf ("newsid: %s\n",n); (glocal.con_cli,n,0,20); for (unsigned i=0; i } }else if (glocal.testgetnews){ printf ("Getnews %s\n",glocal.testgetnews); (glocal.con_cli,glocal.testgetnews); printf ("\tsuccess=%d nickname=%s title=%s url=%s submit=%s nbopinion=%u,votes=%u,arguments=%u,nbextraurls=%u\n\t%s\n" ,success,nickname,title,url,submit,nbproof,nbcomment,nbargument,nbextraurl,content); }else if (glocal.testgetnewnews){ printf ("Getnewnews %s\n",glocal.testgetnewnews); glocal string sessionid = trlid_login(glocal.con_cli,"admin@" TRUELIES,"admin"); if (glocal.sessionid.size() > 0){ (glocal.con_adm,glocal.sessionid,glocal.testgetnewnews); printf ("\tsuccess=%d nickname=%s title=%s url=%s submit=%s\n\t%s\n",success,nickname,title,url,submit,content); trlid_logout (glocal.con_cli,glocal.sessionid); } }else if (glocal.testlistnews){ for (int i=0; i(glocal.con_cli,0,glocal.nbrows); if (glocal.idonly){ for (auto n:newsids){ printf ("%s\n",n); } }else{ printf ("internal_error=%d\n",internal_error); for (unsigned i=0; i } fflush (stdout); _exit (0); } } int st; while (wait(&st)!=-1); }else if (glocal.testlistnewsv2){ unsigned subject = atoi(glocal.testlistnewsv2); for (int i=0; i(glocal.con_cli,0,glocal.nbrows,subject,1); if (glocal.idonly){ for (auto n:newsids){ printf ("%s\n",n); } }else{ printf ("internal_error=%d\n",internal_error); for (unsigned i=0; i } fflush (stdout); _exit (0); } } int st; while (wait(&st)!=-1); }else if (glocal.testlistsubjects){ (glocal.con_cli); for (unsigned i=0; i }else if (glocal.testlistnewnews){ glocal string sessionid = trlid_login(glocal.con_cli,"admin@" TRUELIES,"admin"); if (glocal.sessionid.size() > 0){ glocal bool stop=false; for (unsigned i=0; !glocal.stop && i<10000; i++){ (glocal.con_adm,glocal.sessionid,i,1); for (auto n:newsids){ printf ("%s\n",n); } if (newsids.size() == 0) glocal.stop = true; } trlid_logout (glocal.con_cli,glocal.sessionid); } }else if (glocal.testlistproofs){ // listproofs newsid offset nb (glocal.con_cli,glocal.testlistproofs,0,10); for (unsigned i=0; i }else if (glocal.testlistcomments){ // listcomments proofid offset:u nb:u = nickname:v commentid:v proofid:v content:v submits:v (glocal.con_cli,glocal.testlistcomments,0,10); for (unsigned i=0; i }else if (glocal.testsystem){ for (int i=0; i(glocal.con_adm); if (internal_error){ printf ("Can't talk to trlid server\n"); }else{ printf ("internal_error1=%d writed=%d bdtrli1=%d bdtrli2=%d bdusers=%d sessiond1=%d sessiond2=%d compute=%d\n" ,internal_error1,writed,bdtrli1,bdtrli2,bdusers,sessiond1,sessiond2,compute); } } }else if (glocal.testcreatesessions){ printf ("testcreatesessions nbrep=%d\n",glocal.nbrep); for (int i=0; i 0){ (glocal.con_adm,glocal.admin_sessionid,glocal.blogid,glocal.title,glocal.content,glocal.created); printf ("\tsuccess=%d blogid=%s msg=%s\n",success,glocal.blogid.c_str(),msg); trlid_logout (glocal.con_cli,glocal.admin_sessionid); } }else if (glocal.testaddblogcomment){ glocal string blogid = string_f ("blogid-%s",glocal.testaddblogcomment); string user = string_f("jacques-%s",glocal.extra); glocal string content = string_f ("This is the content from user %s for blogid-%s",user.c_str(),glocal.testaddblogcomment); glocal string sessionid = trlid_login(glocal.con_cli,glocal.extra); if (glocal.sessionid.size() > 0){ (glocal.con_cli,glocal.sessionid,glocal.blogid,glocal.content); printf ("\tsuccess=%d blogid=%s msg=%s\n",success,glocal.blogid.c_str(),msg); trlid_logout (glocal.con_cli,glocal.sessionid); } }else if (glocal.testaddargument){ // We add 3 nested arguments for a news for a given user glocal string newsid = glocal.testaddargument; string user = string_f("jacques-%s",glocal.extra); glocal string title = string_f ("Title from user %s for argument-%s",user.c_str(),glocal.testaddargument); glocal string content = string_f ("This is the content from user %s for argument-%s",user.c_str(),glocal.testaddargument); glocal string sessionid = trlid_login(glocal.con_cli,glocal.extra); if (glocal.sessionid.size() > 0){ (glocal.con_cli,glocal.sessionid,glocal.newsid,"",glocal.title,glocal.content); printf ("\tsuccess=%d argid=%s msg=%s\n",success,argid,msg); glocal.title += " sub1"; glocal.content += " sub1"; (glocal.con_cli,glocal.sessionid,glocal.newsid,argid,glocal.title,glocal.content); printf ("\tsuccess=%d argid=%s msg=%s\n",success,argid,msg); glocal.title += " sub2"; glocal.content += " sub2"; (glocal.con_cli,glocal.sessionid,glocal.newsid,argid,glocal.title,glocal.content); printf ("\tsuccess=%d argid=%s msg=%s\n",success,argid,msg); trlid_logout (glocal.con_cli,glocal.sessionid); } }else if (glocal.testlistarguments){ printf ("newsid=%s\n",glocal.testlistarguments); (glocal.con_cli,glocal.testlistarguments,0,20); // argids:v nicknames:v replytos:v titles:v contents:v submits:v levels:vu for (unsigned i=0; i(glocal.con_cli,argids[i]); if (!success){ printf ("****getargument failed\n"); }else if (strcmp(nickname,glocal.nickname)!=0 || strcmp(replyto,glocal.replyto)!=0 || strcmp(submit,glocal.submit)!=0 || strcmp(title,glocal.title)!=0 || strcmp(content,glocal.content)!=0 || level != glocal.level){ printf ("***getargument mismatch\n"); } } }else if (glocal.testlistblog){ unsigned offset = glocal.extra == NULL ? 0 : atoi(glocal.extra); unsigned order = glocal.extra2 == NULL ? 0 : atoi(glocal.extra2); printf ("offset=%u order=%u\n",offset,order); (glocal.con_cli,offset,20,order); //blogids:v titles:v contents:v submits:v nbcomments:uv for (unsigned i=0; i }else if (glocal.testlistblogcomments){ unsigned offset = glocal.extra == NULL ? 0 : atoi(glocal.extra); (glocal.con_cli,glocal.testlistblogcomments,offset,20); for (unsigned i=0; i }else if (glocal.loadblogdir != NULL){ verbose = false; glocal bool load_anyway = strcmp(glocal.extra2,"any")==0; glocal string admin_sessionid = trlid_login(glocal.con_cli,"admin@" TRUELIES,glocal.extra); if (glocal.admin_sessionid.size() > 0){ (glocal.loadblogdir); if (strcmp(basename,"copyblog.sh")!=0){ glocal string created; glocal string title; glocal string content; glocal bool good = false; glocal const char *filename = basename; (path,true); if (noline == 0){ if (strcmp(line,"now")==0){ char now[20]; fdpass_asctime(time(NULL),now); glocal.created = now; }else{ glocal.created = line; } }else if (noline == 1){ glocal.good = strcasecmp(line,"good")==0; }else if (noline == 2){ glocal.title = line; }else{ glocal.content += line; glocal.content += "\n"; } return 0; if (!glocal.good && !glocal.load_anyway){ printf ("\tnot finish %s\n",glocal.filename); }else if (glocal.content.empty()){ tlmp_error ("Invalid blog, empty content: %s\n",path); }else{ (glocal.con_adm,glocal.admin_sessionid,glocal.filename,glocal.title,glocal.content,glocal.created); if (!success || strcmp(msg,"content identical")!=0){ printf ("\tsuccess=%d blogid=%-20s msg=%s\n",success,glocal.filename,msg); } } } trlid_logout (glocal.con_cli,glocal.admin_sessionid); } }else if (glocal.testgetstats){ glocal bool end = false; unsigned offset = 0; while (!glocal.end){ (glocal.con_cli,offset,10); if (newsids.size() < 10) glocal.end = true; for (unsigned i=0; i offset += 10; } }else if (1){ // More stuff to test (glocal.con_adm, "sessionid","name"); (glocal.con_adm, "sessionid",0,100); (glocal.con_cli, "sessionid","proofid"); (glocal.con_cli, "commentid"); (glocal.con_cli, "sessionid","newsid"); (glocal.con_cli, "proofid"); (glocal.con_cli, "blogid"); (glocal.con_cli, "sessionid","blogid"); }else{ tlmp_error ("No test option selected\n"); glocal.tlmpprogram.usage(); } return glocal.ret; glocal int argc = argc; glocal const char *command = argv[0]; glocal char **args = argv+1; int ret = -1; (glocal.host,glocal.cli_port,5); CONNECT_INFO con (info.handle); con.secret = glocal.client_secret; con.host = glocal.host; con.port = glocal.cli_port; #if 0 if (strcmp(glocal.command,"adduser")==0 && glocal.argc==3){ (con,glocal.args[0],glocal.args[1],glocal.args[2]); printf ("id=%s msg=%s\n",confirmid,msg); }else if (strcmp(glocal.command,"login")==0 && glocal.argc==2){ // login email password (con,glocal.args[0],glocal.args[1]); }else if (strcmp(glocal.command,"logout")==0 && glocal.argc==1){ // logout user (con,glocal.args[0]); }else if (strcmp(glocal.command,"confirmuser")==0 && glocal.argc==1){ // confirmuser id (con,glocal.args[0]); printf ("%s\n",msg); }else if (strcmp(glocal.command,"deleteuser")==0 && glocal.argc==1){ // deleteuser sessionid = email confirmid (con,glocal.args[0]); printf ("email=%s id=%s\n",email,confirmid); }else if (strcmp(glocal.command,"confirmdelete")==0 && glocal.argc==1){ // confirmdelete id (con,glocal.args[0]); }else if (strcmp(glocal.command,"addnews")==0 && glocal.argc==4){ // addnews sessionid url title text (con,glocal.args[0],glocal.args[1],glocal.args[2],glocal.args[3]); printf ("addnews success=%d newsid=%s\n",success,newsid); }else if (strcmp(glocal.command,"addproof")==0 && glocal.argc==6){ // addproof sessionid newsid valid type title text (con,glocal.args[0],glocal.args[1],atoi(glocal.args[2]),atoi(glocal.args[3]),glocal.args[4],glocal.args[5]); printf ("addcproof success=%d proofid=%s\n",success,proofid); }else if (strcmp(glocal.command,"addcomment")==0 && glocal.argc==4){ // addcomment sessionid proofid vote text (con,glocal.args[0],glocal.args[1],atoi(glocal.args[2]),glocal.args[3]); printf ("addcomment success=%d commentid=%s\n",success,commentid); }else if (strcmp(glocal.command,"listnews")==0 && glocal.argc==3){ // listnews offset nb = newsid title url (con,atoi(glocal.args[0]),atoi(glocal.args[1])); for (unsigned i=0; i }else if (strcmp(glocal.command,"listproofs")==0 && glocal.argc == 4){ // listproofs newsid offset nb (con,glocal.args[0],atoi(glocal.args[1]),atoi(glocal.args[2])); for (unsigned i=0; i }else if (strcmp(glocal.command,"listcomments")==0 && glocal.argc==4){ // listcomments proofid offset nb (con,glocal.args[0],atoi(glocal.args[1]),atoi(glocal.args[2])); for (unsigned i=0; i }else{ tlmp_error ("Command %s not supported, wrong argument number\n",glocal.command); } #endif end = true; printf ("receive %s\n",line); if (strcmp(line,"Ok")==0) end = true; return ret; return glocal.ret; }