Carbonio CE Related...
 
Notifications
Clear all

[Sticky] Carbonio CE Related Scripts

19 Posts
6 Users
4 Likes
917 Views
(@sharif)
Admin
Joined: 2 years ago
Posts: 410
Topic starter  

For Ubuntu: 20.04LTS / 22.04LTS

Instruction:

Just copy past the script and execute it in your server. 

Special Note:

If you encounter an error during "PGPASSWORD=$DB_ADM_PWD carbonio-message-dispatcher-migration carbonio_adm 127.78.0.10 20000," wait a few minutes and retry. In addition, restart service-discover and Postgresql from another terminal.

Official script for Ubuntu:

https://docs.zextras.com/carbonio-ce/html/_downloads/bed211d6fc1b9ca35f15be01eb9aa3fc/install_carbonio_ce_singleserver_ubuntu.sh

#!/bin/bash

#PRE-INSTALL STEPS

source /etc/os-release

HOST=$(hostname -f);
DOMAIN=$(hostname -d);
IP=$(hostname -i);

echo "Carbonio will be installed on ${HOST}, using ${DOMAIN} as default domain and ${IP} as public IP"

apt update -y

#INSTALL STEPS

package_name="carbonio-core"

if apt-cache search "$package_name" | grep -q "$package_name"; then
    echo "Start Carbonio installation"
#echo "deb  http://apt.postgresql.org/pub/repos/apt  focal-pgdg main" > /etc/apt/sources.list.d/pgdg.list;
#wget --quiet -O -  https://www.postgresql.org/media/keys/ACCC4CF8.asc  | apt-key add - ;

sh -c 'echo "deb  https://apt.postgresql.org/pub/repos/apt  $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

wget -O- "https://www.postgresql.org/media/keys/ACCC4CF8.asc" | gpg --dearmor | sudo tee /usr/share/keyrings/postgres.gpg > /dev/null
chmod 644 /usr/share/keyrings/postgres.gpg
sed -i 's/deb/deb [signed-by=\/usr\/share\/keyrings\/postgres.gpg] /' /etc/apt/sources.list.d/pgdg.list

PACKAGES="postgresql-16 service-discover-server carbonio-directory-server carbonio-proxy carbonio-webui carbonio-files-ui carbonio-mta carbonio-mailbox-db carbonio-appserver carbonio-user-management carbonio-files-ce carbonio-files-public-folder-ui carbonio-files-db carbonio-tasks-ce carbonio-tasks-db carbonio-tasks-ui carbonio-storages-ce carbonio-preview-ce carbonio-docs-connector-ce carbonio-docs-connector-db carbonio-docs-editor carbonio-prometheus carbonio-message-broker  carbonio-ws-collaboration-ce carbonio-ws-collaboration-db carbonio-ws-collaboration-ui"

echo '' > config.conf
apt update -y -q
apt upgrade -y -q
apt install -y $PACKAGES 

carbonio-bootstrap -c ./config.conf

CONSUL_SECRET="$(openssl rand -base64 14)"
POSTGRES_SECRET="$(openssl rand -base64 14)"

service-discover setup $(hostname -i) --password=$CONSUL_SECRET 

export CONSUL_HTTP_TOKEN=$(echo $CONSUL_SECRET | gpg --batch --yes --passphrase-fd 0 -qdo - /etc/zextras/service-discover/cluster-credentials.tar.gpg | tar xOf - consul-acl-secret.json | jq .SecretID -r);
export SETUP_CONSUL_TOKEN=$CONSUL_HTTP_TOKEN

pending-setups --execute-all

su - postgres -c "psql --command=\"CREATE ROLE carbonio_adm WITH LOGIN SUPERUSER encrypted password '$POSTGRES_SECRET';\""
su - postgres -c "psql --command=\"CREATE DATABASE carbonio_adm OWNER carbonio_adm;\""

PGPASSWORD=$POSTGRES_SECRET carbonio-files-db-bootstrap carbonio_adm 127.0.0.1
PGPASSWORD=$POSTGRES_SECRET carbonio-mailbox-db-bootstrap carbonio_adm 127.0.0.1
PGPASSWORD=$POSTGRES_SECRET carbonio-docs-connector-db-bootstrap carbonio_adm 127.0.0.1
PGPASSWORD=$POSTGRES_SECRET carbonio-tasks-db-bootstrap carbonio_adm 127.0.0.1
PGPASSWORD=$POSTGRES_SECRET carbonio-ws-collaboration-db-bootstrap carbonio_adm 127.0.0.1

PACKAGES="carbonio-message-dispatcher-db "
apt install -y $PACKAGES
pending-setups --execute-all
PGPASSWORD=$POSTGRES_SECRET carbonio-message-dispatcher-db-bootstrap carbonio_adm 127.0.0.1

PACKAGES="carbonio-message-dispatcher"
apt install -y $PACKAGES
PGPASSWORD=$POSTGRES_SECRET carbonio-message-dispatcher-migration carbonio_adm 127.0.0.1

PACKAGES="carbonio-videoserver-ce"
apt install -y $PACKAGES
pending-setups --execute-all

sudo -iu zextras -- bash <<EOF
	carbonio prov mcf zimbraDefaultDomainName \$(hostname -d)
	carbonio prov md  \$(hostname -d) zimbraVirtualHostname \$(hostname -d)
	carbonio prov mc default carbonioFeatureChatsEnabled TRUE
EOF

#echo service discover and postgresql passwords
echo -e "The service-discover password is: \e[1m $CONSUL_SECRET \e[0m" 
echo -e "You can find it in file \e[3m/var/lib/service-discover/password\e[0m."
echo ""
echo -e "The PostgreSQL passowrd (DB_ADM_PWD) is: \e[1m$POSTGRES_SECRET\e[0m"
echo "Please store it in a safe place, otherwise you will need to reset it!"

else
    echo "###### Carbonio repo are not configured. ######"
fi

 

 

Fan Made Script:

#!/bin/bash

# Check if the script is run as root
if [ "$(id -u)" -ne 0 ]; then
   echo "This script must be run as root" 1>&2
   exit 1
fi

echo "================================================================================"
echo "| Important Notification for Users                                              |"
echo "|------------------------------------------------------------------------------|"
echo "| As part of the installation process for Carbonio CE, steps 13 to 19 focus on |"
echo "| setting up Workstream Collaboration components. If Workstream Collaboration  |"
echo "| is not a required component for your deployment, you have the option to      |"
echo "| skip these steps (13 to 19) during the installation process.                 |"
echo "|                                                                              |"
echo "| After completing the installation process and rebooting your system, it's    |"
echo "| crucial to ensure that all services are running optimally. For users who     |"
echo "| choose to skip Workstream Collaboration components, the only additional      |"
echo "| action required is to restart the 'carbonio-tasks' service by executing:     |"
echo "|                                                                              |"
echo "|     su - zextras -c "zmcontrol restart"                                      |"
echo "|     systemctl restart carbonio-tasks                                         |"
echo "|                                                                              |"
echo "| This step ensures that all task-related functionalities are fully operational|"
echo "| and align with your system's current configuration.                          |"
echo "|                                                                              |"
echo "| Thank you for choosing Carbonio CE. For any questions or further assistance, |"
echo "| please do not hesitate to reach out to our forum.                            |"
echo "================================================================================"

sleep 5

# Your script's content goes here


# Define ANSI color codes for colored output
RED='\033[0;31m'      # Failed - Red
GREEN='\033[0;32m'    # Done - Green
YELLOW='\033[0;33m'   # Pending - Yellow
LIGHT_GRAY='\033[0;37m'  # Next - Light Gray (off-white)
NC='\033[0m'          # No Color - Reset


# Define a list of activities
activities=("Set hostname" "Configure /etc/hosts" "Set Timezone" "Add Zextras Repository" "Manage APT Repositories" "Install PostgreSQL DB" "Add PostgreSQL Role and Database" "Install Carbonio CE Packages" "Configure Carbonio CE Bootstrap" "Configure Service Discovery" "Configure Pending Setups" "Bootstrap Files and Tasks DB" "Install Carbonio Message Dispatcher DB" "Install Carbonio Message Dispatcher" "Install Carbonio Message Broker" "Install Carbonio WS Collaboration DB" "Install Carbonio WS Collaboration CE" "Install Carbonio Video Server CE" "Install Carbonio WS Collaboration UI" "Change Admin User Password" "Interactive Create Test Users" "Modify MTA for Trusted Network" "Restart Carbonio Services" "Check Carbonio CE Service Status" "Check Consul Status" "Check Carbonio CE System Unit Status" "Check Consul Service Status via HTTP API" "Reboot System Now" "Quit")

status=("Pending" "Pending" "Pending" "Pending" "Pending" "Pending" "Pending" "Pending" "Pending" "Pending" "Pending" "Pending" "Pending" "Pending" "Pending" "Pending" "Pending" "Pending" "Pending" "Pending" "Pending" "Pending" "Pending" "Pending" "Pending" "Pending" "Pending" "Pending" "Pending")

# List of predefined hostnames
hostnames=("mail.zextras.xyz" "mail.latestserver.xyz" "mail.sampleserver.xyz" "mail.oldserver.xyz" "mail.sampleservers.xyz" "mail.corporatemailbox.xyz" "mail.enterprisemailpro.xyz" "Enter custom hostname")


display_menu() {
    echo "Available Tasks:"
    printf "%-3s | %-50s | %-10s\n" "No" "Task" "Status"
    echo "-----------------------------------------------------------------"
    local next_task_set=false
    for i in "${!activities[@]}"; do
        case "${status[$i]}" in
            "Done")
                color=$GREEN
                ;;
            "Failed")
                color=$RED
                ;;
            "Pending")
                if [ "$next_task_set" = false ]; then
                    color=$LIGHT_GRAY
                    status[$i]="Next"
                    next_task_set=true
                    # Display the "Next" task in a box
                    echo "-----------------------------------------------------------------"
                    printf "| %-3d | %-50s | ${color}%-10s${NC} |\n" $((i+1)) "${activities[$i]}" "Next"
                    echo "-----------------------------------------------------------------"
                    continue # Skip the regular print for this task
                else
                    color=$YELLOW
                fi
                ;;
            *)
                color=$NC
                ;;
        esac
        printf "%-3d | %-50s | ${color}%-10s${NC}\n" $((i+1)) "${activities[$i]}" "${status[$i]}"
    done
    echo # Add an empty line for better readability
}


# Function to set the hostname
set_hostname() {
    echo "Select a hostname from the list or enter a custom one:"
    for i in "${!hostnames[@]}"; do
        printf "%d. %s\n" $((i+1)) "${hostnames[$i]}"
    done
    
    local choice
    local new_hostname
    while true; do
        read -p "Enter your choice (1-${#hostnames[@]}): " choice
        if [[ $choice -ge 1 && $choice -le ${#hostnames[@]} ]]; then
            if [ "$choice" -eq "${#hostnames[@]}" ]; then
                echo "Enter custom hostname: "
                read new_hostname
                if [[ -n "$new_hostname" ]]; then
                    break
                else
                    echo "Invalid hostname. Please try again."
                fi
            else
                new_hostname=${hostnames[$((choice-1))]}
                break
            fi
        else
            echo "Invalid selection. Please try again."
        fi
    done
    
    if sudo hostnamectl set-hostname "$new_hostname"; then
        echo "Hostname was successfully changed to $new_hostname."
        status[0]="Done"
    else
        echo "Failed to change the hostname."
        status[0]="Failed"
    fi
}

# Function to configure /etc/hosts
set_hostname() {
    echo "Select a hostname from the list or enter a custom one:"
    for i in "${!hostnames[@]}"; do
        printf "%d. %s\n" $((i+1)) "${hostnames[$i]}"
    done
    
    local choice
    local new_hostname
    while true; do
        read -p "Enter your choice (1-${#hostnames[@]}): " choice
        if [[ $choice -ge 1 && $choice -le ${#hostnames[@]} ]]; then
            if [ "$choice" -eq "${#hostnames[@]}" ]; then
                echo "Enter custom hostname: "
                read new_hostname
                if [[ -n "$new_hostname" ]]; then
                    break
                else
                    echo "Invalid hostname. Please try again."
                fi
            else
                new_hostname=${hostnames[$((choice-1))]}
                break
            fi
        else
            echo "Invalid selection. Please try again."
        fi
    done
    
    if sudo hostnamectl set-hostname "$new_hostname"; then
        echo "Hostname was successfully changed to $new_hostname."
        status[0]="Done"
    else
        echo "Failed to change the hostname."
        status[0]="Failed"
    fi
}

# Function to configure /etc/hosts
configure_hosts() {
    echo "Configuring /etc/hosts..."

    # Check and add localhost if not present
	> /etc/hosts
	echo "127.0.0.1 localhost" >> /etc/hosts

    # Determine if the interface IP is public or private
    echo "Determining if the interface IP is public or private..."
    interface_ip=$(ip addr show | awk '/inet / && $2 !~ /^127\./ {print $2}' | cut -d '/' -f 1)
    if [[ $interface_ip =~ ^10\.|^172\.(1[6-9]|2[0-9]|3[0-1])\.|^192\.168\. ]]; then
        echo -en '\n'
        sleep 2
        echo ip_type="Private"
        echo -en '\n'
    else
        echo -en '\n'
        sleep 2
        echo ip_type="Public"
        echo -en '\n'
    fi
	
	# Prompt for user choice
	echo "Choose an option:"
	echo "1. Add Interface IP"
	echo "2. Add Public IP Resolved by DNS"
	read -p "Enter your choice: " choice

	case $choice in
		1)
			echo "$interface_ip $(hostname -f) $(hostname -s)" >> /etc/hosts
			echo "Interface IP added to /etc/hosts. IP type: $ip_type"
			;;
		2)
			read -p "Enter the public hostname: " public_hostname
			echo "$(hostname -i) $(Hostname -f) $(hostname -s)" >> /etc/hosts
			echo "Public hostname added to /etc/hosts."
			;;
		*)
			echo "Invalid choice. Exiting."
			return 1
			;;
	esac

    echo "/etc/hosts has been updated as follows:"
	echo -en '\n'
	cat /etc/hosts
	echo -en '\n'
    status[1]="Done"
}

# Function to set the timezone
set_timezone() {
    # Retrieve and display available timezones
    echo "Available Timezones:"
    timedatectl list-timezones
    
    # Prompt the user for their preferred timezone
    echo "Enter your preferred timezone (e.g., Asia/Dhaka):"
    while read user_timezone; do
        # Check if the entered timezone is valid by looking for it in the list of timezones
        if timedatectl list-timezones | grep -qx "$user_timezone"; then
            # If valid, set the timezone
            echo "Setting timezone to $user_timezone..."
            if sudo timedatectl set-timezone "$user_timezone"; then
                echo "Timezone has been set to $user_timezone."
                status[2]="Done"
                break
            else
                echo "Failed to set the timezone to $user_timezone."
                status[2]="Failed"
                break
            fi
        else
            # If the entered timezone is not valid, prompt the user again
            echo "Invalid timezone: $user_timezone. Please enter a valid timezone:"
        fi
    done
}

# Function to add Zextras repository
add_zextras_repo() {
    # Check and remove the zextras.list file if it exists
    if [ -f "/etc/apt/sources.list.d/zextras.list" ]; then
        echo "Existing Zextras repository configuration found. Removing..."
        sudo rm "/etc/apt/sources.list.d/zextras.list"
    fi

    echo "Select the type of Zextras repository to add:"
    echo "1. Public"
    read repo_choice
    
    # Detect OS Version
    . /etc/os-release
    OS_VERSION=$VERSION_CODENAME

    case $repo_choice in
        1)
            echo "Adding Public Zextras repository..."
            if [[ "$OS_VERSION" == "focal" ]]; then
                wget -c   https://repo.zextras.io/inst_repo_ubuntu.sh  && bash inst_repo_ubuntu.sh
                echo "Public Zextras repository added for Ubuntu 20.04LTS (Focal)."
            elif [[ "$OS_VERSION" == "jammy" ]]; then
                wget -c   https://repo.zextras.io/inst_repo_ubuntu.sh  && bash inst_repo_ubuntu.sh
                echo "Public Zextras repository added for Ubuntu 22.04LTS (Jemmy)."
            else
                echo "Warning: Unsupported Ubuntu version ($OS_VERSION) for the Public repository."
            fi
            ;;
       
    esac
    status[3]="Done"
}

# Function to clean, update, and upgrade APT repositories
manage_apt_repos() {
    echo "Cleaning APT repositories..."
    if sudo apt clean all; then
        echo "APT repositories cleaned successfully."
    else
        echo "Failed to clean APT repositories."
        status[4]="Failed"
        return
    fi

    echo "Updating APT repositories..."
    if sudo apt update; then
        echo "APT repositories updated successfully."
    else
        echo "Failed to update APT repositories."
        status[4]="Failed"
        return
    fi

    echo "Upgrading APT packages..."
    if sudo apt upgrade -y; then
        echo "APT packages upgraded successfully."
        status[4]="Done"
    else
        echo "Failed to upgrade APT packages."
        status[4]="Failed"
        return
    fi

    echo "APT repositories have been managed."
}

# Function to install PostgreSQL DB
install_postgresql_db() {
    echo "Select the PostgreSQL version to install:"
    echo "12. postgresql-12"
    echo "16. postgreSQL-16"
    read pgsql_version_choice

    case $pgsql_version_choice in
        12|16)
            local pgsql_version="postgresql-${pgsql_version_choice}"
            echo "Installing ${pgsql_version}..."
            sudo sh -c "echo 'deb  https://apt.postgresql.org/pub/repos/apt  $(lsb_release -cs)-pgdg main' > /etc/apt/sources.list.d/pgdg.list"
            if wget --quiet -O -  https://www.postgresql.org/media/keys/ACCC4CF8.asc  | sudo apt-key add -; then
                echo "PostgreSQL repository key added successfully."
            else
                echo "Failed to add PostgreSQL repository key."
                status[5]="Failed"
                return
            fi

            if sudo apt update; then
                echo "Package lists updated successfully."
            else
                echo "Failed to update package lists."
                status[5]="Failed"
                return
            fi

            if sudo apt -y install "${pgsql_version}"; then
                echo "${pgsql_version} installed successfully."
                status[5]="Done"
            else
                echo "Failed to install ${pgsql_version}."
                status[5]="Failed"
                return
            fi
            ;;
        *)
            echo "Invalid selection. Returning to main menu."
            status[5]="Failed"
            ;;
    esac
}

# Function to add or update PostgreSQL role and database
add_postgresql_role_and_db() {
    echo "Adding PostgreSQL role and database..."
    read -s -p "Password for carbonio_adm role: " DB_ADM_PWD
    echo # Move to a new line for cleaner output

    # Creating the PostgreSQL role
    if sudo su - postgres -c "psql --command=\"CREATE ROLE carbonio_adm WITH LOGIN SUPERUSER ENCRYPTED PASSWORD '${DB_ADM_PWD}';\""; then
        echo "PostgreSQL role 'carbonio_adm' created successfully."
    else
        echo "Failed to create PostgreSQL role 'carbonio_adm'."
        status[6]="Failed"
        return
    fi

    # Creating the PostgreSQL database
    if sudo su - postgres -c "psql --command=\"CREATE DATABASE carbonio_adm OWNER carbonio_adm;\""; then
        echo "PostgreSQL database 'carbonio_adm' created successfully."
    else
        echo "Failed to create PostgreSQL database 'carbonio_adm'."
        status[6]="Failed"
        return
    fi

    # Restarting the PostgreSQL service
    if sudo systemctl restart postgresql; then
        echo "PostgreSQL service restarted successfully."
        status[6]="Done"
    else
        echo "Failed to restart PostgreSQL service."
        status[6]="Failed"
        return
    fi

    echo "PostgreSQL role and database added and service restarted."
}

# Function to install Carbonio CE packages
install_carbonio_ce_packages() {
    echo "Installing Carbonio CE packages..."
    
    # Define all packages in an array for easier management
    packages=(
        service-discover-server
        carbonio-directory-server
        carbonio-files-db
        carbonio-mailbox-db
        carbonio-docs-connector-db
        carbonio-tasks-db
        carbonio-proxy
        carbonio-webui
        carbonio-files-ui
        carbonio-tasks-ui
        carbonio-files-public-folder-ui
        carbonio-user-management
        carbonio-mta
        carbonio-appserver
        carbonio-storages-ce
        carbonio-files-ce
        carbonio-preview-ce
        carbonio-docs-connector-ce
        carbonio-tasks-ce
        carbonio-docs-editor
        carbonio-prometheus
    )

    # Attempt to install each package individually
    for pkg in "${packages[@]}"; do
        if ! sudo apt install "$pkg" -y; then
            echo "Failed to install $pkg. Halting installation process."
            status[7]="Failed"
            return
        fi
    done
    
    echo "All Carbonio CE packages installed successfully."

    echo "Listing installed Carbonio CE packages and their versions:"
    for pkg in "${packages[@]}"; do
        dpkg-query -W -f='${binary:Package} ${Version}\n' "$pkg"
    done | sort

    status[7]="Done"
}

# Function to configure Carbonio CE Bootstrap
configure_carbonio_ce_bootstrap() {
    echo "Configuring Carbonio CE Bootstrap..."
    if sudo carbonio-bootstrap; then
        echo "Carbonio CE Bootstrap configuration completed."
        status[8]="Done"
    else
        echo "Failed to configure Carbonio CE Bootstrap."
        status[8]="Failed"
    fi
}

# Function to configure Service Discovery
configure_service_discovery() {
    echo "About to configure Service Discovery. Do you want to proceed? (yes/no)"
    read -p "Enter your choice: " user_choice

    case $user_choice in
        [Yy]* ) 
            echo "Configuring Service Discovery..."
            if sudo service-discover setup-wizard; then
                echo "Service Discovery configuration completed."
                status[9]="Done"
            else
                echo "Failed to configure Service Discovery."
                status[9]="Failed"
            fi
            ;;
        [Nn]* )
            echo "Service Discovery configuration aborted by the user."
            status[9]="Aborted"
            ;;
        * ) 
            echo "Invalid input. Please answer yes or no."
            ;;
    esac
}

# Function to configure Pending Setups
configure_pending_setups() {
    echo "Configuring pending setups..."
    if sudo pending-setups -a; then
        echo "Pending setups configuration completed."
        status[10]="Done"
    else
        echo "Failed to configure pending setups."
        status[10]="Failed"
    fi
}

# Function to bootstrap files and tasks DB
bootstrap_files_and_tasks_db() {
    if [ -z "$DB_ADM_PWD" ]; then
        read -s -p "Enter password for carbonio_adm PostgreSQL role: " DB_ADM_PWD
        echo # Move to a new line for cleaner output
    fi

    echo "Bootstrapping Files database..."
    if PGPASSWORD=$DB_ADM_PWD carbonio-files-db-bootstrap carbonio_adm 127.0.0.1; then
        echo "Files database bootstrapped successfully."
    else
        echo "Failed to bootstrap Files database."
        status[11]="Failed"
        return
    fi

    echo "Bootstrapping Tasks database..."
    if PGPASSWORD=$DB_ADM_PWD carbonio-tasks-db-bootstrap carbonio_adm 127.0.0.1; then
        echo "Tasks database bootstrapped successfully."
        status[11]="Done"
    else
        echo "Failed to bootstrap Tasks database."
        status[11]="Failed"
        return
    fi
}

# Function to ask about skipping Workstream Collaboration components
ask_skip_ws_collaboration() {
    echo -en '\n'
    sleep 2
    echo "Do you want to skip Workstream Collaboration setup? (yes/no):"
    read skip_ws_collaboration
    if [[ "$skip_ws_collaboration" =~ ^[Yy][Ee][Ss]$ ]]; then
        for i in {12..18}; do
            status[$i]="Skipped"
        done
        echo "Workstream Collaboration setup will be skipped."
    else
        echo "Proceeding with Workstream Collaboration setup."
    fi
}


# Function to configure Pending Setups
install_carbonio_message_dispatcher_db() {


    if [ -z "$DB_ADM_PWD" ]; then
        read -s -p "Enter password for carbonio_adm PostgreSQL role: " DB_ADM_PWD
        echo # Move to a new line for better readability
    fi

    echo "Installing Carbonio Message Dispatcher DB..."
    if ! sudo apt install carbonio-message-dispatcher-db -y; then
        echo "Failed to install Carbonio Message Dispatcher DB."
        status[12]="Failed"
        return
    fi
    
    echo "Running pending setups..."
    if ! sudo pending-setups -a; then
        echo "Failed to run pending setups."
        status[12]="Failed"
        return
    fi

    # Restarting PostgreSQL service
    echo "Restarting PostgreSQL service..."
    if ! sudo systemctl restart postgresql@16-main.service; then
        echo "Failed to restart PostgreSQL service."
        status[12]="Failed"
        return
    fi
    echo "PostgreSQL service restarted successfully."

    if [ -z "$DB_ADM_PWD" ]; then
        read -s -p "Enter password for carbonio_adm PostgreSQL role: " DB_ADM_PWD
        echo # Move to a new line for cleaner output
    fi

    echo "Bootstrapping Carbonio Message Dispatcher DB..."
    if ! PGPASSWORD=$DB_ADM_PWD carbonio-message-dispatcher-db-bootstrap carbonio_adm 127.0.0.1; then
        echo "Failed to bootstrap Carbonio Message Dispatcher DB."
        status[12]="Failed"
        return
    fi

    echo "Installed Carbonio Message Dispatcher DB package version:"
    dpkg-query -W -f='${binary:Package} ${Version}\n' carbonio-message-dispatcher-db | sort

    status[12]="Done"
}


# Function to Install Carbonio Message Dispatcher with Enhanced Migration Retry
install_carbonio_message_dispatcher() {


    echo "Installing Carbonio Message Dispatcher..."
    if ! apt install carbonio-message-dispatcher -y; then
        echo "Failed to install Carbonio Message Dispatcher."
        status[13]="Failed"
        return
    fi

    if ! pending-setups -a; then
        echo "Failed to complete pending setups after installing Carbonio Message Dispatcher."
        status[13]="Failed"
        return
    fi

    if [ -z "$DB_ADM_PWD" ]; then
        read -s -p "Enter password for carbonio_adm PostgreSQL role: " DB_ADM_PWD
        echo # Move to a new line for cleaner output
    fi

 # Restart service-discover and postgresql initially
    systemctl restart service-discover
    sleep 5
    systemctl restart postgresql@16-main.service
    sleep 5
    systemctl restart carbonio-message-dispatcher-db-sidecar.service
    sleep 5

    # Enhanced migration attempt with recovery step
    migration_success=false
    while ! $migration_success; do
        if PGPASSWORD=$DB_ADM_PWD carbonio-message-dispatcher-migration carbonio_adm 127.78.0.10 20000; then
            echo "Migration of Carbonio Message Dispatcher succeeded."
            migration_success=true
            status[13]="Done"
        else
            echo "Failed to run Carbonio Message Dispatcher migration. Restarting PostgreSQL and retrying..."
            # Restart PostgreSQL as a recovery step before retrying
            systemctl restart postgresql@16-main.service
            systemctl restart carbonio-message-dispatcher-db-sidecar.service
            sleep 5 # Adjust sleep time as needed for the service to fully restart
        fi
    done

    echo "Installed Carbonio Message Dispatcher package and its version:"
    dpkg-query -W -f='${binary:Package} ${Version}\n' carbonio-message-dispatcher | sort
}



# Function to Install Carbonio Message Broker
install_carbonio_message_broker() {

    echo "Installing Carbonio Message Broker..."
    if ! apt install carbonio-message-broker -y; then
        echo "Failed to install Carbonio Message Broker."
        status[14]="Failed"
        return
    fi

    if ! pending-setups -a; then
        echo "Failed to complete pending setups after installing Carbonio Message Broker."
        status[14]="Failed"
        return
    fi

    echo "Installed Carbonio Message Broker package and its version:"
    dpkg-query -W -f='${binary:Package} ${Version}\n' carbonio-message-broker | sort
    status[14]="Done"
}

# Function to Install Carbonio WS Collaboration DB
install_carbonio_ws_collaboration_db() {

    echo "Installing Carbonio WS Collaboration DB..."
    if ! apt install carbonio-ws-collaboration-db -y; then
        echo "Failed to install Carbonio WS Collaboration DB."
        status[15]="Failed"
        return
    fi

    if ! pending-setups -a; then
        echo "Failed to complete pending setups after installing Carbonio WS Collaboration DB."
        status[15]="Failed"
        return
    fi

    if ! PGPASSWORD=$DB_ADM_PWD carbonio-ws-collaboration-db-bootstrap carbonio_adm 127.0.0.1; then
        echo "Failed to bootstrap Carbonio WS Collaboration DB."
        status[15]="Failed"
        return
    fi

    echo "Installed Carbonio WS Collaboration DB package and its version:"
    dpkg-query -W -f='${binary:Package} ${Version}\n' carbonio-ws-collaboration-db | sort
    status[15]="Done"
}

# Function to Install Carbonio WS Collaboration CE
install_carbonio_ws_collaboration_ce() {

    echo "Installing Carbonio WS Collaboration CE..."
    if ! apt install carbonio-ws-collaboration-ce -y; then
        echo "Failed to install Carbonio WS Collaboration CE."
        status[16]="Failed"
        return
    fi

    if ! pending-setups -a; then
        echo "Failed to complete pending setups after installing Carbonio WS Collaboration CE."
        status[16]="Failed"
        return
    fi

    echo "Installed Carbonio WS Collaboration CE package and its version:"
    dpkg-query -W -f='${binary:Package} ${Version}\n' carbonio-ws-collaboration-ce | sort
    status[16]="Done"
}

# Function to Install Carbonio Video Server CE
install_carbonio_video_server_ce() {

    echo "Installing Carbonio Video Server CE..."
    if ! apt install carbonio-videoserver-ce -y; then
        echo "Failed to install Carbonio Video Server CE."
        status[17]="Failed"
        return
    fi

    if ! sudo pending-setups -a; then
        echo "Failed to complete pending setups after installing Carbonio Video Server CE."
        status[17]="Failed"
        return
    fi

    echo "Installed Carbonio Video Server CE package and its version:"
    dpkg-query -W -f='${binary:Package} ${Version}\n' carbonio-videoserver-ce | sort
    status[17]="Done"
}

# Function to Install Carbonio WS Collaboration UI
install_carbonio_ws_collaboration_ui() {

    echo "Installing Carbonio WS Collaboration UI..."
    if ! apt install carbonio-ws-collaboration-ui -y; then
        echo "Failed to install Carbonio WS Collaboration UI."
        status[18]="Failed"
        return
    fi
    
    echo "Enabling Carbonio WS Collaboration features..."
    if ! su - zextras -c "carbonio prov mc default carbonioFeatureChatsEnabled TRUE"; then
        echo "Failed to enable Carbonio WS Collaboration features."
        status[18]="Failed"
        return
    fi

    echo "Installed Carbonio WS Collaboration UI package and its version:"
    dpkg-query -W -f='${binary:Package} ${Version}\n' carbonio-ws-collaboration-ui | sort
    status[18]="Done"
}

# Function to Change Admin User Password
change_admin_user_password() {
    echo "Changing admin user (zextras@$(hostname -d)) password..."
    read -s -p "Enter new admin password: " ADMIN_PWD
    echo # Move to a new line for clean output
    if su - zextras -c "carbonio prov sp zextras@$(hostname -d) $ADMIN_PWD"; then
        echo "Admin user password changed successfully."
        status[19]="Done"
    else
        echo "Failed to change admin user password."
        status[19]="Failed"
    fi
}

# Function to Interactively Create Test Users with Skip Option
interactive_create_test_users() {
    echo "Would you like to create test users? (yes/no): "
    read proceed
    if [[ "$proceed" != "yes" ]]; then
        echo "Skipping user creation."
        status[20]="Skipped"
        return
    fi

    echo "Enter the number of users you want to create: "
    read num_users
    # Ensure input is a number and greater than 0
    if ! [[ "$num_users" =~ ^[0-9]+$ ]] || [ "$num_users" -le 0 ]; then
        echo "Invalid number of users. Exiting..."
        status[20]="Failed"
        return
    fi

    for ((i=1; i<=num_users; i++)); do
        echo "Enter username for user $i: "
        read username
        # Simple check for non-empty username
        if [[ -z "$username" ]]; then
            echo "Username cannot be empty. Exiting..."
            status[20]="Failed"
            return
        fi

        echo "Enter password for $username: "
        read -s password
        # Simple check for non-empty password
        if [[ -z "$password" ]]; then
            echo "Password cannot be empty. Exiting..."
            status[20]="Failed"
            return
        fi

        if su - zextras -c "carbonio prov ca $username@$(hostname -d) $password displayName \"$username\""; then
            echo "User $username created successfully."
        else
            echo "Failed to create user $username."
            status[20]="Failed"
            # Decide whether to exit or continue in case of failure
            echo "Continue creating next user? (yes/no):"
            read continueCreating
            if [[ "$continueCreating" != "yes" ]]; then
                return
            fi
        fi
    done
    status[20]="Done"
}


# Function to Modify MTA for Trusted Network
modify_mta_for_trusted_network() {
    echo "Modifying MTA for Trusted Network..."
    if su - zextras -c "carbonio prov ms $(hostname -f) zimbraMtaMyNetworks '127.0.0.0/8 $(hostname -i)/32'" && su - zextras -c "zmmtactl restart"; then
        echo "MTA configuration updated and service restarted successfully."
        status[21]="Done"
    else
        echo "Failed to update MTA configuration or restart the service."
        status[21]="Failed"
    fi
}

# Function to Restart Carbonio Services
restart_carbonio_services() {
    echo "Restarting Carbonio Services..."
    if su - zextras -c "zmcontrol restart"; then
        echo "Carbonio services restarted successfully."
        status[22]="Done"
    else
        echo "Failed to restart Carbonio services."
        status[22]="Failed"
    fi
}

# Function to Check Carbonio CE Service Status
check_carbonio_ce_service_status() {
    echo "Checking Carbonio CE Service Version..."
    if ! su - zextras -c "zmcontrol -v"; then
        echo "Failed to check Carbonio CE service version."
        status[23]="Failed"
        return
    fi
    
    echo "Checking Carbonio CE Service Status..."
    if su - zextras -c "zmcontrol status"; then
        echo "Carbonio CE service status check completed successfully."
        status[23]="Done"
    else
        echo "Failed to check Carbonio CE service status."
        status[23]="Failed"
    fi
}

# Function to Check Consul Status
check_consul_status() {
    echo "Checking Consul Status..."
    if consul members; then
        echo "Consul status check completed successfully."
        status[24]="Done"
    else
        echo "Failed to check Consul status."
        status[24]="Failed"
    fi
}

# Function to Check Carbonio CE System Unit Status
check_carbonio_ce_system_unit_status() {
    echo "Checking Carbonio CE System Unit Status..."
    if systemctl list-units carbonio*; then
        echo "Carbonio CE system unit status check completed successfully."
        status[25]="Done"
    else
        echo "Failed to check Carbonio CE system unit status."
        status[25]="Failed"
    fi
}

# Function to Check Consul Service Status via HTTP API
check_consul_service_status_http_api() {
    echo "Checking Consul Service Status via HTTP API..."
    if curl_output=$(curl -s -v  http://127.78.0.4:10000/health);  then
        echo "$curl_output" | jq
        echo "Consul service status check via HTTP API completed."
        status[26]="Done"
    else
        echo "Failed to retrieve Consul service status via HTTP API."
        status[26]="Failed"
    fi
}

# System Reboot and advisory
reboot_system_now() {
    echo "Advisory for System Administrators:"
    echo "After rebooting the system, consider restarting the following Carbonio services to apply any recent changes:"
echo -en "
su - zextras -c 'zmcontrol restart'
systemctl restart carbonio-tasks
systemctl restart carbonio-message-broker
systemctl restart carbonio-message-dispatcher
systemctl restart carbonio-ws-collaboration
systemctl restart carbonio-videoserver

if any attempt of initiating video call fails then clear the video call with 
PGPASSWORD=<postgresql_password> carbonio-ws-collaboration-meeting-cleanup carbonio_adm 127.0.0.1 5432
#PGPASSWORD=q carbonio-ws-collaboration-meeting-cleanup carbonio_adm 127.0.0.1 5432
also reboot
systemctl restart carbonio-videoserver
systemctl restart carbonio-ws-collaboration
"
    sudo reboot now
}

# Main loop
while true; do
    display_menu
    echo "Select an activity by number (or type 'Quit' to exit):"
    read choice
    case $choice in
	
         1)
             set_hostname
             ;;
         2)
             configure_hosts
             ;;
         3)
             set_timezone
             ;;
         4)
             add_zextras_repo
             ;;
         5)
             manage_apt_repos
			 ;;
		 6)
             install_postgresql_db
             ;;
         7)
             add_postgresql_role_and_db
             ;;
         8)
             install_carbonio_ce_packages
             ;;
         9)
             configure_carbonio_ce_bootstrap
             ;;
         10)
             configure_service_discovery
             ;;
         11)
             configure_pending_setups
             ;;
         12)
             bootstrap_files_and_tasks_db
             ask_skip_ws_collaboration
             ;;
         13)
             install_carbonio_message_dispatcher_db
             ;;
         14)
             install_carbonio_message_dispatcher
             ;;
         15)
             install_carbonio_message_broker
             ;;
         16)
             install_carbonio_ws_collaboration_db
             ;;
         17)
             install_carbonio_ws_collaboration_ce
             ;;
         18)
             install_carbonio_video_server_ce
             ;;
         19)
             install_carbonio_ws_collaboration_ui
             ;;
         20)
             change_admin_user_password
             ;;
		 21)
             interactive_create_test_users
             ;;
         22)
             modify_mta_for_trusted_network
             ;;
         23)
             restart_carbonio_services
             ;;
         24)
             check_carbonio_ce_service_status
             ;;
         25)
             check_consul_status
             ;;
         26)
             check_carbonio_ce_system_unit_status
             ;;
         27)
             check_consul_service_status_http_api
             ;;
         28)
             reboot_system_now
             ;;
         29|"Quit")
             echo "Exiting..."
             break
             ;;
         *)
             echo "Invalid option. Please enter a number from the list."
             ;;
    esac
done
This topic was modified 2 months ago 16 times by Md. Shariful Islam
This topic was modified 4 weeks ago by Md. Shariful Islam
This topic was modified 2 weeks ago by Md. Shariful Islam

   
Mr.Ripon reacted
Quote
(@anahuac)
Joined: 11 months ago
Posts: 307
 

Oh damn!

that looks awesome!

I'll give it a try.... ty for sharing =)


   
ReplyQuote
(@sharif)
Admin
Joined: 2 years ago
Posts: 410
Topic starter  

@anahuac 

Hi,

Thank you for your interest.

Please feel free to modify it to make it more precise.

😊

Regards,

Sharif


   
anahuac reacted
ReplyQuote
(@sharif)
Admin
Joined: 2 years ago
Posts: 410
Topic starter  

@anahuac 

Hi,

Thank you for your interest.

Please feel free to modify it to make it more precise.

😊

Regards,

Sharif


   
ReplyQuote
(@raystinger)
Joined: 2 months ago
Posts: 35
 

does i need backup before ? curently my server its fully functional except videocalls


   
ReplyQuote
(@sharif)
Admin
Joined: 2 years ago
Posts: 410
Topic starter  

@raystinger 

Hi,

I am sorry, I could not understand your post.

This script is for fresh installation of CE in Ubuntu 20 and 22. Therefore it does not deal with backup or upgradation.

Regards,

Sharif


   
ReplyQuote
(@raystinger)
Joined: 2 months ago
Posts: 35
 

please answer my thread   https://community.zextras.com/forum/postid/7521/   , or how i can contact you? i cant send messages , cant edit post and cant upload image 


   
ReplyQuote
(@sharif)
Admin
Joined: 2 years ago
Posts: 410
Topic starter  

@raystinger 

I have answered your other post.

Regards,

Sharif


   
ReplyQuote
(@sharif)
Admin
Joined: 2 years ago
Posts: 410
Topic starter  

On Source Server: (Zimbra OSE)
1. Collect all distribution list
zimbra@mail:/opt/backups/zmigrate$ zmprov gadl > distributionlist.txt

2. Collect members of all distribution list
zimbra@mail:~$ mkdir /opt/backups/zmigrate/distributionlist_members
zimbra@mail:/opt/backups/zmigrate$ for i in `cat /opt/backups/zmigrate/distributionlist.txt`; do zmprov gdlm $i > /opt/backups/zmigrate/distributionlist_members/$i.txt ;echo "$i"; done

 

Transfer these data to from source server to destination server using scp or Rsync. also fix their permissions.

 

On Destination Server: (Carbonio CE)
1. Create all distribution list in the Carbonio Server
zextras@mail:/opt/backups/zmigrate$ for i in `cat distributionlist.txt`; do carbonio prov cdl $i ; echo "$i -- done " ; done

2. Add members to the respective distribution list using the script.
zextras@mail:/opt/backups/zmigrate$
#!/bin/bash
# add all members to each of these distribution lists
for i in `cat distributionlist.txt`
do
for j in `grep -v '#' distributionlist_members/$i.txt |grep '@'`
do
carbonio prov adlm $i $j
echo " $j member has been added to list $i"
done

done

This post was modified 2 months ago by Md. Shariful Islam

   
ReplyQuote
(@frakka)
Joined: 2 months ago
Posts: 7
 

Hi, all.

 I've just installed a new "Carbonio-ce" server (v. 24.3.0) on Ubuntu 22.04.4 LTS both following the step-by-step procedure in the docs both usign the installation scritp for a single server setup.

 I can't get any QRcode for Mobile Apps nor Exchange ActiveSync password, desktop Apps or OTP Auth.

In "/opt/zextras/log/mailbox.log" I got this messages after requesting a credential:

2024-03-31 22:49:03,584 WARN [qtp37841489-134] [name=zextras@domain.my;mid=2;ip=192.168.100.191;oip=192.168.150.20;port=43906;soapId=64a9f064;] SoapEngine - cannot dispatch request
com.zimbra.common.service.ServiceException: unknown document: ListCredentialsRequest
at com.zimbra.common.service.ServiceException.UNKNOWN_DOCUMENT(ServiceException.java:314) ~[zimbracommon.jar:?]
at com.zimbra.soap.SoapEngine.dispatchRequest(SoapEngine.java:597) ~[zimbrastore.jar:?]
at com.zimbra.soap.SoapEngine.dispatch(SoapEngine.java:508) ~[zimbrastore.jar:?]
at com.zimbra.soap.SoapEngine.dispatch(SoapEngine.java:278) ~[zimbrastore.jar:?]
at com.zimbra.soap.SoapServlet.doWork(SoapServlet.java:338) ~[zimbrastore.jar:?]
at com.zimbra.soap.SoapServlet.doPost(SoapServlet.java:239) ~[zimbrastore.jar:?]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) ~[servlet-api-3.1.jar:3.1.0]
at com.zimbra.cs.servlet.ZimbraServlet.service(ZimbraServlet.java:208) ~[zimbrastore.jar:?]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[servlet-api-3.1.jar:3.1.0]
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1656) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:292) ~[websocket-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at com.zimbra.cs.servlet.CsrfFilter.doFilter(CsrfFilter.java:152) ~[zimbrastore.jar:?]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at com.zimbra.cs.servlet.RequestStringFilter.doFilter(RequestStringFilter.java:43) ~[zimbrastore.jar:?]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at com.zimbra.cs.servlet.SetHeaderFilter.doFilter(SetHeaderFilter.java:48) ~[zimbrastore.jar:?]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at com.zimbra.cs.servlet.ETagHeaderFilter.doFilter(ETagHeaderFilter.java:36) ~[zimbrastore.jar:?]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at com.zimbra.cs.servlet.ContextPathBasedThreadPoolBalancerFilter.doFilter(ContextPathBasedThreadPoolBalancerFilter.java:95) ~[zimbrastore.jar:?]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at com.zimbra.cs.servlet.ZimbraQoSFilter.doFilter(ZimbraQoSFilter.java:113) ~[zimbrastore.jar:?]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at com.zimbra.cs.servlet.ZimbraInvalidLoginFilter.doFilter(ZimbraInvalidLoginFilter.java:119) ~[zimbrastore.jar:?]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlets.DoSFilter.doFilterChain(DoSFilter.java:487) ~[jetty-servlets-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlets.DoSFilter.doFilter(DoSFilter.java:336) ~[jetty-servlets-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlets.DoSFilter.doFilter(DoSFilter.java:301) ~[jetty-servlets-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:89) ~[guice-servlet-5.0.1.jar:?]
at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:121) ~[guice-servlet-5.0.1.jar:?]
at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:133) ~[guice-servlet-5.0.1.jar:?]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:552) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:571) ~[jetty-security-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:191) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:322) ~[jetty-rewrite-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:772) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.Server.handle(Server.java:516) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732) [jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479) [jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277) [jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) [jetty-io-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) [jetty-io-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) [jetty-io-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338) [jetty-util-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315) [jetty-util-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173) [jetty-util-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131) [jetty-util-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409) [jetty-util-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883) [jetty-util-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034) [jetty-util-9.4.48.v20220622.jar:9.4.48.v20220622]
at java.lang.Thread.run(Thread.java:840) [?:?]
2024-03-31 22:49:03,585 INFO [qtp37841489-134] [name=zextras@domain.my;mid=2;ip=192.168.100.191;oip=192.168.150.20;port=43906;soapId=64a9f064;] soap - ListCredentialsRequest elapsed=1
2024-03-31 22:49:15,111 WARN [qtp37841489-23] [name=zextras@domain.my;mid=2;ip=192.168.100.191;oip=192.168.150.20;port=34286;soapId=64a9f065;] SoapEngine - cannot dispatch request
com.zimbra.common.service.ServiceException: unknown document: AddCredentialRequest
at com.zimbra.common.service.ServiceException.UNKNOWN_DOCUMENT(ServiceException.java:314) ~[zimbracommon.jar:?]
at com.zimbra.soap.SoapEngine.dispatchRequest(SoapEngine.java:597) ~[zimbrastore.jar:?]
at com.zimbra.soap.SoapEngine.dispatch(SoapEngine.java:508) ~[zimbrastore.jar:?]
at com.zimbra.soap.SoapEngine.dispatch(SoapEngine.java:278) ~[zimbrastore.jar:?]
at com.zimbra.soap.SoapServlet.doWork(SoapServlet.java:338) ~[zimbrastore.jar:?]
at com.zimbra.soap.SoapServlet.doPost(SoapServlet.java:239) ~[zimbrastore.jar:?]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) ~[servlet-api-3.1.jar:3.1.0]
at com.zimbra.cs.servlet.ZimbraServlet.service(ZimbraServlet.java:208) ~[zimbrastore.jar:?]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[servlet-api-3.1.jar:3.1.0]
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1656) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:292) ~[websocket-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at com.zimbra.cs.servlet.CsrfFilter.doFilter(CsrfFilter.java:152) ~[zimbrastore.jar:?]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at com.zimbra.cs.servlet.RequestStringFilter.doFilter(RequestStringFilter.java:43) ~[zimbrastore.jar:?]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at com.zimbra.cs.servlet.SetHeaderFilter.doFilter(SetHeaderFilter.java:48) ~[zimbrastore.jar:?]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at com.zimbra.cs.servlet.ETagHeaderFilter.doFilter(ETagHeaderFilter.java:36) ~[zimbrastore.jar:?]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at com.zimbra.cs.servlet.ContextPathBasedThreadPoolBalancerFilter.doFilter(ContextPathBasedThreadPoolBalancerFilter.java:95) ~[zimbrastore.jar:?]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at com.zimbra.cs.servlet.ZimbraQoSFilter.doFilter(ZimbraQoSFilter.java:113) ~[zimbrastore.jar:?]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at com.zimbra.cs.servlet.ZimbraInvalidLoginFilter.doFilter(ZimbraInvalidLoginFilter.java:119) ~[zimbrastore.jar:?]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlets.DoSFilter.doFilterChain(DoSFilter.java:487) ~[jetty-servlets-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlets.DoSFilter.doFilter(DoSFilter.java:336) ~[jetty-servlets-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlets.DoSFilter.doFilter(DoSFilter.java:301) ~[jetty-servlets-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:89) ~[guice-servlet-5.0.1.jar:?]
at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:121) ~[guice-servlet-5.0.1.jar:?]
at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:133) ~[guice-servlet-5.0.1.jar:?]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:552) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:571) ~[jetty-security-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:191) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:322) ~[jetty-rewrite-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:772) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.Server.handle(Server.java:516) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732) [jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479) [jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277) [jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) [jetty-io-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) [jetty-io-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) [jetty-io-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338) [jetty-util-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315) [jetty-util-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173) [jetty-util-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131) [jetty-util-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409) [jetty-util-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883) [jetty-util-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034) [jetty-util-9.4.48.v20220622.jar:9.4.48.v20220622]
at java.lang.Thread.run(Thread.java:840) [?:?]

Any suggestions to get QRCode generation wortking?


   
ReplyQuote
(@frakka)
Joined: 2 months ago
Posts: 7
 

Posted by: @sharif

Official script for Ubuntu:

https://docs.zextras.com/carbonio-ce/html/_downloads/bed211d6fc1b9ca35f15be01eb9aa3fc/install_carbonio_ce_singleserver_ubuntu.sh

 Hi, I installed some days ago carbonio-ce 24.3.0, both on Ubuntu 22.4 LTS and Ubuntu 20.04 LTS.
 I tried to setup Carbonio-CE either using this script either manually follow the instructions provided in docs. I always got a working install but in no case did I succeed the get the QRCode generation working on "Auth" section.

 In each situation the dialog box for a new credential appear, I can insert the credential name but after click to confirm I get this messages in the mailbox.log:

2024-04-03 07:58:16,207 WARN [qtp949673757-108] [] extensions - unable to find handler for extension: system failure: Extension HTTP handler not found at /metrics/auth
2024-04-03 07:58:23,680 WARN [qtp949673757-2527] [name=mail@mydomain.tld;mid=4;ip=192.168.100.191;oip=192.168.1.254;port=44098;soapId=e2f384f;] SoapEngine - cannot dispatch request
com.zimbra.common.service.ServiceException: unknown document: AddCredentialRequest
at com.zimbra.common.service.ServiceException.UNKNOWN_DOCUMENT(ServiceException.java:314) ~[zimbracommon.jar:?]
at com.zimbra.soap.SoapEngine.dispatchRequest(SoapEngine.java:597) ~[zimbrastore.jar:?]
[...]
2024-04-03 07:58:23,682 INFO [qtp949673757-2527] [name=mail@mydomain.tld;mid=4;ip=192.168.100.191;oip=192.168.1.254;port=44098;soapId=e2f384f;] soap - AddCredentialRequest elapsed=1

2024-04-03 08:00:23,499 WARN [qtp949673757-2527] [name=mail@mydomain.tld;mid=4;ip=192.168.100.191;oip=192.168.1.254;port=41674;soapId=e2f3851;] SoapEngine - cannot dispatch request
com.zimbra.common.service.ServiceException: unknown document: AddCredentialRequest
at com.zimbra.common.service.ServiceException.UNKNOWN_DOCUMENT(ServiceException.java:314) ~[zimbracommon.jar:?]
at com.zimbra.soap.SoapEngine.dispatchRequest(SoapEngine.java:597) ~[zimbrastore.jar:?]
[...]
at java.lang.Thread.run(Thread.java:840) [?:?]
2024-04-03 08:00:23,501 INFO [qtp949673757-2527] [name=mail@mydomain.tld;mid=4;ip=192.168.100.191;oip=192.168.1.254;port=41674;soapId=e2f3851;] soap - AddCredentialRequest elapsed=2
2024-04-03 08:00:31,906 WARN [qtp949673757-121] [] extensions - unable to find handler for extension: system failure: Extension HTTP handler not found at /metrics/powerstore
2024-04-03 08:00:36,206 WARN [qtp949673757-76] [] extensions - unable to find handler for extension: system failure: Extension HTTP handler not found at /metrics/auth

2024-04-03 08:01:48,767 INFO [qtp949673757-121] [name=mail@mydomain.tld;mid=4;ip=192.168.100.191;oip=192.168.1.254;port=56136;soapId=e2f3853;] soap - ListOTPRequest elapsed=1
2024-04-03 08:01:52,684 WARN [qtp949673757-2521] [name=mail@mydomain.tld;mid=4;ip=192.168.100.191;oip=192.168.1.254;port=58290;soapId=e2f3854;] SoapEngine - cannot dispatch request
com.zimbra.common.service.ServiceException: unknown document: AddCredentialRequest
at com.zimbra.common.service.ServiceException.UNKNOWN_DOCUMENT(ServiceException.java:314) ~[zimbracommon.jar:?]
[...]
2024-04-03 08:01:52,686 INFO [qtp949673757-2521] [name=mail@mydomain.tld;mid=4;ip=192.168.100.191;oip=192.168.1.254;port=58290;soapId=e2f3854;] soap - AddCredentialRequest elapsed=2
2024-04-03 08:02:03,983 INFO [MailboxPurge] [name=bano@fracassetti.eu;mid=6;] purge - Purging messages.

 On the right bottom appear the green dialog that confirm the new credential creation but this is false.

 I think that some package is missing but I can't understand how to solve.

 Can someone help me?


   
ReplyQuote
(@sharif)
Admin
Joined: 2 years ago
Posts: 410
Topic starter  

@frakka

Hi,

About this issue, Exchange ActiveSync is not part of Carbonio CE. So if you want to login into your mobile APP, you have to use the username/password.

Posted by: @frakka

 I can't get any QRcode for Mobile Apps nor Exchange ActiveSync password, desktop Apps or OTP Auth.

 

Regards,

Sharif


   
ReplyQuote
(@frakka)
Joined: 2 months ago
Posts: 7
 

@sharif 

 Ok, I'm not really interested to ActiveSync: The ability to autoconfigure the mobile app with a QRCode is only part of the licenced version (so is by design that it doesn't works in a CE environment)?

 I couldn't find a detailed list of feature not available in CE env that are instead available in paid version: Can you provide it?


   
ReplyQuote
(@sharif)
Admin
Joined: 2 years ago
Posts: 410
Topic starter  

@frakka 

Hi

I could understand your concern. Could you please send an email to (@zextras.com" target="_blank" rel="noopener">marketing@zextras.com) with the details you desired to know about Carbonio Advanced?

It would be a great help and We will forward it our concern department.

Regards,

Sharif


   
ReplyQuote
(@frakka)
Joined: 2 months ago
Posts: 7
 

 We already have a contact channel with your department through Studio Storti for a partnership and an account on your demo tenant. I'll send them my doubt but I think that this information should be publicly available.

 What is working, not working or simply expected to not work but is questionably implemented in the interface is very useful to evaluate how much a product is mature.
 I installed the CE env to evaluate the installation process and review the infrastructure behind the GUI, not for put it into production.


   
ReplyQuote
Page 1 / 2