diff --git a/.buckconfig b/.buckconfig deleted file mode 100644 index 934256cb29..0000000000 --- a/.buckconfig +++ /dev/null @@ -1,6 +0,0 @@ - -[android] - target = Google Inc.:Google APIs:23 - -[maven_repositories] - central = https://repo1.maven.org/maven2 diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index c5c288caf1..0000000000 --- a/.travis.yml +++ /dev/null @@ -1,6 +0,0 @@ -osx_image: xcode11.1 -language: objective-c -script: -- "./ios/travis-ci/build-ipa.sh" -after_script: - - sleep 10 diff --git a/Makefile b/Makefile index 8c8898781a..c73dd369c1 100644 --- a/Makefile +++ b/Makefile @@ -48,7 +48,6 @@ deploy-appbundle: $(BUILD_DIR)/external_api.min.js.map \ $(BUILD_DIR)/alwaysontop.min.js \ $(BUILD_DIR)/alwaysontop.min.js.map \ - $(OUTPUT_DIR)/analytics-ga.js \ $(BUILD_DIR)/analytics-ga.min.js \ $(BUILD_DIR)/analytics-ga.min.js.map \ $(BUILD_DIR)/face-landmarks-worker.min.js \ diff --git a/analytics-ga.js b/analytics-ga.js deleted file mode 100644 index a5cc4c0364..0000000000 --- a/analytics-ga.js +++ /dev/null @@ -1,163 +0,0 @@ -/* global ga */ - -(function(ctx) { - /** - * - */ - function Analytics(options) { - /* eslint-disable */ - - if (!options.googleAnalyticsTrackingId) { - console.log( - 'Failed to initialize Google Analytics handler, no tracking ID'); - return; - } - - /** - * Google Analytics - * TODO: Keep this local, there's no need to add it to window. - */ - (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ - (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) - })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); - ga('create', options.googleAnalyticsTrackingId, 'auto'); - ga('send', 'pageview'); - - /* eslint-enable */ - } - - /** - * Extracts the integer to use for a Google Analytics event's value field - * from a lib-jitsi-meet analytics event. - * @param {Object} event - The lib-jitsi-meet analytics event. - * @returns {Object} - The integer to use for the 'value' of a Google - * Analytics event. - * @private - */ - Analytics.prototype._extractAction = function(event) { - // Page events have a single 'name' field. - if (event.type === 'page') { - return event.name; - } - - // All other events have action, actionSubject, and source fields. All - // three fields are required, and the often jitsi-meet and - // lib-jitsi-meet use the same value when separate values are not - // necessary (i.e. event.action == event.actionSubject). - // Here we concatenate these three fields, but avoid adding the same - // value twice, because it would only make the GA event's action harder - // to read. - let action = event.action; - - if (event.actionSubject && event.actionSubject !== event.action) { - // Intentionally use string concatenation as analytics needs to - // work on IE but this file does not go through babel. For some - // reason disabling this globally for the file does not have an - // effect. - // eslint-disable-next-line prefer-template - action = event.actionSubject + '.' + action; - } - if (event.source && event.source !== event.action - && event.source !== event.action) { - // eslint-disable-next-line prefer-template - action = event.source + '.' + action; - } - - return action; - }; - - /** - * Extracts the integer to use for a Google Analytics event's value field - * from a lib-jitsi-meet analytics event. - * @param {Object} event - The lib-jitsi-meet analytics event. - * @returns {Object} - The integer to use for the 'value' of a Google - * Analytics event, or NaN if the lib-jitsi-meet event doesn't contain a - * suitable value. - * @private - */ - Analytics.prototype._extractValue = function(event) { - let value = event && event.attributes && event.attributes.value; - - // Try to extract an integer from the "value" attribute. - value = Math.round(parseFloat(value)); - - return value; - }; - - /** - * Extracts the string to use for a Google Analytics event's label field - * from a lib-jitsi-meet analytics event. - * @param {Object} event - The lib-jitsi-meet analytics event. - * @returns {string} - The string to use for the 'label' of a Google - * Analytics event. - * @private - */ - Analytics.prototype._extractLabel = function(event) { - let label = ''; - - // The label field is limited to 500B. We will concatenate all - // attributes of the event, except the user agent because it may be - // lengthy and is probably included from elsewhere. - for (const property in event.attributes) { - if (property !== 'permanent_user_agent' - && property !== 'permanent_callstats_name' - && event.attributes.hasOwnProperty(property)) { - // eslint-disable-next-line prefer-template - label += property + '=' + event.attributes[property] + '&'; - } - } - - if (label.length > 0) { - label = label.slice(0, -1); - } - - return label; - }; - - /** - * This is the entry point of the API. The function sends an event to - * google analytics. The format of the event is described in - * AnalyticsAdapter in lib-jitsi-meet. - * @param {Object} event - the event in the format specified by - * lib-jitsi-meet. - */ - Analytics.prototype.sendEvent = function(event) { - if (!event || !ga) { - return; - } - - const ignoredEvents - = [ 'e2e_rtt', 'rtp.stats', 'rtt.by.region', 'available.device', - 'stream.switch.delay', 'ice.state.changed', 'ice.duration' ]; - - // Temporary removing some of the events that are too noisy. - if (ignoredEvents.indexOf(event.action) !== -1) { - return; - } - - const gaEvent = { - 'eventCategory': 'jitsi-meet', - 'eventAction': this._extractAction(event), - 'eventLabel': this._extractLabel(event) - }; - const value = this._extractValue(event); - - if (!isNaN(value)) { - gaEvent.eventValue = value; - } - - ga('send', 'event', gaEvent); - }; - - if (typeof ctx.JitsiMeetJS === 'undefined') { - ctx.JitsiMeetJS = {}; - } - if (typeof ctx.JitsiMeetJS.app === 'undefined') { - ctx.JitsiMeetJS.app = {}; - } - if (typeof ctx.JitsiMeetJS.app.analyticsHandlers === 'undefined') { - ctx.JitsiMeetJS.app.analyticsHandlers = []; - } - ctx.JitsiMeetJS.app.analyticsHandlers.push(Analytics); -})(window); -/* eslint-enable prefer-template */ diff --git a/eslint b/eslint deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/ios/ci/build-ipa.plist.template b/ios/ci/build-ipa.plist.template deleted file mode 100644 index b76e8bfb16..0000000000 --- a/ios/ci/build-ipa.plist.template +++ /dev/null @@ -1,18 +0,0 @@ - - - - - compileBitcode - - method - development - signingStyle - automatic - stripSwiftSymbols - - teamID - YOUR_TEAM_ID - thinning - <none> - - diff --git a/ios/ci/build-ipa.sh b/ios/ci/build-ipa.sh deleted file mode 100755 index dbe627d9ac..0000000000 --- a/ios/ci/build-ipa.sh +++ /dev/null @@ -1,103 +0,0 @@ -#!/bin/bash -set -e - -# Mandatory arguments with no default values provided: -# PR_REPO_SLUG - the Github name of the repo to be merged into the origin/master -# PR_BRANCH - the branch to be merged, if set to "master" no merge will happen -# IPA_DEPLOY_LOCATION - the location understandable by the "scp" command -# executed at the end of the script to deploy the output .ipa file -# LIB_JITSI_MEET_PKG (optional) - the npm package for lib-jitsi-meet which will -# be put in place of the current version in the package.json file. -# -# Other than that the script requires the following env variables to be set: -# -# DEPLOY_SSH_CERT_URL - the SSH private key used by the 'scp' command to deploy -# the .ipa. It is expected to be encrypted with the $ENCRYPTION_PASSWORD. -# ENCRYPTION_PASSWORD - the password used to decrypt certificate/key files used -# in the script. -# IOS_TEAM_ID - the team ID inserted into build-ipa-.plist.template file in -# place of "YOUR_TEAM_ID". - -function echoAndExit1() { - echo $1 - exit 1 -} - -if [ -z $PR_REPO_SLUG ]; then - echoAndExit1 "No PR_REPO_SLUG defined" -fi -if [ -z $PR_BRANCH ]; then - echoAndExit1 "No PR_BRANCH defined" -fi -if [ -z $IPA_DEPLOY_LOCATION ]; then - echoAndExit1 "No IPA_DEPLOY_LOCATION defined" -fi - -echo "PR_REPO_SLUG=${PR_REPO_SLUG} PR_BRANCH=${PR_BRANCH}" - -# do the merge and git log - -if [ $PR_BRANCH != "master" ]; then - echo "Will merge ${PR_REPO_SLUG}/${PR_BRANCH} into master" - git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*" - git fetch origin master - git checkout master - git pull https://github.com/${PR_REPO_SLUG}.git $PR_BRANCH --no-edit -fi - -# Link this lib-jitsi-meet checkout in jitsi-meet through the package.json -if [ ! -z ${LIB_JITSI_MEET_PKG} ]; -then - echo "Adjusting lib-jitsi-meet package in package.json to ${LIB_JITSI_MEET_PKG}" - # escape for the sed - LIB_JITSI_MEET_PKG=$(echo $LIB_JITSI_MEET_PKG | sed -e 's/\\/\\\\/g; s/\//\\\//g; s/&/\\\&/g') - sed -i.bak -e "s/\"lib-jitsi-meet.*/\"lib-jitsi-meet\"\: \"${LIB_JITSI_MEET_PKG}\",/g" package.json - echo "Package.json lib-jitsi-meet line:" - grep lib-jitsi-meet package.json -else - echo "LIB_JITSI_MEET_PKG var not set - will not modify the package.json" -fi - -git log -20 --graph --pretty=format':%C(yellow)%h%Cblue%d%Creset %s %C(white) %an, %ar%Creset' - -# certificates - -CERT_DIR="ios/ci/certs" - -mkdir -p $CERT_DIR - -curl -L -o ${CERT_DIR}/id_rsa.enc ${DEPLOY_SSH_CERT_URL} -openssl aes-256-cbc -k "$ENCRYPTION_PASSWORD" -in ${CERT_DIR}/id_rsa.enc -d -a -out ${CERT_DIR}/id_rsa -chmod 0600 ${CERT_DIR}/id_rsa -ssh-add ${CERT_DIR}/id_rsa - -npm install - -# Ever since the Apple Watch app has been added the bitcode for WebRTC needs to be downloaded in order to build successfully -./node_modules/react-native-webrtc/tools/downloadBitcode.sh - -cd ios -pod install --repo-update --no-ansi -cd .. - -mkdir -p /tmp/jitsi-meet/ - -xcodebuild archive -quiet -workspace ios/jitsi-meet.xcworkspace -scheme jitsi-meet -configuration Release -archivePath /tmp/jitsi-meet/jitsi-meet.xcarchive - -sed -e "s/YOUR_TEAM_ID/${IOS_TEAM_ID}/g" ios/ci/build-ipa.plist.template > ios/ci/build-ipa.plist - -IPA_EXPORT_DIR=/tmp/jitsi-meet/jitsi-meet-ipa - -xcodebuild -quiet -exportArchive -archivePath /tmp/jitsi-meet/jitsi-meet.xcarchive -exportPath $IPA_EXPORT_DIR -exportOptionsPlist ios/ci/build-ipa.plist - -echo "Will try deploy the .ipa to: ${IPA_DEPLOY_LOCATION}" - -if [ ! -z ${SCP_PROXY_HOST} ]; -then - scp -o ProxyCommand="ssh -t -A -l %r ${SCP_PROXY_HOST} -o \"StrictHostKeyChecking no\" -o \"BatchMode yes\" -W %h:%p" -o StrictHostKeyChecking=no -o LogLevel=DEBUG "${IPA_EXPORT_DIR}/jitsi-meet.ipa" "${IPA_DEPLOY_LOCATION}" -else - scp -o StrictHostKeyChecking=no -o LogLevel=DEBUG "${IPA_EXPORT_DIR}/jitsi-meet.ipa" "${IPA_DEPLOY_LOCATION}" -fi - -rm -r /tmp/jitsi-meet/ -rm -r $CERT_DIR diff --git a/ios/ci/setup-certificates.sh b/ios/ci/setup-certificates.sh deleted file mode 100755 index 151b84b7e4..0000000000 --- a/ios/ci/setup-certificates.sh +++ /dev/null @@ -1,100 +0,0 @@ -# The script is based on tutorial written by Antonis Tsakiridis published at: -# https://medium.com/@atsakiridis/continuous-deployment-for-ios-using-travis-ci-55dcea342d9 -# -# APPLE_CERT_URL - the URL pointing to Apple certificate (set to -# http://developer.apple.com/certificationauthority/AppleWWDRCA.cer by default) -# DEPLOY_SSH_CERT_URL - the SSH private key used by the 'scp' command to deploy -# the .ipa. It is expected to be encrypted with the $ENCRYPTION_PASSWORD. -# ENCRYPTION_PASSWORD - the password used to decrypt certificate/key files used -# in the script. -# IOS_DEV_CERT_KEY_URL - URL pointing to provisioning profile certificate key -# file (development-key.p12.enc from the tutorial) encrypted with the -# $ENCRYPTION_PASSWORD. -# IOS_DEV_CERT_URL - URL pointing to provisioning profile certificate file -# (development-cert.cer.enc from the tutorial) encrypted with the -# $ENCRYPTION_PASSWORD. -# IOS_DEV_PROV_PROFILE_URL - URL pointing to provisioning profile file -# (profile-development-olympus.mobileprovision.enc from the tutorial) encrypted -# IOS_DEV_WATCH_PROV_PROFILE_URL - URL pointing to watch app provisioning profile file(encrypted). -# with the $ENCRYPTION_PASSWORD. -# IOS_SIGNING_CERT_PASSWORD - the password to the provisioning profile -# certificate key (used to open development-key.p12 from the tutorial). - -function echoAndExit1() { - echo $1 - exit 1 -} - -CERT_DIR=$1 - -if [ -z $CERT_DIR ]; then - echoAndExit1 "First argument must be certificates directory" -fi - -if [ -z $APPLE_CERT_URL ]; then - APPLE_CERT_URL="http://developer.apple.com/certificationauthority/AppleWWDRCA.cer" -fi - -if [ -z $DEPLOY_SSH_CERT_URL ]; then - echoAndExit1 "DEPLOY_SSH_CERT_URL env var is not defined" -fi - -if [ -z $ENCRYPTION_PASSWORD ]; then - echoAndExit1 "ENCRYPTION_PASSWORD env var is not defined" -fi - -if [ -z $IOS_DEV_CERT_KEY_URL ]; then - echoAndExit1 "IOS_DEV_CERT_KEY_URL env var is not defined" -fi - -if [ -z $IOS_DEV_CERT_URL ]; then - echoAndExit1 "IOS_DEV_CERT_URL env var is not defined" -fi - -if [ -z $IOS_DEV_PROV_PROFILE_URL ]; then - echoAndExit1 "IOS_DEV_PROV_PROFILE_URL env var is not defined" -fi - -if [ -z $IOS_DEV_WATCH_PROV_PROFILE_URL ]; then - echoAndExit1 "IOS_DEV_WATCH_PROV_PROFILE_URL env var is not defined" -fi - -if [ -z $IOS_SIGNING_CERT_PASSWORD ]; then - echoAndExit1 "IOS_SIGNING_CERT_PASSWORD env var is not defined" -fi - -# certificates - -curl -L -o ${CERT_DIR}/AppleWWDRCA.cer 'http://developer.apple.com/certificationauthority/AppleWWDRCA.cer' -curl -L -o ${CERT_DIR}/dev-cert.cer.enc ${IOS_DEV_CERT_URL} -curl -L -o ${CERT_DIR}/dev-key.p12.enc ${IOS_DEV_CERT_KEY_URL} -curl -L -o ${CERT_DIR}/dev-profile.mobileprovision.enc ${IOS_DEV_PROV_PROFILE_URL} -curl -L -o ${CERT_DIR}/dev-watch-profile.mobileprovision.enc ${IOS_DEV_WATCH_PROV_PROFILE_URL} - - -openssl aes-256-cbc -k "$ENCRYPTION_PASSWORD" -in ${CERT_DIR}/dev-cert.cer.enc -d -a -out ${CERT_DIR}/dev-cert.cer -openssl aes-256-cbc -k "$ENCRYPTION_PASSWORD" -in ${CERT_DIR}/dev-key.p12.enc -d -a -out ${CERT_DIR}/dev-key.p12 -openssl aes-256-cbc -k "$ENCRYPTION_PASSWORD" -in ${CERT_DIR}/dev-profile.mobileprovision.enc -d -a -out ${CERT_DIR}/dev-profile.mobileprovision -openssl aes-256-cbc -k "$ENCRYPTION_PASSWORD" -in ${CERT_DIR}/dev-watch-profile.mobileprovision.enc -d -a -out ${CERT_DIR}/dev-watch-profile.mobileprovision - -security create-keychain -p $ENCRYPTION_PASSWORD ios-build.keychain -security default-keychain -s ios-build.keychain -security unlock-keychain -p $ENCRYPTION_PASSWORD ios-build.keychain -security set-keychain-settings -t 3600 -l ~/Library/Keychains/ios-build.keychain - -echo "importing Apple cert" -security import ${CERT_DIR}/AppleWWDRCA.cer -k ios-build.keychain -A -echo "importing dev-cert.cer" -security import ${CERT_DIR}/dev-cert.cer -k ios-build.keychain -A -echo "importing dev-key.p12" -security import ${CERT_DIR}/dev-key.p12 -k ios-build.keychain -P $IOS_SIGNING_CERT_PASSWORD -A - -echo "will set-key-partition-list" -# Fix for OS X Sierra that hangs in the codesign step -security set-key-partition-list -S apple-tool:,apple: -s -k $ENCRYPTION_PASSWORD ios-build.keychain > /dev/null -echo "done set-key-partition-list" - -mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles - -cp "${CERT_DIR}/dev-profile.mobileprovision" ~/Library/MobileDevice/Provisioning\ Profiles/ -cp "${CERT_DIR}/dev-watch-profile.mobileprovision" ~/Library/MobileDevice/Provisioning\ Profiles/