14# define SYSTEM "Windows"
16# define SHUT_RD SD_RECEIVE
17# define SHUT_WR SD_SEND
18# define SHUT_RDWR SD_BOTH
20# include <netinet/in.h>
21# include <netinet/tcp.h>
22# include <arpa/inet.h>
24# define closesocket(s) close(s)
26# define INVALID_SOCKET size_t(-1)
27# define SOCKET_ERROR (-1)
28# if defined(__LINUX__)
30# if defined(__ANDROID__)
31# define SYSTEM "Android"
33# define SYSTEM "ARM Linux"
36# if defined(__ANDROID__)
37# define SYSTEM "Android x86"
38# define SYSTEM "Android x86"
40# define SYSTEM "Linux"
46# define __SINGLE_THREADED_SERVER__
47# elif defined(__MAC__)
48# define SYSTEM "Mac OS X"
50# error "Unknown platform"
52# include <sys/socket.h>
53# include <netinet/in.h>
57# define _SYSBITS " 64-bit"
59# define _SYSBITS " 32-bit"
64# define SYSBITS _SYSBITS " (sizeof ea=64)"
66# define SYSBITS _SYSBITS " (sizeof ea=32)"
69# define SYSBITS _SYSBITS
72#ifdef __SINGLE_THREADED_SERVER__
73# define __SERVER_TYPE__ "ST"
75# define __SERVER_TYPE__ "MT"
78#define TIMEOUT (1000/25)
79#define TIMEOUT_INFINITY -1
80#define RECV_HELLO_TIMEOUT 1000
81#define RECV_TIMEOUT_PERIOD 10000
96#define RPC_CANCELLED 6
109#define RPC_GET_PROCESSES 12
110#define RPC_START_PROCESS 13
111#define RPC_EXIT_PROCESS 14
112#define RPC_ATTACH_PROCESS 15
113#define RPC_DETACH_PROCESS 16
114#define RPC_GET_DEBUG_EVENT 17
115#define RPC_PREPARE_TO_PAUSE_PROCESS 18
116#define RPC_STOPPED_AT_DEBUG_EVENT 19
117#define RPC_CONTINUE_AFTER_EVENT 20
118#define RPC_TH_SUSPEND 21
119#define RPC_TH_CONTINUE 22
120#define RPC_SET_RESUME_MODE 23
121#define RPC_GET_MEMORY_INFO 24
122#define RPC_READ_MEMORY 25
123#define RPC_WRITE_MEMORY 26
124#define RPC_UPDATE_BPTS 27
125#define RPC_UPDATE_LOWCNDS 28
126#define RPC_EVAL_LOWCND 29
127#define RPC_ISOK_BPT 30
128#define RPC_READ_REGS 31
129#define RPC_WRITE_REG 32
130#define RPC_GET_SREG_BASE 33
131#define RPC_SET_EXCEPTION_INFO 34
133#define RPC_OPEN_FILE 35
134#define RPC_CLOSE_FILE 36
135#define RPC_READ_FILE 37
136#define RPC_WRITE_FILE 38
138#define RPC_UPDATE_CALL_STACK 40
139#define RPC_APPCALL 41
140#define RPC_CLEANUP_APPCALL 42
142#define RPC_GET_SCATTERED_IMAGE 44
143#define RPC_GET_IMAGE_UUID 45
144#define RPC_GET_SEGM_START 46
145#define RPC_BIN_SEARCH 47
146#define RPC_GET_DYNREGS 48
149#define RPC_SET_DEBUG_NAMES 50
150#define RPC_SYNC_STUB 51
153#define RPC_WARNING 54
154#define RPC_HANDLE_DEBUG_EVENT 55
155#define RPC_REPORT_IDC_ERROR 56
156#define RPC_IMPORT_DLL 57
176#define DEFINE_ONE_NOTIFICATION_FUNCTION(FuncName, NotifCode, RpcEngineInst) \
177 AS_PRINTF(2, 3) void FuncName(const char *format, ...) \
180 va_start(va, format); \
181 dvnotif(NotifCode, RpcEngineInst, format, va); \
185#define DEFINE_ALL_NOTIFICATION_FUNCTIONS(RpcEngineInst) \
186 DEFINE_ONE_NOTIFICATION_FUNCTION(dmsg, 0, RpcEngineInst) \
187 DEFINE_ONE_NOTIFICATION_FUNCTION(dwarning, 1, RpcEngineInst) \
188 DEFINE_ONE_NOTIFICATION_FUNCTION(derror, -1, RpcEngineInst)
200# define IRSERR_TIMEOUT WAIT_TIMEOUT
202# define IRSERR_TIMEOUT ETIME
204#define IRSERR_CANCELLED -0xE5CA7E
205#define IRSERR_SKIP_ITER -0x5217
213struct idarpc_stream_t;
243 if (
port != 0 &&
port != default_port )
246 s.sprnt(
"[%s]:%u",
host.c_str(),
port);
248 s.sprnt(
"%s:%u",
host.c_str(),
port);
291 if ( (flags & PCF_MERGE) == 0 )
296 s.
split(&parts,
"@");
297 if ( parts.
size() > 2 )
300 if ( parts.
size() == 2 )
306 p0.
split(&identity_parts,
":");
307 if ( identity_parts.
size() > 2 )
310 if ( identity_parts.
size() == 2 )
315 qstring &addr = parts[addr_idx];
316 const char *ptr = addr.
c_str();
317 const char *colon =
nullptr;
320 const char *br = strchr(ptr,
']');
321 if ( br ==
nullptr || br == ptr+1 )
331 if ( strnieq(ptr,
"::ffff:", 7)
332 && strchr(ptr,
'.') !=
nullptr )
336 colon = strchr(ptr,
':');
338 if ( colon !=
nullptr )
341 int port = strtoul(++colon, &
end, 10);
344 while ( *
end ==
' ' )
348 addr.
resize(colon - ptr - 1);
361#define BCF_INCLUDE_USER 1
362#define BCF_INCLUDE_PASS 2
371 if ( (flags & BCF_INCLUDE_USER) != 0 && !
username.empty() )
428 bool set(
int _ms, T *_cb,
void *_ud)
431 if ( _cb !=
nullptr && _ms > -1 )
437 return cb !=
nullptr;
440 T *
get(
int *out_ms=
nullptr,
void **out_ud=
nullptr)
const
442 if ( out_ms !=
nullptr )
444 if ( out_ud !=
nullptr )
456 size_t cb =
sizeof(*this);
470 size_t cb =
sizeof(*this);
477 :
bind(_host, _port) {}
483bool irs_accept(idarpc_stream_t *irs, idarpc_stream_t *listener);
485int irs_ready(idarpc_stream_t *irs,
int timeout_ms = -1);
488void irs_term(idarpc_stream_t **pirs,
int shutdown_flags = -1);
497 idarpc_stream_t *irs,
500 int timeout_ms = -1);
531 return s * 10 + us / (100 * 1000);
537 return make_qtime64(lts / 10, (lts % 10) * (100 * 1000));
581 typedef std::map<network_client_handler_t *, qthread_t>
storage_t;
602#define SERVER_CLIOPT_DEFAULTS 0x0
603#define SERVER_CLIOPT_NOTLS 0x1
604#define SERVER_CLIOPT_RECORDING 0x2
612 idarpc_stream_t *
irs =
nullptr;
652struct product_entry_t;
654struct license_info_t;
664 const licsrv_rpc::license_t &lic);
673 const licsrv_rpc::license_t & )
679 const licsrv_rpc::license_t &lic)
685 const product_entry_t & ,
701struct licmgr_logger_t;
718 bool _multi_threaded,
720 const char *default_license_file_name);
746#define VERBOSE_ENABLED
747#ifdef VERBOSE_ENABLED
748#define verb(x) do { if ( verbose ) msg x; } while(0)
749#define verb_eng(engine, x) do { if ( (engine)->verbose ) msg x; } while(0)
752#define verb_eng(engine, x)
825 size_t _n_pkt_timeouts = 0);
855 int recv_data(
void *out,
size_t len,
int timeout_ms);
871 idarpc_stream_t *rpc_irs;
873 int protocol_version;
880 bool as_input)
const;
889 const char *line_prefix=
nullptr) const newapi;
899 idarpc_stream_t *_irs,
903 size_t _n_pkt_timeouts = 0,
904 int _protocol_version = 0)
905 :
rpc_engine_t(_is_client, _pkt_timeouts, _n_pkt_timeouts),
906 rpc_irs(_irs), our_irs(_our_irs), protocol_version(_protocol_version)
920 virtual idarpc_stream_t *
get_irs()
const override {
return rpc_irs; }
927 QASSERT(2757, _protocol_version <= protocol_version);
929 protocol_version = _protocol_version;
944 const char *
const server_name;
945 bool started_receiving_response =
false;
946 bool was_user_cancelled =
false;
948 virtual void init(idarpc_stream_t *_irs);
952 const char *_server_name,
953 rpc_engine_creator_t *engine_creator,
954 idarpc_stream_t *_irs)
956 server_name(_server_name)
958 generic_client_t::init(_irs);
986 size_t nhex_per_line=16);
988#define REPEAT_THRESHOLD 100
990#define REPEAT_BYTES_MARKER '#'
996#define LCS_NO_TLS 0x1
997#define LCS_SEEN_PROXY_OPTION 0x2
998#define LCS_RESERVED_BITS 8
1019 if ( !
proxy.password_override.empty() )
1021 *out =
proxy.password_override;
1039#define VAULT_APP_NAME "hexvault"
1040#define VAULT_PROXY_APP_NAME VAULT_APP_NAME "_proxy"
1041#define DEFAULT_VAULT_HOST "hexvault"
1042#define DEFAULT_VAULT_PORT 65433
1061#define VCS_SEEN_SITE_OPTION (0x1 << LCS_RESERVED_BITS)
1062#define VCS_UPDATE_REG_INFO (0x2 << LCS_RESERVED_BITS)
1063#define VCS_USE_PROXY (0x4 << LCS_RESERVED_BITS)
1083#define AUF_SILENT_UPDATE_FAILURE 0x1
1103 void get_reg_key(
qstring *out)
const;
1108# define PUBLIC_LUMINA_HOST "public-lumina.hex-rays.com"
1109# define PUBLIC_DEC_HOST "public-lumina.hex-rays.com"
1110# define PUBLIC_TLM_HOST "public-lumina.hex-rays.com"
1112# define PUBLIC_LUMINA_HOST "lumina.hex-rays.com"
1113# define PUBLIC_DEC_HOST "lumina.hex-rays.com"
1114# define PUBLIC_TLM_HOST "tlm.hex-rays.com"
1116#define DEFAULT_LUMINA_PORT 443
1117#define PUBLIC_DEC_PORT 443
1118#define PUBLIC_TLM_PORT 443
1120#define LUMINA_APP_NAME "lumina"
1132 void init(
bool set_as_primary=
true);
1179#define VPAF_NATURE_FILE 0x01
1180#define VPAF_NATURE_DIR 0x02
1181#define VPAF_NATURE_ABSENT 0x03
1182#define VPAF_NATURE_MASK 0x0F
1183#define VPAF_RESTRICTED 0x10
1186 const char *path_identity,
void swap(_qstring< qchar > &r)
Swap contents of two qstrings. see qvector::swap()
Definition pro.h:3122
bool empty(void) const
Does the qstring have 0 non-null elements?
Definition pro.h:3168
void resize(size_t s, qchar c)
Resize to the given size.
Definition pro.h:3131
static constexpr size_t npos
Definition pro.h:3692
void split(qvector< _qstring< qchar > > *out, const qchar *sep, uint32 flags=0) const
Split a string on SEP, appending the parts to OUT.
_qstring & remove(size_t idx, size_t cnt)
Remove characters from the qstring.
Definition pro.h:3408
_qstring & append(qchar c)
Append c to the end of the qstring.
Definition pro.h:3493
const qchar * c_str(void) const
Convert the qstring to a char *.
Definition pro.h:3170
void clear(void)
Clear qstring and free memory.
Definition pro.h:3166
Vector of bytes (use for dynamic memory)
Definition pro.h:3773
virtual ~generic_client_t()
virtual rpc_packet_data_t * create_failure_packet(const char *errmsg)=0
generic_client_t(const char *_server_name, rpc_engine_creator_t *engine_creator, idarpc_stream_t *_irs)
Definition network.hpp:951
virtual bool try_reconnect(qstring *errbuf)=0
rpc_engine_creator_t * create_rpc_engine
Definition network.hpp:940
virtual bool is_handshake_packet(const rpc_packet_data_t &)
Definition network.hpp:964
recording_rpc_engine_t * rpc_engine
Definition network.hpp:941
Reimplementation of vector class from STL.
Definition pro.h:2250
size_t size(void) const
Get the number of elements in the qvector.
Definition pro.h:2423
Definition network.hpp:862
virtual rpc_packet_data_t * request_and_response(const rpc_packet_data_t &request) new api
int get_protocol_version() const
Definition network.hpp:923
void record(const rpc_packet_data_t &data, const uchar *bytes, size_t len, bool as_input) const
virtual ~recording_rpc_engine_t()
void record_output(const rpc_packet_data_t &data, const bytevec_t &bytes) const
bool reinit_irs(qstring *errbuf, bool use_tls, const char *server_host, int port)
virtual idarpc_stream_t * get_irs() const override
Definition network.hpp:920
uint64 packet_nr
Definition network.hpp:868
void record_input(const rpc_packet_data_t &data, const rpc_packet_t *rp) const
qstring dumps_dir_path
Definition network.hpp:867
recording_rpc_engine_t(const rpc_packet_type_desc_t *descs, size_t cnt, idarpc_stream_t *_irs, bool _our_irs, bool _is_client, const rpc_pkt_timeout_t *_pkt_timeouts=nullptr, size_t _n_pkt_timeouts=0, int _protocol_version=0)
Definition network.hpp:896
virtual rpc_packet_t * send_request_and_receive_reply(uchar pkt_code, bytevec_t &pkt) override
void set_protocol_version(int _protocol_version)
Definition network.hpp:924
virtual bool get_conversation_name(qstring *) const newapi
Definition network.hpp:884
rpc_packet_data_t * packet_data_from_raw(const rpc_packet_t *rp)
bool is_our_irs() const
Definition network.hpp:921
virtual void get_packet_name(qstring *out, const struct rpc_packet_data_t &data) const newapi
bool start_recording(const qstring &convs_dir)
FILE * fp
Definition network.hpp:866
virtual void format_packet_data(qstring *out, const struct rpc_packet_data_t &data, const char *line_prefix=nullptr) const newapi
bool is_recording() const
Definition network.hpp:798
void register_packet_type_descs(const rpc_packet_type_desc_t *ptypes, size_t cnt)
bool logged_in
Definition network.hpp:813
rpc_packet_t * recv_packet(uchar pkt_code)
int handle_ioctl_packet(bytevec_t &pkt, const uchar *ptr, const uchar *end)
virtual rpc_packet_t * send_request_and_receive_reply(uchar pkt_code, bytevec_t &pkt)=0
virtual bool get_broken_connection(void)
Definition network.hpp:839
void set_pkt_timeouts(const rpc_pkt_timeout_t *_pkt_timeouts, size_t _n_pkt_timeouts)
Definition network.hpp:844
int get_timeout_for_request(uchar pkt_code) const
int recv_timeout
Definition network.hpp:811
qstring last_errstr
Definition network.hpp:801
const char va_list va
Definition network.hpp:837
const rpc_pkt_timeout_t * pkt_timeouts
Definition network.hpp:808
AS_PRINTF(3, 0) virtual ssize_t send_notif(int code
virtual idarpc_stream_t * get_irs() const =0
bool is_client
Definition network.hpp:812
void set_ioctl_handler(ioctl_handler_t *h)
Definition network.hpp:843
DEFINE_ALL_NOTIFICATION_FUNCTIONS(this)
virtual void set_broken_connection(void)
Definition network.hpp:840
size_t n_pkt_timeouts
Definition network.hpp:809
const char * format
Definition network.hpp:837
int send_ioctl(int fn, const void *buf, size_t size, void **poutbuf, ssize_t *poutsize)
ioctl_handler_t * ioctl_handler
Definition network.hpp:805
bool network_error
Definition network.hpp:800
const rpc_packet_type_desc_t * find_packet_type_desc(const char *name) const
virtual ~rpc_engine_t()
Definition network.hpp:826
int send_data(bytevec_t &data)
const rpc_packet_type_desc_t * find_packet_type_desc(int code) const
rpc_engine_t(bool _is_client, const rpc_pkt_timeout_t *_pkt_timeouts=nullptr, size_t _n_pkt_timeouts=0)
idaman THREAD_SAFE va_list va
See qsscanf()
Definition err.h:21
idaman THREAD_SAFE const char * format
Definition fpro.h:78
idaman THREAD_SAFE AS_PRINTF(1, 0) void ida_export vqperror(const char *format
Print error message to stderr (analog of perror)
idaman const char * end
Definition pro.h:1001
int code
Definition fpro.h:88
idaman size_t n
Definition pro.h:997
cexpr_t * e
Definition hexrays.hpp:7308
idaman size_t len
Definition kernwin.hpp:1356
asize_t size
Definition kernwin.hpp:6339
void(idaapi *range_marker)(ea_t ea
Pointer to range marker function (for idaviews and hexviews) This pointer is initialized by setup_ran...
unsigned __int64 uint64
Definition llong.hpp:13
Definition network.hpp:657
void irs_set_progress_cb(idarpc_stream_t *irs, int ms, irs_progress_cb_t cb, void *ud=nullptr)
const char * format
Definition network.hpp:196
CASSERT(sizeof(rpc_packet_t)==5)
DECLARE_TYPE_AS_MOVABLE(host_port_t)
constexpr uint32 TIMESTAMP_ISO8601
Definition network.hpp:507
void ensure_one_server(const char *name)
THREAD_SAFE qtime64_t from_lofi_timestamp(lofi_timestamp_t lts)
Definition network.hpp:535
idaman THREAD_SAFE bool ida_export parse_timestamp(utc_timestamp_t *out, const char *in, uint32 flags=0)
idaman THREAD_SAFE bool ida_export format_timestamp(char *out, size_t out_size, utc_timestamp_t ts, uint32 flags=0)
qvector< rpc_packet_type_desc_t > rpc_packet_type_desc_vec_t
Definition network.hpp:787
bool irs_sockname(idarpc_stream_t *irs, qstring *out, bool lookupname=true)
const char * irs_strerror(idarpc_stream_t *irs)
void set_lprintf_output(FILE *out)
void default_check_license_activation(qstring *out_matched_macaddr, const licsrv_rpc::license_t &lic)
void format_hex_dump(qstrvec_t *out, const uchar *buf, size_t size, bool for_comments, size_t nhex_per_line=16)
qvector< product_entry_t > prodvec_t
Definition network.hpp:653
int ioctl_handler_t(class rpc_engine_t *rpc, int fn, const void *buf, size_t size, void **poutbuf, ssize_t *poutsize)
Definition network.hpp:768
bool irs_cancel_connect_cb_t(void *)
Definition network.hpp:394
int irs_ready(idarpc_stream_t *irs, int timeout_ms=-1)
void default_print_license_info(const licsrv_rpc::license_t &lic)
ssize_t irs_send_data(idarpc_stream_t *irs, const void *buf, size_t n)
progress_loop_ctrl_t irs_progress_cb_t(bool receiving, size_t processed, size_t total, void *)
Definition network.hpp:402
rpc_engine_t * rpc
Definition network.hpp:970
bool irs_sockport(idarpc_stream_t *irs, int *out)
progress_loop_ctrl_t
Definition network.hpp:397
@ plc_proceed
Definition network.hpp:398
@ plc_cancel
Definition network.hpp:400
@ plc_skip_iter
Definition network.hpp:399
uint64 lofi_timestamp_t
Definition network.hpp:525
void finalize_packet(bytevec_t &pkt)
bool irs_peername(idarpc_stream_t *irs, qstring *out, bool lookupname=true)
idarpc_stream_t * irs_new(bool use_tls=false)
irs_cb_info_t< irs_cancel_connect_cb_t > cancel_connect_cb_info_t
Definition network.hpp:451
constexpr size_t TIMESTAMP_BUFSZ
Definition network.hpp:517
ssize_t irs_recv(idarpc_stream_t *irs, void *buf, size_t n)
irs_cb_info_t< irs_progress_cb_t > progress_cb_info_t
Definition network.hpp:450
bool irs_init_server(idarpc_stream_t *irs, const irs_server_opts_t &options)
THREAD_SAFE lofi_timestamp_t to_lofi_timestamp(qtime64_t ts)
Definition network.hpp:527
void validate_path_argument(const char *path_identity, const char *path, uint32 flags)
constexpr uint32 TIMESTAMP_WITH_MS
Definition network.hpp:508
bool irs_init_client(idarpc_stream_t *irs, const irs_client_opts_t &options)
const char va_list va
Definition network.hpp:197
AS_PRINTF(2, 0) ssize_t dvnotif_client(int code
int irs_get_error(idarpc_stream_t *irs)
rpc_packet_data_t * rpc_packet_instantiator_t(const uchar *ptr, size_t len, int version)
Definition network.hpp:777
bool irs_recv_str(idarpc_stream_t *irs, qstring *out, int timeout_ms=-1)
bool license_server_enabled()
qtime64_t utc_timestamp_t
Definition network.hpp:505
bool irs_send_str(idarpc_stream_t *irs, const qstring &str)
void irs_term(idarpc_stream_t **pirs, int shutdown_flags=-1)
ssize_t lwrite(const void *data, size_t size)
ssize_t irs_send(idarpc_stream_t *irs, const void *buf, size_t n)
void call_exit_handlers()
kc_ctx_t * get_keychain_context()
bool irs_accept(idarpc_stream_t *irs, idarpc_stream_t *listener)
base_packet_id_t
Definition network.hpp:85
@ RPC_UNK
Definition network.hpp:87
@ RPC_MEM
Definition network.hpp:88
@ RPC_OK
Definition network.hpp:86
@ base_packet_id_last
Definition network.hpp:89
rpc_notification_type_t
Definition network.hpp:169
@ rnt_warning
Definition network.hpp:172
@ rnt_msg
Definition network.hpp:171
@ rnt_unknown
Definition network.hpp:170
@ rnt_error
Definition network.hpp:173
NORETURN const char bytevec_t prepare_rpc_packet(uchar code)
constexpr uint32 TIMESTAMP_UTC
Definition network.hpp:506
void install_signal_and_exit_handlers()
ssize_t irs_recv_data(idarpc_stream_t *irs, void *buf, size_t n, int timeout_ms=-1)
bool irs_handshake(idarpc_stream_t *irs, int timeout_ms=-1)
This is the first header included in the IDA project.
idaman size_t const char time_t t
Definition pro.h:602
idaman THREAD_SAFE qtime64_t ida_export qtime64(void)
Get the current time with microsecond resolution (in fact the resolution is worse on windows)
unsigned int uint32
unsigned 32 bit value
Definition pro.h:348
uint64 qtime64_t
64-bit time value expressed as seconds and microseconds since the Epoch
Definition pro.h:499
unsigned char uchar
unsigned 8 bit value
Definition pro.h:337
INLINE THREAD_SAFE qtime64_t make_qtime64(uint32 secs, DEFARG(int32 usecs, 0))
Get a qtime64_t instance from a seconds value and microseconds value.
Definition pro.h:522
THREAD_SAFE void qswap(T &a, T &b)
Swap 2 objects of the same type using memory copies.
Definition pro.h:1715
INLINE THREAD_SAFE uint32 get_secs(qtime64_t t)
Get the 'seconds since the epoch' part of a qtime64_t.
Definition pro.h:504
idaman THREAD_SAFE bool ida_export qmutex_unlock(qmutex_t m)
Unlock a mutex.
idaman THREAD_SAFE bool ida_export qmutex_free(qmutex_t m)
Free a mutex.
idaman THREAD_SAFE bool ida_export qmutex_lock(qmutex_t m)
Lock a mutex.
idaman THREAD_SAFE qmutex_t ida_export qmutex_create(void)
Create a new mutex.
ptrdiff_t ssize_t
Signed size_t - used to check for size overflows when the counter becomes negative.
Definition pro.h:381
unsigned short ushort
unsigned 16 bit value
Definition pro.h:338
INLINE THREAD_SAFE uint32 get_usecs(qtime64_t t)
Get the microseconds part of a qtime64_t.
Definition pro.h:512
void idaapi setflag(T &where, U bit, bool cnd)
Set a 'bit' in 'where' if 'value' if not zero.
Definition pro.h:1527
_qstring< char > qstring
regular string
Definition pro.h:3694
qvector< qstring > qstrvec_t
vector of strings
Definition pro.h:3697
utc_timestamp_t start_time
Definition network.hpp:614
qstring privkey
Definition network.hpp:611
void delete_client_handler(network_client_handler_t *inst)
virtual void collect_cliopts(cliopts_t *out, uint32 features)
virtual void shutdown_gracefully(int signum)
virtual ~base_dispatcher_t()
idarpc_stream_t * irs
Definition network.hpp:612
client_handlers_list_t * clients_list
Definition network.hpp:613
qstring certchain
Definition network.hpp:610
bool verbose
Definition network.hpp:617
ushort port_number
Definition network.hpp:615
void install_signal_handlers()
bool use_tls
Definition network.hpp:616
virtual network_client_handler_t * new_client_handler(idarpc_stream_t *_irs)=0
qstring ipv4_address
Definition network.hpp:609
base_dispatcher_t(bool multi_threaded)
Definition network.hpp:580
virtual void lock()
Definition network.hpp:585
std::map< network_client_handler_t *, qthread_t > storage_t
Definition network.hpp:581
storage_t storage
Definition network.hpp:582
virtual void unlock()
Definition network.hpp:586
virtual ~client_handlers_list_t()
Definition network.hpp:584
virtual bool is_multi_threaded() const
Definition network.hpp:587
Definition network.hpp:1046
virtual bool validate(login_credentials_t &cred)=0
dec_credentials_t()
Definition network.hpp:1141
virtual ~dec_credentials_t()
Definition network.hpp:1142
Definition network.hpp:261
void build_connstr(qstring *out, uint32 flags=0) const
Definition network.hpp:363
void clear()
Definition network.hpp:273
endpoint_credentials_t(const qstring &_host, ushort _port)
Definition network.hpp:269
qstring password_override
Definition network.hpp:266
qstring username
Definition network.hpp:262
bool parse_connstr(const qstring &s, uint32 flags=0)
Definition network.hpp:356
static bool parse_connstr(endpoint_credentials_t *out, const qstring &s, uint32 flags=0)
Definition network.hpp:286
qstring build_connstr(uint32 flags=0) const
Definition network.hpp:384
endpoint_credentials_t()
Definition network.hpp:268
exit_handler_t & operator=(const exit_handler_t &r)=delete
virtual ~exit_handler_t()
exit_handler_t(const exit_handler_t &)=delete
virtual void handle(int signum)=0
Definition network.hpp:219
void clear()
Definition network.hpp:226
bool operator==(const host_port_t &r) const
Definition network.hpp:229
qstring connstr(int default_port=0) const
Definition network.hpp:240
host_port_t()
Definition network.hpp:223
qstring host
Definition network.hpp:220
host_port_t(const qstring &_host, ushort _port)
Definition network.hpp:224
ushort port
Definition network.hpp:221
bool is_valid() const
Definition network.hpp:227
void swap(host_port_t &r)
Definition network.hpp:234
idarpc_stream_t * irs
Definition network.hpp:406
irs_cancellable_op_t(idarpc_stream_t *_irs, bool receiving, size_t goal=0)
void inc_progress(size_t progress)
Definition network.hpp:415
T * get(int *out_ms=nullptr, void **out_ud=nullptr) const
Definition network.hpp:440
void reset()
Definition network.hpp:421
int ms
Definition network.hpp:418
bool set(int _ms, T *_cb, void *_ud)
Definition network.hpp:428
irs_cb_info_t()
Definition network.hpp:420
irs_progress_cb_t * cb
Definition network.hpp:416
void * ud
Definition network.hpp:417
Definition network.hpp:455
cancel_connect_cb_info_t cancel_connect_cb_info
Definition network.hpp:459
irs_client_opts_t()
Definition network.hpp:461
endpoint_credentials_t server
Definition network.hpp:457
size_t cb
Definition network.hpp:456
endpoint_credentials_t proxy
Definition network.hpp:458
irs_client_opts_t(const qstring &_host, int _port)
Definition network.hpp:462
Definition network.hpp:469
qstring privkey_path
Definition network.hpp:473
irs_server_opts_t()
Definition network.hpp:475
qstring certchain_path
Definition network.hpp:472
irs_server_opts_t(const qstring &_host, int _port)
Definition network.hpp:476
size_t cb
Definition network.hpp:470
host_port_t bind
Definition network.hpp:471
Definition network.hpp:671
virtual void check_license_type(const licsrv_rpc::license_t &)
Definition network.hpp:672
virtual void check_license_activation(qstring *out_matched_macaddr, const licsrv_rpc::license_t &lic)
Definition network.hpp:677
virtual void print_license_info(const licsrv_rpc::license_t &lic) const
Definition network.hpp:694
virtual void fill_server_info(const product_entry_t &, const qstring &, const qstring &, const qstring &)
Definition network.hpp:684
virtual int on_parse_error(int code)
Definition network.hpp:692
Definition network.hpp:994
bool load_password(qstring *out, qstring *errbuf) const
Definition network.hpp:1007
virtual void clear() new api
Definition network.hpp:1005
login_credentials_t(const qstring &_host, ushort _port)
Definition network.hpp:1001
void set_use_tls(bool use_tls)
Definition network.hpp:1028
virtual bool write(qstring *) const newapi
Definition network.hpp:1035
bool load_proxy_password(qstring *out, qstring *errbuf) const
Definition network.hpp:1017
endpoint_credentials_t proxy
Definition network.hpp:995
uint32 state
Definition network.hpp:999
virtual ~login_credentials_t()
Definition network.hpp:1003
bool use_tls() const
Definition network.hpp:1027
bool has_seen_proxy_option() const
Definition network.hpp:1029
virtual bool do_load_proxy_password(qstring *, qstring *) const newapi
Definition network.hpp:1034
virtual bool do_load_password(qstring *, qstring *) const newapi
Definition network.hpp:1033
virtual bool process_switch(const char *) new api
bool load_pass_from_keychain(qstring *, qstring *, const char *) const
void init(bool set_as_primary=true)
bool is_primary
Definition network.hpp:1125
virtual bool write(qstring *errbuf) const override
virtual ~lumina_credentials_t()
Definition network.hpp:1130
virtual bool do_load_password(qstring *out, qstring *errbuf) const override
lumina_credentials_t()
Definition network.hpp:1127
virtual void unlock() override
Definition network.hpp:598
virtual bool is_multi_threaded() const override
Definition network.hpp:599
mt_client_handlers_list_t()
Definition network.hpp:595
qmutex_t mutex
Definition network.hpp:593
virtual void lock() override
Definition network.hpp:597
virtual ~mt_client_handlers_list_t()
Definition network.hpp:596
Definition network.hpp:544
void close_all_channels()
virtual void shutdown_gracefully(int signum)=0
virtual ~network_client_handler_t()
AS_PRINTF(2, 0) int vlprintf(const char *format
qstring peer_name
Definition network.hpp:547
AS_PRINTF(2, 3) int lprintf(const char *format
utc_timestamp_t session_start
Definition network.hpp:549
const
Definition network.hpp:565
idarpc_stream_t * irs
Definition network.hpp:546
network_client_handler_t(idarpc_stream_t *_irs, bool _verbose)
FILE * channels[16]
Definition network.hpp:545
bool verbose
Definition network.hpp:550
int code
Definition network.hpp:568
int find_free_channel() const
uint32 session_id
Definition network.hpp:548
Definition network.hpp:758
virtual bool deserialize(const uchar **ptr, size_t len, int version)=0
virtual void serialize(bytevec_t *out, int version) const =0
rpc_packet_data_t(uchar _code)
Definition network.hpp:761
uchar code
Definition network.hpp:759
virtual ~rpc_packet_data_t()
Definition network.hpp:762
Definition network.hpp:161
uchar code
Definition network.hpp:163
uint32 length
Definition network.hpp:162
Definition network.hpp:781
rpc_packet_instantiator_t * instantiate
Definition network.hpp:784
uchar code
Definition network.hpp:782
const char * name
Definition network.hpp:783
Definition network.hpp:791
int recv_timeout
Definition network.hpp:793
uchar pkt_code
Definition network.hpp:792
Definition network.hpp:645
qstring log_file_path
Definition network.hpp:647
qstring connection_string
Definition network.hpp:646
qstring config_file_path
Definition network.hpp:649
qstring license_file_path
Definition network.hpp:648
const licsrv_rpc::license_t * read_license_file(license_file_visitor_t &lv) const
bool may_upgrade_schema
Definition network.hpp:711
void check_license_file(license_file_visitor_t &lv) const
void setup_logging_output()
FILE * log_file
Definition network.hpp:708
bool check_license_activation
Definition network.hpp:714
void log_request(const bytevec_t &request, int interr_code=-1) const
bool should_recreate_schema
Definition network.hpp:710
qstring badreqdir
Definition network.hpp:707
void get_license_file_contents(bytevec_t *data) const
virtual void collect_cliopts(cliopts_t *out, uint32 features) override
void maybe_start_recording(recording_rpc_engine_t *e)
server_dispatcher_t(bool _multi_threaded, int default_port, const char *default_license_file_name)
base_dispatcher_t inherited
Definition network.hpp:704
virtual ~server_dispatcher_t()
qstring convdir
Definition network.hpp:712
qstring license_file_name
Definition network.hpp:706
licmgr_logger_t * licmgr_logger
Definition network.hpp:709
virtual ~tlm_credentials_t()
Definition network.hpp:1149
tlm_credentials_t()
Definition network.hpp:1148
virtual ~vault_credentials_t()
Definition network.hpp:1066
virtual bool do_load_password(qstring *out, qstring *errbuf) const override
bool update(qstring *errbuf) const
virtual bool process_switch(const char *arg) override
static void reg_set_store_info(bool store_pass)
vault_credentials_t()
Definition network.hpp:1065
bool del(qstring *errbuf) const
void reg_set_site(const char *site) const
static bool reg_should_store_info()
bool has_seen_site_option() const
Definition network.hpp:1096
ask_user_result_t
Definition network.hpp:1078
@ AUR_CANCELLED
Definition network.hpp:1079
@ AUR_VALID
Definition network.hpp:1080
@ AUR_INVALID
Definition network.hpp:1081
virtual bool do_load_proxy_password(qstring *out, qstring *errbuf) const override
virtual bool write(qstring *errbuf) const override
static bool reg_del_store_info()
ask_user_result_t ask_user(credential_validator_t *validator, qstring *errbuf, uint32 auf_flags=0)
login_credentials_t inherited
Definition network.hpp:1059
qstring sitename
Definition network.hpp:1060
virtual void clear() override
Definition network.hpp:1069