PokerUnicorn
Loading...
Searching...
No Matches
pkrsrv.h
Go to the documentation of this file.
1/*
2 * PokerUnicorn Server
3 * This project uses test network, NO real coin or NO real money involved.
4 * Copyright (C) 2023, Oğuzhan Eroğlu <meowingcate@gmail.com> (https://meowingcat.io)
5 * Licensed under GPLv3 License
6 * See LICENSE for more info
7 */
8
9#pragma once
10
11#include <stddef.h>
12
13#include <libpq-fe.h>
14#include "thirdparty/hiredis/hiredis.h"
15
16#include "arg.h"
17#include "string.h"
18
19#define PKRSRV_STR_HELPER(x) #x
20#define PKRSRV_STR(x) PKRSRV_STR_HELPER(x)
21
22#ifdef __GNUC__
23 #define PKRSRV_COMPILER_INFO "GCC " PKRSRV_STR(__GNUC__) "." PKRSRV_STR(__GNUC_MINOR__) "." PKRSRV_STR(__GNUC_PATCHLEVEL__)
24#elif defined(__clang__)
25 #define PKRSRV_COMPILER_INFO "Clang " PKRSRV_STR(__clang_major__) "." PKRSRV_STR(__clang_minor__) "." PKRSRV_STR(__clang_patchlevel__)
26#elif defined(_MSC_VER)
27 #define PKRSRV_COMPILER_INFO "MSVC " PKRSRV_STR(_MSC_VER)
28#else
29 #define PKRSRV_COMPILER_INFO "Unknown Compiler"
30#endif
31
32#define PKRSRV_VERSION {0, 10, 0}
33#define PKRSRV_VERSION_STABILITY "git"
34#define PKRSRV_VERSION_STRING "v0.10.0-git"
35
36#ifndef PKRSRV_VERBOSE
37#define PKRSRV_VERBOSE 1
38#endif
39
40#ifndef PKRSRV_BUILD
41#define PKRSRV_BUILD 0
42#endif
43
44#ifndef PKRSRV_REVISION
45#define PKRSRV_REVISION "__no_rev__"
46#endif
47
48#ifndef PKRSRV_BUILD_DATE
49#define PKRSRV_BUILD_DATE ""
50#endif
51
52#ifndef PKRSRV_PORT
53#define PKRSRV_PORT 5560
54#endif
55
56#ifndef PKRSRV_BIND_ADDRESS
57#define PKRSRV_BIND_ADDRESS "0.0.0.0"
58#endif
59
60#ifndef PKRSRV_REDIS_HOST
61#define PKRSRV_REDIS_HOST "redis"
62#endif
63
64#ifndef PKRSRV_REDIS_PORT
65#define PKRSRV_REDIS_PORT 6379
66#endif
67
68#ifndef PKRSRV_POSTGRES_HOST
69#define PKRSRV_POSTGRES_HOST "postgres"
70#endif
71
72#ifndef PKRSRV_POSTGRES_PORT
73#define PKRSRV_POSTGRES_PORT 5432
74#endif
75
76#ifndef PKRSRV_POSTGRES_USERNAME
77#define PKRSRV_POSTGRES_USERNAME "meowingcat"
78#endif
79
80#ifndef PKRSRV_POSTGRES_PASSWORD
81#define PKRSRV_POSTGRES_PASSWORD "meow"
82#endif
83
84#ifndef PKRSRV_POSTGRES_DB
85#define PKRSRV_POSTGRES_DB "poker"
86#endif
87
88#ifndef PKRSRV_SSL_KEY_FILE
89#define PKRSRV_SSL_KEY_FILE "ssl/test.key"
90#endif
91
92#ifndef PKRSRV_SSL_CERT_FILE
93#define PKRSRV_SSL_CERT_FILE "ssl/test.crt"
94#endif
95
96#ifndef PKRSRV_AVATAR_MAX_SIZE
97#define PKRSRV_AVATAR_MAX_SIZE 1000000 // 1 MB
98#endif
99
100#ifndef PKRSRV_PROCESS_LATENCY
101#define PKRSRV_PROCESS_LATENCY 1000000 // 1 second
102#endif
103
104#ifndef PKRSRV_MONERO_WALLET_FILENAME
105#define PKRSRV_MONERO_WALLET_FILENAME "test-wallet"
106#endif
107
108#ifndef PKRSRV_MONERO_WALLET_PASSWORD
109#define PKRSRV_MONERO_WALLET_PASSWORD "meow"
110#endif
111
112#ifndef PKRSRV_MAX_CLIENTS
113#define PKRSRV_MAX_CLIENTS 200
114#endif
115
116#ifndef PKRSRV_USE_REDIS
117#define PKRSRV_USE_REDIS 0
118#endif
119
120extern int __pkrsrv_version__[];
121extern char* __pkrsrv_version_string__;
123extern char* __pkrsrv_revision__;
124extern char* __pkrsrv_compiler__;
125extern int __pkrsrv_util_verbose__;
126extern char* __pkrsrv_build_date__;
127
128extern uint64_t pkrsrv_build_number;
129extern pkrsrv_string_t* pkrsrv_version;
130extern pkrsrv_string_t* pkrsrv_revision;
131extern pkrsrv_string_t* pkrsrv_compiler;
132
133extern char* pkrsrv_redis_host;
134extern int pkrsrv_redis_port;
135
136extern char* pkrsrv_postgres_host;
137extern int pkrsrv_postgres_port;
138extern char* pkrsrv_postgres_username;
139extern char* pkrsrv_postgres_password;
140extern char* pkrsrv_postgres_db;
141
142extern char* pkrsrv_ssl_key_file;
143extern char* pkrsrv_ssl_cert_file;
144
145extern int pkrsrv_process_latency;
146
147extern char* monero_wallet_filename;
148extern char* monero_wallet_password;
149
150extern PGconn* pkrsrv_db_conn;
151
152void arg_handler_help(char* value);
153void arg_handler_version(char* value);
154void arg_handler_max_clients(char* value);
155void arg_handler_tests(char* value);
156void arg_handler_port(char* value);
157void arg_handler_bind(char* value);
158void arg_handler_redis_host(char* value);
159void arg_handler_redis_port(char* value);
164void arg_handler_postgres_db(char* value);
165void arg_handler_ssl_key_file(char* value);
170
171static void* arguments[] = {
174 "--max-clients", NULL, PKRSRV_ARG_WITH_VALUE, arg_handler_max_clients,
178 "--redis-host", "-rh", PKRSRV_ARG_WITH_VALUE, arg_handler_redis_host,
179 "--redis-port", "-rp", PKRSRV_ARG_WITH_VALUE, arg_handler_redis_port,
180 "--postgres-host", "-ph", PKRSRV_ARG_WITH_VALUE, arg_handler_postgres_host,
181 "--postgres-port", "-pp", PKRSRV_ARG_WITH_VALUE, arg_handler_postgres_port,
182 "--postgres-username", "-pu", PKRSRV_ARG_WITH_VALUE, arg_handler_postgres_username,
183 "--postgres-password", "-ps", PKRSRV_ARG_WITH_VALUE, arg_handler_postgres_password,
184 "--postgres-db", "-pp", PKRSRV_ARG_WITH_VALUE, arg_handler_postgres_db,
185 "--ssl-key-file", "-sk", PKRSRV_ARG_WITH_VALUE, arg_handler_ssl_key_file,
186 "--ssl-cert-file", "-sc", PKRSRV_ARG_WITH_VALUE, arg_handler_ssl_cert_file,
187 "--process-latency", "-pl", PKRSRV_ARG_WITH_VALUE, arg_handler_process_latency,
188 "--monero-wallet-filename", "-mwf", PKRSRV_ARG_WITH_VALUE, arg_handler_monero_wallet_filename,
189 "--monero-wallet-password", "-mwp", PKRSRV_ARG_WITH_VALUE, arg_handler_monero_wallet_password,
190 NULL
191};
#define PKRSRV_ARG_WITH_VALUE
Definition arg.h:18
#define PKRSRV_ARG_WITHOUT_VALUE
Definition arg.h:19
void arg_handler_version(char *value)
void arg_handler_postgres_username(char *value)
uint64_t pkrsrv_build_number
pkrsrv_string_t * pkrsrv_version
char * pkrsrv_postgres_db
void arg_handler_process_latency(char *value)
void arg_handler_bind(char *value)
pkrsrv_string_t * pkrsrv_revision
void arg_handler_help(char *value)
void arg_handler_postgres_host(char *value)
void arg_handler_ssl_cert_file(char *value)
char * __pkrsrv_version_stability__
int __pkrsrv_version__[]
void arg_handler_ssl_key_file(char *value)
char * pkrsrv_ssl_key_file
void arg_handler_postgres_db(char *value)
char * pkrsrv_ssl_cert_file
char * __pkrsrv_compiler__
void arg_handler_port(char *value)
char * __pkrsrv_version_string__
char * pkrsrv_postgres_host
PGconn * pkrsrv_db_conn
void arg_handler_max_clients(char *value)
int pkrsrv_redis_port
char * monero_wallet_password
char * pkrsrv_redis_host
pkrsrv_string_t * pkrsrv_compiler
void arg_handler_postgres_port(char *value)
char * pkrsrv_postgres_username
char * __pkrsrv_revision__
void arg_handler_monero_wallet_password(char *value)
void arg_handler_tests(char *value)
int __pkrsrv_util_verbose__
void arg_handler_monero_wallet_filename(char *value)
int pkrsrv_postgres_port
void arg_handler_postgres_password(char *value)
char * pkrsrv_postgres_password
char * monero_wallet_filename
char * __pkrsrv_build_date__
void arg_handler_redis_host(char *value)
int pkrsrv_process_latency
void arg_handler_redis_port(char *value)