diff --git a/roundcube.cf b/roundcube.cf new file mode 100644 index 0000000..4dc8bf6 --- /dev/null +++ b/roundcube.cf @@ -0,0 +1,98 @@ +# +# +# + + +bundle agent roundcube(cfg) +{ +classes: + + + + "roundcube_untar" expression => not(fileexists("$(cfg[install_sub_dir])/index.php")); + "config_exists" expression => fileexists("$(cfg[install_sub_dir])/config/config.inc.php"); + "backup_config_exists" expression => fileexists("$(cfg[backup_dir])/config.inc.php"); + + + "run_backups" expression => isvariable("cfg[backup_dir]"); + + + run_backups:: + "backup_config_exists" expression => fileexists("$(cfg[backup_dir])/config.inc.php"); + "sql_backup_exists" expression => fileexists("$(cfg[backup_dir])/roundcube.sql"); + + run_backups:: + +vars: + "dlfile" string => "$(sys.workdir)/data/public/$(cfg[src_tgz])"; +files: + "$(dlfile)" + copy_from => remote_dcp("$(def.hub_public_dir)/$(cfg[src_tgz])","$(sys.policy_hub)"), + handle => "roundcube_tgz_copied", + classes => if_repaired ("roundcube_untar"), + perms => m(644); + + "$(cfg[install_dir])/public" + link_from => ln_s("$(cfg[install_sub_dir])"), + move_obstructions => "true", + depends_on => {"roundcube_untarred"}; + + run_backups&(!config_exists)&backup_config_exists:: + "$(cfg[install_sub_dir])/config/config.inc.php" + copy_from => local_cp("$(cfg[backup_dir])/config.inc.php"), + perms => m("644"), + classes => if_repaired("roundcube_config_repaired"), + depends_on => {"roundcube_untarred"}; + + run_backups&config_exists:: + "$(cfg[backup_dir])/config.inc.php" + copy_from => local_dcp("$(cfg[install_sub_dir])/config/config.inc.php"), + depends_on => {"roundcube_untarred"}; + +methods: + "any" usebundle => mysql_table_exists(@(cfg),"users"); + + config_exists|roundcube_configr_repaired:: + "any" usebundle => rm_rf ("$(cfg[install_sub_dir])/installer"); + +commands: + roundcube_untar:: + "/usr/bin/tar" + args => "xzvf $(dlfile) -C $(cfg[install_dir])", + depends_on => {"roundcube_tgz_copied"}, + handle => "roundcube_untarred"; + !roundcube_untar:: + "/usr/bin/true" + inform => "false", + depends_on => {"roundcube_tgz_copied"}, + handle => "roundcube_untarred"; + + "run_backups&sql_backup_exists&(!mysql_$(cfg[db_name])_users_exists)":: + "$(mysql.mysql_cmd)" + args => "-h$(cfg[db_host]) -u$(cfg[db_user]) -p$(cfg[db_pass]) $(cfg[db_name]) < $(cfg[backup_dir])/roundcube.sql", + contain => wmde_cmd_useshell; + +methods: + run_backups:: +# "any" usebundle => mysql_backup_db(@(cfg),"$(cfg[backup_dir])/roundcube.sql"); + "any" usebundle => create_mysql_backup_cron_job(@(cfg),"$(cfg[backup_dir])/roundcube.sql","users","true"); + !run_backups:: + "any" usebundle => create_mysql_backup_cron_job(@(cfg),"$(cfg[backup_dir])/roundcube.sql","users","false"); + + + +reports: +# "mysql_$(cfg[db_name])_users_exists":: +# "DB EXISTS! ROUNDCUBE"; + +# "sql_backup_exists":: +# "SQL_BACKUP_EXISTS FILE $(cfg[backup_dir])/roundcube.sql" +# ; + +# run_backups&(!config_exists)&backup_config_exists:: +# "ROUNDCUBE CAN RESTORE config"; + +# "run_backups":: +# "ROUNDCUBE SHOULD RUN BACKUPS"; +} +