28 |
28 |
*/
|
29 |
29 |
|
30 |
30 |
define('ZEROMQ_AUTH_FAIL', 'authfail');
|
|
31 |
define('ZEROMQ_TRUE', 'true');
|
|
32 |
define('ZEROMQ_FASLE', 'false');
|
|
33 |
|
|
34 |
$do_not_include_config_gui_inc = true;
|
|
35 |
require("auth.inc"):
|
31 |
36 |
|
32 |
37 |
/* zeromq_send: Send a message to a member node */
|
33 |
|
function zeromq_send($protocol = "tcp", $ipaddress, $port, $message) {
|
34 |
|
if(!$ipaddress || !$port || !$message)
|
|
38 |
function zeromq_send($protocol = "tcp", $ipaddress, $port, $method, $params, $username, $password) {
|
|
39 |
if(!$ipaddress || !$port || !$message || !$username || !$password)
|
35 |
40 |
return;
|
36 |
41 |
|
|
42 |
/* Set calling function and auth information */
|
|
43 |
$params['username'] = $username;
|
|
44 |
$params['password'] = $password;
|
|
45 |
$params['function'] = $method;
|
|
46 |
|
37 |
47 |
/* Serialize the data we are going to send over */
|
38 |
|
$serialized = serialize($message);
|
|
48 |
$serialized = serialize($params);
|
39 |
49 |
|
40 |
50 |
/* Create new queue object */
|
41 |
51 |
$queue = new ZMQSocket(new ZMQContext(), ZMQ::SOCKET_REQ, "MySock1");
|
... | ... | |
103 |
113 |
}
|
104 |
114 |
}
|
105 |
115 |
|
106 |
|
function zeromq_auth(&$params) {
|
107 |
|
global $config, $g;
|
108 |
|
$localpass = $config['system']['user'][0]['password'];
|
109 |
|
if(crypt($params[0], $localpass) == $localpass) {
|
110 |
|
array_shift($params);
|
111 |
|
return true;
|
112 |
|
} else if(crypt($params['xmlrpcauth'], $localpass) != $localpass) {
|
113 |
|
unset($params['xmlrpcauth']);
|
|
116 |
function zeromq_auth($params) {
|
|
117 |
global $config, $g;
|
|
118 |
|
|
119 |
$username = $params['username'];
|
|
120 |
$password = $params['password'];
|
|
121 |
|
|
122 |
$user = getUserEntry($username);
|
|
123 |
if (!$user)
|
114 |
124 |
return false;
|
|
125 |
|
|
126 |
if (is_account_disabled($username) || is_account_expired($username))
|
|
127 |
return false;
|
|
128 |
|
|
129 |
if ($user['password']) {
|
|
130 |
$passwd = crypt($passwd, $user['password']);
|
|
131 |
if ($passwd == $user['password'])
|
|
132 |
return true;
|
115 |
133 |
}
|
116 |
|
unset($params['xmlrpcauth']);
|
|
134 |
|
|
135 |
if ($user['md5-hash']) {
|
|
136 |
$passwd = md5($passwd);
|
|
137 |
if ($passwd == $user['md5-hash'])
|
|
138 |
return true;
|
|
139 |
}
|
|
140 |
|
117 |
141 |
return false;
|
118 |
142 |
}
|
119 |
143 |
|
... | ... | |
128 |
152 |
$response = XML_RPC_encode($toreturn);
|
129 |
153 |
return new XML_RPC_Response($response);
|
130 |
154 |
} else
|
131 |
|
return $xmlrpc_g['return']['true'];
|
|
155 |
return ZEROMQ_FASLE;
|
132 |
156 |
}
|
133 |
157 |
|
134 |
158 |
function exec_shell_zeromq($raw_params) {
|
... | ... | |
138 |
162 |
return ZEROMQ_AUTH_FAIL;
|
139 |
163 |
$shell_cmd = $params[0];
|
140 |
164 |
mwexec($shell_cmd);
|
141 |
|
return $xmlrpc_g['return']['true'];
|
|
165 |
return ZEROMQ_FASLE;
|
142 |
166 |
}
|
143 |
167 |
|
144 |
168 |
function backup_config_section_zeromq($raw_params) {
|
... | ... | |
158 |
182 |
$config = array_merge($config, $params[0]);
|
159 |
183 |
$mergedkeys = implode(",", array_keys($params[0]));
|
160 |
184 |
write_config(sprintf(gettext("Merged in config (%s sections) from XMLRPC client."),$mergedkeys));
|
161 |
|
return $xmlrpc_g['return']['true'];
|
|
185 |
return ZEROMQ_FASLE;
|
162 |
186 |
}
|
163 |
187 |
|
164 |
188 |
function merge_installedpackages_section_zeromq($raw_params) {
|
... | ... | |
169 |
193 |
$config['installedpackages'] = array_merge($config['installedpackages'], $params[0]);
|
170 |
194 |
$mergedkeys = implode(",", array_keys($params[0]));
|
171 |
195 |
write_config(sprintf(gettext("Merged in config (%s sections) from XMLRPC client."),$mergedkeys));
|
172 |
|
return $xmlrpc_g['return']['true'];
|
|
196 |
return ZEROMQ_FASLE;
|
173 |
197 |
}
|
174 |
198 |
|
175 |
199 |
function merge_config_section_zeromq($raw_params) {
|
... | ... | |
180 |
204 |
$config = array_merge_recursive_unique($config, $params[0]);
|
181 |
205 |
$mergedkeys = implode(",", array_keys($params[0]));
|
182 |
206 |
write_config("Merged in config ({$mergedkeys} sections) from XMLRPC client.");
|
183 |
|
return $xmlrpc_g['return']['true'];
|
|
207 |
return ZEROMQ_FASLE;
|
184 |
208 |
}
|
185 |
209 |
|
186 |
210 |
function filter_configure_zeromq($raw_params) {
|
... | ... | |
197 |
221 |
services_dhcpd_configure();
|
198 |
222 |
services_dnsmasq_configure();
|
199 |
223 |
local_sync_accounts();
|
200 |
|
return $xmlrpc_g['return']['true'];
|
|
224 |
return ZEROMQ_FASLE;
|
201 |
225 |
}
|
202 |
226 |
|
203 |
227 |
function interfaces_carp_configure_zeromq($raw_params) {
|
... | ... | |
207 |
231 |
return ZEROMQ_AUTH_FAIL;
|
208 |
232 |
interfaces_carp_setup();
|
209 |
233 |
interfaces_vips_configure();
|
210 |
|
return $xmlrpc_g['return']['true'];
|
|
234 |
return ZEROMQ_FASLE;
|
211 |
235 |
}
|
212 |
236 |
|
213 |
237 |
function check_firmware_version_zeromq($raw_params) {
|
... | ... | |
223 |
247 |
if(!zeromq_auth($params))
|
224 |
248 |
return ZEROMQ_AUTH_FAIL;
|
225 |
249 |
mwexec_bg("/etc/rc.reboot");
|
226 |
|
return $xmlrpc_g['return']['true'];
|
|
250 |
return ZEROMQ_FASLE;
|
227 |
251 |
}
|
228 |
252 |
|
229 |
253 |
function get_notices_zeromq($raw_params) {
|
Adapt to use 2.0's accounts