Merge pull request #4025 from keymanapp/fix/android/engine/cleanup-sentry-breadcrumbs

fix(android/app,oem/fv/android): Sanitize Sentry navigation breadcrumbs
This commit is contained in:
Darcy Wong 2020-12-01 08:00:26 +07:00 committed by GitHub
commit fff37386ea
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 39 additions and 3 deletions

View file

@ -90,6 +90,7 @@ import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;
import io.sentry.SentryLevel;
import io.sentry.android.core.SentryAndroid;
public class MainActivity extends AppCompatActivity implements OnKeyboardEventListener, OnKeyboardDownloadEventListener,
@ -129,6 +130,23 @@ public class MainActivity extends AppCompatActivity implements OnKeyboardEventLi
checkSendCrashReport();
if (KMManager.getMaySendCrashReport()) {
SentryAndroid.init(context, options -> {
options.setBeforeBreadcrumb((breadcrumb, hint) -> {
String NAVIGATION_PATTERN = "^(.*)?(keyboard\\.html#[^-]+)-.*$";
if ("navigation".equals(breadcrumb.getCategory()) && breadcrumb.getLevel() == SentryLevel.INFO &&
((breadcrumb.getData("from") != null) || (breadcrumb.getData("to") != null)) ) {
// Sanitize navigation breadcrumbs
String dataFrom = String.valueOf(breadcrumb.getData("from"));
dataFrom = dataFrom.replaceAll(NAVIGATION_PATTERN, "$1$2");
breadcrumb.setData("from", dataFrom);
String dataTo = String.valueOf(breadcrumb.getData("to"));
dataTo = dataTo.replaceAll(NAVIGATION_PATTERN, "$1$2");
breadcrumb.setData("to", dataTo);
return breadcrumb;
} else {
return breadcrumb;
}
});
options.setRelease("release-" + com.tavultesoft.kmapro.BuildConfig.VERSION_NAME);
options.setEnvironment(com.tavultesoft.kmapro.BuildConfig.VERSION_ENVIRONMENT);
});
@ -1026,4 +1044,4 @@ public class MainActivity extends AppCompatActivity implements OnKeyboardEventLi
outStream.flush();
outStream.close();
}
}
}

View file

@ -13,6 +13,7 @@ import android.webkit.WebViewClient;
import androidx.appcompat.app.AppCompatActivity;
import io.sentry.SentryLevel;
import io.sentry.android.core.SentryAndroid;
import com.tavultesoft.kmea.*;
@ -28,8 +29,25 @@ public class MainActivity extends AppCompatActivity {
super.onCreate(savedInstanceState);
SentryAndroid.init(this, options -> {
options.setRelease("release-"+com.firstvoices.keyboards.BuildConfig.VERSION_NAME);
options.setEnvironment(com.firstvoices.keyboards.BuildConfig.VERSION_ENVIRONMENT);
options.setBeforeBreadcrumb((breadcrumb, hint) -> {
String NAVIGATION_PATTERN = "^(.*)?(keyboard\\.html#[^-]+)-(.)*$";
if ("navigation".equals(breadcrumb.getCategory()) && breadcrumb.getLevel() == SentryLevel.INFO &&
((breadcrumb.getData("from") != null) || (breadcrumb.getData("to") != null)) ) {
// Sanitize navigation breadcrumbs
String dataFrom = String.valueOf(breadcrumb.getData("from"));
dataFrom = dataFrom.replaceAll(NAVIGATION_PATTERN, "$1$2");
breadcrumb.setData("from", dataFrom);
String dataTo = String.valueOf(breadcrumb.getData("to"));
dataTo = dataTo.replaceAll(NAVIGATION_PATTERN, "$1$2");
breadcrumb.setData("to", dataTo);
return breadcrumb;
} else {
return breadcrumb;
}
});
options.setRelease("release-"+com.firstvoices.keyboards.BuildConfig.VERSION_NAME);
options.setEnvironment(com.firstvoices.keyboards.BuildConfig.VERSION_ENVIRONMENT);
});
setContentView(R.layout.activity_main);