profile for monkeydom at Stack Overflow, Q&A for professional and enthusiast programmers

cocoa-dom

coding bits I use, come across, like, hate, the whole shebang.

twitter | github | mastodon     rant-dom     rss | archive

Permalink
Home

TCMPortMapper 2018 Edition

About 10 years ago, I released one of my first pieces of open source software. For the collaboration part of SubEthaEdit we needed a way to make the app's network service available to the outside world, so you could invite people to documents without any additional setup.

To achieve this without any other additional central service to communicate over, one way is to leverage the port mapping services of your router to open up to the outside world. And for this reason, I created TCMPortMapper.framework with its companion example and in itself useful Port Map.app.

Port Map App Icon

Since this piece of software was more or less just working after its inception, I left it quite unmaintained for a long time. This is also signified by the fact, that the original repo was on google code, and it didn't even make it over to another hoster when it got shutdown, so the commit history was lost.

So I took some time to revive it, clean it up, get the original commit history and update the libraries it leverages.

The funny thing is, that 10 years ago the thought was, when IPv6 will be here, port mapping would be obsolete. Sadly, that is not the case. Both IPv6 is not available everywhere yet, and as it turns out, the default IPv6 behaviour of routers is to close you off from the outside world too. With most routers it is not an easy feat to open it up again for the layperson. With that in mind I'll probably look into what kind of information/help for IPv6 connectivity TCMPortMapper.framework can give you, now that the codebase is cleaned up again and fit for the next few years.

Until then, the existing Port Map.app can be helpful for you in some of the following scenarios:

  • make your SSH avaialable temporarily, or permanently e.g. if you use dyn-dns for your home router.
  • temporarily expose some services to others. E.g. I use it so show my local web development things by turning on Port Map for e.g. 4000 and copy the link to others in a chat.
  • know your external IPv4 address, if any.
  • looking up what ports are currently mapped in your UPnP enabled router.

Port Map Screenshot