forked from coolaj86/walnut.js
		
	
		
			
				
	
	
		
			61 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| 
 | |
| var PromiseA = require('bluebird').Promise;
 | |
| var natUpnp = require('nat-upnp');
 | |
| 
 | |
| exports.upnpForward = function (port) {
 | |
|   return natUpnp.createClient({ timeout: 1800 }).then(function (client) {
 | |
|     return client.portMapping({
 | |
|       public: port.public,
 | |
|       private: port.private || port.public,
 | |
|       ttl: port.ttl || 0
 | |
|     })/*.then(function () {
 | |
|       var promitter = client.getMappings();
 | |
| 
 | |
|       promitter.on('entry', function (entry, i) {
 | |
|         console.log('entry', i);
 | |
|         console.log(entry);
 | |
|       }).then(function (mappings) {
 | |
|         console.log('mappings');
 | |
|         console.log(mappings);
 | |
|       });
 | |
|        
 | |
|       return promitter;
 | |
|     })*/;
 | |
|   });
 | |
| };
 | |
| 
 | |
| /*
 | |
| client.portUnmapping({
 | |
|   public: 80
 | |
| });
 | |
| 
 | |
| .findGateway().then(function (stuff) {
 | |
|       console.log('[a] gateway');
 | |
|       console.log(stuff.gateway);
 | |
|       console.log('[a] address');
 | |
|       console.log(stuff.address);
 | |
|     }).then(function () {
 | |
|       return client
 | |
| */
 | |
| 
 | |
| /*
 | |
| client.getMappings({ local: true }, function(err, results) {
 | |
|   console.log('local mappings', results);
 | |
| });
 | |
| 
 | |
| client.externalIp(function(err, ip) {
 | |
|   console.log('ext-ip', ip);
 | |
| });
 | |
| */
 | |
| 
 | |
| if (require.main === module) {
 | |
|   exports.upnpForward({ public: 65080, private: 65080, ttl: 0 }).then(function () {
 | |
|     console.log('done');
 | |
|   }).catch(function (err) {
 | |
|     console.error('ERROR');
 | |
|     console.error(err);
 | |
|     throw err;
 | |
|   });
 | |
| }
 |