@@ -233,33 +233,10 @@ public function add_database_server_record() {
233233 $ sql = "INSERT INTO `server` (`server_id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_name`, `mail_server`, `web_server`, `dns_server`, `file_server`, `db_server`, `vserver_server`, `config`, `updated`, `active`) VALUES (' " .$ conf ['server_id ' ]."',1, 1, 'riud', 'riud', 'r', ' " .$ conf ['hostname ' ]."', ' $ mail_server_enabled', ' $ web_server_enabled', ' $ dns_server_enabled', ' $ file_server_enabled', ' $ db_server_enabled', ' $ vserver_server_enabled', ' $ server_ini_content', 0, 1); " ;
234234 $ this ->db ->query ($ sql );
235235
236- //* insert the ispconfig user in the remote server
237- $ from_host = $ conf ['hostname ' ];
238- $ from_ip = gethostbyname ($ conf ['hostname ' ]);
239-
240236 //* username for the ispconfig user
241237 $ conf ['mysql ' ]['master_ispconfig_user ' ] = 'ispcsrv ' .$ conf ['server_id ' ];
242-
243- //* Delete ISPConfig user in the master database, in case that it exists
244- $ this ->dbmaster ->query ("DELETE FROM mysql.user WHERE User = ' " .$ conf ['mysql ' ]['master_ispconfig_user ' ]."' AND Host = ' " .$ from_host ."'; " );
245- $ this ->dbmaster ->query ("DELETE FROM mysql.db WHERE Db = ' " .$ conf ['mysql ' ]['master_database ' ]."' AND Host = ' " .$ from_host ."'; " );
246- $ this ->dbmaster ->query ("DELETE FROM mysql.user WHERE User = ' " .$ conf ['mysql ' ]['master_ispconfig_user ' ]."' AND Host = ' " .$ from_ip ."'; " );
247- $ this ->dbmaster ->query ("DELETE FROM mysql.db WHERE Db = ' " .$ conf ['mysql ' ]['master_database ' ]."' AND Host = ' " .$ from_ip ."'; " );
248- $ this ->dbmaster ->query ('FLUSH PRIVILEGES; ' );
249-
250- //* Create the ISPConfig database user in the remote database
251- $ query = 'GRANT SELECT, INSERT, UPDATE, DELETE ON ' .$ conf ['mysql ' ]['master_database ' ].".* "
252- ."TO ' " .$ conf ['mysql ' ]['master_ispconfig_user ' ]."'@' " .$ from_host ."' "
253- ."IDENTIFIED BY ' " .$ conf ['mysql ' ]['master_ispconfig_password ' ]."'; " ;
254- if (!$ this ->dbmaster ->query ($ query )) {
255- $ this ->error ('Unable to create database user in master database: ' .$ conf ['mysql ' ]['master_ispconfig_user ' ].' Error: ' .$ this ->dbmaster ->errorMessage );
256- }
257- $ query = 'GRANT SELECT, INSERT, UPDATE, DELETE ON ' .$ conf ['mysql ' ]['master_database ' ].".* "
258- ."TO ' " .$ conf ['mysql ' ]['master_ispconfig_user ' ]."'@' " .$ from_ip ."' "
259- ."IDENTIFIED BY ' " .$ conf ['mysql ' ]['master_ispconfig_password ' ]."'; " ;
260- if (!$ this ->dbmaster ->query ($ query )) {
261- $ this ->error ('Unable to create database user in master database: ' .$ conf ['mysql ' ]['master_ispconfig_user ' ].' Error: ' .$ this ->dbmaster ->errorMessage );
262- }
238+
239+ $ this ->grant_master_database_rights ();
263240
264241 } else {
265242 //* Insert the server, if its not a mster / slave setup
@@ -272,6 +249,78 @@ public function add_database_server_record() {
272249
273250 }
274251
252+ public function grant_master_database_rights ()
253+ {
254+ global $ conf ;
255+
256+ if ($ conf ['mysql ' ]['master_slave_setup ' ] != 'y ' ) return ;
257+
258+ //* insert the ispconfig user in the remote server
259+ $ from_host = $ conf ['hostname ' ];
260+ $ from_ip = gethostbyname ($ conf ['hostname ' ]);
261+
262+ //* Delete ISPConfig user in the master database, in case that it exists
263+ $ this ->dbmaster ->query ("DELETE FROM mysql.user WHERE User = ' " .$ conf ['mysql ' ]['master_ispconfig_user ' ]."' AND Host = ' " .$ from_host ."'; " );
264+ $ this ->dbmaster ->query ("DELETE FROM mysql.db WHERE Db = ' " .$ conf ['mysql ' ]['master_database ' ]."' AND Host = ' " .$ from_host ."'; " );
265+ $ this ->dbmaster ->query ("DELETE FROM mysql.user WHERE User = ' " .$ conf ['mysql ' ]['master_ispconfig_user ' ]."' AND Host = ' " .$ from_ip ."'; " );
266+ $ this ->dbmaster ->query ("DELETE FROM mysql.db WHERE Db = ' " .$ conf ['mysql ' ]['master_database ' ]."' AND Host = ' " .$ from_ip ."'; " );
267+ $ this ->dbmaster ->query ('FLUSH PRIVILEGES; ' );
268+
269+ $ hosts = array ($ from_host , $ from_ip );
270+
271+ foreach ($ hosts as $ src_host ) {
272+ //* Create the ISPConfig database user in the remote database
273+ $ query = "GRANT SELECT ON " .$ conf ['mysql ' ]['master_database ' ].".`server` "
274+ ."TO ' " .$ conf ['mysql ' ]['master_ispconfig_user ' ]."'@' " .$ src_host ."' "
275+ ."IDENTIFIED BY ' " .$ conf ['mysql ' ]['master_ispconfig_password ' ]."'; " ;
276+ if (!$ this ->dbmaster ->query ($ query )) {
277+ $ this ->error ('Unable to create database user in master database: ' .$ conf ['mysql ' ]['master_ispconfig_user ' ].' Error: ' .$ this ->dbmaster ->errorMessage );
278+ }
279+
280+ $ query = "GRANT SELECT, INSERT ON " .$ conf ['mysql ' ]['master_database ' ].".`sys_log` "
281+ ."TO ' " .$ conf ['mysql ' ]['master_ispconfig_user ' ]."'@' " .$ src_host ."' "
282+ ."IDENTIFIED BY ' " .$ conf ['mysql ' ]['master_ispconfig_password ' ]."'; " ;
283+ if (!$ this ->dbmaster ->query ($ query )) {
284+ $ this ->error ('Unable to create database user in master database: ' .$ conf ['mysql ' ]['master_ispconfig_user ' ].' Error: ' .$ this ->dbmaster ->errorMessage );
285+ }
286+
287+ $ query = "GRANT SELECT, UPDATE(`status`) ON " .$ conf ['mysql ' ]['master_database ' ].".`sys_datalog` "
288+ ."TO ' " .$ conf ['mysql ' ]['master_ispconfig_user ' ]."'@' " .$ src_host ."' "
289+ ."IDENTIFIED BY ' " .$ conf ['mysql ' ]['master_ispconfig_password ' ]."'; " ;
290+ if (!$ this ->dbmaster ->query ($ query )) {
291+ $ this ->error ('Unable to create database user in master database: ' .$ conf ['mysql ' ]['master_ispconfig_user ' ].' Error: ' .$ this ->dbmaster ->errorMessage );
292+ }
293+
294+ $ query = "GRANT UPDATE(`status`) ON " .$ conf ['mysql ' ]['master_database ' ].".`software_update_inst` "
295+ ."TO ' " .$ conf ['mysql ' ]['master_ispconfig_user ' ]."'@' " .$ src_host ."' "
296+ ."IDENTIFIED BY ' " .$ conf ['mysql ' ]['master_ispconfig_password ' ]."'; " ;
297+ if (!$ this ->dbmaster ->query ($ query )) {
298+ $ this ->error ('Unable to create database user in master database: ' .$ conf ['mysql ' ]['master_ispconfig_user ' ].' Error: ' .$ this ->dbmaster ->errorMessage );
299+ }
300+
301+ $ query = "GRANT UPDATE (`ssl_request`, `ssl_cert`, `ssl_action`) ON " .$ conf ['mysql ' ]['master_database ' ].".`web_domain` "
302+ ."TO ' " .$ conf ['mysql ' ]['master_ispconfig_user ' ]."'@' " .$ src_host ."' "
303+ ."IDENTIFIED BY ' " .$ conf ['mysql ' ]['master_ispconfig_password ' ]."'; " ;
304+ if (!$ this ->dbmaster ->query ($ query )) {
305+ $ this ->error ('Unable to create database user in master database: ' .$ conf ['mysql ' ]['master_ispconfig_user ' ].' Error: ' .$ this ->dbmaster ->errorMessage );
306+ }
307+
308+ $ query = "GRANT SELECT ON " .$ conf ['mysql ' ]['master_database ' ].".`sys_group` "
309+ ."TO ' " .$ conf ['mysql ' ]['master_ispconfig_user ' ]."'@' " .$ src_host ."' "
310+ ."IDENTIFIED BY ' " .$ conf ['mysql ' ]['master_ispconfig_password ' ]."'; " ;
311+ if (!$ this ->dbmaster ->query ($ query )) {
312+ $ this ->error ('Unable to create database user in master database: ' .$ conf ['mysql ' ]['master_ispconfig_user ' ].' Error: ' .$ this ->dbmaster ->errorMessage );
313+ }
314+
315+ $ query = "GRANT INSERT , DELETE ON " .$ conf ['mysql ' ]['master_database ' ].".`monitor_data` "
316+ ."TO ' " .$ conf ['mysql ' ]['master_ispconfig_user ' ]."'@' " .$ src_host ."' "
317+ ."IDENTIFIED BY ' " .$ conf ['mysql ' ]['master_ispconfig_password ' ]."'; " ;
318+ if (!$ this ->dbmaster ->query ($ query )) {
319+ $ this ->error ('Unable to create database user in master database: ' .$ conf ['mysql ' ]['master_ispconfig_user ' ].' Error: ' .$ this ->dbmaster ->errorMessage );
320+ }
321+ }
322+
323+ }
275324
276325 //** writes postfix configuration files
277326 public function process_postfix_config ($ configfile )
0 commit comments