From 0b9b60b118bb18ca6d9b41ad54e138c59e76ed20 Mon Sep 17 00:00:00 2001
From: Adhidarma Hadiwinoto <me@adhisimon.org>
Date: Fri, 20 Jan 2017 07:39:19 +0700
Subject: [PATCH] penanganan ipv6 hybrid remoteAddress

---
 xmlrpc-server.js | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/xmlrpc-server.js b/xmlrpc-server.js
index 34e9b02..5399d96 100644
--- a/xmlrpc-server.js
+++ b/xmlrpc-server.js
@@ -79,8 +79,9 @@ function createDiyHttpXmlRpcServer() {
     }
 
     var httpServer = https.createServer(serverOptions, function(req, res) {
+        var remoteAddress = req.connection.remoteAddress.replace(/^::ffff:/, '');
 
-        logger.verbose("Incoming connection from " + req.connection.remoteAddress);
+        logger.verbose("Incoming connection from " + remoteAddress);
 
         var body = "";
 
@@ -93,7 +94,7 @@ function createDiyHttpXmlRpcServer() {
             xml2jsParser(body, function(err, message) {
 
                 if (err) {
-                    logger.warn('Got XMLRPC invalid XML request body from ' + req.connection.remoteAddress, {body: body, err: err});
+                    logger.warn('Got XMLRPC invalid XML request body from ' + remoteAddress, {body: body, err: err});
                     res.end('Invalid XMLRPC request');
                     return;
                 }
@@ -106,17 +107,17 @@ function createDiyHttpXmlRpcServer() {
                     _params = message.methodCall.params[0].param[0].value[0].struct[0].member;
                 }
                 catch(errSelectMethod) {
-                    logger.warn('Failed to get method and params on request from ' + req.connection.remoteAddress);
+                    logger.warn('Failed to get method and params on request from ' + remoteAddress);
                     res.end('Invalid XMLRPC message')
                     return;
                 }
 
-                params = getXmlRpcParam(_params);
-                logger.info('Got XMLRPC request from ' + req.connection.remoteAddress, {method: method, params: params});
+                var params = getXmlRpcParam(_params);
+                logger.info('Got XMLRPC request from ' + remoteAddress, {method: method, params: params});
 
                 if (method == 'topUpRequest') {
 
-                    sendTopUpRequestToMaster(params, req.connection.remoteAddress, function(forwardError) {
+                    sendTopUpRequestToMaster(params, remoteAddress, function(forwardError) {
                         if (forwardError) {
                             immediateReply(params, res, '40', forwardError.toString());
                         } else {
@@ -127,7 +128,7 @@ function createDiyHttpXmlRpcServer() {
                 }
                 else if (method == 'topUpInquiry') {
 
-                    sendTopUpInquryToMaster(params, req.connection.remoteAddress, res);
+                    sendTopUpInquryToMaster(params, remoteAddress, res);
 
                 }
                 else {
-- 
1.9.0