Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
fluxible-plugin-fetchr
Advanced tools
A plugin for Fluxible applications to provide an isomorphic interface for RESTful services
Provides isomorphic RESTful service access to your Fluxible application using fetchr.
import Fluxible from 'fluxible';
import fetchrPlugin from 'fluxible-plugin-fetchr';
const app = new Fluxible();
app.plug(fetchrPlugin({
xhrPath: '/api' // Path for XHR to be served from
}));
Now, when calling the createContext
method on the server, make sure to send in the request object and optionally pass an xhrContext
which will be used as parameters for all XHR calls:
app.createContext({
req: req,
xhrContext: { // Used as query params for all XHR calls
lang: 'en-US', // make sure XHR calls receive the same lang as the initial request
_csrf: 'a3fc2d' // CSRF token to validate on the server using your favorite library
}
});
Registering fetchr services is done on the server side. Since the fetchr plugin is in control of the fetchr
class, we expose this through the registerService
method.
pluginInstance.registerService(yourService);
Or if you need to do this from your application without direct access to the plugin
app.getPlugin('FetchrPlugin').registerService(yourService);
For real examples, you can check out the server.js
file in our chat example.
Fetchr also contains an express/connect middleware that can be used as your access point from the client.
Fetchr middleware expects that you're using the body-parser
middleware (or an alternative middleware that populates req.body
) before you use Fetchr middleware.
const server = express();
// you need to use body parser middleware before `FetchrPlugin`
server.use(bodyParser.json());
server.use(pluginInstance.getXhrPath(), pluginInstance.getMiddleware());
For real examples, you can check out the server.js
file in our chat example.
The fetchrPlugin
method can also be passed a getXhrPath
function that returns the string for the xhrPath
. This allows you to dynamically set the xhrPath
based on the current context. For instance, if you're hosting multiple sites and want to serve XHR via a pattern route like /:site/api
, you can do the following:
app.plug(fetchrPlugin({
getXhrPath: function (contextOptions) {
// `contextOptions` is the object passed to `createContext` above
return contextOptions.req.params.site + '/api';
}
}));
Fetchr provides CORS support by allowing you to pass the full origin host into corsPath
.
For example:
import Fluxible from 'fluxible';
import fetchrPlugin from 'fluxible-plugin-fetchr';
const app = new Fluxible();
app.plug(fetchrPlugin({
corsPath: 'http://www.foo.com',
xhrPath: '/fooProxy'
}));
By Default, fetchr appends all context values to the xhr url as query params. contextPicker
allows you to greater control over which context variables get sent as query params depending on the xhr method (GET or POST) See Fetchr docs for more info
To collect fetcher service's success/failure/latency stats, you can configure statsCollector
for FetchrPlugin
. The statsCollector
function will be invoked with two arguments: actionContext
and stats
:
Example for how to configure statsCollector
:
import Fluxible from 'fluxible';
import fetchrPlugin from 'fluxible-plugin-fetchr';
const app = new Fluxible();
app.plug(fetchrPlugin({
corsPath: 'http://www.foo.com',
xhrPath: '/fooProxy',
statsCollector: function (actionContext, stats) {
// just console logging as a naive example. there is a lot more you can do here,
// like aggregating stats or filtering out stats you don't want to monitor
console.log('Request for resource', stats.resource,
'with', stats.operation,
'returned statusCode:', stats.statusCode,
' within', stats.time, 'ms');
}
}));
This software is free to use under the Yahoo! Inc. BSD license. See the LICENSE file for license text and copyright information.
FAQs
A plugin for Fluxible applications to provide an isomorphic interface for RESTful services
The npm package fluxible-plugin-fetchr receives a total of 128 weekly downloads. As such, fluxible-plugin-fetchr popularity was classified as not popular.
We found that fluxible-plugin-fetchr demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 5 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.