Git Product home page Git Product logo

bugsnag-java's Introduction

Bugsnag exception reporter for Java

Documentation Build status

The Bugsnag exception reporter for Java automatically detects and reports errors and exceptions in your Java code. Learn more about reporting Java exceptions with Bugsnag.

Features

  • Automatically report unhandled exceptions and crashes
  • Report handled exceptions
  • Attach custom diagnostic data to determine how many people are affected by a crash and steps to reproduce the error

Getting started

Spring

  1. Create a Bugsnag account
  2. Complete the instructions in the integration guide
  3. Report handled exceptions using Bugsnag.notify()
  4. Customize your integration using the configuration options

Other Java apps

  1. Create a Bugsnag account
  2. Complete the instructions in the integration guide
  3. Report handled exceptions using Bugsnag.notify()
  4. Customize your integration using the configuration options

Support

Contributing

All contributors are welcome! For information on how to build, test, and release bugsnag-java, see our contributing guide.

License

The Bugsnag Java library is free software released under the MIT License. See LICENSE for details.

bugsnag-java's People

Contributors

bengourley avatar bullmo avatar cawllec avatar conradirwin avatar davidpetran avatar duncanhewett avatar foygl avatar fractalwrench avatar gracecheung avatar grahamcampbell avatar halorgium avatar jessicard avatar jmshal avatar kattrali avatar lehphyro avatar lemnik avatar loopj avatar pezzah avatar safarmer avatar simonbowring avatar snmaynard avatar steve-nester-uk avatar tomlongridge avatar twometresteve avatar yousif-bugsnag avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bugsnag-java's Issues

Steps to integrate Bugsnag to Java Openxava Web Framework

Hi

I am facing bit difficult in integrating bugsnag to one of my application its java OpenXava web framwork i have tried to follow the Java (https://docs.bugsnag.com/platforms/java/other/) documentation, my application is running using tomcat , it doesn't contain pom.xml, i can include the bugsnag jar in my application, now after including how do i define the bugsnag key and steps to automatically capture the exceptions and record in bugnsag.

I am using bugsnag for multiple applications. Please help me out in integrating to this application to.

Thank you.

Tomcat7 bugsnag report not capturing url params

Expected behavior

The request tab in bugsnag dashboard should have data in the params block

Observed behavior

The params block is empty

Steps to reproduce

Use Bugsnag for Java with Tomcat7 under the OpenJDK7.

Version

Bugsnag 3.0.0

Additional information

Being new to Java, we may be missing some required step to activate request params from a tomcat servlet.

Bugsnag Warning

When I execute jar application in console I get this warning:

[Bugsnag] WARNING: Application terminated. 1 error(s) were not sent to Bugsnag

Freeze when initializing Bugsnag

The SQLDelight IntelliJ Idea plugin uses Bugsnag. When opening the settings from IntelliJ, bug snag gets initialized via sqldelight which blocks the UI.

"AWT-EventQueue-0" prio=0 tid=0x0 nid=0x0 runnable
     java.lang.Thread.State: RUNNABLE
 (in native)
	at [email protected]/java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
	at [email protected]/java.net.InetAddress$PlatformNameService.lookupAllHostAddr(InetAddress.java:929)
	at [email protected]/java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1519)
	at [email protected]/java.net.InetAddress$NameServiceAddresses.get(InetAddress.java:848)
	at [email protected]/java.net.InetAddress.getAllByName0(InetAddress.java:1509)
	at [email protected]/java.net.InetAddress.getLocalHost(InetAddress.java:1641)
	at com.bugsnag.callbacks.DeviceCallback.lookupHostname(DeviceCallback.java:44)
	at com.bugsnag.callbacks.DeviceCallback.getHostnameValue(DeviceCallback.java:22)
	at com.bugsnag.callbacks.DeviceCallback.initializeCache(DeviceCallback.java:52)
	at com.bugsnag.Configuration.<init>(Configuration.java:58)
	at com.bugsnag.Bugsnag.<init>(Bugsnag.java:92)
	at app.cash.sqldelight.intellij.SqlDelightErrorHandler.<init>(SqlDelightErrorHandler.kt:32)
...

There's also a thread dump:

threadDumps-freeze-20220512-111722-AI-213.7172.25.2211.8563311-5sec.zip

I've reported it to both Android Studio as well as sqldeilght.

There also seem to be some suggested workarounds:

API v1 vs v2

We received a notification that Bugsnag will deprecate API v1 and asks to use v2 instead. When using the Java client, what needs to be done to keep the reporting up and running? Thanks!

Spring Webflux integration

Description

Official Spring Boot support for WebFlux stacks

Describe the solution you'd like
Seems to only work out of the box with vanilla Spring Web, e.g. Exceptions thrown from controllers are not automatically sent to Bugsnag.

Describe alternatives you've considered
Implemented my own WebExceptionHandler to do this myself, but would be nice for it to work out of the box like it does for Spring Web

Additional context
getsentry/sentry-java#1529

add support for ad-hoc error messages not from a Throwable

Currently in Report.java there the errors main text is pulled from.

public String getExceptionName() {
return throwable.getClass().getName();
}

This makes it hard to throw an error that isn't actually from a java throwable like a handled database error especially if you don't want to go through the hassle ( or in my case can't ) create MyException extends Exception style custom exception.

Another option might be to include a custom Throwable in the bugsnag API itself that overrode getClass() so getName() could return whatever we needed it to.

Thanks!

ConcurrentModificationException while call Bugsnag.notify()

The same issue as here bugsnag/bugsnag-android#281 , but currently during use bugsnag-spring

java.util.ConcurrentModificationException        at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909)
        at java.util.ArrayList$Itr.next(ArrayList.java:859)
        at com.bugsnag.Bugsnag.notify(Bugsnag.java:447)
        at com.bugsnag.Bugsnag.notify(Bugsnag.java:407)
        at com.bugsnag.Bugsnag.notify(Bugsnag.java:350)

Add support for calling `notify()` to report unhandled exceptions

I just integrated Bugsnag into a Dropwizard application. In this application I have a mechanism in place to catch unhandled exceptions, log them, delegate to my own ErrorReporter interface, and then return an appropriate JSON response (e.g., 500 ISE).

I integrated Bugsnag by creating a BugsnagErrorReporter and suppressing the automatic uncaught exception handler. This is working great, but as my implementation calls bugsnag.notify() it reports all exceptions as handled. I would like to be able to report these as unhandled exceptions since they're being caught by a JAX-RS ExceptionMapper rather than in a catch block somewhere. There are other cases where I would want to report handled exceptions (i.e., places where I can gracefully recover but still want to know of a problem). This is similar in concept to how the Spring module is specifying a SeverityReasonType of REASON_UNHANDLED_EXCEPTION_MIDDLEWARE in its various handlers.

Looking at Report, the getUnhandled() method drives this setting in the JSON sent to Bugsnag and that method keys off of the HandledState.

Implementation Options:

  1. Alter the bugsnag.notify() methods. There are a number of overloads and I am hesitant to disrupt this since it's the primary API a user would interact with.

  2. Alter the Report class to provide a way to flag the report as unhandled. e.g., report.flagAsUnhandled(), report.flagAsUnhandledFromMiddleware(), or etc. This would change the underlying HandledState.

  3. Place my BugsnagErrorReporter in the com.bugsnag package in my own code so that I can access package-private functionality. This would solve my immediate problem but would require me to use a non-public API that could change later and doesn't help anyone else who may want to report unhandled exceptions themselves.

I would be happy to create a PR that implements this, but I wanted to check with you first to see if this is something you agree with and/or if you have a preferred approach.

SyncHttpDelivery has possibliity to be throw NullPointerException

Expected behavior

Do not throw NullPointerException

Observed behavior

Sometime, SyncHttpDelivery throws NPE here.

Steps to reproduce

Sorry, I don't know reproduce steps.
I guess we had network problem(me or bugsnag) when I met the problem.
The problem produced at Aug 9th, 14:43:46 only once.

Version

3.2.0

Additional information

I think the problem is caused by this code

connection does not initialize If URL#openConnection throws IOException. However, this code tries connection.disconnect() in finally block.

Support for Proxy Configuration

Describe the bug

There's a way to set proxy configuration on .NET SDK. How to set proxy configuration in Java SDK?

Steps to reproduce

This is how you set proxy configuration in OKHTTP.

==
int proxyPort = 8080;
String proxyHost = "proxyHost";
final String username = "username";
final String password = "password";

Authenticator proxyAuthenticator = new Authenticator() {
@OverRide public Request authenticate(Route route, Response response) throws IOException {
String credential = Credentials.basic(username, password);
return response.request().newBuilder()
.header("Proxy-Authorization", credential)
.build();
}
};

OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(60, TimeUnit.SECONDS)
.writeTimeout(60, TimeUnit.SECONDS)
.readTimeout(60, TimeUnit.SECONDS)
.proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort)))
.proxyAuthenticator(proxyAuthenticator)
.build();

Environment

  • Latest 5.x version

Fix redundant exception handling

Describe the bug

When an unhandled exception occurs, the Spring framework iterates through a list of exception handlers looking for someone to consume the unhandled exception. This is the Java for loop in the Spring framework that is looking for 1 and only one exception handler to swallow the exception.

The existing BugSnag code explicitly sets BugsnagMvcExceptionHandler as the first Exception Handler by setting Ordered.HIGHEST_PRECEDENCE on line 22. The code on line 47-48 then explicitly lets some other exception handler try to consume the exceptions. This breaks the expectation that only 1 handler should be invoked.

It's more reasonable that the BugSnag library should run last in the chain and not first in the chain. Allowing other exception handlers to consume the exception first allows the application to consume or 'handle' the exception and swallow it before it reaches BugSnag.

For example, my Java application throws custom defined exceptions to perform URL redirects and display custom HTML error pages. I have a @ControllerAdvice class that then properly renders the content. However, the BugSnag library catches the exception, logs it to your API, and then finally my application code runs. Since I handled the exception, it should never have been logged by the library.

Another example, in my class with custom exception handling using @ControllerAdvice, for 1 particular exception, I explicitly invoke BugSnag to log an exception as handled. But then your code also logs it as unhandled in your own handler..

Steps to reproduce

Create a spring boot project
Create a class to handle a custom exception and create a @ControllerAdvice annotated class to custom handle the exception.
Invoke the exception and watch BugSnag log it as unhandled as well as watch the @ControllerAdvice annotated class handle the exception.

Environment

  • Bugsnag version:3.6.1
  • Java version: 8
  • Spring framework version (if any): 2.1.4.RELEASE
  • Maven version (if any): 3.6.3

Example

I created this branch to solve the issue, but I couldn't understand the test that I broke. This example fix and the above referenced parts of the code explain well what the observed yet expected result should be.

https://github.com/bugsnag/bugsnag-java/compare/master...nkavian:lower-precedence?expand=1

Change the order on BugsnagMvcExceptionHandler from highest to lowest. This allows the application to handle exceptions. If an exception truly was not handled by any one else, then finally it should be logged to BugSnag as unhandled.

Using bugsnag.setIgnoreClasses() is a workaround but it's undesirable as a long term solution. I have to maintain a list of 10+ classes to exclude here.

ColdFusion support (also custom Throwables)

At the moment you can only notify about a Throwable, it would be nice to support notifying with an arbitrary exception class, message and stack trace that you've obtained from something like coldfusion.

Add support for reporting error without stacktrace

Expected behavior

Report error without stacktrace

Observed behavior

There is no possibility of doing that

Steps to reproduce

Stacktrace is required in Bugsnag client API

Version

3.5.0

Additional information

I understand that your integration is built for Java, but JVM has a lot of languages not all of them are treating exceptions as a default channel of errors. The problem appears when I'm using Scala libraries like Akka which some of the errors logged without a stack trace. I didn't see them in Bugsnag. Is there a chance to fix it?

Can't comment on Issues?

Some users have been unable to comment on Github issues when an adblocker extension is enabled.
We recommend temporarily disabling the extension, or if that fails, contacting [email protected].

Bugsnag.notify seems creating new HandshakeCompletedNotify-Thread each time

Profiling my application that is using bugsnag client(mainly usingBugsnag.notify()), bugsnag-async-deliver-%d thread seems creating many HandshakeCompletedNotify-Thread.

As I read code, it seems calling HttpURLConnection.disconnect() in SyncHttpDelivery.java might be the cause.

https://github.com/bugsnag/bugsnag-java/blob/master/bugsnag/src/main/java/com/bugsnag/delivery/SyncHttpDelivery.java#L111

https://bugs.openjdk.java.net/browse/JDK-8246039

A screenshot of a jfr profile of my app.
スクリーンショット 2022-02-16 16 40 19

Is it able to reduce this new threads?

bugsnag nullPointerException issue,any body can help me?

Caused by: java.lang.NullPointerException
at com.bugsnag.Error.getExceptionName(Error.java:198)
at com.bugsnag.Error.shouldIgnore(Error.java:96)
at com.bugsnag.Client.notify(Client.java:115)
at com.bugsnag.Client.notify(Client.java:128)
at com.bugsnag.Client.notify(Client.java:136)
at com.huawei.bes.common.log.impl.BesLogImpl.debug(BesLogImpl.java:206)
at com.huawei.bes.common.log.impl.BesLogImpl.debug(BesLogImpl.java:178)
at com.huawei.bes.common.dfx.monitor.BESCustomEBusStatistic.initFilter(BESCustomEBusStatistic.java:86)
at com.huawei.bes.common.dfx.monitor.BESCustomEBusStatistic.init(BESCustomEBusStatistic.java:61)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1581)

com.bugsnag.util.FilteredMap doesn't filter data in all methods

Expected behavior

Methods like keySet and entrySet filters out configured keys like get does.

Observed behavior

Data that should be filtered out is exposed in those methods.

Steps to reproduce

Just call them to see that data is not filtered out.

Version

3.1.4

Additional information

This is a blocker for adoption by us because the version of jackson we use calls entrySet to serialize data so all data is sent to bugsnag without filtering.

BugsnagServletContainerInitializer moved package during a minor version update

Describe the bug

We use BugsnagServletContainerInitializer to initialise Bugsnag reporting in a Tomcat server. We have followed your advice and selected a version range [3.0,4.0) in our Maven build. When you released version 3.7 of your java SDK, our builds broke, because the class has moved to another package.

Confirming with the semver specification, this change should entail a major version increment.

Steps to reproduce

  1. Set up a Java project using Maven, selecting version 3.6.4 of your Java SDK.
  2. Use BugsnagServletContainerInitializer somewhere in that project, and ensure that it compiles.
  3. Switch to the recommended version range [3.0,4.0) as specified in your installation instructions.
  4. Try to compile the code

Environment

  • Bugsnag version: 3.7.0
  • Java version: any

Bugsnag compatible with Java 1.7

I am very new to Java development and trying to integrate bugsnag with an existing program we have running that requires to be built with Java 1.7.

I notice that v3 of bugsnag for java requires Java 1.8 as I get the dreaded Java unsupported major minor version 52.0 error, even though the release notes say it targets Java 1.6.

Can anyone help figure out how to compile bugsnag for Java 1.7?

  • Which version of bugsnag should i be using?
  • Are there any docs available for this version's API, being that I can only find docs for the version 3 API?

Any help would be greatly appreciated.

Support for @ResponseStatus on custom exceptions

Expected behavior

When throwing an exception from a Controller/RestController that is annotated with @ResponseStatus with an HTTP status code in the 4xx range, the exception should be reported to Bugsnag with severity INFO.

Observed behavior

Custom exceptions annotated with @ResponseStatus are always reported with severity ERROR independent from the HTTP status that is set.
At the moment there is no code in ExceptionClassCallback that would handle such exceptions.

Steps to reproduce

  • Create a custom exception class with @ResponseStatus and an HTTP status in the 4xx range
  • Throw this exception from a Controller/RestController
  • The exception is shown with severity ERROR in Bugsnag

Version

bugsnag-spring 3.4.4

Additional information

Since we typically use custom exceptions for client errors, a fix to this problem would greatly improve our user experience with Bugsnag. Thanks for looking into this!

Bugsnag-Spring & logback

Hi,

Im trying to use bugsnag-spring 3.4.4 with spring boot 2.1.0. Im using log4j2 and not logback. Logback is excluded and not on the classpath. It seems that bugsnag-java is dependent on logback. Im getting the following error when the application start:

caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.bugsnag.BugsnagSpringConfiguration': Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: ch/qos/logback/core/UnsynchronizedAppenderBase

Hostname/IP metadata

Do you guys have a standard way of recording the hostname/IP of the machine raising an exception?

It looks like the Erlang client pokes it into the context (which conflicts a bit with the stated intent of context...)

In contrast, the go client stores it to host (tab) name (key).

Make Serializer and/or Jackson configurable

I'd like to use Bugsnag with custom reports that may include some objects in the tabs. It's pretty close with the current API, but the Serializer is too restrictive:

this.mapper.setSerializationInclusion(Include.NON_EMPTY).setVisibilityChecker(this.mapper.getVisibilityChecker().with(Visibility.NONE));

Please provide a way to customize it, allowing us to use different ObjectMapper. Some of us don't want Jackson annotations all over the code.

It would be even better if we could replace the serializer altogether and the dependency on Jackson was optional.

Support notification level callbacks

Description

My original problem is that I want the post body to be logged with each notification to Bugsnag. Since the Java library doesn't do this, I have to hack together a solution on my side.

It's an expensive task to take the request body my controller received and then serialize it back into a string and attach it to Bugsnag using addThreadMetaData. If the exception rarely occurs, I would be wasting time on this expensive operation on all successful requests.

Describe the solution you'd like

I'd like addThreadMetaData to take a callback (or a runnable lambda) instead of an Object, so that Bugsnag can evaluate it only if it needs to perform the notification to Bugsnag.

Describe alternatives you've considered

Although the method bugsnag.addCallback gives access to the granular report, the callback is created when Bugsnag is initialized. The callback has no way to be aware of the controller state in Spring.

Additional context

My Spring controller decodes the post body into a specific object, for example

void postRequest(@RequestBody Payload payload) {}

I tried addThreadMetaData(..., payload) but Bugsnag strips the contents. You're using an object mapper that filters for example things that aren't marked with your Expose annotation.

An alternate solution to this thread: you could continue to use your existing object mapper for your own objects, but use a second new object mapper for the objects added via addThreadMetaData so that you stop stripping out the data.

Filtering is case sensitive which makes it insecure at filtering sensitive data

Observation
I'm setting bugsnag.setFilters("Authorization"); so that I can filter out a sensitive header.
When using cURL -u username:password, I noticed the 'authorization' header was still present in the BugSnag dashboard. HTTP headers are case insensitive and a server has no control over how a client will case the header names. I could filter both but that would be plain silly bugsnag.setFilters("authorization", "Authorization").

Expected Result
Update the Java SDK at the mentioned line below to compare the strings in a case insensitive way.

Side note: This same line below has an undocumented and undesired behaviour since it's written as if(key.contains(filter)). If I filter on name, it will filter as well name1 and username. This is not desirable, especially since it's undocumented, but also because it forces developers to rename variables to avoid filter clashes..

Source of the Issue

ExceptionHandler leaking

When undeploying application, Plumbr reports the following PermGen memory leak:

Leaked classloader
org.apache.catalina.loader.WebappClassLoader

The leaking classloader is being held
in com.bugsnag.ExceptionHandler
in defaultUncaughtExceptionHandler of java.lang.Thread
in reference from native code (JNI global)

I create the bugsnag client via a static method in a final class. This is done during application startup.
I'm running Tomcat 7.0.64 with JVM 1.7.0_79-b15

Add fatjar option to gradle build

We are not really a java app, but it is deployed on top of Java and can consume JARs when 3rd party tools come into play.

We use a jar loader within the app to consume libraries that helps with any sort of accidental conflicts version or otherwise. So having simple one jar loads is easier for us.

Admittedly i haven't don Java work in a long long time so my gradle skills are just reading blog posts.

I plopped this in the existing build.gradle file and ran it the custom task and got a .jar to my liking. I'd like to not have to do that each release, but I certainly can.

task customFatJar(type: Jar) {
manifest {
}
baseName = 'all-in-one-jar'
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
with jar
}

all-in-one-jar would obviously be something more like bugsnag-all-in-one-${version}.jar

Thanks!

Log4j appender

It would be extremely useful to have a Log4j appender that's configurable from log4j.xml or log4j.properties files.

3.7.0 is not available for java 8

Describe the bug

Latest version 3.7 is not available for java 8

Steps to reproduce

  1. Refresh your dependency to get 3.7 of bugsnag

Environment

  • Bugsnag version: 3.6.4
  • Java version: 8
  • Spring framework version : 5.3 (from Spring boot 2.6.1)
  • Gradle version : 7.1.1

Possible resolution

The 3.7 is build from docker env define by this Dockerfile for java 8 : dockerfiles/Dockerfile.java8-mazerunner

But the image used is openjdk:17-jdk-slim

Bugsnag prevents JVM from shutting down normally

Expected behavior

When all non daemon threads of any app finish, the JVM shuts down normally... After implementing Bugsnag JVM still runs. This behavior is not what I expect, especially for AWT/Swing apps.

Steps to reproduce

`public class Test {

public static final void main(String[] args) {
    Bugsnag instance = new Bugsnag("api key");
}

}`
JVM will never shut down...

Version

3.6.1

Additional information

If this cannot be fixed, please update your implementation guide to call System.exit(0) or bugsnag.close() somewhere in the code. Calling System.exit(0) is not common in AWT/Swing apps as user closes window and UI thread finishes normally.

This issue made our app update mechanism broken as JVM was running and old jar couldn't be overwritten with new one. Also it made our app unusable after broken update as we use FileLock to enable single instance of app and and lock was never released as JVM kept running. This has broken around 100 installations of our app before we realized what has happened and stopped update. Unfortunately we didn’t discover this bug during our testing, only after it was released to production.

HTTP connection does not time out

HttpClient isn't configured to ever time out. I had some code calling client.notify in a synchronized block and it got stuck in int status = conn.getResponseCode(); inside HttpClient.

Please see #25 for possible fix.

411 BadResponseException

Just trying to notify using a regular api reference:

Client bugsnag = new Client("my-key");
bugsnag.notify(new RuntimeException("Non-fatal"));
com.bugsnag.http.BadResponseException: Got non-200 response code (411) from http://notify.bugsnag.com

Note: Yesterday it was working. Today I run my tests again but now this exception is thrown

Request tab includes cookies

Expected behavior

Cookies are filtered from request headers metadata, as Cookie is included in the default filters.

Observed behavior

Request tab contains a headers map with cookie present.

Steps to reproduce

We’re using bugsnag-spring with Spring Boot 2.0.9 and Tomcat 9.0.30.

Version

3.6.1

Additional information

It looks like the issue is that the underlying servlet implementation stores header keys case-insensitively, so the default Cookie filter does not match. When it comes to filtering, I think it would make sense to make all comparisons case-insensitive, so that a filter for "password" matches "USER_PASSWORD", "adminPassword", etc.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.