diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/solutions/ce/UserSignupCEImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/solutions/ce/UserSignupCEImpl.java index 711f367960..8b6eda69d3 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/solutions/ce/UserSignupCEImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/solutions/ce/UserSignupCEImpl.java @@ -11,6 +11,7 @@ import com.appsmith.server.domains.UserState; import com.appsmith.server.dtos.UserSignupRequestDTO; import com.appsmith.server.exceptions.AppsmithError; import com.appsmith.server.exceptions.AppsmithException; +import com.appsmith.server.helpers.NetworkUtils; import com.appsmith.server.helpers.UserUtils; import com.appsmith.server.services.AnalyticsService; import com.appsmith.server.services.CaptchaService; @@ -224,8 +225,10 @@ public class UserSignupCEImpl implements UserSignupCE { return Mono.when( userDataService.updateForUser(user, userData), - configService.getInstanceId() - .flatMap(instanceId -> { + Mono.zip(configService.getInstanceId(), NetworkUtils.getExternalAddress().defaultIfEmpty("unknown")) + .flatMap(tuple -> { + final String instanceId = tuple.getT1(); + final String ip = tuple.getT2(); log.debug("Installation setup complete."); analyticsService.identifyInstance(instanceId, userData.getRole(), userData.getUseCase()); return analyticsService.sendEvent( @@ -236,7 +239,8 @@ public class UserSignupCEImpl implements UserSignupCE { "subscribe-marketing", userFromRequest.isSignupForNewsletter(), "email", userFromRequest.isSignupForNewsletter() ? user.getEmail() : "", "role", ObjectUtils.defaultIfNull(userData.getRole(), ""), - "goal", ObjectUtils.defaultIfNull(userData.getUseCase(), "") + "goal", ObjectUtils.defaultIfNull(userData.getUseCase(), ""), + "ip", ip ), false ); diff --git a/deploy/docker/entrypoint.sh b/deploy/docker/entrypoint.sh index 91b1f88669..8aea2e70a0 100755 --- a/deploy/docker/entrypoint.sh +++ b/deploy/docker/entrypoint.sh @@ -3,6 +3,22 @@ set -e set -o xtrace +if [[ -n ${APPSMITH_SEGMENT_CE_KEY-} ]]; then + ip="$(curl -sS https://api64.ipify.org || echo unknown)" + curl \ + --user "$APPSMITH_SEGMENT_CE_KEY:" \ + --header 'Content-Type: application/json' \ + --data '{ + "userId":"'"$ip"'", + "event":"Instance Start", + "properties": { + "ip": "'"$ip"'" + } + }' \ + https://api.segment.io/v1/track \ + || true +fi + stacks_path=/appsmith-stacks function get_maximum_heap() { @@ -315,7 +331,7 @@ init_postgres() { echo "Found existing Postgres, Skipping initialization" else echo "Initializing local postgresql database" - + mkdir -p $POSTGRES_DB_PATH # Postgres does not allow it's server to be run with super user access, we use user postgres and the file system owner also needs to be the same user postgres @@ -329,18 +345,18 @@ init_postgres() { # Create mockdb db and user and populate it with the data seed_embedded_postgres - + # Stop the postgres daemon su postgres -c "/usr/lib/postgresql/13/bin/pg_ctl stop -D $POSTGRES_DB_PATH" fi else - runEmbeddedPostgres=0 + runEmbeddedPostgres=0 fi - + } seed_embedded_postgres(){ - # Create mockdb database + # Create mockdb database psql -U postgres -c "CREATE DATABASE mockdb;" # Create mockdb superuser su postgres -c "/usr/lib/postgresql/13/bin/createuser mockdb -s" @@ -358,7 +374,7 @@ seed_embedded_postgres(){ safe_init_postgres(){ runEmbeddedPostgres=1 # fail safe to prevent entrypoint from exiting, and prevent postgres from starting -init_postgres || runEmbeddedPostgres=0 +init_postgres || runEmbeddedPostgres=0 } # Main Section