From 52386ecb64e137bfc85a84cb4774a9231a475b99 Mon Sep 17 00:00:00 2001 From: Levi Neely <141506390+lneely@users.noreply.github.com> Date: Sat, 1 Mar 2025 21:15:53 +0100 Subject: [PATCH] pp2p namespace and cleanup --- dev/rename.sh | 4 +-- pclsync/pdownload.c | 2 +- pclsync/pp2p.c | 60 ++++++++++++++++++++------------------------- pclsync/pp2p.h | 8 +++--- pclsync/psettings.c | 2 +- pclsync/psynclib.c | 2 +- 6 files changed, 36 insertions(+), 42 deletions(-) diff --git a/dev/rename.sh b/dev/rename.sh index 1db951b..d3f5192 100755 --- a/dev/rename.sh +++ b/dev/rename.sh @@ -40,7 +40,7 @@ while IFS= read -r line; do oldpattern_escaped=$(echo "$oldpattern" | sed 's/[\/&]/\\&/g') newpattern_escaped=$(echo "$newpattern" | sed 's/[\/&]/\\&/g') - echo "Replacing: '$oldpattern' with '$newpattern'" + # echo "Replacing: '$oldpattern' with '$newpattern'" # Execute the find and sed command find . -name "*.[ch]" -exec sed -i "s/$oldpattern_escaped/$newpattern_escaped/g" {} \; @@ -49,4 +49,4 @@ while IFS= read -r line; do fi done -echo "All replacements completed!" \ No newline at end of file +# echo "All replacements completed!" \ No newline at end of file diff --git a/pclsync/pdownload.c b/pclsync/pdownload.c index 42ed3ad..999818d 100644 --- a/pclsync/pdownload.c +++ b/pclsync/pdownload.c @@ -680,7 +680,7 @@ static int task_download_file(download_task_t *dt) { // pqevent_queue_sync_event_id(PEVENT_FILE_DOWNLOAD_STARTED, syncid, name, // fileid); if (serversize >= PSYNC_MIN_SIZE_FOR_P2P) { - rt = psync_p2p_check_download(dt->dwllist.fileid, serverhashhex, serversize, + rt = pp2p_check_download(dt->dwllist.fileid, serverhashhex, serversize, dt->tmpname); if (rt == PSYNC_NET_OK) { if (rename_and_create_local(dt, serverhashhex, serversize, hash)) diff --git a/pclsync/pp2p.c b/pclsync/pp2p.c index ad6b0c1..4fc29e2 100644 --- a/pclsync/pp2p.c +++ b/pclsync/pp2p.c @@ -30,12 +30,6 @@ */ #include -#include -#include -#include -#include -#include -#include #include #include "papi.h" @@ -122,11 +116,11 @@ static const uint32_t requiredstatuses[] = { static struct sockaddr_storage paddr; static socklen_t paddrlen; -static psync_rsa_publickey_t psync_rsa_public = PSYNC_INVALID_RSA; -static psync_rsa_privatekey_t psync_rsa_private = PSYNC_INVALID_RSA; -static psync_binary_rsa_key_t psync_rsa_public_bin = PSYNC_INVALID_BIN_RSA; +static psync_rsa_publickey_t pubkey = PSYNC_INVALID_RSA; +static psync_rsa_privatekey_t privkey = PSYNC_INVALID_RSA; +static psync_binary_rsa_key_t pubkeybin = PSYNC_INVALID_BIN_RSA; -PSYNC_PURE static const char *p2p_get_address(void *addr) { +PSYNC_PURE static const char *get_addr(void *addr) { if (((struct sockaddr_in *)addr)->sin_family == AF_INET) return inet_ntoa(((struct sockaddr_in *)addr)->sin_addr); else { @@ -136,7 +130,7 @@ PSYNC_PURE static const char *p2p_get_address(void *addr) { } } -PSYNC_PURE static const char *p2p_get_peer_address() { +PSYNC_PURE static const char *get_peer_addr() { if (paddr.ss_family == AF_INET) return inet_ntoa(((struct sockaddr_in *)&paddr)->sin_addr); else { @@ -146,7 +140,7 @@ PSYNC_PURE static const char *p2p_get_peer_address() { } } -static psync_fileid_t psync_p2p_has_file(const unsigned char *hashstart, +static psync_fileid_t has_file(const unsigned char *hashstart, const unsigned char *genhash, const unsigned char *rand, uint64_t filesize, @@ -183,7 +177,7 @@ static psync_fileid_t psync_p2p_has_file(const unsigned char *hashstart, return 0; } -static int psync_p2p_is_downloading(const unsigned char *hashstart, +static int is_downloading(const unsigned char *hashstart, const unsigned char *genhash, const unsigned char *rand, uint64_t filesize, @@ -218,10 +212,10 @@ static void psync_p2p_check(const packet_check *packet) { packet_check_resp resp; if (!memcmp(packet->computername, computername, PSYNC_HASH_DIGEST_HEXLEN)) return; - if (psync_p2p_has_file(packet->hashstart, packet->genhash, packet->rand, + if (has_file(packet->hashstart, packet->genhash, packet->rand, packet->filesize, hashhex)) resp.type = P2P_RESP_HAVEIT; - else if (psync_p2p_is_downloading(packet->hashstart, packet->genhash, + else if (is_downloading(packet->hashstart, packet->genhash, packet->rand, packet->filesize, hashhex)) resp.type = P2P_RESP_WAIT; else @@ -235,14 +229,14 @@ static void psync_p2p_check(const packet_check *packet) { debug(D_NOTICE, "replying with %u to a check from %s, looking for %." NTO_STR( PSYNC_HASH_DIGEST_HEXLEN) "s", - (unsigned int)resp.type, p2p_get_peer_address(), hashhex); + (unsigned int)resp.type, get_peer_addr(), hashhex); if (files_serving) psys_sleep_milliseconds(files_serving * 10); if (resp.type == P2P_RESP_WAIT) psys_sleep_milliseconds(PSYNC_P2P_INITIAL_TIMEOUT / 4); if (!sendto(udpsock, (const char *)&resp, sizeof(resp), 0, (const struct sockaddr *)&paddr, paddrlen)) - debug(D_WARNING, "sendto to %s failed", p2p_get_peer_address()); + debug(D_WARNING, "sendto to %s failed", get_peer_addr()); } static void psync_p2p_process_packet(const char *packet, size_t plen) { @@ -253,7 +247,7 @@ static void psync_p2p_process_packet(const char *packet, size_t plen) { if (type >= ARRAY_SIZE(min_packet_size) || min_packet_size[type] > plen) return; debug(D_NOTICE, "got %u packet from %s", (unsigned int)type, - p2p_get_peer_address()); + get_peer_addr()); switch (type) { case P2P_WAKE: break; @@ -346,7 +340,7 @@ static void psync_p2p_tcphandler(void *ptr) { unlikely_log(packet.tokenlen > 512)) /* lets allow 8 times larger keys than we use */ goto err0; - localfileid = psync_p2p_has_file(packet.hashstart, packet.genhash, + localfileid = has_file(packet.hashstart, packet.genhash, packet.rand, packet.filesize, hashhex); if (!localfileid) { debug(D_WARNING, "got request for file that we do not have"); @@ -554,7 +548,7 @@ static void psync_p2p_wake() { close(sock); } -void psync_p2p_init() { +void pp2p_init() { unsigned char computerbin[PSYNC_HASH_DIGEST_LEN]; psync_ssl_rand_weak(computerbin, PSYNC_HASH_DIGEST_LEN); psync_binhex(computername, computerbin, PSYNC_HASH_DIGEST_LEN); @@ -564,7 +558,7 @@ void psync_p2p_init() { psync_p2p_start(); } -void psync_p2p_change() { +void pp2p_change() { if (psync_setting_get_bool(_PS(p2psync))) psync_p2p_start(); else @@ -574,7 +568,7 @@ void psync_p2p_change() { static int psync_p2p_check_rsa() { static pthread_mutex_t rsa_lock = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_lock(&rsa_lock); - if (psync_rsa_private == PSYNC_INVALID_RSA) { + if (privkey == PSYNC_INVALID_RSA) { psync_rsa_t rsa; psync_rsa_privatekey_t rsapriv; psync_rsa_publickey_t rsapub; @@ -594,9 +588,9 @@ static int psync_p2p_check_rsa() { if (likely_log(rsapriv != PSYNC_INVALID_RSA && rsapub != PSYNC_INVALID_RSA && rsapubbin != PSYNC_INVALID_BIN_RSA)) { - psync_rsa_private = rsapriv; - psync_rsa_public = rsapub; - psync_rsa_public_bin = rsapubbin; + pubkey = rsapriv; + privkey = rsapub; + pubkeybin = rsapubbin; goto ret0; } else { if (rsapriv != PSYNC_INVALID_RSA) @@ -624,8 +618,8 @@ static int psync_p2p_get_download_token(psync_fileid_t fileid, PAPI_STR("auth", psync_my_auth), PAPI_NUM("fileid", fileid), PAPI_NUM("filesize", fsize), PAPI_LSTR(PSYNC_CHECKSUM, filehashhex, PSYNC_HASH_DIGEST_HEXLEN), - PAPI_LSTR("keydata", psync_rsa_public_bin->data, - psync_rsa_public_bin->datalen)}; + PAPI_LSTR("keydata", pubkeybin->data, + pubkeybin->datalen)}; psock_t *api; binresult *res; const binresult *ctoken; @@ -681,7 +675,7 @@ static int psync_p2p_download(int sock, psync_fileid_t fileid, ekey = psync_ssl_alloc_encrypted_symmetric_key(keylen); if (unlikely_log(socket_read_all(sock, ekey->data, keylen)) || unlikely_log((key = psync_ssl_rsa_decrypt_symm_key_lock( - &psync_rsa_private, &ekey)) == PSYNC_INVALID_SYM_KEY)) { + &privkey, &ekey)) == PSYNC_INVALID_SYM_KEY)) { // unlikely_log((key=psync_ssl_rsa_decrypt_symmetric_key(&psync_rsa_private, // &ekey))==PSYNC_INVALID_SYM_KEY)){ psync_free(ekey); @@ -732,7 +726,7 @@ err0: return PSYNC_NET_TEMPFAIL; } -int psync_p2p_check_download(psync_fileid_t fileid, +int pp2p_check_download(psync_fileid_t fileid, const unsigned char *filehashhex, uint64_t fsize, const char *filename) { struct sockaddr_in6 addr; @@ -876,7 +870,7 @@ int psync_p2p_check_download(psync_fileid_t fileid, if (unlikely_log(sock == INVALID_SOCKET)) goto err_perm3; if (unlikely(connect(sock, (struct sockaddr *)&addr, slen) == SOCKET_ERROR)) { - debug(D_WARNING, "could not connect to %s port %u", p2p_get_address(&addr), + debug(D_WARNING, "could not connect to %s port %u", get_addr(&addr), (unsigned)resp.port); goto err_perm3; } @@ -884,14 +878,14 @@ int psync_p2p_check_download(psync_fileid_t fileid, pct2.type = P2P_GET; memcpy(pct2.hashstart, filehashhex, PSYNC_P2P_HEXHASH_BYTES); pct2.filesize = fsize; - pct2.keylen = psync_rsa_public_bin->datalen; + pct2.keylen = pubkeybin->datalen; pct2.tokenlen = tlen; memcpy(pct2.rand, pct1.rand, sizeof(pct1.rand)); memcpy(pct2.genhash, pct1.genhash, sizeof(pct1.genhash)); memcpy(pct2.computername, computername, PSYNC_HASH_DIGEST_HEXLEN); if (socket_write_all(sock, &pct2, sizeof(pct2)) || - socket_write_all(sock, psync_rsa_public_bin->data, - psync_rsa_public_bin->datalen) || + socket_write_all(sock, pubkeybin->data, + pubkeybin->datalen) || socket_write_all(sock, token, tlen)) { debug(D_WARNING, "writing to socket failed"); goto err_temp3; diff --git a/pclsync/pp2p.h b/pclsync/pp2p.h index 6843d6b..9fdaf6a 100644 --- a/pclsync/pp2p.h +++ b/pclsync/pp2p.h @@ -32,11 +32,11 @@ #ifndef _PSYNC_P2P_H #define _PSYNC_P2P_H -#include "psynclib.h" +#include "pfoldersync.h" -void psync_p2p_init(); -void psync_p2p_change(); -int psync_p2p_check_download(psync_fileid_t fileid, +void pp2p_init(); +void pp2p_change(); +int pp2p_check_download(psync_fileid_t fileid, const unsigned char *filehashhex, uint64_t fsize, const char *filename); diff --git a/pclsync/psettings.c b/pclsync/psettings.c index 7825537..c8572b0 100644 --- a/pclsync/psettings.c +++ b/pclsync/psettings.c @@ -87,7 +87,7 @@ static psync_setting_t settings[] = { NULL, {PSYNC_MIN_LOCAL_FREE_SPACE}, PSYNC_TNUMBER}, - {"p2psync", psync_p2p_change, NULL, {PSYNC_P2P_SYNC_DEFAULT}, PSYNC_TBOOL}, + {"p2psync", pp2p_change, NULL, {PSYNC_P2P_SYNC_DEFAULT}, PSYNC_TBOOL}, {"fsroot", fsroot_change, NULL, {0}, PSYNC_TSTRING}, {"autostartfs", NULL, NULL, {PSYNC_AUTOSTARTFS_DEFAULT}, PSYNC_TBOOL}, {"fscachesize", diff --git a/pclsync/psynclib.c b/pclsync/psynclib.c index c4e5741..6c48e92 100644 --- a/pclsync/psynclib.c +++ b/pclsync/psynclib.c @@ -335,7 +335,7 @@ void psync_start_sync(pstatus_change_callback_t status_callback, pdownload_init(); psync_netlibs_init(); psync_localscan_init(); - psync_p2p_init(); + pp2p_init(); if (psync_setting_get_bool(_PS(autostartfs))) psync_fs_start(); pdevmon_init();