# # # bundle agent roundcube(cfg) { classes: "dlbyversion" expression => not (isvariable ("cfg[src_tgz]")); "roundcube_untar" expression => not(fileexists("$(install_sub_dir)/index.php")); "config_exists" expression => fileexists("$(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"); vars: "dldir" string =>"$(sys.workdir)/data/agent/roundcube"; !(dlbyversion):: "dlfile" string => "$(sys.workdir)/data/public/$(cfg[src_tgz])"; "dltype" string => "policyhub"; "dlsrc" string => "$(def.hub_public_dir)/$(cfg[src_tgz])"; "install_sub_dir" string => "$(cfg[install_sub_dir])"; dlbyversion:: "tgzname" string => "roundcubemail-$(cfg[version])-complete.tar.gz"; "dlfile" string => "$(dldir)/$(tgzname)"; "install_sub_dir" string => "$(cfg[install_dir])/roundcubemail-$(cfg[version])"; "dltype" string => "wget"; "dlsrc" string => "https://github.com/roundcube/roundcubemail/releases/download/$(cfg[version])/$(tgzname)"; reports: dlbyversion:: "dl by version"; !dlbyversion:: "not dl by version"; files: "$(dldir)/." create => "true", handle => "roundcube_agent_dir_created"; methods: "any" usebundle => download_file("$(dltype)","$(dlsrc)","$(dlfile)","roundcube_tgz_file",'{}'), handle => "roundcube_tgz_copied", depends_on => {"roundcube_agent_dir_created"}, classes => if_repaired ("roundcube_untar"); # "$(dlfile)" # copy_from => remote_dcp("$(def.hub_public_dir)/$(cfg[src_tgz])","$(sys.policy_hub)"), # perms => m(644); files: "$(cfg[install_dir])/public" link_from => ln_s("$(install_sub_dir)"), move_obstructions => "true", depends_on => {"roundcube_untarred"}; run_backups&(!config_exists)&backup_config_exists:: "$(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("$(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 ("$(install_sub_dir)/installer"); commands: roundcube_untar:: "/usr/bin/tar" args => "xzf $(dlfile) -C $(cfg[install_dir]) && chown -R $(cfg[www_user]):$(cfg[www_group]) $(cfg[install_dir])", depends_on => {"roundcube_tgz_copied"}, contain => wmde_cmd_useshell, 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 => 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"; } bundle agent download_roundcube(cfg) { vars: "tgzname" string => "roundcubemail-$(cfg[version])-complete.tar.gz"; "dldir" string =>"$(sys.workdir)/data/agent/roundcube"; "dst" string => "$(dldir)/$(tgzname)"; files: "$(dldir)/." create => "true", handle => "roundcube_agentdir_created"; methods: "any" usebundle => download_file("wget", "https://github.com/roundcube/roundcubemail/releases/download/$(cfg[version])/$(tgzname)", "$(dst)","roundcube_tgz_file",'{}'); }