mirror of
https://github.com/LBRYFoundation/pool.git
synced 2025-08-23 09:27:25 +00:00
to reduce a bit the memory usage... require a make clean! + prevent null/local ips from bans.
169 lines
3.6 KiB
C++
169 lines
3.6 KiB
C++
|
|
//struct YAAMP_SOURCE
|
|
//{
|
|
//public:
|
|
// int count;
|
|
// double speed;
|
|
//
|
|
// char ip[64];
|
|
//};
|
|
|
|
struct YAAMP_ALGO
|
|
{
|
|
char name[64];
|
|
YAAMP_HASH_FUNCTION hash_function;
|
|
|
|
double diff_multiplier;
|
|
double factor;
|
|
YAAMP_HASH_FUNCTION merkle_func;
|
|
|
|
double profit;
|
|
double rent;
|
|
|
|
bool overflow;
|
|
};
|
|
|
|
struct YAAMP_CLIENT_ALGO
|
|
{
|
|
double factor;
|
|
YAAMP_ALGO *algo;
|
|
};
|
|
|
|
#define YAAMP_JOB_MAXHISTORY 16
|
|
|
|
#define MIN_ADDRESS_LEN 30 /* BTC len can be as few as 26 chars, but gen. 33 or 34 */
|
|
#define MAX_ADDRESS_LEN 35 /* DCR */
|
|
|
|
class YAAMP_CLIENT: public YAAMP_OBJECT
|
|
{
|
|
public:
|
|
YAAMP_SOCKET *sock;
|
|
// YAAMP_SOURCE *source;
|
|
|
|
char notify_id[1024];
|
|
int64_t reqid; // ask request id
|
|
|
|
int created;
|
|
int last_best;
|
|
|
|
bool reconnectable;
|
|
bool reconnecting;
|
|
|
|
int userid;
|
|
int workerid;
|
|
int coinid;
|
|
bool logtraffic;
|
|
|
|
int id_int;
|
|
const char *id_str;
|
|
|
|
char version[1024];
|
|
char username[1024];
|
|
char password[1024];
|
|
char worker[1024];
|
|
|
|
double difficulty_actual;
|
|
double difficulty_remote;
|
|
double difficulty_written;
|
|
bool difficulty_fixed;
|
|
|
|
long long last_submit_time;
|
|
double shares_per_minute;
|
|
|
|
char extranonce1[32];
|
|
int extranonce2size;
|
|
|
|
char extranonce1_default[32];
|
|
int extranonce2size_default;
|
|
|
|
char extranonce1_last[32];
|
|
int extranonce2size_last;
|
|
|
|
char extranonce1_reconnect[32];
|
|
int extranonce2size_reconnect;
|
|
|
|
bool extranonce_subscribe;
|
|
int submit_bad;
|
|
|
|
double speed;
|
|
int extranonce1_id;
|
|
|
|
int jobid_next;
|
|
int jobid_sent;
|
|
int jobid_locked;
|
|
|
|
YAAMP_CLIENT_ALGO algos_subscribed[YAAMP_MAXALGOS];
|
|
int job_history[YAAMP_JOB_MAXHISTORY];
|
|
|
|
int64_t shares;
|
|
int stats;
|
|
|
|
int donation;
|
|
int broadcast_timeouts;
|
|
};
|
|
|
|
inline void client_delete(YAAMP_OBJECT *object)
|
|
{
|
|
YAAMP_CLIENT *client = (YAAMP_CLIENT *)object;
|
|
if (object == NULL) return;
|
|
|
|
socket_close(client->sock);
|
|
delete client;
|
|
|
|
object = NULL;
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
YAAMP_CLIENT *client_find_notify_id(const char *notify_id, bool reconnecting);
|
|
|
|
void get_next_extraonce1(char *extraonce1);
|
|
void get_random_key(char *key);
|
|
|
|
void client_sort();
|
|
void client_block_ip(YAAMP_CLIENT *client, const char *reason);
|
|
void client_block_ipset(YAAMP_CLIENT *client, const char *ipset_name);
|
|
|
|
bool client_reset_multialgo(YAAMP_CLIENT *client, bool first);
|
|
bool client_initialize_multialgo(YAAMP_CLIENT *client);
|
|
|
|
void client_add_job_history(YAAMP_CLIENT *client, int jobid);
|
|
bool client_find_job_history(YAAMP_CLIENT *client, int jobid, int startat=1);
|
|
|
|
bool client_find_my_ip(const char *ip);
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
int client_send_difficulty(YAAMP_CLIENT *client, double difficulty);
|
|
double client_normalize_difficulty(double difficulty);
|
|
|
|
void client_change_difficulty(YAAMP_CLIENT *client, double difficulty);
|
|
void client_record_difficulty(YAAMP_CLIENT *client);
|
|
void client_adjust_difficulty(YAAMP_CLIENT *client);
|
|
|
|
void client_initialize_difficulty(YAAMP_CLIENT *client);
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
int client_call(YAAMP_CLIENT *client, const char *method, const char *format, ...);
|
|
int client_ask(YAAMP_CLIENT *client, const char *method, const char *format, ...);
|
|
|
|
void client_dump_all();
|
|
|
|
int client_send_result(YAAMP_CLIENT *client, const char *format, ...);
|
|
int client_send_error(YAAMP_CLIENT *client, int error, const char *string);
|
|
|
|
bool client_ask_stats(YAAMP_CLIENT *client);
|
|
|
|
bool client_submit(YAAMP_CLIENT *client, json_value *json_params);
|
|
|
|
int client_workers_count(YAAMP_CLIENT *client);
|
|
int client_workers_byaddress(const char *username);
|
|
bool client_auth_by_workers(YAAMP_CLIENT *client);
|
|
|
|
void *client_thread(void *p);
|
|
|
|
void db_check_user_input(char* input);
|
|
|
|
//void source_prune();
|
|
|