Full Trust European Hosting

BLOG about Full Trust Hosting and Its Technology - Dedicated to European Windows Hosting Customer

Node.js Hosting Europe - HostForLIFE.eu :: How to Use Inheritance in Node.js ?

clock September 12, 2018 08:29 by author Peter

In this post we'll take a glance on inheritance of objects in Node.js. we'll learn to use utility module to achieve inheritance in Node.js. but confine mind that you simply will write plain JavaScript to attain inheritance in Node also.

You'll use Object.create() to inherit one object to a different in Node.js also.

In this post we'll learn to use util module to achieve inheritance in Node.js. First, you should to import util module in your application.
var util= require(‘util’);

After importing util module, allow us to say you have got an object as below,
function Student()

 this.name = "G Block";
 this.age = 40;
};


Just for demonstration allow us to add function in object using prototype,
Student.prototype.Display= function(){
 console.log(this.name + " is " + this.age + " years old");
 };


Next we tend to we progressing to make ArtsStudent object which is able to inherit Student object.
function ArtsStudent()
{
 ArtsStudent.super_.call(this);
 this.subject = "music";
 }; 
util.inherits(ArtsStudent,Student);


Second line of code in ArtsStudent object is very important,
ArtStudent.super_.call(this);

If you don’t call constructor of parent object as shown in above code snippet then on making an attempt to access properties of parent object will come undefined. In last line ArtStudent inherits Student using util.inherits() function ,

util.iherits(ArtsStudent,Student);

Next you can create instance of ArtsStudent and call function of parent object as below,
var a = new ArtsStudent();
a.Display();


Inheritance will be chained to any order. If you want you can inherit object from ArtsStudent as well. Inherited object will contain properties from both ArtsStudent and Student objects. So let us consider one more example,
function ScienceStudent()
{
 ScienceStudent.super_.call(this);
 this.lab = "Physics";
}
util.inherits(ScienceStudent,ArtsStudent);
var b = new ScienceStudent();
b.Display();

On this example ScienceStudent object inherits both Student and ArtsStudent objects. With this example, you can work with inheritance in Node.js using util module. I hope it works for you!

HostForLIFE.eu Node.js Hosting

HostForLIFE.eu is European Windows Hosting Provider which focuses on Windows Platform only. We deliver on-demand hosting solutions including Shared hosting, Reseller Hosting, Cloud Hosting, Dedicated Servers, and IT as a Service for companies of all sizes. We have customers from around the globe, spread across every continent. We serve the hosting needs of the business and professional, government and nonprofit, entertainment and personal use market segments.

 



Node.js Hosting in Europe - HostForLIFE.eu :: Forgot Password Email Notification Using Node js

clock August 8, 2018 09:22 by author Peter

Before starting the code you need an account in send grid which will send the notification to your mail. Generally we use email notifications for forget passwords in your applications. You can follow the below steps to get the task done and if you have any queries please leave a comment below.

We require a few modules from npm to send the notification through the mail.

  • npm install formidable
  • npm install crypto
  • npm install async
  • npm install nodemailer

In my router.js file the following code will be present 
app.route('/forgotpasswordResponse') 
.post(userCtrl.forgotpasswordResponse); 


When I run my services and hit the above Url  from postman it will take you to the forgotpasswordResponse method. We are using post method in postman where we need to pass Email id as parameter

In forgotpasswordResponse my code is somthing like this,
exports.forgotpasswordResponse = function(req, res, next) { 

var input=req.body; 
//console.log(input); 
async.waterfall([ 
function(done) { 
    crypto.randomBytes(20, function(err, buf) { 
        var token = buf.toString('hex'); 
        done(err, token); 
    }); 
}, 
function(token, done) { 
    MongoClient.connect(url, function(err, db){  
        var dbo = db.db("Here is your DB Name"); 
        //console.log(req.body.Email); 
        var query = { Email : req.body.Email }; 
        dbo.collection('CLC_User').find(query).toArray(function(err,result){ 
            if(result.length == 0){ 
                req.flash('error', 'No account with that email address exists.'); 
            } 
            var myquery = { Email: result[0].Email }; 
            var newvalues = { $set: {resetPasswordToken: token, resetPasswordExpires: Date.now() + 3600000 }}; 
            dbo.collection("CLC_User").updateOne(myquery, newvalues, function(err, res) { 
                if (err) throw err; 
                console.log("1 document updated"); 
            }); 
             

           // console.log(result[0].Email); 
            done(err, token, result); 
        }); 
    }); 
}, 
function(token, result, done,Username,password) { 
    var emailVal = result[0].Email; 
    console.log(emailVal); 
    var Username=""; 
    var password=""; 
    MongoClient.connect(url, function(err, db){  
    var dbo = db.db("Here willbe your db name"); 
    dbo.collection('Accountsettings').find().toArray(function(err,result){ 
        if (err) throw err; 
        Username=result[0].UserName; 
        password=result[0].Password; 
       // console.log(Username); 
       // console.log(password); 
           // res.json({status : 'success', message : 'Records found', result : result}); 
     

    // console.log(Username); 
    var smtpTransport = nodemailer.createTransport({ 
        service: 'SendGrid', 
        auth: { 
          user: Username, 
          pass: password 
        } 
      }); 

    const mailOptions = { 
        to: emailVal, 
        from: '[email protected]', 
        subject: 'Node.js Password Reset', 
        text: 'You are receiving this because you (or someone else) have requested the reset of the password for your account.\n\n' + 
            'Please click on the following link, or paste this into your browser to complete the process:\n\n' + 
            'http://' + req.headers.host + '/reset/' + token + '\n\n' + 
            'If you did not request this, please ignore this email and your password will remain unchanged.\n' 
    }; 
    smtpTransport.sendMail(mailOptions, function(err) {                
        console.log("HI:"+emailVal); 
        res.json({status : 'success', message : 'An e-mail has been sent to ' + emailVal + ' with further instructions.'});             
        done(err, 'done'); 
    }); 
}) 
}); 

 
], function(err) { 
if (err) return next(err); 
 
}); 


In my case  I am using waterfall methologie for this method with will execute acyn in method, In the above code initially I am updating the collection with resetPasswordToken and resetPasswordExpires using email id and getting my send  grid credentials from db form  Accountsettings collections. If you can observe in mailOptions text "req.headers.host" will be the link which will get in you mail with token.

When you click on Url which you got in the email it will redirect you to another page to set the password.

Again we need to go to route.js and the code will be some thing like this. It will take to html page which we can reset the password,
app.route('/reset/:token') 
.get(Resetpassword.resetpasswordResponse);  

This time I am passing the token which I stored in db as "resetPasswordToken". Now it will take you to resetpasswordResponse method and the code is below,
exports.resetpasswordResponse = function(req, res) { 
console.log("welcome"); 
MongoClient.connect(url, function(err, db){ 
var dbo = db.db("Here is you db"); 
dbo.collection('CLC_User').findOne({resetPasswordToken: req.params.token, resetPasswordExpires: { $gt: Date.now() } }, function(err, user) { 
    if (!user) { 
        res.json({message: 'Password reset token is invalid or has expired.'}); 
    }else{ 
        console.log("coming"); 
        fs.readFile("api/Controllers/resetpassword.html", function (error, data) { 
            console.log("its working"); 
            if (error) { 
                console.log(error); 
                res.writeHead(404); 
                res.write('Contents you are looking are Not Found'); 
            } else { 
                //res.writeHead(200, { 'Content-Type': 'text/html' }); 
                res.write(data); 
            } 
            res.end(); 
        }); 
    } 
}); 
}); 


Your html code in resetpassword.html will be like this,
<!DOCTYPE html> 
<html> 
<head> 
<title>Reset Password</title> 
<script src="https://code.jquery.com/jquery-1.12.4.js"></script> 
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> 
</head> 
<body> 
<h4 class="postdata" style="text-align:center;"></h4> 
<div class="main-agileits"> 
<h2 class="sub-head">Reset Password</h2> 
<div class="sub-main">     
    <form method="post"> 
        <span class="senddata"></span><br><br> 
             
        <input placeholder="Enter Password" name="password" class="password" type="password" required=""><br><br> 

        <input placeholder="Confirm Password" name="confirmpassword" class="confirmpassword" type="password" required=""><br><br> 
         
        <input type="submit" name ="submit" value="RESET PASSWORD"> 
         
    </form> 
</div> 
</div> 
</body> 
</html> 


<script type="text/javascript"> 

$( document ).ready(function() { 
$("input[name='submit']").on("click", function(){ 
$(".senddata").html(""); 
var url = window.location.href; 
var password = $('.password').val(); 
var confirmpassword = $('.confirmpassword').val(); 

if( password == confirmpassword){ 
    $.post(url,{Password : password},function(result,status){ 
    var msg = result.status; 
    var msgdata = result.message; 
    if(msg == "success"){ 
        $(".postdata").html(msgdata); 
        $(".main-agileits").css("display","none") 
    }else{ 
        return false; 
    } 
}); 
}else{ 
    $(".senddata").html("Passwords did not match"); 
}        
return false; 
}); 

}); 

</script>


the next step is send the Email notification after changing the password.The code is
app.route('/reset/:token') 
.post(setpassword.setpasswordResponsemail); 

exports.setpasswordResponsemail = function(req, res) { 
async.waterfall([ 
function(done) { 
    MongoClient.connect(url, function(err, db){ 
        var dbo = db.db("Your Db name goes here");  
        dbo.collection('CLC_User').findOne({resetPasswordToken: req.params.token, resetPasswordExpires: { $gt: Date.now() } }, function(err, user) { 
            if (!user) { 
                res.json({message: 'Password reset token is invalid or has expired.'}); 
            } 
            //console.log(user); 
            var myquery = { resetPasswordToken: req.params.token }; 
            var newvalues = { $set: {Password: req.body.Password,resetPasswordToken: undefined, resetPasswordExpires: undefined, modifiedDate : Date(Date.now()) }}; 
            dbo.collection("CLC_User").updateOne(myquery, newvalues, function(err, result) { 
                if (err) throw err; 
                //console.log("result ======" + result); 
                console.log("1 document updated"); 
            }); 
            done(err, user); 
        }); 
    }); 
}, 
function(user, done) { 
    MongoClient.connect(url, function(err, db){  
        var dbo = db.db("Your db name goes here"); 
        var Username=""; 
        var password=""; 
        dbo.collection('Accountsettings').find().toArray(function(err,result){ 
            if (err) throw err; 
            Username=result[0].UserName; 
            password=result[0].Password; 
        }) 
    }) 
    var smtpTransport = nodemailer.createTransport({ 
        service: 'SendGrid', 
        auth: { 
            user: Username, 
            pass: password 
        } 
    }); 
    var mailOptions = { 
        to: user.Email, 
        from: '[email protected]', 
        subject: 'Your password has been changed', 
        text: 'Hello,\n\n' + 
            'This is a confirmation that the password for your account ' + user.Email + ' has just been changed.\n' 
    }; 
    smtpTransport.sendMail(mailOptions, function(err) { 
        res.json({status : 'success', message : 'Success! Your password has been changed.'}); 
        done(err); 
    }); 

], function(err) { 
if (err) return err; 
}); 
}

Hope this code will help someone who really needs  it. Thank you.



Node.js Hosting in Europe - HostForLIFE.eu :: Node.js NPM Proxy Configurations

clock March 2, 2017 08:17 by author Peter

It is often required to work with Node.JS and NPM package installer behind the proxy. When trying to install npm packages behind the proxy, you may come across the error, given below.

To resolve exceptions, shown above, http_proxy and https_proxy configurations needs to be done for NPM. The step by step guidance is given below to perform the configuration on Windows machine-Go to C:\User\{User} directory.

  • if .npmrc file exists then open it in notpad editor else create .npmrcfile.
  • Add the lines, given below to the file for your valid AD domain user. proxy=http://domain\\username:[email protected]:port
  • Add the lines, given below for Non AD user proxy=http://username:[email protected]:port
  • Save .npmrc file
  • Try to use npm install now. It should work without any error.

The sample contents of .npmrc file are shown below.



Node.js Hosting UK - HostForLIFE.eu :: Cluster Server Object in NodeJS

clock March 17, 2015 06:44 by author Peter

In this tutorial , I will discuss about Cluster Server in NodeJS. That is a group of two or more computers that work together to provide availability, reliability and scalability that can be obtained using a single computer. In a server cluster, each server owns and manages devices and applications or services that are managing local cluster. 

To make the new Node Web Application open Visual Studio then select "File" -> "New Web Site" then select "Node Web Application" as in the accompanying figure:

Create a new Script file from the Solution Explorer as in the following figure:

And then select the new JavaScript file as in the following figure:

 

Write the following code in a JavaScript File.
(function () {
    '';
    var cls = require('cluster'),
        http = require('http'),
        os = require('os'),
        ClsServer = {
            clusname: 'ClusterServer',
            cpus: os.cpus().length,
            autoRestart: true,
            start: function (server, port) {
                var me = this,
                    i;
                if (cls.isMaster) {
                    for (i = 0; i < me.cpus; i += 1) {
                        console.log(me.name + ': starting worker thread #' + i);
                        cls.fork();
                    }
                    /*cls.on('death', function (worker) {
                        console.log(me.clusname + ': worker ' + worker.pid + ' died.');
                        if (me.autoRestart) {
                            console.log(me.clusname + ':thread restart');
                            cls.fork();
                        }
                    });*/
                } else {
                    server.listen(port);
                }
            }
        }
        helloWorldServer = http.createServer(function (request, response) {
           response.writeHead(200, {
                'Content-type': 'text/plain'
            });
                        response.end('Hello World!');
        });
    ClsServer.name = 'hello World Server';
    ClsServer.start(helloWorldServer, 8081);
}());

In the above case we make a ClusterServer article to begin multi-strung server examples by passing the server item to ClusterServer.start(server,port). Servers are naturally begun with various strings proportional to the quantities of CPUs reported by the os module.Debug the application by pressing F5 and the output will be demonstrated in a reassure application as in the accompanying figure: 

HostForLIFE.eu Node.js Hosting
HostForLIFE.eu is European Windows Hosting Provider which focuses on Windows Platform only. We deliver on-demand hosting solutions including Shared hosting, Reseller Hosting, Cloud Hosting, Dedicated Servers, and IT as a Service for companies of all sizes. We have customers from around the globe, spread across every continent. We serve the hosting needs of the business and professional, government and nonprofit, entertainment and personal use market segments.



Node.js Hosting Russia - HostForLIFE.eu :: How to Clustered HTTP Server in Node.js ?

clock February 24, 2015 07:39 by author Peter

In this short article, let me tell you about How to Clustered HTTP Server in Node.js. Now this is the code that I ued to clustere the HTTP Server:

function () {
    'use strict';
        var cluster = require('cluster'),
        http = require('http'),
        os = require('os'),       
        /*
         * ClusterServer object
         *
         * We start multi-threaded server instances by passing the server object
         * to ClusterServer.start(server, port).
         *
         * Servers are automatically started with a number of threads equivalent
         * to the number of CPUs reported by the os module.
         */
        ClusterServer = {
            name: 'ClusterServer',           
            cpus: os.cpus().length,           
            autoRestart: true, // Restart threads on death?
                        start: function (server, port) {
                var me = this,
                    i;                
                if (cluster.isMaster) { // fork worker threads
                    for (i = 0; i < me.cpus; i += 1) {
                        console.log(me.name + ': starting worker thread #' + i);
                        cluster.fork();
                    }                   
                    cluster.on('death', function (worker) {
                        console.log(me.name + ': worker ' + worker.pid + ' died.');
                        if (me.autoRestart) {
                            console.log(me.name + ': Restarting worker thread...');
                            cluster.fork();
                        }
                    });
                } else {
                    server.listen(port);
                }
            }
       },       
        /*
         * Simple example HelloWorld HTTP server
         *
         * Repsonds to any request with a plain txt "Hello World!" message.
         *
         * You can replace this with much more complex processing, naturally.
         */
        helloWorldServer = http.createServer(function (request, response) {
            response.writeHead(200, {
                'Content-type': 'text/plain'
            });
                        response.end('Hello World!');
            console.log('helloWorldServer: Served a hello!');
        });   
    ClusterServer.name = 'helloWorldServer'; // rename ClusterServer instance    ClusterServer.start(helloWorldServer, 8081); // Start it up!
}());

I hope it works for you!

HostForLIFE.eu Node.js Hosting

HostForLIFE.eu is European Windows Hosting Provider which focuses on Windows Platform only. We deliver on-demand hosting solutions including Shared hosting, Reseller Hosting, Cloud Hosting, Dedicated Servers, and IT as a Service for companies of all sizes. We have customers from around the globe, spread across every continent. We serve the hosting needs of the business and professional, government and nonprofit, entertainment and personal use market segments.



Node.js Hosting Russia - Use Simple Example Code to GET and POST in Node.js

clock January 27, 2015 06:05 by author Peter

With this post, I will write about using simple Example Code GET and POST in Node.js. In this post, I use this library (Simplified HTTP request client.) And here is the code:

GET
var request = require('request');
// Set the headers
var headers = {
    'User-Agent':       'Super Agent/0.0.1',
    'Content-Type':     'application/x-www-form-urlencoded'
}
// Configure the request
var options = {
    url: 'http://hostforlife.eu',
    method: 'GET',
    headers: headers,
    qs: {'key1': 'xxx', 'key2': 'yyy'}
}

// Start the request
request(options, function (error, response, body) {
    if (!error && response.statusCode == 200) {
        // Print out the response body
        console.log(body)
    }
})

Above code will do GET https://localhost:8080/?key1=xxx&key2=yyy

POST
var request = require('request');
// Set the headers
var headers = {
    'User-Agent':       'Super Agent/0.0.1',
    'Content-Type':     'application/x-www-form-urlencoded'
}

// Configure the request
var options = {
    url: 'http://hostforlife.eu',
    method: 'POST',
    headers: headers,
    form: {'key1': 'xxx', 'key2': 'yyy'}
}
// Start the request
request(options, function (error, response, body) {
    if (!error && response.statusCode == 200) {
        // Print out the response body
        console.log(body)
    }
})

Above code will do POST https://localhost:8080/ with key1=xxx&key2=yyy in the body.

Handling gzip encoding
To handle gzip encoded response, you will need the compress-buffer library.
var uncompress = require('compress-buffer').uncompress;
// Set the headers and options ...
request(options, function (error, response, body) {
    if (!error && response.statusCode == 200) {
        // Handle gzip
        var encoding = response.headers['content-encoding']
        if(encoding && encoding.indexOf('gzip')>=0) {
            body = uncompress(body);
        }
        body = body.toString('utf-8');
        // Print out the response body
        console.log(body)
        // If it is json
        var json_body = JSON.parse(body);
    }
})

HostForLIFE.eu Node.js Hosting
HostForLIFE.eu is European Windows Hosting Provider which focuses on Windows Platform only. We deliver on-demand hosting solutions including Shared hosting, Reseller Hosting, Cloud Hosting, Dedicated Servers, and IT as a Service for companies of all sizes. We have customers from around the globe, spread across every continent. We serve the hosting needs of the business and professional, government and nonprofit, entertainment and personal use market segments.



Node.js Hosting Spain - HostForLIFE.eu :: Uploading File in Node.js

clock January 20, 2015 06:28 by author Peter

In this article we will observe uploading a file on a web server made use Node.js. Stream in Node.js makes this task super simple to upload files or so far as that is concerned working with any information exchange between a server and a client. To transfer a file we will work with two modules, HTTP and fs. So let us begin with stacking these two modules in an application:

var http = require('http');
var fs = require('fs');


When modules are loaded proceed to and make a web server as below:
http.createServer(function(request,response){   
  }).listen(8080);


So far we are great and now we wish to utilize the accompanying procedure:
Make a destination write stream. In this stream the substance of the uploaded file will be written. We need to compose once again to the client the rate of data being uploaded.

The first requirement could be possible utilizing a pipe. A pipe is an event of stream in Node.js. And the request is a readable stream. So we will use a pipe event to write a request to a readable stream.
var destinationFile = fs.createWriteStream("destination.md");     
      request.pipe(destinationFile);


The second necessity is to give back an of data uploaded. To do that first read the aggregate size of the file being uploaded. That could be possible by reading the content-length (line number 1 in the accompanying code snippet). At that point in the data occasion of request we will update uploadedBytes that starts at zero (line number 2). In the data event of the request we are calculating the percentage and writing it back in the response.

Now, It’s time to putting it all together your app should contain the following code to upload a file and return the percentage uploaded.
var http = require('http');
var fs = require('fs');
  http.createServer(function(request,response){    
    response.writeHead(200);
      var destinationFile = fs.createWriteStream("destination.md");      
      request.pipe(destinationFile);
      var fileSize = request.headers['content-length'];
      var uploadedBytes = 0 ;
      request.on('data',function(d){  
          uploadedBytes += d.length;
          var p = (uploadedBytes/fileSize) * 100;
          response.write("Uploading " + parseInt(p)+ " %\n");
     });
      request.on('end',function(){
            response.end("File Upload Complete");
          });
    }).listen(8080,function(){        
        console.log("server started");
         });

On a command prompt start the server as in the picture below:

Presently let us utilize curl -upload-file to upload a file on the server.

As you see, while the file is being uploaded the percentage of data uploaded is returned once again to the client. So thusly you can upload a file to the server made utilizing Node.js. Hope this tutorial works for you!



Node.js Hosting Spain - HostForLIFE.eu :: How to Make a Visitor Counter in Node.js ?

clock January 6, 2015 05:02 by author Peter

In this article we will actualize a basic hit counter application with a couple of lines of code. We should examine what we truly need to do. We might simply want to actualize a basic hit count for our web server. Case in point, we realize that in ASP.NET application variables are comprehensively shareable and static in nature, as it were if a client changes a worth then all clients will see the changed variant.

In our case we will count the quantity of hits in our web server, and trust me, its much less difficult than you would anticipate. I will assume that the Node.Js server is already up and running in our system. Let’s take a look at the following code.
var http = require('http');
var userCount = 0;
var server = http.createServer(function (req, res) {
    userCount++;
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.write('Hello!\n');
    res.write('We have had ' + userCount + ' visits!\n');
    res.end(); 
});
server.listen(9090);
console.log('server running...')

The illustration is exceptionally straightforward with our past Hello World case. In this case we have pronounced one global variable that is including the quantity of hits our web application. In the server body, from the beginning we are increasing the variable worth and afterward we are sending the quality as a reaction in the wake of setting 200 reaction statuses.

We should run the application. Go to the Command Prompt and explore to your server area. At that point fire the summon:
hub <server filename>

We are seeing that our node server is running. Presently we will go to a program and attempt to get to the server.

At the outset hit, we see that its demonstrating that this is the first HTTP solicitation to our server. Presently, in the event that we hit a few more times then we will see that the number has changed as in the accompanying.

It's demonstrating the quantity of HTTP demands after the node server was up and running. The inquiry may ring a bell, for every single hit, why is the variable not introduced? The reason is, the node.js prepare any work in occasion circle system.

When we make the server and it is up, it will never stop and it will keep on listening for events. For our situation the server is listening for request and response events. Along these lines, when we make one HTTP demand , it executes the code that is composed inside the occasion scope and since we have announced a variable out of this extension, it is never instated the second time.

Conclusion
In this short article we have figured out how to execute a hit counter in a HTTP server utilizing a couple of lines of code. I trust this useful illustration will support you in your node.js day. Happy Coding!



About HostForLIFE.eu

HostForLIFE.eu is European Windows Hosting Provider which focuses on Windows Platform only. We deliver on-demand hosting solutions including Shared hosting, Reseller Hosting, Cloud Hosting, Dedicated Servers, and IT as a Service for companies of all sizes.

We have offered the latest Windows 2016 Hosting, ASP.NET Core 2.2.1 Hosting, ASP.NET MVC 6 Hosting and SQL 2017 Hosting.


Tag cloud

Sign in