Giter VIP home page Giter VIP logo

corsis / portfusion Goto Github PK

View Code? Open in Web Editor NEW
191.0 32.0 41.0 725 KB

Haskell-powered cross-platform transport-layer distributed reverse / forward proxy & tunneling solution – currently available for all TCP protocols (RDP, VNC, HTTP(S), SSH, ...).

Home Page: http://fusion.corsis.tech

License: GNU General Public License v3.0

Haskell 97.08% Batchfile 2.92%
proxy tcp simple reverse-proxy multi-platform application haskell gplv3

portfusion's Introduction

![pf] [pf]: http://fusion.corsis.tech/i/h.png "PortFusion"

Download 1.2.1 (for Windows, Linux, OS X and FreeBSD, ...)


PortFusion is a minimalistic, cross-platform, transport-layer distributed reverse / forward proxy and tunneling solution for TCP released under GPLv3.

A single package that makes the most of each platform by tapping into their unique capabilities, combining this power with an intuitive interface, beautiful design and Haskell's excellent support for unprecedented levels of concurrency and parallelism.

It strives for the smallest source code size while delivering maximum throughput with near-zero overhead.


Today, a growing number of companies and institutions around the world use PortFusion.


Use

PortFusion is a tiny command line application.

Distributed Reverse Proxy Mode Distributed Forward Proxy Mode

Work from home using remote desktop services circumventing corporate firewalls.

Connect to the internet through a http proxy via a gateway to a friend's intranet.

↓ home ↓
PortFusion                ] 2000      [
PortFusion 3389 localhost - 2000 home [ 3389
↑ work ↑
↓ friend ↓
PortFusion      ]        2000 [
PortFusion 3128 ] friend 2000 - server 3128
↑ you ↑

Connections to home:3389 will now be tunnelled and reach work:3389.

You only need to make home:2000 accessible from work.

Connections to you:3128 will now be tunnelled and reach server:3128.

Your friend only needs to make friend:2000 accessible.

DR DF

Build

Prerequisites

You need only one of the following rows for compilation.

Remarks OS Compilers
recommended and
used for official binaries
Windows, Linux, OSX, FreeBSD, OpenBSD, Solaris, Other GHC >= 7.4
LLVM >= 3
easy to install for
all Haskell newbies
Windows, Linux, OSX Haskell Platform >= 2012.2.0.0

Instructions

cabal update
cabal install    splice

git   clone      git://github.com/corsis/PortFusion.git -b master
cd    PortFusion
cabal configure
cabal build

Flags

Following flags can be activated when using cabal configure -f <FLAG> or cabal install -f <FLAG>.

Flag Effect Default Official Binaries
llvm compile via LLVM false true
static link system libraries statically false See OS and CPUs

Download

Binaries

CPU Windows Linux OSX FreeBSD OpenBSD Solaris Other
x86-64 Get Get Get Get C C C
x86-32 Get Get C C C C
ARM B Get C C C C C
MIPS Get
Other C C C C C

CORSIS Research
D builds official binaries
B will build official binaries on demand
C can cooperate with community for builds

Support

If you have access to an OS+CPU combination lacking official binaries, please contact us to join our build team!

Packages

PortFusion is available and can be very easily installed from Hackage:

cabal update
cabal install splice      -f llvm
cabal install PortFusion  -f llvm

If you do not have LLVM installed, you can drop -f llvm.

Compare

This is the new Haskell source code repository of the latest ]-[ayabusa version
– a complete rewrite of the initial Windows-only versions developed in F# / C#.

What is new in ]-[ayabusa?

PortFusion 1.2.1 – ]-[ayabusa 0.9.3 – old
Memory at Start-up ~0.7 MB ~14 MB
Memory at 1 Fusion ~1.0 MB (constant) ~30 MB (lots of jumps)
Official Binaries Windows, Linux, OSX, FreeBSD Windows
OS Support Windows, Linux, OSX, FreeBSD, OpenBSD, Solaris, Other Windows
CPU Support x86-64, x86-32, ARM, MIPS x86
Source Code Size < 500 lines (1 file) 778 lines (multiple files)
Language Haskell (GHC / LLVM) F# / C#
Dependencies none .NET 4.0 + F# 2.0 Runtime
Deployment 1 unified, native code binary for each platform 2 x .NET 4.0 managed binaries
Binary Size 1-2 MB (~400 KB compressed) 78.3 KB (34.3 KB + 44 KB)
Concurrency Model 1 Haskell thread per connection 1 OS thread per connection
Distribution Technique native sockets API and system calls of each OS Windows Communication Foundation
Distributed Proxy Modes reverse, forward reverse
Local Proxy Modes forward
Native IPv6 Support yes yes
Interactive Mode REPL in GHCi
License GPLv3 GPLv3
Availability SourceForge.net (binary)
GitHub (source)
corsis.tech (commercial)
SourceForge.net

Remember

Trademark

PortFusion™ is a trademark of Corsis Research (corsis.tech).

Trademark Policy

You may only distribute unchanged official binaries using the
PortFusion and Corsis Marks.

If you're taking full advantage of the open-source nature of Corsis
products and making significant functional changes, you may not
redistribute the fruits of your labor under any Corsis trademark,
without prior written consent from Corsis. For example, if you've
modified PortFusion, you may not use Corsis or PortFusion, in whole
or in part, in your product name. Also, it would be inappropriate
for you to say "based on Corsis PortFusion". Instead, in the interest
of complete accuracy, you could describe your executables as "based on
PortFusion technology", or "incorporating PortFusion source code."
In addition, a "Powered by PortFusion" logo will be made available.

Copyright

CORSIS PortFusion ]-[ayabusa
© 2011 - 2013     Cetin Sert

License

GPLv3

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

Know

Principles

Development follows simple principles:

  1. Be concise: PortFusion is a single-file with less than 500 lines of code
  2. Be relentless: refactor and prune constantly
  3. Be open: share everything
  4. Create fully documented reusable libraries that cover common needs
  5. Use the most permissive licenses possible
  6. Report bugs in external code and work on fixes
  7. Illustrate every concept in publication-worthy detail
  8. Be friendly: provide excellent support to users

Japanese Influence: ]-[ayabusa (はやぶさ) (Hayabusa)

I had already spent a great deal of time contemplating a nice and intuitive syntax and it was only when I watched the Japanese movie Hayabusa about the same-named space probe sent to extract and bring to Earth pieces from the asteroid Itokawa that everything just fell into place:

# command line  # source file

  ] [             :><:          # serve
  - [             :-<:          # reverse
  ] -             :>-:          # forward

# > and < are reserved characters at command line
# ] and [ are reserved characters in Haskell

PortFusion owes its design goals, ambitions and 1.0 release name ]-[ayabusa to the great Japanese culture and friends.

Family

We hope to grow a whole family of software-defined networking solutions reaching all network layers, technologies and devices.

Thanks

For their continuing support and inspiration, we extend our heart-felt thanks to:

Internet Initiative Japan Commercial Users of Functional Programming Japan Aerospace Exploration Agency

Contact

corsis

[email protected]

portfusion's People

Contributors

cetinsert avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

portfusion's Issues

not getting response back to client if i pass some http header for url rewrite through reverse proxy

Hi,
I am using portfusion 0.9.3 and using it, i am able to connect to my server through DMZ network machine with below commands:
HM> PortFusionHost.exe 1080
SERVER> PortFusionClient 1080 HM 5010=localhost:8000

Then i try to do GET through my REST client and it works perfectly and provides me needed data. When i pass HTTP header for some URL rewrite which my application is accepting and providing data back, is taking more then 3-4 minutes for data to reach REST client.

I captured WireShark on port 5010 and collected following readings

No. Time Source Destination Protocol Length Info
1 0.000000 CLIENT_IP DMZ_HOST TCP 90 S+*, 22923 > telelpathstart [SYN] Seq=0 Win=5840 Len=0 MSS=1460 SACK_PERM=1 TSval=2623342922 TSecr=0 WS=4

Frame 1: 90 bytes on wire (720 bits), 90 bytes captured (720 bits)
Ethernet II, Src: Cisco_a2:41:00 (88:43:e1:a2:41:00), Dst: Vmware_8f:09:12 (00:50:56:8f:09:12)
Internet Protocol Version 4, Src: CLIENT_IP (CLIENT_IP), Dst: DMZ_HOST (DMZ_HOST)
Transmission Control Protocol, Src Port: 22923 (22923), Dst Port: telelpathstart (5010), Seq: 0, Len: 0

No. Time Source Destination Protocol Length Info
2 0.000076 DMZ_HOST CLIENT_IP TCP 66 telelpathstart > 22923 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0 SACK_PERM=1 TSval=377453560 TSecr=2623342922

Frame 2: 66 bytes on wire (528 bits), 66 bytes captured (528 bits)
Ethernet II, Src: Vmware_8f:09:12 (00:50:56:8f:09:12), Dst: All-HSRP-routers_c9 (00:00:0c:07:ac:c9)
Internet Protocol Version 4, Src: DMZ_HOST (DMZ_HOST), Dst: CLIENT_IP (CLIENT_IP)
Transmission Control Protocol, Src Port: telelpathstart (5010), Dst Port: 22923 (22923), Seq: 0, Ack: 1, Len: 0

No. Time Source Destination Protocol Length Info
3 0.002178 CLIENT_IP DMZ_HOST TCP 66 22923 > telelpathstart [ACK] Seq=1 Ack=1 Win=5840 Len=0 TSval=2623342925 TSecr=377453560

Frame 3: 66 bytes on wire (528 bits), 66 bytes captured (528 bits)
Ethernet II, Src: Cisco_a2:41:00 (88:43:e1:a2:41:00), Dst: Vmware_8f:09:12 (00:50:56:8f:09:12)
Internet Protocol Version 4, Src: CLIENT_IP (CLIENT_IP), Dst: DMZ_HOST (DMZ_HOST)
Transmission Control Protocol, Src Port: 22923 (22923), Dst Port: telelpathstart (5010), Seq: 1, Ack: 1, Len: 0

No. Time Source Destination Protocol Length Info
4 0.415423 CLIENT_IP DMZ_HOST IPSICTL 275 Initialization

Frame 4: 275 bytes on wire (2200 bits), 275 bytes captured (2200 bits)
Ethernet II, Src: Cisco_a2:41:00 (88:43:e1:a2:41:00), Dst: Vmware_8f:09:12 (00:50:56:8f:09:12)
Internet Protocol Version 4, Src: CLIENT_IP (CLIENT_IP), Dst: DMZ_HOST (DMZ_HOST)
Transmission Control Protocol, Src Port: 22923 (22923), Dst Port: telelpathstart (5010), Seq: 1, Ack: 1, Len: 209
IPSICTL

No. Time Source Destination Protocol Length Info
5 0.616818 DMZ_HOST CLIENT_IP TCP 66 telelpathstart > 22923 [ACK] Seq=1 Ack=210 Win=65535 Len=0 TSval=377453622 TSecr=2623343338

Frame 5: 66 bytes on wire (528 bits), 66 bytes captured (528 bits)
Ethernet II, Src: Vmware_8f:09:12 (00:50:56:8f:09:12), Dst: All-HSRP-routers_c9 (00:00:0c:07:ac:c9)
Internet Protocol Version 4, Src: DMZ_HOST (DMZ_HOST), Dst: CLIENT_IP (CLIENT_IP)
Transmission Control Protocol, Src Port: telelpathstart (5010), Dst Port: 22923 (22923), Seq: 1, Ack: 210, Len: 0

No. Time Source Destination Protocol Length Info
6 1.444167 DMZ_HOST CLIENT_IP IPSICTL 1114 Initialization

Frame 6: 1114 bytes on wire (8912 bits), 1114 bytes captured (8912 bits)
Ethernet II, Src: Vmware_8f:09:12 (00:50:56:8f:09:12), Dst: All-HSRP-routers_c9 (00:00:0c:07:ac:c9)
Internet Protocol Version 4, Src: DMZ_HOST (DMZ_HOST), Dst: CLIENT_IP (CLIENT_IP)
Transmission Control Protocol, Src Port: telelpathstart (5010), Dst Port: 22923 (22923), Seq: 1, Ack: 210, Len: 1048
IPSICTL

No. Time Source Destination Protocol Length Info
7 1.445380 CLIENT_IP DMZ_HOST TCP 66 22923 > telelpathstart [ACK] Seq=210 Ack=525 Win=6812 Len=0 TSval=2623344368 TSecr=377453705

Frame 7: 66 bytes on wire (528 bits), 66 bytes captured (528 bits)
Ethernet II, Src: Cisco_a2:41:00 (88:43:e1:a2:41:00), Dst: Vmware_8f:09:12 (00:50:56:8f:09:12)
Internet Protocol Version 4, Src: CLIENT_IP (CLIENT_IP), Dst: DMZ_HOST (DMZ_HOST)
Transmission Control Protocol, Src Port: 22923 (22923), Dst Port: telelpathstart (5010), Seq: 210, Ack: 525, Len: 0

No. Time Source Destination Protocol Length Info
8 1.445382 CLIENT_IP DMZ_HOST TCP 66 22923 > telelpathstart [ACK] Seq=210 Ack=1049 Win=7860 Len=0 TSval=2623344368 TSecr=377453705

Frame 8: 66 bytes on wire (528 bits), 66 bytes captured (528 bits)
Ethernet II, Src: Cisco_a2:41:00 (88:43:e1:a2:41:00), Dst: Vmware_8f:09:12 (00:50:56:8f:09:12)
Internet Protocol Version 4, Src: CLIENT_IP (CLIENT_IP), Dst: DMZ_HOST (DMZ_HOST)
Transmission Control Protocol, Src Port: 22923 (22923), Dst Port: telelpathstart (5010), Seq: 210, Ack: 1049, Len: 0

No. Time Source Destination Protocol Length Info
9 1.445431 DMZ_HOST CLIENT_IP IPSICTL 2162 Initialization

Frame 9: 2162 bytes on wire (17296 bits), 2162 bytes captured (17296 bits)
Ethernet II, Src: Vmware_8f:09:12 (00:50:56:8f:09:12), Dst: All-HSRP-routers_c9 (00:00:0c:07:ac:c9)
Internet Protocol Version 4, Src: DMZ_HOST (DMZ_HOST), Dst: CLIENT_IP (CLIENT_IP)
Transmission Control Protocol, Src Port: telelpathstart (5010), Dst Port: 22923 (22923), Seq: 1049, Ack: 210, Len: 2096
IPSICTL

No. Time Source Destination Protocol Length Info
10 1.446577 CLIENT_IP DMZ_HOST TCP 66 22923 > telelpathstart [ACK] Seq=210 Ack=1573 Win=8908 Len=0 TSval=2623344369 TSecr=377453705

Frame 10: 66 bytes on wire (528 bits), 66 bytes captured (528 bits)
Ethernet II, Src: Cisco_a2:41:00 (88:43:e1:a2:41:00), Dst: Vmware_8f:09:12 (00:50:56:8f:09:12)
Internet Protocol Version 4, Src: CLIENT_IP (CLIENT_IP), Dst: DMZ_HOST (DMZ_HOST)
Transmission Control Protocol, Src Port: 22923 (22923), Dst Port: telelpathstart (5010), Seq: 210, Ack: 1573, Len: 0

No. Time Source Destination Protocol Length Info
11 1.446580 CLIENT_IP DMZ_HOST TCP 66 22923 > telelpathstart [ACK] Seq=210 Ack=2097 Win=9956 Len=0 TSval=2623344369 TSecr=377453705

Frame 11: 66 bytes on wire (528 bits), 66 bytes captured (528 bits)
Ethernet II, Src: Cisco_a2:41:00 (88:43:e1:a2:41:00), Dst: Vmware_8f:09:12 (00:50:56:8f:09:12)
Internet Protocol Version 4, Src: CLIENT_IP (CLIENT_IP), Dst: DMZ_HOST (DMZ_HOST)
Transmission Control Protocol, Src Port: 22923 (22923), Dst Port: telelpathstart (5010), Seq: 210, Ack: 2097, Len: 0

No. Time Source Destination Protocol Length Info
12 1.446582 CLIENT_IP DMZ_HOST TCP 66 22923 > telelpathstart [ACK] Seq=210 Ack=2621 Win=11004 Len=0 TSval=2623344369 TSecr=377453705

Frame 12: 66 bytes on wire (528 bits), 66 bytes captured (528 bits)
Ethernet II, Src: Cisco_a2:41:00 (88:43:e1:a2:41:00), Dst: Vmware_8f:09:12 (00:50:56:8f:09:12)
Internet Protocol Version 4, Src: CLIENT_IP (CLIENT_IP), Dst: DMZ_HOST (DMZ_HOST)
Transmission Control Protocol, Src Port: 22923 (22923), Dst Port: telelpathstart (5010), Seq: 210, Ack: 2621, Len: 0

No. Time Source Destination Protocol Length Info
13 1.446584 CLIENT_IP DMZ_HOST TCP 66 22923 > telelpathstart [ACK] Seq=210 Ack=3145 Win=12052 Len=0 TSval=2623344369 TSecr=377453705

Frame 13: 66 bytes on wire (528 bits), 66 bytes captured (528 bits)
Ethernet II, Src: Cisco_a2:41:00 (88:43:e1:a2:41:00), Dst: Vmware_8f:09:12 (00:50:56:8f:09:12)
Internet Protocol Version 4, Src: CLIENT_IP (CLIENT_IP), Dst: DMZ_HOST (DMZ_HOST)
Transmission Control Protocol, Src Port: 22923 (22923), Dst Port: telelpathstart (5010), Seq: 210, Ack: 3145, Len: 0

No. Time Source Destination Protocol Length Info
14 1.446638 DMZ_HOST CLIENT_IP IPSICTL 465 Initialization

Frame 14: 465 bytes on wire (3720 bits), 465 bytes captured (3720 bits)
Ethernet II, Src: Vmware_8f:09:12 (00:50:56:8f:09:12), Dst: All-HSRP-routers_c9 (00:00:0c:07:ac:c9)
Internet Protocol Version 4, Src: DMZ_HOST (DMZ_HOST), Dst: CLIENT_IP (CLIENT_IP)
Transmission Control Protocol, Src Port: telelpathstart (5010), Dst Port: 22923 (22923), Seq: 3145, Ack: 210, Len: 399
IPSICTL

No. Time Source Destination Protocol Length Info
15 1.447726 CLIENT_IP DMZ_HOST TCP 66 22923 > telelpathstart [ACK] Seq=210 Ack=3544 Win=13100 Len=0 TSval=2623344370 TSecr=377453705

Frame 15: 66 bytes on wire (528 bits), 66 bytes captured (528 bits)
Ethernet II, Src: Cisco_a2:41:00 (88:43:e1:a2:41:00), Dst: Vmware_8f:09:12 (00:50:56:8f:09:12)
Internet Protocol Version 4, Src: CLIENT_IP (CLIENT_IP), Dst: DMZ_HOST (DMZ_HOST)
Transmission Control Protocol, Src Port: 22923 (22923), Dst Port: telelpathstart (5010), Seq: 210, Ack: 3544, Len: 0

No. Time Source Destination Protocol Length Info
16 301.428842 CLIENT_IP DMZ_HOST TCP 66 [TCP Keep-Alive] 22923 > telelpathstart [ACK] Seq=209 Ack=3544 Win=13100 Len=0 TSval=2623644370 TSecr=377453705

Frame 16: 66 bytes on wire (528 bits), 66 bytes captured (528 bits)
Ethernet II, Src: Cisco_a2:41:00 (88:43:e1:a2:41:00), Dst: Vmware_8f:09:12 (00:50:56:8f:09:12)
Internet Protocol Version 4, Src: CLIENT_IP (CLIENT_IP), Dst: DMZ_HOST (DMZ_HOST)
Transmission Control Protocol, Src Port: 22923 (22923), Dst Port: telelpathstart (5010), Seq: 209, Ack: 3544, Len: 0

No. Time Source Destination Protocol Length Info
17 301.428892 DMZ_HOST CLIENT_IP TCP 66 [TCP Keep-Alive ACK] telelpathstart > 22923 [ACK] Seq=3544 Ack=210 Win=65535 Len=0 TSval=377483703 TSecr=2623344370

Frame 17: 66 bytes on wire (528 bits), 66 bytes captured (528 bits)
Ethernet II, Src: Vmware_8f:09:12 (00:50:56:8f:09:12), Dst: All-HSRP-routers_c9 (00:00:0c:07:ac:c9)
Internet Protocol Version 4, Src: DMZ_HOST (DMZ_HOST), Dst: CLIENT_IP (CLIENT_IP)
Transmission Control Protocol, Src Port: telelpathstart (5010), Dst Port: 22923 (22923), Seq: 3544, Ack: 210, Len: 0

No. Time Source Destination Protocol Length Info
18 601.414158 CLIENT_IP DMZ_HOST TCP 66 [TCP Keep-Alive] 22923 > telelpathstart [ACK] Seq=209 Ack=3544 Win=13100 Len=0 TSval=2623944373 TSecr=377483703

Frame 18: 66 bytes on wire (528 bits), 66 bytes captured (528 bits)
Ethernet II, Src: Cisco_a2:41:00 (88:43:e1:a2:41:00), Dst: Vmware_8f:09:12 (00:50:56:8f:09:12)
Internet Protocol Version 4, Src: CLIENT_IP (CLIENT_IP), Dst: DMZ_HOST (DMZ_HOST)
Transmission Control Protocol, Src Port: 22923 (22923), Dst Port: telelpathstart (5010), Seq: 209, Ack: 3544, Len: 0

No. Time Source Destination Protocol Length Info
19 601.414206 DMZ_HOST CLIENT_IP TCP 66 [TCP Keep-Alive ACK] telelpathstart > 22923 [ACK] Seq=3544 Ack=210 Win=65535 Len=0 TSval=377513702 TSecr=2623344370

Frame 19: 66 bytes on wire (528 bits), 66 bytes captured (528 bits)
Ethernet II, Src: Vmware_8f:09:12 (00:50:56:8f:09:12), Dst: All-HSRP-routers_c9 (00:00:0c:07:ac:c9)
Internet Protocol Version 4, Src: DMZ_HOST (DMZ_HOST), Dst: CLIENT_IP (CLIENT_IP)
Transmission Control Protocol, Src Port: telelpathstart (5010), Dst Port: 22923 (22923), Seq: 3544, Ack: 210, Len: 0

Please let me know if something you can help me here.

simulating a lousy network connection

For some software testing, I need a bidirectional TCP proxy where I can drop some percentage of packets randomly. I would also like to introduce some variable delay. Can PortFusion be used to accomplish this?

Attempted build 1.2.2, got Ambiguous Occurance in Main.hs

Attempted to build under Ubuntu 20.10 on RPi. Haskell-platform installed via standard apt-get, tried to run "cabal install PortFusion" and it attempted, but produced the below to the log. I know almost nothing about Haskell, but it looks like it made a reasonable try but encountered some conflict with a library or other built-in?:

Configuring PortFusion-1.2.2...
Preprocessing executable 'PortFusion' for PortFusion-1.2.2..
Building executable 'PortFusion' for PortFusion-1.2.2..
[1 of 1] Compiling Main ( src/Main.hs, dist/build/PortFusion/PortFusion-tmp/Main.o )

src/Main.hs:121:84: error:
Ambiguous occurrence ‘<>’
It could refer to
either ‘Prelude.<>’,
imported from ‘Prelude’ at src/Main.hs:16:1-100
(and originally defined in ‘GHC.Base’)
or ‘Main.<>’, defined at src/Main.hs:55:71
|
121 | (<:) :: Show a => Socket -> a -> IO (); s <: a = s sendAll ((B.pack . show $! a) <> "\r\n")
| ^^

src/Main.hs:196:21: error:
Ambiguous occurrence ‘<>’
It could refer to
either ‘Prelude.<>’,
imported from ‘Prelude’ at src/Main.hs:16:1-100
(and originally defined in ‘GHC.Base’)
or ‘Main.<>’, defined at src/Main.hs:55:71
|
196 | build = OS <> " - " <> ARCH <> " [" <> TIMESTAMP <> "]"
| ^^

src/Main.hs:196:30: error:
Ambiguous occurrence ‘<>’
It could refer to
either ‘Prelude.<>’,
imported from ‘Prelude’ at src/Main.hs:16:1-100
(and originally defined in ‘GHC.Base’)
or ‘Main.<>’, defined at src/Main.hs:55:71
|
196 | build = OS <> " - " <> ARCH <> " [" <> TIMESTAMP <> "]"
| ^^

src/Main.hs:196:39: error:
Ambiguous occurrence ‘<>’
It could refer to
either ‘Prelude.<>’,
imported from ‘Prelude’ at src/Main.hs:16:1-100
(and originally defined in ‘GHC.Base’)
or ‘Main.<>’, defined at src/Main.hs:55:71
|
196 | build = OS <> " - " <> ARCH <> " [" <> TIMESTAMP <> "]"
| ^^

src/Main.hs:196:48: error:
Ambiguous occurrence ‘<>’
It could refer to
either ‘Prelude.<>’,
imported from ‘Prelude’ at src/Main.hs:16:1-100
(and originally defined in ‘GHC.Base’)
or ‘Main.<>’, defined at src/Main.hs:55:71
|
196 | build = OS <> " - " <> ARCH <> " [" <> TIMESTAMP <> "]"
| ^^

src/Main.hs:196:78: error:
Ambiguous occurrence ‘<>’
It could refer to
either ‘Prelude.<>’,
imported from ‘Prelude’ at src/Main.hs:16:1-100
(and originally defined in ‘GHC.Base’)
or ‘Main.<>’, defined at src/Main.hs:55:71
|
196 | build = OS <> " - " <> ARCH <> " [" <> TIMESTAMP <> "]"
| ^^
cabal: Failed to build PortFusion-1.2.2. See the build log above for details.

"INVALID SYNTAX" when try to launch PortFusion as a background task on Mac

Hi Cetin,

Using your help from this thread I have been able to get PortFusion to run flawlessly as a foreground task on my Mac running OS X 10.7.5:

     PortFusion 2080 ] - 10.0.88.1 80

However, no matter what I do I'm unable to get PortFusion to stay running if I launch it as a background task via launchd or as a simple shell script using nohup....&.

Contents of /Library/Launchdaemons/net.sourceforge.netv-portfusion-2080.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>Disabled</key>
                <true/>
        <key>Label</key>
                <string>net.sourceforge.netv-portfusion-2080</string>
        <key>ProgramArguments</key>
                <array>
                        <string>/usr/local/bin/PortFusion</string>
                        <string>2080</string>
                        <string>]</string>
                        <string>-</string>
                        <string>10.0.88.1</string>
                        <string>80</string>
                </array>
        <key>RunAtLoad</key>
                <true/>
        <!-- OnDemand used by OS X 10.4 -->
        <key>OnDemand</key>
                <false/>
        <!-- KeepAlive used by OS X 10.5 and later -->
        <key>KeepAlive</key>
                <true/>
</dict>
</plist>

(Don't be confused by the 'Disabled' key above. They always start out being disabled. Also, eventually I'll be having the .plist redirect stdout and stderr but I'm leaving as-is for debugging purposes.)

I launch it with:

     sudo launchctl load -w /Library/Launchdaemons/net.sourceforge.netv-portfusion-2080.plist

Here's what /var/log/system.log shows (I've removed some extraneous text):

Jun  3 16:50:38 ...netv-portfusion-2080[5591]: CORSIS PortFusion    ( ]-[ayabusa 1.2.1 )
Jun  3 16:50:38 ...netv-portfusion-2080[5591]: (c) 2012 Cetin Sert. All rights reserved.
Jun  3 16:50:38 ...netv-portfusion-2080[5591]: MacOS - x86-64 [Sun Aug 19 07:53:53 2012]
Jun  3 16:50:38 ...netv-portfusion-2080[5591]: INVALID SYNTAX
Jun  3 16:50:38 ...netv-portfusion-2080[5591]: Listen :^: (IPv6(+4?),2080)
Jun  3 16:50:38 Stormwind com.apple.launchd[1] (...netv-portfusion-2080): Throttling respawn: Will start in 10 seconds

The above output tells me PortFusion starts OK. It also tells me that it is PortFusion that is generating the INVALID SYNTAX error.

I temporarily replaced the path to PortFusion with a path to a perl script that simply dumps the command line args. Here's the output, which sure looks correct to me:

     /usr/local/bin/PortFusion 2080 ] - 10.0.88.1 80

I even tried putting the arguments as a single line:

        <key>ProgramArguments</key>
                <array>
                        <string>/usr/local/bin/PortFusion</string>
                        <string>2080 ] - 10.0.88.1 80</string>
                </array>

But with the same INVALID SYNTAX result.

I also have tried escaping the "]" and "-" characters as "]" and "-" respectively -- but I still get INVALID SYNTAX.

How do I find out what PortFusion is having trouble with? Could there be something about PortFusion's command line parser that is different from other programs?

Even if I start PortFusion as a background task with the following in a shell script, I get INVALID SYNTAX in the nohup.out file:

     nohup /usr/local/bin/PortFusion 2080 ] - 10.0.88.1 80 &

What am I doing wrong?

Rapid scrolling text, Connection does not seem to be working

When I run the commands from the read me, it does not seem to work. I git the results line incrementing the port in (Just 192.168.1.2:56804) very rapidly on both the server with the open port and the machine behind the router.

Command line for machine behind router(to listen for connections): sudo nc -k -l 81

Command line for machine behind router: sudo ./PortFusion-OSX-x86-64 81 127.0.0.1 - 2005 75.119.201.49 [ 81
Results:
PortFusion-OSX-x86-64: Silence [127.0.0.1:81]
Open :.: PeerLink (Just 192.168.1.2:56804) (Just 75.119.201.49:2005)
Send ((:-<-:) 81) :.: PeerLink (Just 192.168.1.2:56804) (Just 75.119.201.49:2005)
Close :.: PeerLink (Just 192.168.1.2:56804) (Just 75.119.201.49:2005)

Command line for Server with open port: ] 0.0.0.0:2005 [
Results:
Accept :.: PeerLink (Just 75.119.201.49:2005) (Just 75.134.175.97:56804)
Receive ((:-<-:) 81) :.: PeerLink (Just 75.119.201.49:2005) (Just 75.134.175.97:56804)
Close :.: PeerLink (Just 75.119.201.49:2005) (Just 75.134.175.97:56804)

PortFusion.exe: Network.Socket.ByteString.recv: failed (Unknown error)

Hi all,

I'm using PortFusion Version 1.0.3 and in general it works. Thanks for that.
Unfortunately after some point in time (I don't have any additional logs) Port Fusion no longer works.
When I check the cmd output I only see the following output:

PortFusion on DMZ:
...
Accept :.: PeerLink (Just xxx.xx.xx.xxx:x00x) (Just x0.xxx.x0x.x0:xxxxx)
Establish ::: FusionLink (Just xxx.xx.xxx.x:xxxxx) (Just x00x) (Just x0.xxx.x0x.
x0:xxxxx)
Accept :.: PeerLink (Just xxx.xx.xx.xxx:x0x0) (Just xxx.xx.xxx.x:xxxxx)
Receive ((:-<-:) x00x) :.: PeerLink (Just xxx.xx.xx.xxx:x0x0) (Just xxx.xx.xxx.x
:xxxxx)
Terminate ::: FusionLink (Just xxx.xx.xxx.x:xxxxx) (Just x00x) (Just x0.xxx.x0x.
x0:xxxxx)
Close :.: PeerLink (Just xxx.xx.xx.xxx:x0x0) (Just xxx.xx.xxx.x:xxxxx)
Close :.: PeerLink (Just xxx.xx.xx.xxx:x00x) (Just x0.xxx.x0x.x0:xxxxx)
Close :.: PeerLink (Just 0.0.0.0:x0x0) (Just xxx.xx.xxx.x:xxxxx)
Watch :^: x00x
PortFusion.exe: Network.Socket.ByteString.recv: failed (Unknown error)
Accept :.: PeerLink (Just xxx.xx.xx.xxx:x0x0) (Just xxx.xx.xxx.x:xxx0x)
Receive ((:-<-:) x00x) :.: PeerLink (Just xxx.xx.xx.xxx:x0x0) (Just xxx.xx.xxx.x
:xxx0x)
Accept :.: PeerLink (Just xxx.xx.xx.xxx:x00x) (Just x0.xxx.x0x.x0:xxxxx)
Establish ::: FusionLink (Just xxx.xx.xxx.x:xxx0x) (Just x00x) (Just x0.xxx.x0x.
x0:xxxxx)
Accept :.: PeerLink (Just xxx.xx.xx.xxx:x0x0) (Just xxx.xx.xxx.x:x0xxx)
Receive ((:-<-:) x00x) :.: PeerLink (Just xxx.xx.xx.xxx:x0x0) (Just xxx.xx.xxx.x
:x0xxx)
Terminate ::: FusionLink (Just xxx.xx.xxx.x:xxx0x) (Just x00x) (Just x0.xxx.x0x.
x0:xxxxx)
Close :.: PeerLink (Just xxx.xx.xx.xxx:x0x0) (Just xxx.xx.xxx.x:xxx0x)
Close :.: PeerLink (Just xxx.xx.xx.xxx:x00x) (Just x0.xxx.x0x.x0:xxxxx)
...

PortFuson on Internal System:
Open :.: PeerLink (Just xxx.0.0.x:xxxx0) (Just xxx.0.0.x:x000)
Open :.: PeerLink (Just x0.xx.xxx.xxx:xxxxx) (Just xxx.xx.xx.xxx:x0x0)
Establish ::: FusionLink (Just xxx.xx.xx.xxx:x0x0) (Just xxxx0) (Just xxx.0.0.x:
x000)
Send ((:-<-:) x00x) :.: PeerLink (Just x0.xx.xxx.xxx:xxxxx) (Just xxx.xx.xx.xxx:
x0x0)
Terminate ::: FusionLink (Just xxx.xx.xx.xxx:x0x0) (Just xxxx0) (Just xxx.0.0.x:
x000)
Close :.: PeerLink (Just x0.xx.xxx.xxx:xxxxx) (Just xxx.xx.xx.xxx:x0x0)
Close :.: PeerLink (Just xxx.0.0.x:xxxx0) (Just xxx.0.0.x:x000)
Close :.: PeerLink (Just 0.0.0.0:xxxxx) (Just xxx.xx.xx.xxx:x0x0)
Network.Socket.ByteString.recv: failed (Unknown error)
Open :.: PeerLink (Just x0.xx.xxx.xxx:xxxxx) (Just xxx.xx.xx.xxx:x0x0)
Send ((:-<-:) x00x) :.: PeerLink (Just x0.xx.xxx.xxx:xxxxx) (Just xxx.xx.xx.xxx:
x0x0)
Open :.: PeerLink (Just x0.xx.xxx.xxx:xxxxx) (Just xxx.xx.xx.xxx:x0x0)
Open :.: PeerLink (Just xxx.0.0.x:xxxxx) (Just xxx.0.0.x:x000)
Send ((:-<-:) x00x) :.: PeerLink (Just x0.xx.xxx.xxx:xxxxx) (Just xxx.xx.xx.xxx:
x0x0)
Establish ::: FusionLink (Just xxx.xx.xx.xxx:x0x0) (Just xxxxx) (Just xxx.0.0.x:
x000)
Terminate ::: FusionLink (Just xxx.xx.xx.xxx:x0x0) (Just xxxxx) (Just xxx.0.0.x:
x000)
Close :.: PeerLink (Just x0.xx.xxx.xxx:xxxxx) (Just xxx.xx.xx.xxx:x0x0)
Close :.: PeerLink (Just xxx.0.0.x:xxxxx) (Just xxx.0.0.x:x000)

Summary:
Port Fusion on DMZ shows - PortFusion.exe: Network.Socket.ByteString.recv: failed (Unknown error)
Port Fusion on Internal System shows - Network.Socket.ByteString.recv: failed (Unknown error)

Are you aware of this issue?

Please hava a look on this. Thanks in advance.
Kind regards

Cannot start PortFusion with Systemd

Some relevant info:

$ systemctl --user cat portfusion  
# /home/yunchih/.config/systemd/user/portfusion.service
[Unit]
Description=Port Fusion

[Service]
ExecStart=/bin/sh -c "exec /home/yunchih/Downloads/PortFusion-Linux-x86-64 ] 11011 ["

[Install]
WantedBy=multi-user.target

$ systemctl --user start portfusion
$ systemctl --user status portfusion
● portfusion.service - Port Fusion
   Loaded: loaded (/home/yunchih/.config/systemd/user/portfusion.service; disabled; vendor preset: enabled)
   Active: inactive (dead)

Apr 15 11:42:11 cow systemd[1717]: Started Port Fusion.

However, the same command can be executed on terminal without problems.
What could the problem be? Any working systemd unit file example for PortFusion?
Thanks!

IPython Notebook tunneling not working

Hi - I was trying to hook up PortFusion with my local IPython notebook (port 8888) which is http+websocket based, and it didn't work.

So i tried Jenkins (http:8080) also on my laptop and it worked. Hence the command line and GCE VM firewall syntax etc should be all correctly configured.

To reproduce the issue:

PortFusion command line on my GCE VM (with port tcp:2000, 8080, 8888 all opened):
./portfusion ] 2000 [

PortFusion on local laptop (8080 for Jenkins CI, change to 8888 for IPython Notebook):
./PortFusion 8080 localhost - 2000 [ 8080

Then:
http://:8080 working and 8888 not working.

I'm sure IPython Notebook uses one port only for both HTTP and WebSocket communication. So just wondering if you have tested WebSocket in general? and if it works? I'll kick off another simpler node.js based websocket app to get it a try soon.

Thanks very much in advance!

cheers
charles

Reverse proxy not working with 1.0.3

Hi,
On host machine HM which is in DMZ network, i fired below command:
PortFusion ] 1080 [

I want to access Port 8000 of machine M1, on M i fired below command:
PortFusion.exe 8000 M - 1080 HM [ 5010

Now when i try to access http://HM>:5010 its not working. please help me out here.

In older release i.e. 0.9.3, it works with following commands:
on HM:
PortFusionHost.exe 1080

on M:
PortFusionClient.exe 1080 HM 5010=localhost:8000

Binary not working on OpenWRT AMD64

I'm trying to run portfusion on an APU3 board (AMD64) and the linux binaries (both static and dynamic) are not working.
Would be cool to have a portfusion package to openwrt it will be very usefoul.
Thanks.

PortFusion 1.2.0: Network.Socket.ByteString.recv: failed (Unknown error)

Hi again,

I've tested the new version (1.2.0) of Port Fusion this week.
Everything works fine the first 1,2 hours, but after some point in time Port Fusion no longer works.
I've written the console output to some text files in order to have some kind of logs.

Here's what I've found interesting.
Output on the (external) system within the DMZ:
CORSIS PortFusion ( ]-[ayabusa 1.2.0 ) (c) 2012 Cetin Sert. All rights reserved. Windows - x86 [Thu Jun 14 07:28:06 2012] Listen :^: (IPv4,1080)
...
...
Accept :.: PeerLink (Just xxx.xx.xx.xxx:xxxx) (Just xx.xxx.xx.xx:xxxxx)
Establish ::: FusionLink (Just xxx.xx.xxx.x:xxxxx) (Just xxxx) (Just xx.xxx.xx.xx:xxxxx)
Accept :.: PeerLink (Just xxx.xx.xx.xxx:xxxx) (Just xxx.xx.xxx.x:xxxxx)
Receive ((:-<-:) xxxx) :.: PeerLink (Just xxx.xx.xx.xxx:xxxx) (Just xxx.xx.xxx.x:xxxxx)
Terminate ::: FusionLink (Just xxx.xx.xxx.x:xxxxx) (Just xxxx) (Just xx.xxx.xx.xx:xxxxx)
Close :.: PeerLink (Just xxx.xx.xx.xxx:xxxx) (Just xxx.xx.xxx.x:xxxxx)
Close :.: PeerLink (Just xxx.xx.xx.xxx:xxxx) (Just xx.xxx.xx.xx:xxxxx)
Accept :.: PeerLink (Just xxx.xx.xx.xxx:xxxx) (Just xx.xxx.xx.xx:xxxxx)
Establish ::: FusionLink (Just xxx.xx.xxx.x:xxxxx) (Just xxxx) (Just xx.xxx.xx.xx:xxxxx)
Accept :.: PeerLink (Just xxx.xx.xx.xxx:xxxx) (Just xxx.xx.xxx.x:xxxxx)
Receive ((:-<-:) xxxx) :.: PeerLink (Just xxx.xx.xx.xxx:xxxx) (Just xxx.xx.xxx.x:xxxxx)
Terminate ::: FusionLink (Just xxx.xx.xxx.x:xxxxx) (Just xxxx) (Just xx.xxx.xx.xx:xxxxx)
Close :.: PeerLink (Just xxx.xx.xx.xxx:xxxx) (Just xxx.xx.xxx.x:xxxxx)
Close :.: PeerLink (Just xxx.xx.xx.xxx:xxxx) (Just xx.xxx.xx.xx:xxxxx)
Accept :.: PeerLink (Just xxx.xx.xx.xxx:xxxx) (Just xx.xxx.xx.xx:xxxx)
Establish ::: FusionLink (Just xxx.xx.xxx.x:xxxxx) (Just xxxx) (Just xx.xxx.xx.xx:xxxx)
Terminate ::: FusionLink (Just xxx.xx.xxx.x:xxxxx) (Just xxxx) (Just xx.xxx.xx.xx:xxxx)
Close :.: PeerLink (Just xxx.xx.xx.xxx:xxxx) (Just xxx.xx.xxx.x:xxxxx)
Close :.: PeerLink (Just xxx.xx.xx.xxx:xxxx) (Just xx.xxx.xx.xx:xxxx)
Watch :^: (IPv6(+4?),5001)
Drop :^: (IPv6(+4?),5001)
Close :.: PeerLink (Just 0.0.0.0:5001) Nothing

I guess the issue is somehow related to the Watch & Drop message on the last three lines. Why it shows IPv6, when we have started PortFusion with (IPv4,1080)?
The output before these lines are fine. Strange is in addition that the last PeerLink has all the "0" in the address.

Here's the output for the internal system:
Open :.: PeerLink (Just xxx.x.x.x:xxxxx) (Just xxx.x.x.x:xxxx)
Establish ::: FusionLink (Just xxx.xx.xx.xxx:xxxx) (Just 63658) (Just xxx.x.x.x:xxxx)
Terminate ::: FusionLink (Just xxx.xx.xx.xxx:xxxx) (Just 63658) (Just xxx.x.x.x:xxxx)
Close :.: PeerLink (Just xx.xx.xxx.xxx:xxxxx) (Just xxx.xx.xx.xxx:xxxx)
Close :.: PeerLink (Just xxx.x.x.x:xxxxx) (Just xxx.x.x.x:xxxx)
Close :.: PeerLink (Just x.x.x.x:xxxxx) (Just xxx.xx.xx.xxx:xxxx)
Network.Socket.ByteString.recv: failed (Unknown error)
Open :.: PeerLink (Just xx.xx.xxx.xxx:xxxxx) (Just xxx.xx.xx.xxx:xxxx)
Send ((:-<-:) xxxx) :.: PeerLink (Just xx.xx.xxx.xxx:xxxxx) (Just xxx.xx.xx.xxx:xxxx)
Close :.: PeerLink (Just x.x.x.x:xxxxx) (Just xxx.xx.xx.xxx:xxxx)
Network.Socket.ByteString.recv: failed (Unknown error)
Open :.: PeerLink (Just xx.xx.xxx.xxx:xxxxx) (Just xxx.xx.xx.xxx:xxxx)
Send ((:-<-:) xxxx) :.: PeerLink (Just xx.xx.xxx.xxx:xxxxx) (Just xxx.xx.xx.xxx:xxxx)
Close :.: PeerLink (Just x.x.x.x:xxxxx) (Just xxx.xx.xx.xxx:xxxx)
Network.Socket.ByteString.recv: failed (Unknown error)
Open :.: PeerLink (Just xx.xx.xxx.xxx:xxxxx) (Just xxx.xx.xx.xxx:xxxx)
Send ((:-<-:) xxxx) :.: PeerLink (Just xx.xx.xxx.xxx:xxxxx) (Just xxx.xx.xx.xxx:xxxx)
Close :.: PeerLink (Just x.x.x.x:xxxxx) (Just xxx.xx.xx.xxx:xxxx)
Network.Socket.ByteString.recv: failed (Unknown error)
Open :.: PeerLink (Just xx.xx.xxx.xxx:xxxxx) (Just xxx.xx.xx.xxx:xxxx)
Send ((:-<-:) xxxx) :.: PeerLink (Just xx.xx.xxx.xxx:xxxxx) (Just xxx.xx.xx.xxx:xxxx)
Close :.: PeerLink (Just x.x.x.x:xxxxx) (Just xxx.xx.xx.xxx:xxxx)
Network.Socket.ByteString.recv: failed (Unknown error)
Open :.: PeerLink (Just xx.xx.xxx.xxx:xxxxx) (Just xxx.xx.xx.xxx:xxxx)
Send ((:-<-:) xxxx) :.: PeerLink (Just xx.xx.xxx.xxx:xxxxx) (Just xxx.xx.xx.xxx:xxxx)
Close :.: PeerLink (Just x.x.x.x:xxxxx) (Just xxx.xx.xx.xxx:xxxx)
Network.Socket.ByteString.recv: failed (Unknown error)
Open :.: PeerLink (Just xx.xx.xxx.xxx:xxxxx) (Just xxx.xx.xx.xxx:xxxx)
Send ((:-<-:) xxxx) :.: PeerLink (Just xx.xx.xxx.xxx:xxxxx) (Just xxx.xx.xx.xxx:xxxx)

Here you find lots of Network.Socket.ByteString.recv: failed messages.

Can you check this issue, please?

Thanks and best regards

Portfusion blocks all TCP connections in windows 10 32 bit professional(my work computer)

After visiting my work computer which sitting behind the company NAT once yesterday, I find my work computer cannot establish any outband TCP connection( from my web browers or trying to use putty) today, and the putty throw the error information saying that no buffer space available. Plus, the web browser throws the error like 103,105.

After I close the Portfusion that has been running since yesterday in my work computer, everything goes back to normal.

I think maybe the Portfusion crammed the TCP buffer?

Can you guys nicely fix this out?

Thanks.

Reverse proxy not working

on DMZ network machine, command used is:
PortFusion ] 1080 [

output -->

CORSIS PortFusion ( ]-[ayabusa 1.0.4 )
(c) 2012 Cetin Set. All rights reserved.

Windows - x86 [Wed May 16 02:02:18 2012]

(zeroCopy,False)
(capabilities,1)
PortFusion.exe: socket: failed (Address family not supported by protocol family
{WSAEAFNOSUPPORT))

Client side:
PortFusion 8000 localhost - 1080 [ 5001

CORSIS PortFusion ( ]-[ayabusa 1.0.4 )

(c) 2012 Cetin Set. All rights reserved.

Windows - x86 [Wed May 16 02:02:18 2012]

(zeroCopy,False)
(capabilities,1)
Silence [HM:1080]
Silence [HM:1080]

On 0.9.3 I fired the following commands (which worked):
DMZ - PortFusionHost.exe 1080
SUP - PortFusionClient.exe 1080 ◆◆◆.◆◆.◆◆.◆◆◆ 5001=localhost:8000

Microsoft tells:
WSAEAFNOSUPPORT
10047
Address family not supported by protocol family.
An address incompatible with the requested protocol was used. All sockets are created with an associated address family (that is, AF_INET for Internet Protocols) and a generic protocol type (that is, SOCK_STREAM). This error is returned if an incorrect protocol is explicitly requested in the socket call, or if an address of the wrong family is used for a socket, for example, in sendto.

Could you please help us here?

cloning of repo not working

hello,

if i do git clone to my computer i get 'gh_pages' branch.

however, if i fork on github then git clone from my fork i have clone of that repo,

regards

john

Would this program help with a connection issue for our app

I have to admit my knowledge is lacking about these technologies but I am trying to determine if this program would help solve our issue. We have a program that runs on our web server and it needs to communicate to an installed program on a user's local computer.

We are able to connect and make it work when the user configures port forwarding to allow our program to connect to his computer inside his LAN. We dont want the user to have access his router manually and configure this port forwarding.

Would this program allow the user to issue a command on their local computer that would set up the forwarding so that he does not have to alter his network settings in the router?

Connection key

Awesome project, please add a connection key for security.

Cant seem to make DMZ case work

Using 1.2.1

I have a similar case as http://serverfault.com/questions/254855/socat-connect-connect-proxy-two-inbound-tcp-connections-to-expose-a-firewalled. The "server" is in my DMZ zone, and I have a TCP-service running in my secure-zone (client-A). People need to connect to my service at client-A, via DMZ (using "server) from the internet (client-B).

Running the following on my client-A machine:
./PortFusion 5000 localhost - 10000 server [ 5000
Running the following on my DMZ "server":
./PortFusion ] 192.168.98.181:10000 [
(192.168.98.181 is an IP on which client-A and client-B can see "server" - this is just a simulation)

As soon as I have just started the two PortFusions above, data starts rapidly flowing in both the console-logs. On client-A I see lots of log-sequences like this (where "the random port", 60391 in this case, is different from log-sequence to log-sequence):

Open :.: PeerLink (Just 192.168.201.89:60391) (Just 192.168.98.181:10000)
Send ((:-<-:) 5000) :.: PeerLink (Just 192.168.201.89:60391) (Just 192.168.98.181:10000)
Open :.: PeerLink (Just [::1]:60392) (Just [::1]:5000)
Establish ::: FusionLink (Just 192.168.98.181:10000) (Just 60392) (Just [::1]:5000)
Terminate ::: FusionLink (Just 192.168.98.181:10000) (Just 60392) (Just [::1]:5000)
Close :.: PeerLink (Just 192.168.201.89:60391) (Just 192.168.98.181:10000)
Close :.: PeerLink (Just [::1]:60392) (Just [::1]:5000)

(192.168.201.89 is the IP of client-A)
On "server", at the same time, I see lots of log-sequences like this:

Accept :.: PeerLink (Just 192.168.98.181:10000) (Just 192.168.3.10:60391)
Receive ((:-<-:) 5000) :.: PeerLink (Just 192.168.98.181:10000) (Just 192.168.3.10:60391)
Close :.: PeerLink (Just 192.168.98.181:10000) (Just 192.168.3.10:60391)

All this, when I have just started the PortFusion processes on client-A and "server". Why are "random ports" involved in this at all?
I do not know where that traffic comes from, but it may my my "Operations department" :-) that is running port-scans or something. Never mind.

Ignoring all this logging, and trying to see if things work as I expect, I now start my tcp-server on client-A
./myTCPserver --port 5000
When I do that, it is clear that lots of connections are made to it and quickly closed again. It seems to match the traffic sketched by the log-sequences of the PortFusion processes.

Also ignoring that, I try to see if I can connect to the service on client-A (192.168.201.89) port 5000 from client-B via "server" (192.168.98.181). Running the following on client-B
telnet 192.168.98.181 5000
But that does not work:

Trying 192.168.98.181...
telnet: Unable to connect to remote host: Connection refused

Do you understand what I am trying to do?
Any idea why it does not work?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.