install.php 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. $_ENV["SNAPPYMAIL_INCLUDE_AS_API"] = true;
  3. require_once "/var/lib/snappymail/index.php";
  4. $oConfig = \RainLoop\Api::Config();
  5. // Change default login data / key
  6. $oConfig->Set("security", "admin_login", $argv[1]);
  7. $oConfig->Set("security", "admin_panel_key", $argv[2]);
  8. $newPassword = new \SnappyMail\SensitiveString($argv[3]);
  9. $oConfig->SetPassword($newPassword);
  10. // Allow Contacts to be saved in database
  11. $oConfig->Set("contacts", "enable", "On");
  12. $oConfig->Set("contacts", "allow_sync", "On");
  13. $oConfig->Set("contacts", "type", "mysql");
  14. $oConfig->Set("contacts", "pdo_dsn", "mysql:host=127.0.0.1;port=3306;dbname=snappymail");
  15. $oConfig->Set("contacts", "pdo_user", "snappymail");
  16. $oConfig->Set("contacts", "pdo_password", $argv[4]);
  17. // Plugins
  18. $oConfig->Set("plugins", "enable", "On");
  19. \SnappyMail\Repository::installPackage("plugin", "change-password");
  20. \SnappyMail\Repository::installPackage("plugin", "change-password-hestia");
  21. $sFile = APP_PRIVATE_DATA . "configs/plugin-change-password.json";
  22. if (!file_exists($sFile)) {
  23. file_put_contents(
  24. "$sFile",
  25. json_encode(
  26. [
  27. "plugin" => [
  28. "pass_min_length" => 8,
  29. "pass_min_strength" => 60,
  30. "driver_hestia_enabled" => true,
  31. "driver_hestia_allowed_emails" => "*",
  32. "hestia_host" => gethostname(),
  33. "hestia_port" => $argv[4], // $BACKEND_PORT
  34. ],
  35. ],
  36. JSON_PRETTY_PRINT,
  37. ),
  38. );
  39. }
  40. \SnappyMail\Repository::enablePackage("change-password");
  41. \SnappyMail\Repository::installPackage("plugin", "add-x-originating-ip-header");
  42. \SnappyMail\Repository::enablePackage("add-x-originating-ip-header");
  43. $sFile = APP_PRIVATE_DATA . "configs/plugin-add-x-originating-ip-header.json";
  44. if (!file_exists($sFile)) {
  45. file_put_contents(
  46. "$sFile",
  47. json_encode(
  48. [
  49. "plugin" => [
  50. "check_proxy" => true,
  51. ],
  52. ],
  53. JSON_PRETTY_PRINT,
  54. ),
  55. );
  56. }
  57. $oConfig->Save();
  58. $sFile = APP_PRIVATE_DATA . "domains/hestia.json";
  59. if (!file_exists($sFile)) {
  60. $config = json_decode(APP_PRIVATE_DATA . "domains/default.json", true);
  61. $config["IMAP"]["shortLogin"] = true;
  62. $config["SMTP"]["shortLogin"] = true;
  63. file_put_contents($sFile, json_encode($config, JSON_PRETTY_PRINT));
  64. }