Magellan Linux

Contents of /mcore-src/trunk/mcore-tools/src/include/register.global.class.in

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2506 - (show annotations) (download)
Fri Sep 11 09:53:49 2015 UTC (8 years, 7 months ago) by niro
File size: 2749 byte(s)
-import client version information on register
1 # $Id$
2
3 validate_client()
4 {
5 local mac_address="$1"
6 local ip_address="$2"
7 local serial
8 local mtime
9 local serial_id
10 local os
11 local tools
12
13 if [[ -z ${mac_address} ]]
14 then
15 eecho "Error: No mac_address given"
16 return 1
17 fi
18
19 if [[ -z ${ip_address} ]]
20 then
21 eecho "Error: No ip_address given"
22 return 1
23 fi
24
25 decho "registering mac_address='${mac_address}'"
26 decho "registering ip_address='${ip_address}'"
27
28 # first check if mac is registered
29 serial=$(mysqldo "select serial from client_serials where mac='${mac_address}'")
30
31 # current mtime
32 mtime=$(date +%s)
33
34 if [[ -z ${serial} ]]
35 then
36 # request a new serial; one command now (cause must be done in the same session)
37 serial=$(mysqldo "insert into client_serials (mtime, mac) values('${mtime}','${mac_address}'); select last_insert_id();")
38 fi
39
40 if [[ -z ${serial} ]]
41 then
42 return 1
43 else
44 decho "serial='${serial}'"
45 rvecho "${serial}"
46
47 SSLSAY_IP="${ip_address}"
48 SSLSAY_PORT="6666"
49 nsslsay_fingerprint "register '${serial}'"
50
51 # register the client as online
52 serial_id=$(mysqldo "select serial from state_connected where serial=${serial};")
53 if [[ -n ${serial_id} ]]
54 then
55 mysqldo "update state_connected set ip='${ip_address}', mac='${mac_address}', mtime='${mtime}' where serial=${serial};"
56 else
57 mysqldo "insert into state_connected(serial,ip,mac,mtime) values('${serial}','${ip_address}','${mac_address}','${mtime}');"
58 fi
59
60 # update tools and os version info
61 nsslsay_queue_init
62 nsslsay_queue_add "nocolors"
63 nsslsay_queue_add "get version.os"
64 os=$(control_client "${serial}" run-queue)
65 import_resource client_version "${serial}" os "${os}"
66 nsslsay_queue_init
67 nsslsay_queue_add "nocolors"
68 nsslsay_queue_add "get version.tools"
69 os=$(control_client "${serial}" run-queue)
70 import_resource client_version "${serial}" utils "${tools}"
71
72 # run hardware detection
73 if is_provided hardware
74 then
75 run_hardware_detect "${serial}"
76 fi
77
78 return 0
79 fi
80 }
81
82 register_client()
83 {
84 local control_server_ip
85 local iface_ip
86 local iface
87 local mac_address
88
89 control_server_ip=$(dns_to_ip ${MCORE_CONTROL_SERVER})
90 iface_ip=$(iface_for_remote_addr ${control_server_ip})
91 iface=$(iface_for_ip ${iface_ip})
92 mac_address=$(mac_for_iface ${iface})
93
94 decho "MCORE_CONTROL_SERVER='${MCORE_CONTROL_SERVER}'"
95 decho "iface_ip='${iface_ip}'"
96 decho "iface='${iface}'"
97 decho "mac_address='${mac_address}'"
98
99 decho "register '${mac_address}'"
100 nsslsay_fingerprint "register '${mac_address}' '${iface_ip}'"
101 }
102
103 register_client_local()
104 {
105 local serial="$1"
106
107 if [[ -z ${serial} ]]
108 then
109 eecho "No serial given"
110 return 1
111 fi
112
113 install -d "${MCORE_CONFIG_PATH}"
114 CONFIG="${MCORE_CONFIG_PATH}/serial"
115 clearconfig
116 addconfig "CLIENT_SERIAL=\"${serial}\""
117 }