Skip to content

Releases: Koukobin/Ermis

Server v1.0.0 Release Candidate 5

23 Jul 10:53

Choose a tag to compare

Mobile Client v1.2.0 Release Candidate 1

18 Jul 12:06

Choose a tag to compare

Server v1.0.4 Release Candidate 1

06 Jul 20:40

Choose a tag to compare

Mobile Client v1.1.0 Release Candidate 1

06 Jul 21:03

Choose a tag to compare

Mobile Client v1.1.0-rc1 introduces achievement popups and wildcards to celebrate certain user milestones, such as first friend/chat-session added, and first message sent.


Full Changelog: client-mobile-v1.0.2-rc1...client-mobile-v1.1.0-rc1

Server v1.0.3 Release Candidate 1

23 Jun 20:39

Choose a tag to compare

Ermis-Server v1.0.3-rc1 resolves a long-standing placeholder-replacement bug. In prior versions, various values injected in files throughout the server (e.g server IP address, Paypal client id, Bitcoin address etc.) wouldn’t update if you later changed them in your config files.

For instance, if I were to set server address to "192.168.10.103" in the configuration files, then - once the server initiated -, it would update all placeholders "SERVER_ADDRESS" which were found within all files associated with server to "192.168.10.103". This functions perfectly fine. The problem would arise when I suddenly decided to change server address inside the configuration files to to a different value - e.g "256.88.4.63." Since all prior placeholders "SERVER_ADDRESS" had already been set to "192.168.10.103," the change to the IP address in the configuration files would not be reflected throughout the files of the entire server. Hence, a discrepancy would be created, leading to all sorts of issues.

This patch aims to address exactly this issue; by keeping backups of all files in which such placeholders exist, and replacing them once the server stops running, this problem is successfully tackled.

Specifically, this is accomplished using Bash traps (Set to execute once server process completes):

Prior version afflicted with issue:

sudo ./apply_server_settings.pl

# Attempt to find server JAR file
ERMIS_SERVER_JAR_FILE=$(find bin -maxdepth 1 -name "*.jar" -print -quit)

# Check if a JAR file was found
if [ -z "$ERMIS_SERVER_JAR_FILE" ]; then
  echo "No JAR file found in the directory!"
  exit 1
fi

VM_ARGUMENTS="
-Djava.security.egd=file:/dev/./urandom 
-server 
-XX:+UseZGC 
--add-opens java.base/java.lang=ALL-UNNAMED 
--add-opens java.base/jdk.internal.misc=ALL-UNNAMED
--add-opens java.base/java.nio=ALL-UNNAMED
-Dio.netty.tryReflectionSetAccessible=true
-Dfile.encoding=UTF-8"
PROGRAM_ARGUMENTS=""

if [ -n "$JAVA_HOME" ]; then
  sudo $JAVA_HOME/bin/java -jar $VM_ARGUMENTS $ERMIS_SERVER_JAR_FILE $PROGRAM_ARGUMENTS
else
  sudo java -jar $VM_ARGUMENTS $ERMIS_SERVER_JAR_FILE $PROGRAM_ARGUMENTS
fi

sudo turnserver --log-file stdout --tls-listening-port=5439 --listening-port=5440

Patched version:

debute_server () {
    sudo ./apply_server_settings.pl

    # Attempt to find server JAR file
    ERMIS_SERVER_JAR_FILE=$(find bin -maxdepth 1 -name "*.jar" -print -quit)

    # Check if a JAR file was found
    if [ -z "$ERMIS_SERVER_JAR_FILE" ]; then
      echo "No JAR file found in the directory!"
      exit 1
    fi

    VM_ARGUMENTS="
    -Djava.security.egd=file:/dev/./urandom 
    -server 
    -XX:+UseZGC 
    --add-opens java.base/java.lang=ALL-UNNAMED 
    --add-opens java.base/jdk.internal.misc=ALL-UNNAMED
    --add-opens java.base/java.nio=ALL-UNNAMED
    -Dio.netty.tryReflectionSetAccessible=true
    -Dfile.encoding=UTF-8"
    PROGRAM_ARGUMENTS=""

    if [ -n "$JAVA_HOME" ]; then
      sudo $JAVA_HOME/bin/java -jar $VM_ARGUMENTS $ERMIS_SERVER_JAR_FILE $PROGRAM_ARGUMENTS
    else
      sudo java -jar $VM_ARGUMENTS $ERMIS_SERVER_JAR_FILE $PROGRAM_ARGUMENTS
    fi

    sudo turnserver --log-file stdout --tls-listening-port=5439 --listening-port=5440
}

dir_backup_and_restore_once_process_dies () {
    touch /tmp/session.keepalive # Create file denoting process is active

    kill_file_denoting_process_is_alive() {
        rm -f /tmp/session.keepalive # Kill file denoting process is active
    }

    trap kill_file_denoting_process_is_alive EXIT
    # UPPERCASE IS CRUCIAL TO ENSURE SINCE THE VARIABLES  ARE ACCESSIBLE IN TRAPS AND SIGNAL HANDLERS
    FOLDER="$1/"
    BACKUP="$1_backup/"

    restore_backup() {
        echo "\nRestoring original folder: $BACKUP -> $FOLDER ..."
        sudo rm -rf "$FOLDER"
        sudo cp -r "$BACKUP" "$FOLDER"
        sudo chmod -R 777 "$FOLDER"
        sudo rm -rf "$BACKUP"
    }
    
    # If backup exists then perform cleanup
    if [ -d "$BACKUP" ]; then
        restore_backup
    fi

    (
        while [ -f /tmp/session.keepalive ]; do
            sleep 1
        done

        echo "Parent shell died. Exiting subshell."
        trap restore_backup EXIT INT TERM
    ) &

    # Copy the original directory to a backup location
    sudo cp -r --no-preserve=ownership "$FOLDER" "$BACKUP"

    echo "Created backup for server folder $FOLDER -> $BACKUP..."

    # Directory, and by extension all files, automatically restored by subshell above
}

dir_backup_and_restore_once_process_dies "/var/ermis-server/www"
dir_backup_and_restore_once_process_dies "/etc/nginx"

debute_server

Full Changelog: server-v1.0.2-rc1...server-v1.0.3-rc1

Server v1.0.2 Release Candidate 1

21 Jun 16:33

Choose a tag to compare

Ermis-Server v1.0.2-rc1 addresses and resolves a bug which arose if user did not meet entry requirements during the initial registration process.

Full Changelog: server-v1.0.1-rc1...server-v1.0.2-rc1

Mobile Client v1.0.2 Release Candidate 1

21 Jun 16:43

Choose a tag to compare

Mobile Client v1.0.2-rc1 fixed out of bounds buttons in verification code dialog by adding width constraints to their encompassing containers.

Full Changelog: client-mobile-v1.0.1-rc1...client-mobile-v1.0.2-rc1

Server v1.0.1 Release Candidate 1

20 Jun 18:38

Choose a tag to compare

Ermis-Server v1.0.1-rc1 clarifies the steps needed for generating an app-specific Gmail password during the configuration of the server emailer.

Full Changelog: ermis-release-1.0-rc...server-v1.0.1-rc1

Mobile Client v1.0.1 Release Candidate 1

20 Jun 11:25

Choose a tag to compare

This release provides a temporary fix for crashes triggered by flutter_background_service on Android 14+ (SDK 34+) by disabling the service completely for those versions. As I stated, this is only a temporary workaround, as it completely disables the background service which is responsible for listening for incoming messages and video/voice calls.

Full Changelog: ermis-release-1.0-rc...client-mobile-v1.0.1-rc1

First Release Candidate

16 Jun 19:43

Choose a tag to compare

First release candidate for the initial version of Ermis.

This release contains all core functionalities. Albeit, since this is a candidate for the final version, it is still open for testing and feedback.

Full Changelog: https://github.com/Koukobin/Ermis/commits/ermis-release-1.0-rc