more pCloudCC/ formatting

This commit is contained in:
Levi Neely 2024-06-25 13:23:17 +02:00
parent 8c3d737815
commit 25f7354bfe
1 changed files with 70 additions and 44 deletions

View File

@ -43,6 +43,14 @@
namespace cc = console_client;
namespace clib = cc::clibrary;
static const std::string client_name = "pCloud CC v3.0.0";
clib::pclsync_lib::pclsync_lib() : status_(new pstatus_struct_()),
was_init_(false),
setup_crypto_(false) {}
clib::pclsync_lib::~pclsync_lib() {}
const std::string&
clib::pclsync_lib::get_username() {
return username_;
@ -100,7 +108,6 @@ clib::pclsync_lib::set_status_callback(status_callback_t p) {
status_callback_ = p;
}
clib::pclsync_lib &
clib::pclsync_lib::get_lib() {
static clib::pclsync_lib g_lib;
@ -167,27 +174,28 @@ clib::pclsync_lib::do_get_pass_from_console(std::string &password) {
std::cout << "Please, enter password" << std::endl;
getline(std::cin, password);
SetConsoleMode(hStdin, modeon);
// std::cout << "Password is " << password << std::endl;
#endif
}
void event_handler(psync_eventtype_t event, psync_eventdata_t eventdata) {
void
event_handler(psync_eventtype_t event, psync_eventdata_t eventdata) {
if (event < PEVENT_FIRST_USER_EVENT) {
if (event & PEVENT_TYPE_FOLDER)
if (event & PEVENT_TYPE_FOLDER) {
std::cout << "folder event=" << event
<< ", syncid=" << eventdata.folder->syncid
<< ", folderid=" << eventdata.folder->folderid
<< ", name=" << eventdata.folder->name
<< ", local=" << eventdata.folder->localpath
<< ", remote=" << eventdata.folder->remotepath << std::endl;
else
} else {
std::cout << "file event=" << event
<< ", syncid=" << eventdata.folder->syncid
<< ", file=" << eventdata.file->fileid
<< ", name=" << eventdata.file->name
<< ", local=" << eventdata.file->localpath
<< ", remote=" << eventdata.file->remotepath << std::endl;
} else if (event >= PEVENT_FIRST_SHARE_EVENT)
}
} else if (event >= PEVENT_FIRST_SHARE_EVENT) {
std::cout << "share event=" << event
<< ", folderid=" << eventdata.share->folderid
<< ", sharename=" << eventdata.share->sharename
@ -201,24 +209,26 @@ void event_handler(psync_eventtype_t event, psync_eventdata_t eventdata) {
<< ", cancreate=" << eventdata.share->cancreate
<< ", canmodify=" << eventdata.share->canmodify
<< ", candelete=" << eventdata.share->candelete << std::endl;
else
} else {
std::cout << "event" << event << std::endl;
}
}
static int lib_setup_cripto() {
static int
lib_setup_cripto() {
int ret = 0;
ret = psync_crypto_issetup();
if (ret) {
ret = psync_crypto_start(
clib::pclsync_lib::get_lib().get_crypto_pass().c_str());
ret = psync_crypto_start(clib::pclsync_lib::get_lib()
.get_crypto_pass().c_str());
std::cout << "crypto is setup, login result=" << ret << std::endl;
} else {
std::cout << "crypto is not setup" << std::endl;
ret = psync_crypto_setup(
clib::pclsync_lib::get_lib().get_crypto_pass().c_str(), "no hint");
if (ret)
ret = psync_crypto_setup(clib::pclsync_lib::get_lib()
.get_crypto_pass().c_str(), "no hint");
if (ret) {
std::cout << "crypto setup failed" << std::endl;
else {
} else {
ret = psync_crypto_start(
clib::pclsync_lib::get_lib().get_crypto_pass().c_str());
std::cout << "crypto setup successful, start=" << ret << std::endl;
@ -226,11 +236,12 @@ static int lib_setup_cripto() {
std::cout << "creating folder=" << ret << std::endl;
}
}
return ret;
clib::pclsync_lib::get_lib().crypto_on_ = true;
return ret;
}
static char const *status2string(uint32_t status) {
static const char *
status2string(uint32_t status) {
switch (status) {
case PSTATUS_READY:
return "READY";
@ -269,7 +280,8 @@ static char const *status2string(uint32_t status) {
}
}
static void status_change(pstatus_t *status) {
static void
status_change(pstatus_t *status) {
static int cryptocheck = 0;
static int mount_set = 0;
@ -280,8 +292,10 @@ static void status_change(pstatus_t *status) {
<< ", status is " << status2string(status->status) << std::endl;
*clib::pclsync_lib::get_lib().status_ = *status;
if (status->status == PSTATUS_LOGIN_REQUIRED) {
if (clib::pclsync_lib::get_lib().get_password().empty())
if (clib::pclsync_lib::get_lib().get_password().empty()) {
clib::pclsync_lib::get_lib().get_pass_from_console();
}
// std::cout << "Username: " <<
// clib::pclsync_lib::get_lib().get_username().c_str() << "| Password: " <<
// clib::pclsync_lib::get_lib().get_password().c_str() << std::endl;
@ -298,8 +312,8 @@ static void status_change(pstatus_t *status) {
} else {
std::cout << "registering" << std::endl;
if (psync_register(clib::pclsync_lib::get_lib().get_username().c_str(),
clib::pclsync_lib::get_lib().get_password().c_str(), 1,
"bineapi.pcloud.com", 2, &err)) {
clib::pclsync_lib::get_lib().get_password().c_str(),
1, "bineapi.pcloud.com", 2, &err)) {
std::cout << "both login and registration failed" << std::endl;
exit(1);
} else {
@ -321,46 +335,58 @@ static void status_change(pstatus_t *status) {
}
psync_fs_start();
}
if (clib::pclsync_lib::get_lib().status_callback_)
clib::pclsync_lib::get_lib().status_callback_(
(int)status->status, status2string(status->status));
if (clib::pclsync_lib::get_lib().status_callback_) {
clib::pclsync_lib::get_lib()
.status_callback_((int)status->status,
status2string(status->status));
}
}
int clib::pclsync_lib::start_crypto(const char *pass, void *rep) {
int
clib::pclsync_lib::start_crypto(const char *pass, void *rep) {
std::cout << "calling startcrypto pass: " << pass << std::endl;
get_lib().crypto_pass_ = pass;
return lib_setup_cripto();
}
int clib::pclsync_lib::stop_crypto(const char *path, void *rep) {
int
clib::pclsync_lib::stop_crypto(const char *path, void *rep) {
int res = -1;
psync_crypto_stop();
get_lib().crypto_on_ = false;
return res;
}
int clib::pclsync_lib::finalize(const char *path, void *rep) {
int
clib::pclsync_lib::finalize(const char *path, void *rep) {
psync_destroy();
exit(0);
}
int clib::pclsync_lib::list_sync_folders(const char *path, void *rep) {
int
clib::pclsync_lib::list_sync_folders(const char *path, void *rep) {
psync_folder_list_t *folders = psync_get_sync_list();
rep = psync_malloc(sizeof(*folders));
memcpy(rep, folders, sizeof(*folders));
return 0;
}
static const std::string client_name = "pCloud CC v3.0.0";
int clib::pclsync_lib::init() // std::string& username, std::string& password,
// std::string* crypto_pass, int setup_crypto, int
// usesrypto_userpass)
int
clib::pclsync_lib::init()
{
std::string software_string;
// std::string& username, std::string& password,
// std::string* crypto_pass, int setup_crypto, int usesrypto_userpass)
// std::string software_string = exec("lsb_release -ds");
std::string software_string;
int isfsautostart;
char *username_old;
psync_set_software_string(client_name.c_str());
if (setup_crypto_ && crypto_pass_.empty())
if (setup_crypto_ && crypto_pass_.empty()) {
return 3;
}
if (psync_init()) {
std::cout << "init failed\n";
@ -368,16 +394,17 @@ int clib::pclsync_lib::init() // std::string& username, std::string& password,
}
was_init_ = true;
if (!get_mount().empty())
if (!get_mount().empty()) {
psync_set_string_setting("fsroot", get_mount().c_str());
}
// _tunnel = psync_ssl_tunnel_start("127.0.0.1", 9443, "62.210.116.50", 443);
int isfsautostart = psync_get_bool_setting("autostartfs");
isfsautostart = psync_get_bool_setting("autostartfs");
psync_start_sync(status_change, event_handler);
char *username_old = psync_get_username();
username_old = psync_get_username();
if (username_old) {
if (username_.compare(username_old) != 0) {
std::cout << "logged in with user " << username_old << ", not "
@ -397,7 +424,8 @@ int clib::pclsync_lib::init() // std::string& username, std::string& password,
return 0;
}
int clib::pclsync_lib::login(const char *user, const char *pass, int save) {
int
clib::pclsync_lib::login(const char *user, const char *pass, int save) {
set_username(user);
set_password(pass);
set_savepass(bool(save));
@ -405,20 +433,18 @@ int clib::pclsync_lib::login(const char *user, const char *pass, int save) {
return 0;
}
int clib::pclsync_lib::logout() {
int
clib::pclsync_lib::logout() {
set_password("");
psync_logout();
return 0;
}
int clib::pclsync_lib::unlink() {
int
clib::pclsync_lib::unlink() {
set_username("");
set_password("");
psync_unlink();
return 0;
}
clib::pclsync_lib::pclsync_lib()
: status_(new pstatus_struct_()), was_init_(false), setup_crypto_(false) {}
clib::pclsync_lib::~pclsync_lib() {}