Browse Source

Define canonical avatar names and size limits

master
evgeny 6 days ago
parent
commit
cbb1a03ccd
  1. 1
      src/chat/chat_member.c
  2. 6
      src/member_files/protocol.c
  3. 2
      src/member_files/protocol.h

1
src/chat/chat_member.c

@ -9,6 +9,7 @@
#include "chat_member.h" #include "chat_member.h"
#include "chat_event.h" #include "chat_event.h"
#include "member_sync.h" #include "member_sync.h"
#include "../member_files/protocol.h"
#include "../utun_instance.h" #include "../utun_instance.h"
#include "../routing_layer/topo_group.h" #include "../routing_layer/topo_group.h"

6
src/member_files/protocol.c

@ -3,6 +3,12 @@
#include <string.h> #include <string.h>
#include <ctype.h> #include <ctype.h>
int mf_avatar_file_valid(const char* file) {
if (!file || strlen(file) != 68 || strcmp(file + 64, ".png")) return 0;
for (unsigned i = 0; i < 64; i++) if (!((file[i] >= '0' && file[i] <= '9') || (file[i] >= 'a' && file[i] <= 'f'))) return 0;
return 1;
}
uint64_t mf_get64(const uint8_t* p) { uint64_t mf_get64(const uint8_t* p) {
uint64_t v = 0; uint64_t v = 0;
for (unsigned i = 0; i < 8; i++) v |= (uint64_t)p[i] << (8 * i); for (unsigned i = 0; i < 8; i++) v |= (uint64_t)p[i] << (8 * i);

2
src/member_files/protocol.h

@ -22,6 +22,8 @@ extern "C" {
#define MF_WIRE_MAX (MF_WIRE_HEADER + 2 * MF_PATH_MAX + MF_BLOCK_SIZE) #define MF_WIRE_MAX (MF_WIRE_HEADER + 2 * MF_PATH_MAX + MF_BLOCK_SIZE)
#define MF_ENTRY_HEADER 35 #define MF_ENTRY_HEADER 35
#define MF_QUOTA_BYTES 40 /* used/limit/reserved в байтах, files/directories; пять u64 LE */ #define MF_QUOTA_BYTES 40 /* used/limit/reserved в байтах, files/directories; пять u64 LE */
#define MF_AVATAR_MAX_BYTES (1024 * 1024)
int mf_avatar_file_valid(const char* file);
#define MF_IDLE_TB 100000ULL /* 10 секунд */ #define MF_IDLE_TB 100000ULL /* 10 секунд */
#define MF_REQUEST 1 #define MF_REQUEST 1
#define MF_RESPONSE 2 #define MF_RESPONSE 2

Loading…
Cancel
Save