private void updateGlobalProperties(TurmsProperties properties) {
        MeetingProperties meetingProperties = properties.getService()
                .getConference()
                .getMeeting();
        IdProperties idProperties = meetingProperties.getId();
        NameProperties nameProperties = meetingProperties.getName();
        IntroProperties introProperties = meetingProperties.getIntro();
        PasswordProperties passwordProperties = meetingProperties.getPassword();
        QuotaProperties quotaProperties = meetingProperties.getQuota();
        SchedulingProperties schedulingProperties = meetingProperties.getScheduling();

        idType = idProperties.getType();
        nameMinLength = nameProperties.getMinLength();
        nameMaxLength = nameProperties.getMaxLength();
        introMinLength = introProperties.getMinLength();
        introMaxLength = introProperties.getMaxLength();
        passwordPolicy = passwordProperties.getPolicy();
        passwordPattern = passwordProperties.getType();
        passwordMinLength = passwordProperties.getMinLength();
        passwordMaxLength = passwordProperties.getMaxLength();
        maxAllowedStartDateOffsetMillis =
                schedulingProperties.getMaxAllowedStartDateOffsetSeconds() * 1000L;
        allowCancel = schedulingProperties.isAllowCancel();
        int maxActiveMeetingCountPerUser = quotaProperties.getMaxActiveMeetingCountPerUser();
        isMaxActiveMeetingCountPerUserEnabled = maxActiveMeetingCountPerUser > 0;
        this.maxActiveMeetingCountPerUser = maxActiveMeetingCountPerUser;
    }
Use {@link SecureRandom} because users usually input meeting IDs to join meetings, so we
should make sure they are unpredictable.
turms-service/src/main/java/im/turms/service/domain/conference/service/ConferenceService.java