1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
/* Copyright (C) 2022 The Qt Company Ltd.
*
* SPDX-License-Identifier: GPL-3.0-only WITH Qt-GPL-exception-1.0
*/
#pragma once
#include <map>
#include <string>
#include "version.h"
#define DAEMON_ADDR "localhost"
#define DAEMON_PORT 60000
#define BLOCK_IF_NO_LICENSE true
#define USER_SETTINGS_FILE "qtlicenseservice.ini"
#define DEFAULT_USER_SETTINGS_TAG "[default]"
#define SERVER_VERSION_CMD "serverversion"
#define DAEMON_VERSION_CMD "daemon_version"
#define RESERVATION_QUERY_CMD "reservation_query"
#define LICENSE_REQUEST_CMD "license"
#define LONGTERM_REQUEST_CMD "longterm"
#define OP_ADD_RESERVATION "add"
#define OP_REMOVE_RESERVATION "remove"
#define QTLICENSETOOL_APP_NAME "clitool"
#define SQUISH_IDE_APP_NAME "squish-ide"
#define SQUISH_APP_NAME "squish"
#define COCO_APP_NAME "coco"
#define MOCWRAPPER_APP_NAME "moc"
#define CREATOR_APPNAME "qtcreator"
#define DESIGN_STUDIO_APP_NAME "qtdesignstudio"
#define ORIGINAL_MOC_PREFIX "orig_"
#define LICENSE_FILE_PREFIX "lic_"
#define LICENSE_FILE_EXTENSION ".json"
#if __APPLE__ || __MACH__
#define WORKING_DIR "/opt/licd"
#elif __linux__
#define WORKING_DIR "/opt/licd"
#else
#define WORKING_DIR "C:/Program Files/licd/"
#endif
#define DAEMON_SETTINGS_FILE WORKING_DIR "/licd.ini"
#define SHA256_HASH_SIZE 32
#define SECS_IN_HOUR 3600
#define SECS_IN_DAY 86400
struct License {
uint64_t last_timestamp = 0; // |
uint64_t current_timestamp = 0; // | For internal use only, not in server resp JSON
uint64_t expiry_epoch = 0; // _|
uint16_t leeway_hours = 0;
std::string message;
bool status = false;
std::string expiry_date;
std::string operation;
std::string license_key;
std::string license_id;
std::string reservation_id;
std::string parent_reservation_id; // TODO Coming with qa tools: Check with server end!
std::string user_id;
};
enum RequestReply {
e_bad_request = -1,
e_got_response = 0,
e_license_granted = 1,
e_license_rejected = 2,
e_no_conn_leeway = 3,
e_license_pool_full = 4,
e_bad_connection = 5
};
enum class RequestType {
no_request = 0,
license_request = 1,
keepalive_report = 2,
license_release = 3,
long_term_request = 4,
server_version = 5,
daemon_version = 6,
reservation_query = 7,
};
enum class ClientType {
client_undefined = -1,
client_moc = 1,
client_plugin,
client_CLI,
client_squish,
client_squish_ide,
client_coco
};
// Struct to store request info
struct RequestInfo {
uint16_t socketId;
RequestType type = RequestType::no_request;
ClientType client;
uint16_t updateIntervalSecs;
std::string licenseFile;
std::string reservationID;
std::string operation;
std::string appName;
std::string appVersion;
std::string userId;
std::string licenseId;
std::string email;
std::string payload;
std::string serverAddr;
uint64_t startTimestamp; // used by QA-Tools only
uint64_t stopTimestamp = 0; // used by QA-Tools only
std::string runnerType; // 'tester' | 'exe', used by QA-Tools only
std::string parentReservationId; // used by QA-Tools only
};
|