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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
|
#ifndef __OG_DBI
#define __OG_DBI
#include <dbi/dbi.h>
#include <stdbool.h>
#include <sys/stat.h>
struct og_dbi_config {
const char *user;
const char *pass;
const char *ip;
const char *port;
const char *name;
};
struct og_dbi {
dbi_conn conn;
dbi_inst inst;
};
struct og_dbi *og_dbi_open(struct og_dbi_config *config);
void og_dbi_close(struct og_dbi *db);
#define OG_DB_COMPUTER_NAME_MAXLEN 100
#define OG_DB_CENTER_NAME_MAXLEN 100
#define OG_DB_ROOM_NAME_MAXLEN 100
#define OG_DB_FOLDER_NAME_MAXLEN 100
#define OG_DB_ROOM_LOC_MAXLEN 255
#define OG_DB_SERIAL_NUMBER_MAXLEN 25
#define OG_DB_IMAGE_DESCRIPTION_MAXLEN 250
#define OG_DB_REPO_NAME_MAXLEN 250
#define OG_DB_PART_NAME_MAXLEN 250
#define OG_DB_IMAGE_NAME_MAXLEN 50
#define OG_DB_FILESYSTEM_MAXLEN 16
#define OG_DB_NETDRIVER_MAXLEN 30
#define OG_DB_NETIFACE_MAXLEN 4
#define OG_DB_LIVEDIR_MAXLEN 50
#define OG_DB_INT8_MAXLEN 8
#define OG_DB_BOOT_MAXLEN 30
#define OG_DB_INT_MAXLEN 11
#define OG_DB_MAC_MAXLEN 15
#define OG_DB_IP_MAXLEN 15
#define OG_DB_SMALLINT_MAXLEN 6
#define OG_DB_COMMENT_MAXLEN 250
struct og_image_legacy {
char software_id[OG_DB_INT_MAXLEN + 1];
char image_id[OG_DB_INT_MAXLEN + 1];
char name[OG_DB_IMAGE_NAME_MAXLEN + 1];
char repo[OG_DB_IP_MAXLEN + 1];
char part[OG_DB_SMALLINT_MAXLEN + 1];
char disk[OG_DB_SMALLINT_MAXLEN + 1];
char code[OG_DB_INT8_MAXLEN + 1];
};
#define OG_DB_CHECKSUM 128
struct og_image {
char name[OG_DB_IMAGE_NAME_MAXLEN + 1];
char description[OG_DB_IMAGE_DESCRIPTION_MAXLEN + 1];
char checksum[OG_DB_CHECKSUM + 1];
uint64_t software_id;
uint64_t center_id;
uint64_t datasize;
uint64_t size;
long int lastupdate;
uint64_t group_id;
uint64_t repo_id;
uint64_t type;
uint64_t id;
uint32_t perms;
};
struct og_legacy_partition {
char partition[OG_DB_SMALLINT_MAXLEN + 1];
char code[OG_DB_PART_NAME_MAXLEN + 1];
char size[OG_DB_INT_MAXLEN + 1];
char filesystem[OG_DB_FILESYSTEM_MAXLEN + 1];
char format[2]; /* Format is a boolean 0 or 1 => length is 2 */
};
struct og_computer {
unsigned int procedure_id;
unsigned int hardware_id;
unsigned int repo_id;
unsigned int center;
unsigned int room;
unsigned int folder_id;
unsigned int id;
bool maintenance;
bool remote;
char serial_number[OG_DB_SERIAL_NUMBER_MAXLEN + 1];
char netdriver[OG_DB_NETDRIVER_MAXLEN + 1];
char name[OG_DB_COMPUTER_NAME_MAXLEN + 1];
char netiface[OG_DB_NETIFACE_MAXLEN + 1];
char livedir[OG_DB_LIVEDIR_MAXLEN + 1];
char netmask[OG_DB_IP_MAXLEN + 1];
char boot[OG_DB_BOOT_MAXLEN + 1];
char mac[OG_DB_MAC_MAXLEN + 1];
char ip[OG_DB_IP_MAXLEN + 1];
};
struct og_room {
uint32_t id;
uint32_t center;
uint32_t folder_id;
char location[OG_DB_ROOM_LOC_MAXLEN + 1];
char name[OG_DB_ROOM_NAME_MAXLEN + 1];
char gateway[OG_DB_IP_MAXLEN + 1];
char netmask[OG_DB_IP_MAXLEN + 1];
char ntp[OG_DB_IP_MAXLEN + 1];
char dns[OG_DB_IP_MAXLEN + 1];
bool remote;
};
struct og_center {
uint32_t id;
char name[OG_DB_CENTER_NAME_MAXLEN + 1];
char comment[OG_DB_COMMENT_MAXLEN + 1];
};
struct og_folder {
unsigned int id;
unsigned int room;
unsigned int center;
char name[OG_DB_FOLDER_NAME_MAXLEN + 1];
};
struct in_addr;
int og_dbi_get_computer_info(struct og_dbi *dbi, struct og_computer *computer,
struct in_addr addr);
int og_dbi_get_room_info(struct og_dbi *dbi, struct og_room *room,
uint32_t room_id);
int og_dbi_get_center_info(struct og_dbi *dbi, struct og_center *center);
bool og_dbi_get_image(struct og_dbi *dbi, struct og_image *image);
int og_dbi_add_image(struct og_dbi *dbi, struct og_image *image);
int og_dbi_schema_update(void);
int og_dbi_get_repository_ip(const struct og_dbi *dbi, const uint32_t repo_id,
const char *client_ip, char *repository_ip);
int og_dbi_get_server_ip(const struct og_dbi *dbi, const char *client_ip,
char *server_ip);
#endif
|