Jump to content
Froxlor Forum

d00p

Administrators
  • Posts

    10611
  • Joined

  • Last visited

  • Days Won

    43

Posts posted by d00p

  1. 52 minutes ago, Exploit said:

    However I wouldn't expect updating Froxlor or switching from Milter to Rspamd, resulting in key removal, why is that made this way?

    Because there wasnt any milter-config-template in froxlor for years, hence it was never used. Also it's not only in the documentation, it's also in RED in the announcement: 

     

    53 minutes ago, Exploit said:

    Can I just restore them, by placing them back in the panel-domains table or is there more that needs to be done?

    Well, it would have been converted for you if you've enabled "antispam" in the updater...the alternative is: i don't want antispam and thus froxlor cleans its own tables. It's not meant for third-party usage and it's not supported. I cannot guarantee that dkim related fields in the tables will never be touched again...sorry.

     

    58 minutes ago, Exploit said:

    Is there a way to re-enable DKIM for all domains and generate new keys, If they don't exist?

    Enable antispam feature and activate dkim for each domain...

     

    58 minutes ago, Exploit said:

    Recently added domains are stored with dkim-id starting by 1, would it work by only changing that to the number following the last old one?

    You may try, but as said, I cannot guarantee or support third party / custom solutions

  2. Die allerwenigsten betreiben selbst einen DNS Server, daher ist das alles eher "rudimentär" implementiert und nicht für alle use-cases ausgelegt - Verbesserungsvorschläge oder noch besser pull-requests via GitHub sind gern gesehen ;)

  3. Beachte das froxlor halt auch das pdns reload command nutzt sofern nicht z.b. auf "/bin/true" gesetzt. Ansonsten was die DB angeht nimmt froxlor für die Einträge das was du als db-credentials angibst, alles andere ist einfach eine Sache des Probierens ;)

  4. Update: froxlor 2.2.2 - 2.2.4

    New:

    • [config-services] add validation for empty or non-existing configuration template xml files
    • [antispam] add rewrite-subject flag to email-edit form; hide spam-related settings if 'bypass_spam' is activated; add possibility to disable rejection of spam-mails, refs #1282
    • [updater] add possibility to ask for potential update question in CLI updater and also pass them as options to override them

    Fixes:

    • fix timestamp matching regex, add lmtp to receving service regex and skip lines not including the main target service name in maillog parser
    • fix successful login when using email 2fa
    • fix language replacement and fix 'sending messages' after successfully sending prior, thx to Davidd
    • [php-fpm] remove 'date.timezone' from php_admin_values (superfluous as it is in php_values)
    • [antispam] set rewrite_subject to a slighty higher score then used for add_header, fixes #1275
    • exchange toggler-links with checkboxes in email edit form to be able to adjust all parameters at once, fixes #1277
    • store IDN email-usernames in ACE, as dovecot/postfix need them this way
    • do not issue let's encrypt for email_only domains (in case they were web-enabled prior, we do not unset former settings to ease reverting back when disabling email_only)
    • fix incorrect width of APCu Hit/Miss bar (#1283)
    • check whether mysql-user exists prior to DROP USER for mysql < 5.7
    • fix wrong fieldname in email-domain-overview 
  5. Kannst du bitte etwas mehr Kontext geben was genau gemacht wurde/wird und woher genau diese Fehlermeldung kommt? Normal macht froxlor ein issue mit der webroot option, das sind alles feste werte, da kann eigentlich nichts leer sein, ohne mehr Kontext kann ich dir nix dazu sagen, außer das vermutlich irgendwas manuell gemacht wurde

  6. Database: 5.5.5-10.5.26-MariaDB-0+deb11u2

    Recht altes System, MySQL unterstützt "IF EXISTS" bei einem "DROP USER" erst ab 5.7, probier mal folgende Anpassung in der `lib/Froxlor/Database/Manager/DbManagerMySQL.php`:

            public function deleteUser(string $username, string $host)
            {
    +               if ($this->userExistsOnHost($username, $host)) {
                           if (version_compare(Database::getAttribute(PDO::ATTR_SERVER_VERSION), '5.0.2', '<')) {
                                   // Revoke privileges (only required for MySQL 4.1.2 - 5.0.1)
                                   $stmt = Database::prepare("REVOKE ALL PRIVILEGES ON * . * FROM `" . $username . "`@`" . $host . "`");
                                   Database::pexecute($stmt);
                           }
                           // as of MySQL 5.0.2 this also revokes privileges. (requires MySQL 4.1.2+)
                           if (version_compare(Database::getAttribute(PDO::ATTR_SERVER_VERSION), '5.7.0', '<')) {
                                   $stmt = Database::prepare("DROP USER :username@:host");
                           } else {
                                   $stmt = Database::prepare("DROP USER IF EXISTS :username@:host");
                           }
                           Database::pexecute($stmt, [
                                   "username" => $username,
                                   "host" => $host
                           ]);
    +               }
    	}

     

  7. Du müsstest die generierten Konfigurationsdateien in /etc/bind/ (/etc/bind/froxlor_bind.conf und /etc/bind/domains/*) auf dem einen Server zusammenführen/regelmäßig synchronisieren. Mit ein bisschen scripting sollte das kein Problem sein.

  8. Weird, I'm not aware of any restrictions for attachments...need to check. In the meatime here:

    diff --git a/lib/Froxlor/Api/Commands/Customers.php b/lib/Froxlor/Api/Commands/Customers.php
    index ccbef644..f0492ed2 100644
    --- a/lib/Froxlor/Api/Commands/Customers.php
    +++ b/lib/Froxlor/Api/Commands/Customers.php
    @@ -738,11 +738,12 @@ class Customers extends ApiCommand implements ResourceEntity
     							'adminid' => $this->getUserDetail('adminid'),
     							'docroot' => $documentroot,
     							'phpenabled' => $phpenabled,
    -							'openbasedir' => '1'
    +							'openbasedir' => '1',
    +							'is_stdsubdomain' => 1
     						];
     						$domainid = -1;
     						try {
    -							$std_domain = $this->apiCall('Domains.add', $ins_data);
    +							$std_domain = $this->apiCall('Domains.add', $ins_data, true);
     							$domainid = $std_domain['id'];
     						} catch (Exception $e) {
     							$this->logger()->logAction(FroxlorLogger::ADM_ACTION, LOG_ERR, "[API] Unable to add standard-subdomain: " . $e->getMessage());
    diff --git a/lib/Froxlor/Api/Commands/Domains.php b/lib/Froxlor/Api/Commands/Domains.php
    index 2dfbfb94..0ed0fbc9 100644
    --- a/lib/Froxlor/Api/Commands/Domains.php
    +++ b/lib/Froxlor/Api/Commands/Domains.php
    @@ -274,7 +274,8 @@ class Domains extends ApiCommand implements ResourceEntity
     	 *            $override_tls is true
     	 * @param string $description
     	 *            optional custom description (currently not used/shown in the frontend), default empty
    -	 *
    +	 * @param bool $is_stdsubdomain (internally)
    +	 *            optional whether this is a standard subdomain for a customer which is being added so no usage is decreased
     	 * @access admin
     	 * @return string json-encoded array
     	 * @throws Exception
    @@ -282,7 +283,8 @@ class Domains extends ApiCommand implements ResourceEntity
     	public function add()
     	{
     		if ($this->isAdmin()) {
    -			if ($this->getUserDetail('domains_used') < $this->getUserDetail('domains') || $this->getUserDetail('domains') == '-1') {
    +			$is_stdsubdomain = $this->isInternal() ? $this->getBoolParam('is_stdsubdomain', true, 0) : false;
    +			if ($is_stdsubdomain || $this->getUserDetail('domains_used') < $this->getUserDetail('domains') || $this->getUserDetail('domains') == '-1') {
     				// parameters
     				$p_domain = $this->getParam('domain');
    
    @@ -795,12 +797,15 @@ class Domains extends ApiCommand implements ResourceEntity
     					$ins_data['id'] = $domainid;
     					unset($ins_data);
    
    -					$upd_stmt = Database::prepare("
    -						UPDATE `" . TABLE_PANEL_ADMINS . "` SET `domains_used` = `domains_used` + 1
    -						WHERE `adminid` = :adminid");
    -					Database::pexecute($upd_stmt, [
    -						'adminid' => $adminid
    -					], true, true);
    +					if (!$is_stdsubdomain) {
    +						$upd_stmt = Database::prepare("
    +							UPDATE `" . TABLE_PANEL_ADMINS . "` SET `domains_used` = `domains_used` + 1
    +							WHERE `adminid` = :adminid
    +						");
    +						Database::pexecute($upd_stmt, [
    +							'adminid' => $adminid
    +						], true, true);
    +					}
    
     					$ins_stmt = Database::prepare("
     						INSERT INTO `" . TABLE_DOMAINTOIP . "` SET

     

×
×
  • Create New...