Better validation of feedparser uri

Fixes #134
This commit is contained in:
Nick O'Leary 2015-10-11 21:05:55 +01:00
parent 5d4a255876
commit 6b6f90a006
2 changed files with 7 additions and 5 deletions

View File

@ -18,6 +18,7 @@ module.exports = function(RED) {
"use strict"; "use strict";
var FeedParser = require("feedparser"); var FeedParser = require("feedparser");
var request = require("request"); var request = require("request");
var url = require('url');
function FeedParseNode(n) { function FeedParseNode(n) {
RED.nodes.createNode(this,n); RED.nodes.createNode(this,n);
@ -26,7 +27,10 @@ module.exports = function(RED) {
var node = this; var node = this;
this.interval_id = null; this.interval_id = null;
this.seen = {}; this.seen = {};
if (this.url !== "") { var parsedUrl = url.parse(this.url);
if (!(parsedUrl.host || (parsedUrl.hostname && parsedUrl.port)) && !parsedUrl.isUnix) {
this.error(RED._("feedparse.errors.invalidurl"));
} else {
var getFeed = function() { var getFeed = function() {
var req = request(node.url, {timeout: 10000, pool: false}); var req = request(node.url, {timeout: 10000, pool: false});
//req.setMaxListeners(50); //req.setMaxListeners(50);
@ -64,8 +68,6 @@ module.exports = function(RED) {
}; };
this.interval_id = setInterval(function() { getFeed(); }, node.interval); this.interval_id = setInterval(function() { getFeed(); }, node.interval);
getFeed(); getFeed();
} else {
this.error(RED._("feedparse.errors.invalidurl"));
} }
this.on("close", function() { this.on("close", function() {

View File

@ -1,10 +1,10 @@
{ {
"name": "node-red-node-feedparser", "name": "node-red-node-feedparser",
"version": "0.1.2", "version": "0.1.3",
"description": "A Node-RED node to get RSS Atom feeds.", "description": "A Node-RED node to get RSS Atom feeds.",
"dependencies": { "dependencies": {
"feedparser": "1.1.3", "feedparser": "1.1.3",
"request": "2.61.0" "request": "2.65.0"
}, },
"repository": { "repository": {
"type": "git", "type": "git",