/* This file is part of Bolixo. Bolixo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Bolixo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Bolixo. If not, see . */ #include #include #include #include #include "trlitool.h" #include "../bolixo.h" #include "../instrument.h" #include "../proto/bod_client.protoch" #include "../proto/webapi.protoh" #include #include #include #include "util.h" extern "C" void tlmp_initmod() { translat_load ("bolixo"); } static void webmain_real() { glocal CONNECT_INFO con; glocal CONNECT_INFO con_pubkey; glocal CONNECT_INFO con_sess; glocal.con.port = "/dev/bod.sock"; glocal.con_pubkey.port = "/dev/bod-pubkey.sock"; glocal.con_sess.port = "/dev/sessiond.sock"; bool endserver,endclient; REQUEST_JSON_INFO req; glocal.con.secret = util_readsecret(); glocal.con_pubkey.secret = glocal.con.secret; glocal.con_sess.secret = glocal.con.secret; const char *json = tlmpweb_getpost(); tlmpweb_flushheader(); (NULL, req, json, strlen(json), endserver, endclient); rep_test (true,"ok"); // email password = success:b sessionid glocal bool success = false; glocal string sessionid; (glocal.con); glocal.sessionid = sessionid; if (glocal.sessionid.size() > 0){ (glocal.con,glocal.sessionid,email,password); glocal.success = success; } if (!glocal.success) glocal.sessionid.clear(); rep_login (glocal.success,glocal.sessionid); // sessionid (glocal.con,sessionid); // sessionid name content = success:b msg glocal string msg = "Internal error"; glocal bool success = false; (glocal.con,sessionid,name,content); glocal.success = success; glocal.msg = msg; rep_addfile(glocal.success,glocal.msg); // sessionid name content:o more:b = success:b handle msg glocal string msg = "Internal error"; glocal bool success = false; glocal string handle; (glocal.con,sessionid,name,content,more); glocal.success = success; glocal.msg = msg; glocal.handle = handle; rep_addfile_bob(glocal.success,glocal.handle,glocal.msg); // sessionid handle content:o more:b = success:b msg glocal string msg = "Internal error"; glocal bool success = false; (glocal.con,sessionid,handle,content,more); glocal.success = success; glocal.msg = msg; rep_appendfile(glocal.success,glocal.msg); // sessionid name = success:b msg glocal string msg = "Internal error"; glocal bool success = false; (glocal.con,sessionid,name); glocal.success = success; glocal.msg = msg; rep_delfile(glocal.success,glocal.msg); // sessionid dirname = success:b msg glocal string msg = "Internal error"; glocal bool success = false; (glocal.con,sessionid,dirname); glocal.success = success; glocal.msg = msg; rep_undelete(glocal.success,glocal.msg); // sessionid name content = success:b msg glocal string msg = "Internal error"; glocal bool success = false; (glocal.con,sessionid,name,content); glocal.success = success; glocal.msg = msg; rep_modifyfile(glocal.success,glocal.msg); // sessionid name content:o more:b = success:b handle msg glocal string msg = "Internal error"; glocal bool success = false; glocal string handle; (glocal.con,sessionid,name,content,more); glocal.success = success; glocal.msg = msg; glocal.handle = handle; rep_modifyfile_bob(glocal.success,glocal.handle,glocal.msg); // sessionid oldname newname = success:b msg glocal string msg = "Internal error"; glocal bool success = false; (glocal.con,sessionid,oldname,newname); glocal.success = success; glocal.msg = msg; rep_rename(glocal.success,glocal.msg); // sessionid srcname srcdate dstname = success:b msg glocal string msg = "Internal error"; glocal bool success = false; (glocal.con,sessionid,srcname,srcdate,dstname); glocal.success = success; glocal.msg = msg; rep_copy(glocal.success,glocal.msg); // sessionid name threshold = success:b msg content glocal string msg = "Internal error"; glocal bool success = false; glocal string content; (glocal.con,sessionid,name,threshold); glocal.success = success; glocal.msg = msg; glocal.content = content; rep_readfile(glocal.success,glocal.msg,glocal.content); // sessionid name threshold nomore:b = success:b msg content:o info:U{READINFO} handle more:b glocal string msg = "Internal error"; glocal bool success = false; glocal BOB_TYPE content; glocal string handle; glocal bool more=false; glocal READINFO info; (glocal.con,sessionid,name,threshold,nomore); glocal.success = success; glocal.msg = msg; glocal.content = content; glocal.info = info; glocal.handle = handle; glocal.more = more; rep_readfile_bob(glocal.success,glocal.msg,glocal.content,glocal.info,glocal.handle,glocal.more); // sessionid handle = success:b msg content:o more:b glocal string msg = "Internal error"; glocal bool success = false; glocal BOB_TYPE content; glocal string handle; glocal bool more=false; (glocal.con,sessionid,handle); glocal.success = success; glocal.msg = msg; glocal.content = content; glocal.more = more; rep_readmore(glocal.success,glocal.msg,glocal.content,glocal.more); // sessionid name = success:b msg glocal string msg = "Internal error"; glocal bool success = false; (glocal.con,sessionid,name); glocal.success = success; glocal.msg = msg; rep_mkdir(glocal.success,glocal.msg); // sessionid name = success:b msg glocal string msg = "Internal error"; glocal bool success = false; (glocal.con,sessionid,name); glocal.success = success; glocal.msg = msg; rep_rmdir(glocal.success,glocal.msg); // sessionid name threshold history:b offset:u nb:u = success:b msg files:U{WEB_FILEINFO}v glocal bool success=false; glocal string msg; glocal vector files; (glocal.con,sessionid,name,threshold,history,offset,nb); glocal.success = success; for (auto &d:files){ glocal.files.push_back(d); } rep_listdir (glocal.success,glocal.msg,glocal.files); // sessionid name threshold = success:b msg file:U{WEB_FILEINFO} glocal bool success = false; glocal string msg; glocal FILEINFO file; (glocal.con,sessionid,name,threshold); glocal.success = success; glocal.msg = msg; glocal.file = file; rep_stat (glocal.success,glocal.msg,glocal.file); // sessionid name username listname listmode = success:b msg // sessionid name = success:b msg // nickname msg = status:e{ERR_CODE} msg (glocal.con,nickname,msg); glocal.webapi.rep_verifysign(status,msg); // nickname = pubkey (glocal.con_pubkey,nickname); glocal.webapi.rep_getpubkey(success,pubkey); // nodename = success:b msg (glocal.con,nodename); glocal.webapi.rep_registernode(success,msg); // nodename = success:b msg session (glocal.con,nodename); glocal.webapi.rep_nodelogin(success,msg,session); // session sign = success:b msg (glocal.con,session,sign); glocal.webapi.rep_nodepass(success,msg); // user = success:b msg sessionid (glocal.con,user); glocal.webapi.rep_remotelogin(success,msg,sessionid); // sessionid user sign = success:b msg (glocal.con,sessionid,user,sign); glocal.webapi.rep_remotepass(success,msg); // sessionid user = success:b msg (glocal.con,sessionid,user); glocal.webapi.rep_remote_interest_set(success,msg); // sessionid user = success:b msg (glocal.con,sessionid,user); glocal.webapi.rep_remote_interest_unset(success,msg); // sessionid owner = success:b msg inboxes:U{INBOX}v glocal bool success = false; glocal string msg; glocal vector inboxes; (glocal.con,sessionid,owner,showroles); glocal.success = success; glocal.msg = msg; for (auto &i:inboxes) glocal.inboxes.push_back(i); rep_list_inboxes (glocal.success,glocal.msg,glocal.inboxes); // sessionid owner project deleted:b offset:u nb:u = success:b msg messages:U{MESSAGE}v glocal bool success = false; glocal string msg; glocal vector messages; (glocal.con,sessionid,owner,project,deleted,offset,nb); glocal.success = success; glocal.msg = msg; for (auto &m:messages) glocal.messages.push_back(m); rep_list_msgs (glocal.success,glocal.msg,glocal.messages); // sessionid owner recipients:v title content = success:b msg msgid glocal bool success = false; glocal string msg; glocal string msgid; (glocal.con,sessionid,owner,recipients,title,content); glocal.success = success; glocal.msg = msg; glocal.msgid = msgid; rep_sendmsg (glocal.success,glocal.msg,glocal.msgid); // sessionid owner manager project role title content = success:b msg msgid glocal bool success = false; glocal string msg; glocal string msgid; (glocal.con,sessionid,owner,manager,project,role,title,content); glocal.success = success; glocal.msg = msg; glocal.msgid = msgid; rep_sendmsg_project (glocal.success,glocal.msg,glocal.msgid); // sessionid owner msgid recipients:v title content = success:b msg replyid glocal bool success = false; glocal string msg; glocal string replyid; (glocal.con,sessionid,owner,msgid,recipients,title,content); glocal.success = success; glocal.msg = msg; glocal.replyid = replyid; rep_replymsg (glocal.success,glocal.msg,glocal.replyid); // sessionid owner manager project role msgid title content = success:b msg replyid glocal bool success = false; glocal string msg; glocal string replyid; (glocal.con,sessionid,owner,manager,project,role,msgid,title,content); glocal.success = success; glocal.msg = msg; glocal.replyid = replyid; rep_replymsg_project (glocal.success,glocal.msg,glocal.replyid); // sessionid owner msgid content:o more:b = success:b msg handle glocal bool success = false; glocal string msg; glocal string handle; (glocal.con,sessionid,owner,msgid,content,more); glocal.success = success; glocal.msg = msg; glocal.handle = handle; rep_sendattach (glocal.success,glocal.msg,glocal.handle); // sessionid owner groupname groupowner content:o more:b name sign createdby = success:b msg handle glocal bool success = false; glocal string msg; glocal string handle; (glocal.con,sessionid,owner,to,groupname,groupowner,content,more,name,sign,createdby); glocal.success = success; glocal.msg = msg; glocal.handle = handle; rep_sendtalk (glocal.success,glocal.msg,glocal.handle); // sessionid owner groupname groupowner filename filedate = success:b msg glocal bool success = false; glocal string msg; (glocal.con,sessionid,owner,to,groupname,groupowner,filename,filedate); glocal.success = success; glocal.msg = msg; rep_sendtalk_file (glocal.success,glocal.msg); // sessionid owner groupname groupowner offset:u nb:u = success:b msg messages:U{MESSAGE}v deletes:b glocal bool success = false; glocal string msg; glocal vector messages; glocal bool deletes = false; glocal unsigned total = 0; glocal unsigned nbnew = 0; (glocal.con,sessionid,owner,groupname,groupowner,offset,nb,firstseen); glocal.success = success; glocal.msg = msg; glocal.deletes = deletes; glocal.total = total; glocal.nbnew = nbnew; for (auto &m:messages) glocal.messages.push_back(m); rep_list_talk (glocal.success,glocal.msg,glocal.messages,glocal.deletes,glocal.total,glocal.nbnew); // username dirpath offset:u nb:u = success:b msg files:U{FILEINFO}v glocal bool success = false; glocal string msg; glocal vector files; (glocal.con,username,dirpath,offset,nb); glocal.success = success; glocal.msg = msg; for (auto &f:files) glocal.files.push_back(f); rep_public_listdir(glocal.success,glocal.msg,glocal.files); // username filepath offset:u = success:b msg content:o more:b size:u // glocal FILE *fout = fopen ("/tmp/log","a"); //fprintf (glocal.fout,"%s %s %u\n",username,filepath,offset); //fflush (glocal.fout); (glocal.con,username,filepath,offset); //fprintf (glocal.fout,"success %d msg=%s more=%d size=%u\n",success,msg,more,info.size); //fflush (glocal.fout); glocal.webapi.rep_public_readfile(success,msg,content,more,info.size); //fclose (glocal.fout); // username offset:u nb:u = success:b msg messages:U{SHORTMSG}v (glocal.con,username,offset,nb); vector msgs; for (auto &m:messages) msgs.push_back(m); glocal.webapi.rep_public_list_talk(success,msg,msgs); (glocal.con_pubkey); glocal.webapi.rep_systempubkey(pubkey); // sessionid owner = success:b msg config:U{CONFIG} (glocal.con,sessionid,owner); glocal.webapi.rep_config_read(success,msg,config); // sessionid owner config:U{CONFIG} = success:b msg (glocal.con,sessionid,owner,config); glocal.webapi.rep_config_write(success,msg); // sessionid owner user intro = success:b msg (glocal.con,sessionid,owner,user,intro); glocal.webapi.rep_contact_request(success,msg); //sessionid owner user status:e{CONTACT_STATUS} = success:b msg (glocal.con,sessionid,owner,user,status); glocal.webapi.rep_contact_manage(success,msg); // sessionid owner to_me:b contact offset:u nb:u = success:b msg contacts:U{CONTACT}v glocal vector contacts; glocal bool success = false; glocal string msg; (glocal.con,sessionid,owner,to_me,contact,offset,nb); glocal.success = success; glocal.msg = msg; for (auto &c:contacts) glocal.contacts.push_back(c); rep_contact_list(glocal.success,glocal.msg,glocal.contacts); // sessionid owner = success:b msg lists:U{LIST}v glocal bool success = false; glocal string msg; glocal vector lists; (glocal.con,sessionid,owner); glocal.success = success; glocal.msg = msg; for (auto &l:lists) glocal.lists.push_back(l); rep_list_lists (glocal.success,glocal.msg,glocal.lists); // sessionid owner only_owner:b = success:b msg groups:U{GROUP}v glocal bool success = false; glocal string msg; glocal vector groups; (glocal.con,sessionid,owner,only_owner); glocal.success = success; glocal.msg = msg; for (auto &g:groups) glocal.groups.push_back(g); rep_list_groups (glocal.success,glocal.msg,glocal.groups); // sessionid owner = success:b msg members:v (glocal.con,sessionid,owner); glocal.webapi.rep_list_contacts(success,msg,members); htmlprintf ("Invalid request\n"); } extern "C" void webmain() { ("unix:","/tmp/stop.sock",1); webmain_real(); end=true; webmain_real(); }