/*
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();
}