/* Command line tool to control trli-writed */ #include #include #include #include #include #include #include "fdpass.h" using namespace std; #include "proto/trli-writed_control.protoch" int main (int argc, char *argv[]) { glocal int ret = -1; glocal const char *control = "/var/run/trli-writed.sock"; glocal.ret = (argc,argv); setproginfo ("trli-writed-control",VERSION ,"Command line tool to control trlid\n" "\n" "\tdebug 0/1\n" "\tdebugfile filename\n" "\tmailctrl 0|1 force_address|keep\n" "\tmakeadmin email 1|0\n" "\tquit\n" "\treload file\n" "\trotatelog\n" "\tsetsubjects subject ...\n" "\tstatus\n" "\tsyncdb\n" "\n" "\tnewacctresend email to_stdout\n" "\tsendmail dest\n" ); setarg ('p',"control","Unix socket to reach trlid",glocal.control,false); glocal int ret = -1; CONNECT_INFO con; con.port = glocal.control; if (strcmp(argv[0],"status")==0 && argc==1){ (con); for (auto x:lines) printf ("%s\n",x); if (!internal_error) glocal.ret = 0; }else if (strcmp(argv[0],"quit")==0 && argc==1){ (con); if (!internal_error) glocal.ret = 0; }else if (strcmp(argv[0],"reload")==0 && argc==1){ (con); if (!internal_error) glocal.ret = 0; }else if (strcmp(argv[0],"syncbd")==0 && argc==1){ (con); if (!internal_error) glocal.ret = 0; }else if (strcmp(argv[0],"debug")==0 && argc==2){ (con,atoi(argv[1])); if (!internal_error) glocal.ret = 0; }else if (strcmp(argv[0],"debugfile")==0 && argc==2){ (con,argv[1]); if (!internal_error) glocal.ret = 0; }else if (strcmp(argv[0],"makeadmin")==0 && argc==3){ (con,argv[1],atoi(argv[2])); printf ("\tsuccess=%d msg=%s\n",success,msg); if (success) glocal.ret = 0; }else if (strcmp(argv[0],"rotatelog")==0 && argc==1){ (con); printf ("\tsuccess=%d\n",success); if (success) glocal.ret = 0; }else if (strcmp(argv[0],"truncatelog")==0 && argc==1){ (con); printf ("\tsuccess=%d\n",success); if (success) glocal.ret = 0; }else if (strcmp(argv[0],"del_incomplete")==0 && argc==2){ (con,atoi(argv[1])); for (auto x:emails) printf ("\tdel_incomplete %s\n",x); }else if (strcmp(argv[0],"sendmail")==0 && argc==4){ (con,argv[1],argv[2],argv[3]); printf ("success=%d\n",success); }else if (strcmp(argv[0],"newacctresend")==0 && (argc==2 || argc==3)){ bool to_stdout = false; if (argc == 3){ if (strcmp(argv[2],"to_stdout")==0){ to_stdout = true; }else{ tlmp_error ("newacctresend: Only option allowed is \"to_stdout\"\n"); exit (-1); } } (con,argv[1],to_stdout); printf ("success=%d\n",success); if (emailmsg[0] != '\0') printf ("%s\n",emailmsg); }else if (strcmp(argv[0],"mailctrl")==0 && argc==3){ (con,atoi(argv[1]),argv[2]); }else if (strcmp(argv[0],"setsubjects")==0 && argc > 1){ vector tb; for (int i=1; i(con,tb); printf ("success=%d\n",success); }else{ tlmp_error ("Invalid command: %s\n",argv[0]); usage(); } return glocal.ret; return glocal.ret; }