linksocks 3.0.12__cp311-cp311-win_amd64.whl → 3.0.13__cp311-cp311-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of linksocks might be problematic. Click here for more details.

linksockslib/linksocks.py CHANGED
@@ -2,7 +2,7 @@
2
2
  # python wrapper for package github.com/linksocks/linksocks/linksocks_go within overall package linksockslib
3
3
  # This is what you import to use the package.
4
4
  # File is generated by gopy. Do not edit.
5
- # gopy.EXE build -vm=C:\Users\RUNNER~1\AppData\Local\Temp\linksocks_pyvenv_zqf2yhv2\venv\Scripts\python.exe -output=D:\a\linksocks\linksocks\_bindings\python\linksockslib -name=linksockslib -no-make=true ./linksocks_go
5
+ # gopy.EXE build -vm=C:\Users\RUNNER~1\AppData\Local\Temp\linksocks_pyvenv_5sgky1ki\venv\Scripts\python.exe -output=D:\a\linksocks\linksocks\_bindings\python\linksockslib -name=linksockslib -no-make=true ./linksocks_go
6
6
 
7
7
  # the following is required to enable dlopen to open the _go.so file
8
8
  import os,sys,inspect,collections
@@ -2548,9 +2548,9 @@ class BaseMessage(go.GoClass):
2548
2548
 
2549
2549
  # ---- Structs ---
2550
2550
 
2551
- # Python type for struct linksocks.ConnectResponseMessage
2552
- class ConnectResponseMessage(go.GoClass):
2553
- """ConnectResponseMessage represents a connection response\n"""
2551
+ # Python type for struct linksocks.LinkSocksClient
2552
+ class LinkSocksClient(go.GoClass):
2553
+ """LinkSocksClient represents a SOCKS5 over WebSocket protocol client\n"""
2554
2554
  def __init__(self, *args, **kwargs):
2555
2555
  """
2556
2556
  handle=A Go-side object is always initialized with an explicit handle=arg
@@ -2564,25 +2564,17 @@ class ConnectResponseMessage(go.GoClass):
2564
2564
  self.handle = args[0].handle
2565
2565
  _linksockslib.IncRef(self.handle)
2566
2566
  else:
2567
- self.handle = _linksockslib.linksocks_ConnectResponseMessage_CTor()
2567
+ self.handle = _linksockslib.linksocks_LinkSocksClient_CTor()
2568
2568
  _linksockslib.IncRef(self.handle)
2569
- if 0 < len(args):
2570
- self.Success = args[0]
2571
- if "Success" in kwargs:
2572
- self.Success = kwargs["Success"]
2573
- if 1 < len(args):
2574
- self.Error = args[1]
2575
- if "Error" in kwargs:
2576
- self.Error = kwargs["Error"]
2577
2569
  if 2 < len(args):
2578
- self.ChannelID = args[2]
2579
- if "ChannelID" in kwargs:
2580
- self.ChannelID = kwargs["ChannelID"]
2570
+ self.IsConnected = args[2]
2571
+ if "IsConnected" in kwargs:
2572
+ self.IsConnected = kwargs["IsConnected"]
2581
2573
  def __del__(self):
2582
2574
  _linksockslib.DecRef(self.handle)
2583
2575
  def __str__(self):
2584
2576
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
2585
- sv = 'linksocks.ConnectResponseMessage{'
2577
+ sv = 'linksocks.LinkSocksClient{'
2586
2578
  first = True
2587
2579
  for v in pr:
2588
2580
  if callable(v[1]):
@@ -2595,39 +2587,62 @@ class ConnectResponseMessage(go.GoClass):
2595
2587
  return sv + '}'
2596
2588
  def __repr__(self):
2597
2589
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
2598
- sv = 'linksocks.ConnectResponseMessage ( '
2590
+ sv = 'linksocks.LinkSocksClient ( '
2599
2591
  for v in pr:
2600
2592
  if not callable(v[1]):
2601
2593
  sv += v[0] + '=' + str(v[1]) + ', '
2602
2594
  return sv + ')'
2603
2595
  @property
2604
- def Success(self):
2605
- return _linksockslib.linksocks_ConnectResponseMessage_Success_Get(self.handle)
2606
- @Success.setter
2607
- def Success(self, value):
2608
- if isinstance(value, go.GoClass):
2609
- _linksockslib.linksocks_ConnectResponseMessage_Success_Set(self.handle, value.handle)
2610
- else:
2611
- _linksockslib.linksocks_ConnectResponseMessage_Success_Set(self.handle, value)
2612
- @property
2613
- def Error(self):
2614
- return _linksockslib.linksocks_ConnectResponseMessage_Error_Get(self.handle)
2615
- @Error.setter
2616
- def Error(self, value):
2596
+ def IsConnected(self):
2597
+ return _linksockslib.linksocks_LinkSocksClient_IsConnected_Get(self.handle)
2598
+ @IsConnected.setter
2599
+ def IsConnected(self, value):
2617
2600
  if isinstance(value, go.GoClass):
2618
- _linksockslib.linksocks_ConnectResponseMessage_Error_Set(self.handle, value.handle)
2601
+ _linksockslib.linksocks_LinkSocksClient_IsConnected_Set(self.handle, value.handle)
2619
2602
  else:
2620
- _linksockslib.linksocks_ConnectResponseMessage_Error_Set(self.handle, value)
2621
- @property
2622
- def ChannelID(self):
2623
- return go.uuid_UUID(handle=_linksockslib.linksocks_ConnectResponseMessage_ChannelID_Get(self.handle))
2624
- def GetType(self):
2625
- """GetType() str"""
2626
- return _linksockslib.linksocks_ConnectResponseMessage_GetType(self.handle)
2603
+ _linksockslib.linksocks_LinkSocksClient_IsConnected_Set(self.handle, value)
2604
+ def WaitReady(self, ctx, timeout):
2605
+ """WaitReady(object ctx, long timeout) str
2606
+
2607
+ WaitReady start the client and waits for the client to be ready with optional timeout
2608
+ """
2609
+ return _linksockslib.linksocks_LinkSocksClient_WaitReady(self.handle, ctx.handle, timeout)
2610
+ def Connect(self, ctx):
2611
+ """Connect(object ctx) str
2612
+
2613
+ Connect starts the client operation
2614
+ """
2615
+ return _linksockslib.linksocks_LinkSocksClient_Connect(self.handle, ctx.handle)
2616
+ def Close(self, goRun=False):
2617
+ """Close()
2618
+
2619
+ Close gracefully shuts down the LinkSocksClient
2620
+ """
2621
+ _linksockslib.linksocks_LinkSocksClient_Close(self.handle, goRun)
2622
+ def AddConnector(self, connectorToken):
2623
+ """AddConnector(str connectorToken) str, str
2624
+
2625
+ AddConnector sends a request to add a new connector token and waits for response.
2626
+ This function is only available in reverse proxy mode.
2627
+ """
2628
+ return _linksockslib.linksocks_LinkSocksClient_AddConnector(self.handle, connectorToken)
2629
+ def RemoveConnector(self, connectorToken):
2630
+ """RemoveConnector(str connectorToken) str
2631
+
2632
+ RemoveConnector sends a request to remove a connector token and waits for response.
2633
+ This function is only available in reverse proxy mode.
2634
+ """
2635
+ return _linksockslib.linksocks_LinkSocksClient_RemoveConnector(self.handle, connectorToken)
2636
+ def GetPartnersCount(self):
2637
+ """GetPartnersCount() int
2638
+
2639
+ GetPartnersCount returns the current number of partners
2640
+ """
2641
+ return _linksockslib.linksocks_LinkSocksClient_GetPartnersCount(self.handle)
2627
2642
 
2628
- # Python type for struct linksocks.ConnectorResponseMessage
2629
- class ConnectorResponseMessage(go.GoClass):
2630
- """ConnectorResponseMessage represents a connector management response\n"""
2643
+ # Python type for struct linksocks.Relay
2644
+ class Relay(go.GoClass):
2645
+ """Relay handles stream transport between SOCKS5 and WebSocket\n"""
2631
2646
  def __init__(self, *args, **kwargs):
2632
2647
  """
2633
2648
  handle=A Go-side object is always initialized with an explicit handle=arg
@@ -2641,29 +2656,13 @@ class ConnectorResponseMessage(go.GoClass):
2641
2656
  self.handle = args[0].handle
2642
2657
  _linksockslib.IncRef(self.handle)
2643
2658
  else:
2644
- self.handle = _linksockslib.linksocks_ConnectorResponseMessage_CTor()
2659
+ self.handle = _linksockslib.linksocks_Relay_CTor()
2645
2660
  _linksockslib.IncRef(self.handle)
2646
- if 0 < len(args):
2647
- self.Success = args[0]
2648
- if "Success" in kwargs:
2649
- self.Success = kwargs["Success"]
2650
- if 1 < len(args):
2651
- self.Error = args[1]
2652
- if "Error" in kwargs:
2653
- self.Error = kwargs["Error"]
2654
- if 2 < len(args):
2655
- self.ChannelID = args[2]
2656
- if "ChannelID" in kwargs:
2657
- self.ChannelID = kwargs["ChannelID"]
2658
- if 3 < len(args):
2659
- self.ConnectorToken = args[3]
2660
- if "ConnectorToken" in kwargs:
2661
- self.ConnectorToken = kwargs["ConnectorToken"]
2662
2661
  def __del__(self):
2663
2662
  _linksockslib.DecRef(self.handle)
2664
2663
  def __str__(self):
2665
2664
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
2666
- sv = 'linksocks.ConnectorResponseMessage{'
2665
+ sv = 'linksocks.Relay{'
2667
2666
  first = True
2668
2667
  for v in pr:
2669
2668
  if callable(v[1]):
@@ -2676,48 +2675,81 @@ class ConnectorResponseMessage(go.GoClass):
2676
2675
  return sv + '}'
2677
2676
  def __repr__(self):
2678
2677
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
2679
- sv = 'linksocks.ConnectorResponseMessage ( '
2678
+ sv = 'linksocks.Relay ( '
2680
2679
  for v in pr:
2681
2680
  if not callable(v[1]):
2682
2681
  sv += v[0] + '=' + str(v[1]) + ', '
2683
2682
  return sv + ')'
2684
- @property
2685
- def Success(self):
2686
- return _linksockslib.linksocks_ConnectorResponseMessage_Success_Get(self.handle)
2687
- @Success.setter
2688
- def Success(self, value):
2689
- if isinstance(value, go.GoClass):
2690
- _linksockslib.linksocks_ConnectorResponseMessage_Success_Set(self.handle, value.handle)
2691
- else:
2692
- _linksockslib.linksocks_ConnectorResponseMessage_Success_Set(self.handle, value)
2693
- @property
2694
- def Error(self):
2695
- return _linksockslib.linksocks_ConnectorResponseMessage_Error_Get(self.handle)
2696
- @Error.setter
2697
- def Error(self, value):
2698
- if isinstance(value, go.GoClass):
2699
- _linksockslib.linksocks_ConnectorResponseMessage_Error_Set(self.handle, value.handle)
2700
- else:
2701
- _linksockslib.linksocks_ConnectorResponseMessage_Error_Set(self.handle, value)
2702
- @property
2703
- def ChannelID(self):
2704
- return go.uuid_UUID(handle=_linksockslib.linksocks_ConnectorResponseMessage_ChannelID_Get(self.handle))
2705
- @property
2706
- def ConnectorToken(self):
2707
- return _linksockslib.linksocks_ConnectorResponseMessage_ConnectorToken_Get(self.handle)
2708
- @ConnectorToken.setter
2709
- def ConnectorToken(self, value):
2710
- if isinstance(value, go.GoClass):
2711
- _linksockslib.linksocks_ConnectorResponseMessage_ConnectorToken_Set(self.handle, value.handle)
2712
- else:
2713
- _linksockslib.linksocks_ConnectorResponseMessage_ConnectorToken_Set(self.handle, value)
2714
- def GetType(self):
2715
- """GetType() str"""
2716
- return _linksockslib.linksocks_ConnectorResponseMessage_GetType(self.handle)
2683
+ def RefuseSocksRequest(self, conn, reason):
2684
+ """RefuseSocksRequest(object conn, int reason) str
2685
+
2686
+ RefuseSocksRequest refuses a SOCKS5 client request with the specified reason
2687
+ """
2688
+ return _linksockslib.linksocks_Relay_RefuseSocksRequest(self.handle, conn.handle, reason)
2689
+ def HandleNetworkConnection(self, ctx, ws, request):
2690
+ """HandleNetworkConnection(object ctx, object ws, object request) str
2691
+
2692
+ HandleNetworkConnection handles network connection based on protocol type
2693
+ """
2694
+ return _linksockslib.linksocks_Relay_HandleNetworkConnection(self.handle, ctx.handle, ws.handle, request.handle)
2695
+ def HandleTCPConnection(self, ctx, ws, request):
2696
+ """HandleTCPConnection(object ctx, object ws, object request) str
2697
+
2698
+ HandleTCPConnection handles TCP network connection
2699
+ """
2700
+ return _linksockslib.linksocks_Relay_HandleTCPConnection(self.handle, ctx.handle, ws.handle, request.handle)
2701
+ def HandleUDPConnection(self, ctx, ws, request):
2702
+ """HandleUDPConnection(object ctx, object ws, object request) str
2703
+
2704
+ HandleUDPConnection handles UDP network connection
2705
+ """
2706
+ return _linksockslib.linksocks_Relay_HandleUDPConnection(self.handle, ctx.handle, ws.handle, request.handle)
2707
+ def HandleSocksRequest(self, ctx, ws, socksConn, socksUsername, socksPassword):
2708
+ """HandleSocksRequest(object ctx, object ws, object socksConn, str socksUsername, str socksPassword) str
2709
+
2710
+ HandleSocksRequest handles incoming SOCKS5 client request
2711
+ """
2712
+ return _linksockslib.linksocks_Relay_HandleSocksRequest(self.handle, ctx.handle, ws.handle, socksConn.handle, socksUsername, socksPassword)
2713
+ def HandleRemoteTCPForward(self, ctx, ws, remoteConn, channelID):
2714
+ """HandleRemoteTCPForward(object ctx, object ws, object remoteConn, []int channelID) str
2715
+
2716
+ HandleRemoteTCPForward handles remote TCP forwarding
2717
+ """
2718
+ return _linksockslib.linksocks_Relay_HandleRemoteTCPForward(self.handle, ctx.handle, ws.handle, remoteConn.handle, channelID.handle)
2719
+ def HandleRemoteUDPForward(self, ctx, ws, udpConn, channelID):
2720
+ """HandleRemoteUDPForward(object ctx, object ws, object udpConn, []int channelID) str
2721
+
2722
+ HandleRemoteUDPForward handles remote UDP forwarding
2723
+ """
2724
+ return _linksockslib.linksocks_Relay_HandleRemoteUDPForward(self.handle, ctx.handle, ws.handle, udpConn.handle, channelID.handle)
2725
+ def HandleSocksTCPForward(self, ctx, ws, socksConn, channelID):
2726
+ """HandleSocksTCPForward(object ctx, object ws, object socksConn, []int channelID) str
2727
+
2728
+ HandleSocksTCPForward handles TCP forwarding between SOCKS client and WebSocket
2729
+ """
2730
+ return _linksockslib.linksocks_Relay_HandleSocksTCPForward(self.handle, ctx.handle, ws.handle, socksConn.handle, channelID.handle)
2731
+ def HandleSocksUDPForward(self, ctx, ws, udpConn, socksConn, channelID):
2732
+ """HandleSocksUDPForward(object ctx, object ws, object udpConn, object socksConn, []int channelID) str
2733
+
2734
+ HandleSocksUDPForward handles SOCKS5 UDP forwarding
2735
+ """
2736
+ return _linksockslib.linksocks_Relay_HandleSocksUDPForward(self.handle, ctx.handle, ws.handle, udpConn.handle, socksConn.handle, channelID.handle)
2737
+ def Close(self, goRun=False):
2738
+ """Close()
2739
+
2740
+ Close gracefully shuts down the Relay
2741
+ """
2742
+ _linksockslib.linksocks_Relay_Close(self.handle, goRun)
2743
+ def SetConnectionSuccess(self, channelID, goRun=False):
2744
+ """SetConnectionSuccess([]int channelID)
2745
+
2746
+ SetConnectionSuccess sets the connection success status for a channel
2747
+ """
2748
+ _linksockslib.linksocks_Relay_SetConnectionSuccess(self.handle, channelID.handle, goRun)
2717
2749
 
2718
- # Python type for struct linksocks.ContextWithCancel
2719
- class ContextWithCancel(go.GoClass):
2720
- """ContextWithCancel wraps context and cancel function for Python bindings\n"""
2750
+ # Python type for struct linksocks.AuthMessage
2751
+ class AuthMessage(go.GoClass):
2752
+ """AuthMessage represents an authentication request\n"""
2721
2753
  def __init__(self, *args, **kwargs):
2722
2754
  """
2723
2755
  handle=A Go-side object is always initialized with an explicit handle=arg
@@ -2731,13 +2763,25 @@ class ContextWithCancel(go.GoClass):
2731
2763
  self.handle = args[0].handle
2732
2764
  _linksockslib.IncRef(self.handle)
2733
2765
  else:
2734
- self.handle = _linksockslib.linksocks_ContextWithCancel_CTor()
2766
+ self.handle = _linksockslib.linksocks_AuthMessage_CTor()
2735
2767
  _linksockslib.IncRef(self.handle)
2768
+ if 0 < len(args):
2769
+ self.Token = args[0]
2770
+ if "Token" in kwargs:
2771
+ self.Token = kwargs["Token"]
2772
+ if 1 < len(args):
2773
+ self.Reverse = args[1]
2774
+ if "Reverse" in kwargs:
2775
+ self.Reverse = kwargs["Reverse"]
2776
+ if 2 < len(args):
2777
+ self.Instance = args[2]
2778
+ if "Instance" in kwargs:
2779
+ self.Instance = kwargs["Instance"]
2736
2780
  def __del__(self):
2737
2781
  _linksockslib.DecRef(self.handle)
2738
2782
  def __str__(self):
2739
2783
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
2740
- sv = 'linksocks.ContextWithCancel{'
2784
+ sv = 'linksocks.AuthMessage{'
2741
2785
  first = True
2742
2786
  for v in pr:
2743
2787
  if callable(v[1]):
@@ -2750,27 +2794,39 @@ class ContextWithCancel(go.GoClass):
2750
2794
  return sv + '}'
2751
2795
  def __repr__(self):
2752
2796
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
2753
- sv = 'linksocks.ContextWithCancel ( '
2797
+ sv = 'linksocks.AuthMessage ( '
2754
2798
  for v in pr:
2755
2799
  if not callable(v[1]):
2756
2800
  sv += v[0] + '=' + str(v[1]) + ', '
2757
2801
  return sv + ')'
2758
- def Cancel(self, goRun=False):
2759
- """Cancel()
2760
-
2761
- Cancel calls the cancel function to cancel the context
2762
- """
2763
- _linksockslib.linksocks_ContextWithCancel_Cancel(self.handle, goRun)
2764
- def Context(self):
2765
- """Context() object
2766
-
2767
- Context returns the underlying context.Context
2768
- """
2769
- return go.context_Context(handle=_linksockslib.linksocks_ContextWithCancel_Context(self.handle))
2770
-
2771
- # Python type for struct linksocks.PortPool
2772
- class PortPool(go.GoClass):
2773
- """PortPool is a thread-safe port pool for managing available network ports\n"""
2802
+ @property
2803
+ def Token(self):
2804
+ return _linksockslib.linksocks_AuthMessage_Token_Get(self.handle)
2805
+ @Token.setter
2806
+ def Token(self, value):
2807
+ if isinstance(value, go.GoClass):
2808
+ _linksockslib.linksocks_AuthMessage_Token_Set(self.handle, value.handle)
2809
+ else:
2810
+ _linksockslib.linksocks_AuthMessage_Token_Set(self.handle, value)
2811
+ @property
2812
+ def Reverse(self):
2813
+ return _linksockslib.linksocks_AuthMessage_Reverse_Get(self.handle)
2814
+ @Reverse.setter
2815
+ def Reverse(self, value):
2816
+ if isinstance(value, go.GoClass):
2817
+ _linksockslib.linksocks_AuthMessage_Reverse_Set(self.handle, value.handle)
2818
+ else:
2819
+ _linksockslib.linksocks_AuthMessage_Reverse_Set(self.handle, value)
2820
+ @property
2821
+ def Instance(self):
2822
+ return go.uuid_UUID(handle=_linksockslib.linksocks_AuthMessage_Instance_Get(self.handle))
2823
+ def GetType(self):
2824
+ """GetType() str"""
2825
+ return _linksockslib.linksocks_AuthMessage_GetType(self.handle)
2826
+
2827
+ # Python type for struct linksocks.ConnectorMessage
2828
+ class ConnectorMessage(go.GoClass):
2829
+ """ConnectorMessage represents a connector management command from reverse client\n"""
2774
2830
  def __init__(self, *args, **kwargs):
2775
2831
  """
2776
2832
  handle=A Go-side object is always initialized with an explicit handle=arg
@@ -2784,13 +2840,25 @@ class PortPool(go.GoClass):
2784
2840
  self.handle = args[0].handle
2785
2841
  _linksockslib.IncRef(self.handle)
2786
2842
  else:
2787
- self.handle = _linksockslib.linksocks_PortPool_CTor()
2843
+ self.handle = _linksockslib.linksocks_ConnectorMessage_CTor()
2788
2844
  _linksockslib.IncRef(self.handle)
2845
+ if 0 < len(args):
2846
+ self.ChannelID = args[0]
2847
+ if "ChannelID" in kwargs:
2848
+ self.ChannelID = kwargs["ChannelID"]
2849
+ if 1 < len(args):
2850
+ self.ConnectorToken = args[1]
2851
+ if "ConnectorToken" in kwargs:
2852
+ self.ConnectorToken = kwargs["ConnectorToken"]
2853
+ if 2 < len(args):
2854
+ self.Operation = args[2]
2855
+ if "Operation" in kwargs:
2856
+ self.Operation = kwargs["Operation"]
2789
2857
  def __del__(self):
2790
2858
  _linksockslib.DecRef(self.handle)
2791
2859
  def __str__(self):
2792
2860
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
2793
- sv = 'linksocks.PortPool{'
2861
+ sv = 'linksocks.ConnectorMessage{'
2794
2862
  first = True
2795
2863
  for v in pr:
2796
2864
  if callable(v[1]):
@@ -2803,28 +2871,39 @@ class PortPool(go.GoClass):
2803
2871
  return sv + '}'
2804
2872
  def __repr__(self):
2805
2873
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
2806
- sv = 'linksocks.PortPool ( '
2874
+ sv = 'linksocks.ConnectorMessage ( '
2807
2875
  for v in pr:
2808
2876
  if not callable(v[1]):
2809
2877
  sv += v[0] + '=' + str(v[1]) + ', '
2810
2878
  return sv + ')'
2811
- def Get(self, requestedPort):
2812
- """Get(int requestedPort) int
2813
-
2814
- Get retrieves an available port from the pool
2815
- If a specific port is requested, it will try to allocate that port
2816
- """
2817
- return _linksockslib.linksocks_PortPool_Get(self.handle, requestedPort)
2818
- def Put(self, port, goRun=False):
2819
- """Put(int port)
2820
-
2821
- Put returns a port back to the pool
2822
- """
2823
- _linksockslib.linksocks_PortPool_Put(self.handle, port, goRun)
2879
+ @property
2880
+ def ChannelID(self):
2881
+ return go.uuid_UUID(handle=_linksockslib.linksocks_ConnectorMessage_ChannelID_Get(self.handle))
2882
+ @property
2883
+ def ConnectorToken(self):
2884
+ return _linksockslib.linksocks_ConnectorMessage_ConnectorToken_Get(self.handle)
2885
+ @ConnectorToken.setter
2886
+ def ConnectorToken(self, value):
2887
+ if isinstance(value, go.GoClass):
2888
+ _linksockslib.linksocks_ConnectorMessage_ConnectorToken_Set(self.handle, value.handle)
2889
+ else:
2890
+ _linksockslib.linksocks_ConnectorMessage_ConnectorToken_Set(self.handle, value)
2891
+ @property
2892
+ def Operation(self):
2893
+ return _linksockslib.linksocks_ConnectorMessage_Operation_Get(self.handle)
2894
+ @Operation.setter
2895
+ def Operation(self, value):
2896
+ if isinstance(value, go.GoClass):
2897
+ _linksockslib.linksocks_ConnectorMessage_Operation_Set(self.handle, value.handle)
2898
+ else:
2899
+ _linksockslib.linksocks_ConnectorMessage_Operation_Set(self.handle, value)
2900
+ def GetType(self):
2901
+ """GetType() str"""
2902
+ return _linksockslib.linksocks_ConnectorMessage_GetType(self.handle)
2824
2903
 
2825
- # Python type for struct linksocks.ReverseTokenResult
2826
- class ReverseTokenResult(go.GoClass):
2827
- """ReverseTokenResult represents the result of adding a reverse token\n"""
2904
+ # Python type for struct linksocks.DynamicForwarder
2905
+ class DynamicForwarder(go.GoClass):
2906
+ """DynamicForwarder handles dynamic batching and sending of network data\n"""
2828
2907
  def __init__(self, *args, **kwargs):
2829
2908
  """
2830
2909
  handle=A Go-side object is always initialized with an explicit handle=arg
@@ -2838,21 +2917,13 @@ class ReverseTokenResult(go.GoClass):
2838
2917
  self.handle = args[0].handle
2839
2918
  _linksockslib.IncRef(self.handle)
2840
2919
  else:
2841
- self.handle = _linksockslib.linksocks_ReverseTokenResult_CTor()
2920
+ self.handle = _linksockslib.linksocks_DynamicForwarder_CTor()
2842
2921
  _linksockslib.IncRef(self.handle)
2843
- if 0 < len(args):
2844
- self.Token = args[0]
2845
- if "Token" in kwargs:
2846
- self.Token = kwargs["Token"]
2847
- if 1 < len(args):
2848
- self.Port = args[1]
2849
- if "Port" in kwargs:
2850
- self.Port = kwargs["Port"]
2851
2922
  def __del__(self):
2852
2923
  _linksockslib.DecRef(self.handle)
2853
2924
  def __str__(self):
2854
2925
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
2855
- sv = 'linksocks.ReverseTokenResult{'
2926
+ sv = 'linksocks.DynamicForwarder{'
2856
2927
  first = True
2857
2928
  for v in pr:
2858
2929
  if callable(v[1]):
@@ -2865,33 +2936,33 @@ class ReverseTokenResult(go.GoClass):
2865
2936
  return sv + '}'
2866
2937
  def __repr__(self):
2867
2938
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
2868
- sv = 'linksocks.ReverseTokenResult ( '
2939
+ sv = 'linksocks.DynamicForwarder ( '
2869
2940
  for v in pr:
2870
2941
  if not callable(v[1]):
2871
2942
  sv += v[0] + '=' + str(v[1]) + ', '
2872
2943
  return sv + ')'
2873
- @property
2874
- def Token(self):
2875
- return _linksockslib.linksocks_ReverseTokenResult_Token_Get(self.handle)
2876
- @Token.setter
2877
- def Token(self, value):
2878
- if isinstance(value, go.GoClass):
2879
- _linksockslib.linksocks_ReverseTokenResult_Token_Set(self.handle, value.handle)
2880
- else:
2881
- _linksockslib.linksocks_ReverseTokenResult_Token_Set(self.handle, value)
2882
- @property
2883
- def Port(self):
2884
- return _linksockslib.linksocks_ReverseTokenResult_Port_Get(self.handle)
2885
- @Port.setter
2886
- def Port(self, value):
2887
- if isinstance(value, go.GoClass):
2888
- _linksockslib.linksocks_ReverseTokenResult_Port_Set(self.handle, value.handle)
2889
- else:
2890
- _linksockslib.linksocks_ReverseTokenResult_Port_Set(self.handle, value)
2944
+ def ProcessReads(self, conn, goRun=False):
2945
+ """ProcessReads(object conn)
2946
+
2947
+ ProcessReads handles reading from a network connection and forwarding to WebSocket with dynamic batching
2948
+ """
2949
+ _linksockslib.linksocks_DynamicForwarder_ProcessReads(self.handle, conn.handle, goRun)
2950
+ def ProcessReadsImmediate(self, conn, goRun=False):
2951
+ """ProcessReadsImmediate(object conn)
2952
+
2953
+ processReadsImmediate handles reading directly without batching
2954
+ """
2955
+ _linksockslib.linksocks_DynamicForwarder_ProcessReadsImmediate(self.handle, conn.handle, goRun)
2956
+ def ProcessUDPReads(self, conn, goRun=False):
2957
+ """ProcessUDPReads(object conn)
2958
+
2959
+ ProcessUDPReads handles reading from a UDP connection with appropriate metadata
2960
+ """
2961
+ _linksockslib.linksocks_DynamicForwarder_ProcessUDPReads(self.handle, conn.handle, goRun)
2891
2962
 
2892
- # Python type for struct linksocks.AuthResponseMessage
2893
- class AuthResponseMessage(go.GoClass):
2894
- """AuthResponseMessage represents an authentication response\n"""
2963
+ # Python type for struct linksocks.LinkSocksServer
2964
+ class LinkSocksServer(go.GoClass):
2965
+ """LinkSocksServer represents a SOCKS5 over WebSocket protocol server\n"""
2895
2966
  def __init__(self, *args, **kwargs):
2896
2967
  """
2897
2968
  handle=A Go-side object is always initialized with an explicit handle=arg
@@ -2905,21 +2976,13 @@ class AuthResponseMessage(go.GoClass):
2905
2976
  self.handle = args[0].handle
2906
2977
  _linksockslib.IncRef(self.handle)
2907
2978
  else:
2908
- self.handle = _linksockslib.linksocks_AuthResponseMessage_CTor()
2979
+ self.handle = _linksockslib.linksocks_LinkSocksServer_CTor()
2909
2980
  _linksockslib.IncRef(self.handle)
2910
- if 0 < len(args):
2911
- self.Success = args[0]
2912
- if "Success" in kwargs:
2913
- self.Success = kwargs["Success"]
2914
- if 1 < len(args):
2915
- self.Error = args[1]
2916
- if "Error" in kwargs:
2917
- self.Error = kwargs["Error"]
2918
2981
  def __del__(self):
2919
2982
  _linksockslib.DecRef(self.handle)
2920
2983
  def __str__(self):
2921
2984
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
2922
- sv = 'linksocks.AuthResponseMessage{'
2985
+ sv = 'linksocks.LinkSocksServer{'
2923
2986
  first = True
2924
2987
  for v in pr:
2925
2988
  if callable(v[1]):
@@ -2932,36 +2995,75 @@ class AuthResponseMessage(go.GoClass):
2932
2995
  return sv + '}'
2933
2996
  def __repr__(self):
2934
2997
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
2935
- sv = 'linksocks.AuthResponseMessage ( '
2998
+ sv = 'linksocks.LinkSocksServer ( '
2936
2999
  for v in pr:
2937
3000
  if not callable(v[1]):
2938
3001
  sv += v[0] + '=' + str(v[1]) + ', '
2939
3002
  return sv + ')'
2940
- @property
2941
- def Success(self):
2942
- return _linksockslib.linksocks_AuthResponseMessage_Success_Get(self.handle)
2943
- @Success.setter
2944
- def Success(self, value):
2945
- if isinstance(value, go.GoClass):
2946
- _linksockslib.linksocks_AuthResponseMessage_Success_Set(self.handle, value.handle)
2947
- else:
2948
- _linksockslib.linksocks_AuthResponseMessage_Success_Set(self.handle, value)
2949
- @property
2950
- def Error(self):
2951
- return _linksockslib.linksocks_AuthResponseMessage_Error_Get(self.handle)
2952
- @Error.setter
2953
- def Error(self, value):
2954
- if isinstance(value, go.GoClass):
2955
- _linksockslib.linksocks_AuthResponseMessage_Error_Set(self.handle, value.handle)
2956
- else:
2957
- _linksockslib.linksocks_AuthResponseMessage_Error_Set(self.handle, value)
2958
- def GetType(self):
2959
- """GetType() str"""
2960
- return _linksockslib.linksocks_AuthResponseMessage_GetType(self.handle)
3003
+ def AddReverseToken(self, opts):
3004
+ """AddReverseToken(object opts) object, str
3005
+
3006
+ AddReverseToken adds a new token for reverse socks and assigns a port
3007
+ """
3008
+ return ReverseTokenResult(handle=_linksockslib.linksocks_LinkSocksServer_AddReverseToken(self.handle, opts.handle))
3009
+ def AddForwardToken(self, token):
3010
+ """AddForwardToken(str token) str, str
3011
+
3012
+ AddForwardToken adds a new token for forward socks proxy
3013
+ """
3014
+ return _linksockslib.linksocks_LinkSocksServer_AddForwardToken(self.handle, token)
3015
+ def AddConnectorToken(self, connectorToken, reverseToken):
3016
+ """AddConnectorToken(str connectorToken, str reverseToken) str, str
3017
+
3018
+ AddConnectorToken adds a new connector token that forwards requests to a reverse token
3019
+ """
3020
+ return _linksockslib.linksocks_LinkSocksServer_AddConnectorToken(self.handle, connectorToken, reverseToken)
3021
+ def RemoveToken(self, token):
3022
+ """RemoveToken(str token) bool
3023
+
3024
+ RemoveToken removes a token and disconnects all its clients
3025
+ """
3026
+ return _linksockslib.linksocks_LinkSocksServer_RemoveToken(self.handle, token)
3027
+ def Serve(self, ctx):
3028
+ """Serve(object ctx) str
3029
+
3030
+ Serve starts the WebSocket server and waits for clients
3031
+ """
3032
+ return _linksockslib.linksocks_LinkSocksServer_Serve(self.handle, ctx.handle)
3033
+ def WaitReady(self, ctx, timeout):
3034
+ """WaitReady(object ctx, long timeout) str
3035
+
3036
+ WaitReady starts the server and waits for the server to be ready with optional timeout
3037
+ """
3038
+ return _linksockslib.linksocks_LinkSocksServer_WaitReady(self.handle, ctx.handle, timeout)
3039
+ def Close(self, goRun=False):
3040
+ """Close()
3041
+
3042
+ Close gracefully shuts down the LinkSocksServer
3043
+ """
3044
+ _linksockslib.linksocks_LinkSocksServer_Close(self.handle, goRun)
3045
+ def GetClientCount(self):
3046
+ """GetClientCount() int
3047
+
3048
+ GetClientCount returns the total number of connected clients
3049
+ """
3050
+ return _linksockslib.linksocks_LinkSocksServer_GetClientCount(self.handle)
3051
+ def HasClients(self):
3052
+ """HasClients() bool
3053
+
3054
+ HasClients returns true if there are any connected clients
3055
+ """
3056
+ return _linksockslib.linksocks_LinkSocksServer_HasClients(self.handle)
3057
+ def GetTokenClientCount(self, token):
3058
+ """GetTokenClientCount(str token) int
3059
+
3060
+ GetTokenClientCount counts clients connected for a given token
3061
+ """
3062
+ return _linksockslib.linksocks_LinkSocksServer_GetTokenClientCount(self.handle, token)
2961
3063
 
2962
- # Python type for struct linksocks.ClientOption
2963
- class ClientOption(go.GoClass):
2964
- """ClientOption represents configuration options for LinkSocksClient\n"""
3064
+ # Python type for struct linksocks.LogMessage
3065
+ class LogMessage(go.GoClass):
3066
+ """LogMessage represents a log message from server to client\n"""
2965
3067
  def __init__(self, *args, **kwargs):
2966
3068
  """
2967
3069
  handle=A Go-side object is always initialized with an explicit handle=arg
@@ -2975,12 +3077,175 @@ class ClientOption(go.GoClass):
2975
3077
  self.handle = args[0].handle
2976
3078
  _linksockslib.IncRef(self.handle)
2977
3079
  else:
2978
- self.handle = _linksockslib.linksocks_ClientOption_CTor()
3080
+ self.handle = _linksockslib.linksocks_LogMessage_CTor()
2979
3081
  _linksockslib.IncRef(self.handle)
2980
3082
  if 0 < len(args):
2981
- self.WSURL = args[0]
2982
- if "WSURL" in kwargs:
2983
- self.WSURL = kwargs["WSURL"]
3083
+ self.Level = args[0]
3084
+ if "Level" in kwargs:
3085
+ self.Level = kwargs["Level"]
3086
+ if 1 < len(args):
3087
+ self.Msg = args[1]
3088
+ if "Msg" in kwargs:
3089
+ self.Msg = kwargs["Msg"]
3090
+ def __del__(self):
3091
+ _linksockslib.DecRef(self.handle)
3092
+ def __str__(self):
3093
+ pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
3094
+ sv = 'linksocks.LogMessage{'
3095
+ first = True
3096
+ for v in pr:
3097
+ if callable(v[1]):
3098
+ continue
3099
+ if first:
3100
+ first = False
3101
+ else:
3102
+ sv += ', '
3103
+ sv += v[0] + '=' + str(v[1])
3104
+ return sv + '}'
3105
+ def __repr__(self):
3106
+ pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
3107
+ sv = 'linksocks.LogMessage ( '
3108
+ for v in pr:
3109
+ if not callable(v[1]):
3110
+ sv += v[0] + '=' + str(v[1]) + ', '
3111
+ return sv + ')'
3112
+ @property
3113
+ def Level(self):
3114
+ return _linksockslib.linksocks_LogMessage_Level_Get(self.handle)
3115
+ @Level.setter
3116
+ def Level(self, value):
3117
+ if isinstance(value, go.GoClass):
3118
+ _linksockslib.linksocks_LogMessage_Level_Set(self.handle, value.handle)
3119
+ else:
3120
+ _linksockslib.linksocks_LogMessage_Level_Set(self.handle, value)
3121
+ @property
3122
+ def Msg(self):
3123
+ return _linksockslib.linksocks_LogMessage_Msg_Get(self.handle)
3124
+ @Msg.setter
3125
+ def Msg(self, value):
3126
+ if isinstance(value, go.GoClass):
3127
+ _linksockslib.linksocks_LogMessage_Msg_Set(self.handle, value.handle)
3128
+ else:
3129
+ _linksockslib.linksocks_LogMessage_Msg_Set(self.handle, value)
3130
+ def GetType(self):
3131
+ """GetType() str"""
3132
+ return _linksockslib.linksocks_LogMessage_GetType(self.handle)
3133
+
3134
+ # Python type for struct linksocks.TokenResponse
3135
+ class TokenResponse(go.GoClass):
3136
+ """TokenResponse represents the response for token operations\n"""
3137
+ def __init__(self, *args, **kwargs):
3138
+ """
3139
+ handle=A Go-side object is always initialized with an explicit handle=arg
3140
+ otherwise parameters can be unnamed in order of field names or named fields
3141
+ in which case a new Go object is constructed first
3142
+ """
3143
+ if len(kwargs) == 1 and 'handle' in kwargs:
3144
+ self.handle = kwargs['handle']
3145
+ _linksockslib.IncRef(self.handle)
3146
+ elif len(args) == 1 and isinstance(args[0], go.GoClass):
3147
+ self.handle = args[0].handle
3148
+ _linksockslib.IncRef(self.handle)
3149
+ else:
3150
+ self.handle = _linksockslib.linksocks_TokenResponse_CTor()
3151
+ _linksockslib.IncRef(self.handle)
3152
+ if 0 < len(args):
3153
+ self.Success = args[0]
3154
+ if "Success" in kwargs:
3155
+ self.Success = kwargs["Success"]
3156
+ if 1 < len(args):
3157
+ self.Token = args[1]
3158
+ if "Token" in kwargs:
3159
+ self.Token = kwargs["Token"]
3160
+ if 2 < len(args):
3161
+ self.Port = args[2]
3162
+ if "Port" in kwargs:
3163
+ self.Port = kwargs["Port"]
3164
+ if 3 < len(args):
3165
+ self.Error = args[3]
3166
+ if "Error" in kwargs:
3167
+ self.Error = kwargs["Error"]
3168
+ def __del__(self):
3169
+ _linksockslib.DecRef(self.handle)
3170
+ def __str__(self):
3171
+ pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
3172
+ sv = 'linksocks.TokenResponse{'
3173
+ first = True
3174
+ for v in pr:
3175
+ if callable(v[1]):
3176
+ continue
3177
+ if first:
3178
+ first = False
3179
+ else:
3180
+ sv += ', '
3181
+ sv += v[0] + '=' + str(v[1])
3182
+ return sv + '}'
3183
+ def __repr__(self):
3184
+ pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
3185
+ sv = 'linksocks.TokenResponse ( '
3186
+ for v in pr:
3187
+ if not callable(v[1]):
3188
+ sv += v[0] + '=' + str(v[1]) + ', '
3189
+ return sv + ')'
3190
+ @property
3191
+ def Success(self):
3192
+ return _linksockslib.linksocks_TokenResponse_Success_Get(self.handle)
3193
+ @Success.setter
3194
+ def Success(self, value):
3195
+ if isinstance(value, go.GoClass):
3196
+ _linksockslib.linksocks_TokenResponse_Success_Set(self.handle, value.handle)
3197
+ else:
3198
+ _linksockslib.linksocks_TokenResponse_Success_Set(self.handle, value)
3199
+ @property
3200
+ def Token(self):
3201
+ return _linksockslib.linksocks_TokenResponse_Token_Get(self.handle)
3202
+ @Token.setter
3203
+ def Token(self, value):
3204
+ if isinstance(value, go.GoClass):
3205
+ _linksockslib.linksocks_TokenResponse_Token_Set(self.handle, value.handle)
3206
+ else:
3207
+ _linksockslib.linksocks_TokenResponse_Token_Set(self.handle, value)
3208
+ @property
3209
+ def Port(self):
3210
+ return _linksockslib.linksocks_TokenResponse_Port_Get(self.handle)
3211
+ @Port.setter
3212
+ def Port(self, value):
3213
+ if isinstance(value, go.GoClass):
3214
+ _linksockslib.linksocks_TokenResponse_Port_Set(self.handle, value.handle)
3215
+ else:
3216
+ _linksockslib.linksocks_TokenResponse_Port_Set(self.handle, value)
3217
+ @property
3218
+ def Error(self):
3219
+ return _linksockslib.linksocks_TokenResponse_Error_Get(self.handle)
3220
+ @Error.setter
3221
+ def Error(self, value):
3222
+ if isinstance(value, go.GoClass):
3223
+ _linksockslib.linksocks_TokenResponse_Error_Set(self.handle, value.handle)
3224
+ else:
3225
+ _linksockslib.linksocks_TokenResponse_Error_Set(self.handle, value)
3226
+
3227
+ # Python type for struct linksocks.ClientOption
3228
+ class ClientOption(go.GoClass):
3229
+ """ClientOption represents configuration options for LinkSocksClient\n"""
3230
+ def __init__(self, *args, **kwargs):
3231
+ """
3232
+ handle=A Go-side object is always initialized with an explicit handle=arg
3233
+ otherwise parameters can be unnamed in order of field names or named fields
3234
+ in which case a new Go object is constructed first
3235
+ """
3236
+ if len(kwargs) == 1 and 'handle' in kwargs:
3237
+ self.handle = kwargs['handle']
3238
+ _linksockslib.IncRef(self.handle)
3239
+ elif len(args) == 1 and isinstance(args[0], go.GoClass):
3240
+ self.handle = args[0].handle
3241
+ _linksockslib.IncRef(self.handle)
3242
+ else:
3243
+ self.handle = _linksockslib.linksocks_ClientOption_CTor()
3244
+ _linksockslib.IncRef(self.handle)
3245
+ if 0 < len(args):
3246
+ self.WSURL = args[0]
3247
+ if "WSURL" in kwargs:
3248
+ self.WSURL = kwargs["WSURL"]
2984
3249
  if 1 < len(args):
2985
3250
  self.Reverse = args[1]
2986
3251
  if "Reverse" in kwargs:
@@ -3355,9 +3620,9 @@ class ClientOption(go.GoClass):
3355
3620
  """
3356
3621
  return ClientOption(handle=_linksockslib.linksocks_ClientOption_WithNoEnvProxy(self.handle, noEnvProxy))
3357
3622
 
3358
- # Python type for struct linksocks.DisconnectMessage
3359
- class DisconnectMessage(go.GoClass):
3360
- """DisconnectMessage represents a connection termination message\n"""
3623
+ # Python type for struct linksocks.ConnectMessage
3624
+ class ConnectMessage(go.GoClass):
3625
+ """ConnectMessage represents a TCP connection request\n"""
3361
3626
  def __init__(self, *args, **kwargs):
3362
3627
  """
3363
3628
  handle=A Go-side object is always initialized with an explicit handle=arg
@@ -3371,21 +3636,29 @@ class DisconnectMessage(go.GoClass):
3371
3636
  self.handle = args[0].handle
3372
3637
  _linksockslib.IncRef(self.handle)
3373
3638
  else:
3374
- self.handle = _linksockslib.linksocks_DisconnectMessage_CTor()
3639
+ self.handle = _linksockslib.linksocks_ConnectMessage_CTor()
3375
3640
  _linksockslib.IncRef(self.handle)
3376
3641
  if 0 < len(args):
3377
- self.ChannelID = args[0]
3642
+ self.Protocol = args[0]
3643
+ if "Protocol" in kwargs:
3644
+ self.Protocol = kwargs["Protocol"]
3645
+ if 1 < len(args):
3646
+ self.Address = args[1]
3647
+ if "Address" in kwargs:
3648
+ self.Address = kwargs["Address"]
3649
+ if 2 < len(args):
3650
+ self.Port = args[2]
3651
+ if "Port" in kwargs:
3652
+ self.Port = kwargs["Port"]
3653
+ if 3 < len(args):
3654
+ self.ChannelID = args[3]
3378
3655
  if "ChannelID" in kwargs:
3379
3656
  self.ChannelID = kwargs["ChannelID"]
3380
- if 1 < len(args):
3381
- self.Error = args[1]
3382
- if "Error" in kwargs:
3383
- self.Error = kwargs["Error"]
3384
3657
  def __del__(self):
3385
3658
  _linksockslib.DecRef(self.handle)
3386
3659
  def __str__(self):
3387
3660
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
3388
- sv = 'linksocks.DisconnectMessage{'
3661
+ sv = 'linksocks.ConnectMessage{'
3389
3662
  first = True
3390
3663
  for v in pr:
3391
3664
  if callable(v[1]):
@@ -3398,30 +3671,48 @@ class DisconnectMessage(go.GoClass):
3398
3671
  return sv + '}'
3399
3672
  def __repr__(self):
3400
3673
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
3401
- sv = 'linksocks.DisconnectMessage ( '
3674
+ sv = 'linksocks.ConnectMessage ( '
3402
3675
  for v in pr:
3403
3676
  if not callable(v[1]):
3404
3677
  sv += v[0] + '=' + str(v[1]) + ', '
3405
3678
  return sv + ')'
3406
3679
  @property
3407
- def ChannelID(self):
3408
- return go.uuid_UUID(handle=_linksockslib.linksocks_DisconnectMessage_ChannelID_Get(self.handle))
3680
+ def Protocol(self):
3681
+ return _linksockslib.linksocks_ConnectMessage_Protocol_Get(self.handle)
3682
+ @Protocol.setter
3683
+ def Protocol(self, value):
3684
+ if isinstance(value, go.GoClass):
3685
+ _linksockslib.linksocks_ConnectMessage_Protocol_Set(self.handle, value.handle)
3686
+ else:
3687
+ _linksockslib.linksocks_ConnectMessage_Protocol_Set(self.handle, value)
3409
3688
  @property
3410
- def Error(self):
3411
- return _linksockslib.linksocks_DisconnectMessage_Error_Get(self.handle)
3412
- @Error.setter
3413
- def Error(self, value):
3689
+ def Address(self):
3690
+ return _linksockslib.linksocks_ConnectMessage_Address_Get(self.handle)
3691
+ @Address.setter
3692
+ def Address(self, value):
3414
3693
  if isinstance(value, go.GoClass):
3415
- _linksockslib.linksocks_DisconnectMessage_Error_Set(self.handle, value.handle)
3694
+ _linksockslib.linksocks_ConnectMessage_Address_Set(self.handle, value.handle)
3416
3695
  else:
3417
- _linksockslib.linksocks_DisconnectMessage_Error_Set(self.handle, value)
3696
+ _linksockslib.linksocks_ConnectMessage_Address_Set(self.handle, value)
3697
+ @property
3698
+ def Port(self):
3699
+ return _linksockslib.linksocks_ConnectMessage_Port_Get(self.handle)
3700
+ @Port.setter
3701
+ def Port(self, value):
3702
+ if isinstance(value, go.GoClass):
3703
+ _linksockslib.linksocks_ConnectMessage_Port_Set(self.handle, value.handle)
3704
+ else:
3705
+ _linksockslib.linksocks_ConnectMessage_Port_Set(self.handle, value)
3706
+ @property
3707
+ def ChannelID(self):
3708
+ return go.uuid_UUID(handle=_linksockslib.linksocks_ConnectMessage_ChannelID_Get(self.handle))
3418
3709
  def GetType(self):
3419
3710
  """GetType() str"""
3420
- return _linksockslib.linksocks_DisconnectMessage_GetType(self.handle)
3711
+ return _linksockslib.linksocks_ConnectMessage_GetType(self.handle)
3421
3712
 
3422
- # Python type for struct linksocks.PartnersMessage
3423
- class PartnersMessage(go.GoClass):
3424
- """PartnersMessage represents a partners count update message\n"""
3713
+ # Python type for struct linksocks.RelayOption
3714
+ class RelayOption(go.GoClass):
3715
+ """RelayOption contains configuration options for Relay\n"""
3425
3716
  def __init__(self, *args, **kwargs):
3426
3717
  """
3427
3718
  handle=A Go-side object is always initialized with an explicit handle=arg
@@ -3435,64 +3726,7 @@ class PartnersMessage(go.GoClass):
3435
3726
  self.handle = args[0].handle
3436
3727
  _linksockslib.IncRef(self.handle)
3437
3728
  else:
3438
- self.handle = _linksockslib.linksocks_PartnersMessage_CTor()
3439
- _linksockslib.IncRef(self.handle)
3440
- if 0 < len(args):
3441
- self.Count = args[0]
3442
- if "Count" in kwargs:
3443
- self.Count = kwargs["Count"]
3444
- def __del__(self):
3445
- _linksockslib.DecRef(self.handle)
3446
- def __str__(self):
3447
- pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
3448
- sv = 'linksocks.PartnersMessage{'
3449
- first = True
3450
- for v in pr:
3451
- if callable(v[1]):
3452
- continue
3453
- if first:
3454
- first = False
3455
- else:
3456
- sv += ', '
3457
- sv += v[0] + '=' + str(v[1])
3458
- return sv + '}'
3459
- def __repr__(self):
3460
- pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
3461
- sv = 'linksocks.PartnersMessage ( '
3462
- for v in pr:
3463
- if not callable(v[1]):
3464
- sv += v[0] + '=' + str(v[1]) + ', '
3465
- return sv + ')'
3466
- @property
3467
- def Count(self):
3468
- return _linksockslib.linksocks_PartnersMessage_Count_Get(self.handle)
3469
- @Count.setter
3470
- def Count(self, value):
3471
- if isinstance(value, go.GoClass):
3472
- _linksockslib.linksocks_PartnersMessage_Count_Set(self.handle, value.handle)
3473
- else:
3474
- _linksockslib.linksocks_PartnersMessage_Count_Set(self.handle, value)
3475
- def GetType(self):
3476
- """GetType() str"""
3477
- return _linksockslib.linksocks_PartnersMessage_GetType(self.handle)
3478
-
3479
- # Python type for struct linksocks.RelayOption
3480
- class RelayOption(go.GoClass):
3481
- """RelayOption contains configuration options for Relay\n"""
3482
- def __init__(self, *args, **kwargs):
3483
- """
3484
- handle=A Go-side object is always initialized with an explicit handle=arg
3485
- otherwise parameters can be unnamed in order of field names or named fields
3486
- in which case a new Go object is constructed first
3487
- """
3488
- if len(kwargs) == 1 and 'handle' in kwargs:
3489
- self.handle = kwargs['handle']
3490
- _linksockslib.IncRef(self.handle)
3491
- elif len(args) == 1 and isinstance(args[0], go.GoClass):
3492
- self.handle = args[0].handle
3493
- _linksockslib.IncRef(self.handle)
3494
- else:
3495
- self.handle = _linksockslib.linksocks_RelayOption_CTor()
3729
+ self.handle = _linksockslib.linksocks_RelayOption_CTor()
3496
3730
  _linksockslib.IncRef(self.handle)
3497
3731
  if 0 < len(args):
3498
3732
  self.BufferSize = args[0]
@@ -3768,9 +4002,9 @@ class RelayOption(go.GoClass):
3768
4002
  """
3769
4003
  return RelayOption(handle=_linksockslib.linksocks_RelayOption_WithCompressionThreshold(self.handle, threshold))
3770
4004
 
3771
- # Python type for struct linksocks.SocketManager
3772
- class SocketManager(go.GoClass):
3773
- """SocketManager manages socket lifecycle and reuse\n"""
4005
+ # Python type for struct linksocks.ReverseTokenOptions
4006
+ class ReverseTokenOptions(go.GoClass):
4007
+ """ReverseTokenOptions represents configuration options for reverse token\n"""
3774
4008
  def __init__(self, *args, **kwargs):
3775
4009
  """
3776
4010
  handle=A Go-side object is always initialized with an explicit handle=arg
@@ -3784,13 +4018,33 @@ class SocketManager(go.GoClass):
3784
4018
  self.handle = args[0].handle
3785
4019
  _linksockslib.IncRef(self.handle)
3786
4020
  else:
3787
- self.handle = _linksockslib.linksocks_SocketManager_CTor()
4021
+ self.handle = _linksockslib.linksocks_ReverseTokenOptions_CTor()
3788
4022
  _linksockslib.IncRef(self.handle)
4023
+ if 0 < len(args):
4024
+ self.Token = args[0]
4025
+ if "Token" in kwargs:
4026
+ self.Token = kwargs["Token"]
4027
+ if 1 < len(args):
4028
+ self.Port = args[1]
4029
+ if "Port" in kwargs:
4030
+ self.Port = kwargs["Port"]
4031
+ if 2 < len(args):
4032
+ self.Username = args[2]
4033
+ if "Username" in kwargs:
4034
+ self.Username = kwargs["Username"]
4035
+ if 3 < len(args):
4036
+ self.Password = args[3]
4037
+ if "Password" in kwargs:
4038
+ self.Password = kwargs["Password"]
4039
+ if 4 < len(args):
4040
+ self.AllowManageConnector = args[4]
4041
+ if "AllowManageConnector" in kwargs:
4042
+ self.AllowManageConnector = kwargs["AllowManageConnector"]
3789
4043
  def __del__(self):
3790
4044
  _linksockslib.DecRef(self.handle)
3791
4045
  def __str__(self):
3792
4046
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
3793
- sv = 'linksocks.SocketManager{'
4047
+ sv = 'linksocks.ReverseTokenOptions{'
3794
4048
  first = True
3795
4049
  for v in pr:
3796
4050
  if callable(v[1]):
@@ -3803,27 +4057,60 @@ class SocketManager(go.GoClass):
3803
4057
  return sv + '}'
3804
4058
  def __repr__(self):
3805
4059
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
3806
- sv = 'linksocks.SocketManager ( '
4060
+ sv = 'linksocks.ReverseTokenOptions ( '
3807
4061
  for v in pr:
3808
4062
  if not callable(v[1]):
3809
4063
  sv += v[0] + '=' + str(v[1]) + ', '
3810
4064
  return sv + ')'
3811
- def GetListener(self, port):
3812
- """GetListener(int port) object, str"""
3813
- return go.net_Listener(handle=_linksockslib.linksocks_SocketManager_GetListener(self.handle, port))
3814
- def ReleaseListener(self, port, goRun=False):
3815
- """ReleaseListener(int port) """
3816
- _linksockslib.linksocks_SocketManager_ReleaseListener(self.handle, port, goRun)
3817
- def Close(self, goRun=False):
3818
- """Close()
3819
-
3820
- Close closes all managed sockets immediately
3821
- """
3822
- _linksockslib.linksocks_SocketManager_Close(self.handle, goRun)
4065
+ @property
4066
+ def Token(self):
4067
+ return _linksockslib.linksocks_ReverseTokenOptions_Token_Get(self.handle)
4068
+ @Token.setter
4069
+ def Token(self, value):
4070
+ if isinstance(value, go.GoClass):
4071
+ _linksockslib.linksocks_ReverseTokenOptions_Token_Set(self.handle, value.handle)
4072
+ else:
4073
+ _linksockslib.linksocks_ReverseTokenOptions_Token_Set(self.handle, value)
4074
+ @property
4075
+ def Port(self):
4076
+ return _linksockslib.linksocks_ReverseTokenOptions_Port_Get(self.handle)
4077
+ @Port.setter
4078
+ def Port(self, value):
4079
+ if isinstance(value, go.GoClass):
4080
+ _linksockslib.linksocks_ReverseTokenOptions_Port_Set(self.handle, value.handle)
4081
+ else:
4082
+ _linksockslib.linksocks_ReverseTokenOptions_Port_Set(self.handle, value)
4083
+ @property
4084
+ def Username(self):
4085
+ return _linksockslib.linksocks_ReverseTokenOptions_Username_Get(self.handle)
4086
+ @Username.setter
4087
+ def Username(self, value):
4088
+ if isinstance(value, go.GoClass):
4089
+ _linksockslib.linksocks_ReverseTokenOptions_Username_Set(self.handle, value.handle)
4090
+ else:
4091
+ _linksockslib.linksocks_ReverseTokenOptions_Username_Set(self.handle, value)
4092
+ @property
4093
+ def Password(self):
4094
+ return _linksockslib.linksocks_ReverseTokenOptions_Password_Get(self.handle)
4095
+ @Password.setter
4096
+ def Password(self, value):
4097
+ if isinstance(value, go.GoClass):
4098
+ _linksockslib.linksocks_ReverseTokenOptions_Password_Set(self.handle, value.handle)
4099
+ else:
4100
+ _linksockslib.linksocks_ReverseTokenOptions_Password_Set(self.handle, value)
4101
+ @property
4102
+ def AllowManageConnector(self):
4103
+ return _linksockslib.linksocks_ReverseTokenOptions_AllowManageConnector_Get(self.handle)
4104
+ @AllowManageConnector.setter
4105
+ def AllowManageConnector(self, value):
4106
+ if isinstance(value, go.GoClass):
4107
+ _linksockslib.linksocks_ReverseTokenOptions_AllowManageConnector_Set(self.handle, value.handle)
4108
+ else:
4109
+ _linksockslib.linksocks_ReverseTokenOptions_AllowManageConnector_Set(self.handle, value)
3823
4110
 
3824
- # Python type for struct linksocks.LinkSocksClient
3825
- class LinkSocksClient(go.GoClass):
3826
- """LinkSocksClient represents a SOCKS5 over WebSocket protocol client\n"""
4111
+ # Python type for struct linksocks.TokenStatus
4112
+ class TokenStatus(go.GoClass):
4113
+ """TokenStatus represents the status of a token\n"""
3827
4114
  def __init__(self, *args, **kwargs):
3828
4115
  """
3829
4116
  handle=A Go-side object is always initialized with an explicit handle=arg
@@ -3837,17 +4124,25 @@ class LinkSocksClient(go.GoClass):
3837
4124
  self.handle = args[0].handle
3838
4125
  _linksockslib.IncRef(self.handle)
3839
4126
  else:
3840
- self.handle = _linksockslib.linksocks_LinkSocksClient_CTor()
4127
+ self.handle = _linksockslib.linksocks_TokenStatus_CTor()
3841
4128
  _linksockslib.IncRef(self.handle)
4129
+ if 0 < len(args):
4130
+ self.Token = args[0]
4131
+ if "Token" in kwargs:
4132
+ self.Token = kwargs["Token"]
4133
+ if 1 < len(args):
4134
+ self.Type = args[1]
4135
+ if "Type" in kwargs:
4136
+ self.Type = kwargs["Type"]
3842
4137
  if 2 < len(args):
3843
- self.IsConnected = args[2]
3844
- if "IsConnected" in kwargs:
3845
- self.IsConnected = kwargs["IsConnected"]
4138
+ self.ClientsCount = args[2]
4139
+ if "ClientsCount" in kwargs:
4140
+ self.ClientsCount = kwargs["ClientsCount"]
3846
4141
  def __del__(self):
3847
4142
  _linksockslib.DecRef(self.handle)
3848
4143
  def __str__(self):
3849
4144
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
3850
- sv = 'linksocks.LinkSocksClient{'
4145
+ sv = 'linksocks.TokenStatus{'
3851
4146
  first = True
3852
4147
  for v in pr:
3853
4148
  if callable(v[1]):
@@ -3860,62 +4155,42 @@ class LinkSocksClient(go.GoClass):
3860
4155
  return sv + '}'
3861
4156
  def __repr__(self):
3862
4157
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
3863
- sv = 'linksocks.LinkSocksClient ( '
4158
+ sv = 'linksocks.TokenStatus ( '
3864
4159
  for v in pr:
3865
4160
  if not callable(v[1]):
3866
4161
  sv += v[0] + '=' + str(v[1]) + ', '
3867
4162
  return sv + ')'
3868
4163
  @property
3869
- def IsConnected(self):
3870
- return _linksockslib.linksocks_LinkSocksClient_IsConnected_Get(self.handle)
3871
- @IsConnected.setter
3872
- def IsConnected(self, value):
4164
+ def Token(self):
4165
+ return _linksockslib.linksocks_TokenStatus_Token_Get(self.handle)
4166
+ @Token.setter
4167
+ def Token(self, value):
3873
4168
  if isinstance(value, go.GoClass):
3874
- _linksockslib.linksocks_LinkSocksClient_IsConnected_Set(self.handle, value.handle)
4169
+ _linksockslib.linksocks_TokenStatus_Token_Set(self.handle, value.handle)
3875
4170
  else:
3876
- _linksockslib.linksocks_LinkSocksClient_IsConnected_Set(self.handle, value)
3877
- def WaitReady(self, ctx, timeout):
3878
- """WaitReady(object ctx, long timeout) str
3879
-
3880
- WaitReady start the client and waits for the client to be ready with optional timeout
3881
- """
3882
- return _linksockslib.linksocks_LinkSocksClient_WaitReady(self.handle, ctx.handle, timeout)
3883
- def Connect(self, ctx):
3884
- """Connect(object ctx) str
3885
-
3886
- Connect starts the client operation
3887
- """
3888
- return _linksockslib.linksocks_LinkSocksClient_Connect(self.handle, ctx.handle)
3889
- def Close(self, goRun=False):
3890
- """Close()
3891
-
3892
- Close gracefully shuts down the LinkSocksClient
3893
- """
3894
- _linksockslib.linksocks_LinkSocksClient_Close(self.handle, goRun)
3895
- def AddConnector(self, connectorToken):
3896
- """AddConnector(str connectorToken) str, str
3897
-
3898
- AddConnector sends a request to add a new connector token and waits for response.
3899
- This function is only available in reverse proxy mode.
3900
- """
3901
- return _linksockslib.linksocks_LinkSocksClient_AddConnector(self.handle, connectorToken)
3902
- def RemoveConnector(self, connectorToken):
3903
- """RemoveConnector(str connectorToken) str
3904
-
3905
- RemoveConnector sends a request to remove a connector token and waits for response.
3906
- This function is only available in reverse proxy mode.
3907
- """
3908
- return _linksockslib.linksocks_LinkSocksClient_RemoveConnector(self.handle, connectorToken)
3909
- def GetPartnersCount(self):
3910
- """GetPartnersCount() int
3911
-
3912
- GetPartnersCount returns the current number of partners
3913
- """
3914
- return _linksockslib.linksocks_LinkSocksClient_GetPartnersCount(self.handle)
4171
+ _linksockslib.linksocks_TokenStatus_Token_Set(self.handle, value)
4172
+ @property
4173
+ def Type(self):
4174
+ return _linksockslib.linksocks_TokenStatus_Type_Get(self.handle)
4175
+ @Type.setter
4176
+ def Type(self, value):
4177
+ if isinstance(value, go.GoClass):
4178
+ _linksockslib.linksocks_TokenStatus_Type_Set(self.handle, value.handle)
4179
+ else:
4180
+ _linksockslib.linksocks_TokenStatus_Type_Set(self.handle, value)
4181
+ @property
4182
+ def ClientsCount(self):
4183
+ return _linksockslib.linksocks_TokenStatus_ClientsCount_Get(self.handle)
4184
+ @ClientsCount.setter
4185
+ def ClientsCount(self, value):
4186
+ if isinstance(value, go.GoClass):
4187
+ _linksockslib.linksocks_TokenStatus_ClientsCount_Set(self.handle, value.handle)
4188
+ else:
4189
+ _linksockslib.linksocks_TokenStatus_ClientsCount_Set(self.handle, value)
3915
4190
 
3916
- # Python type for struct linksocks.LogEntry
3917
- class LogEntry(go.GoClass):
3918
- """LogEntry represents a single log entry with metadata\n"""
4191
+ # Python type for struct linksocks.DisconnectMessage
4192
+ class DisconnectMessage(go.GoClass):
4193
+ """DisconnectMessage represents a connection termination message\n"""
3919
4194
  def __init__(self, *args, **kwargs):
3920
4195
  """
3921
4196
  handle=A Go-side object is always initialized with an explicit handle=arg
@@ -3929,25 +4204,21 @@ class LogEntry(go.GoClass):
3929
4204
  self.handle = args[0].handle
3930
4205
  _linksockslib.IncRef(self.handle)
3931
4206
  else:
3932
- self.handle = _linksockslib.linksocks_LogEntry_CTor()
4207
+ self.handle = _linksockslib.linksocks_DisconnectMessage_CTor()
3933
4208
  _linksockslib.IncRef(self.handle)
3934
4209
  if 0 < len(args):
3935
- self.LoggerID = args[0]
3936
- if "LoggerID" in kwargs:
3937
- self.LoggerID = kwargs["LoggerID"]
4210
+ self.ChannelID = args[0]
4211
+ if "ChannelID" in kwargs:
4212
+ self.ChannelID = kwargs["ChannelID"]
3938
4213
  if 1 < len(args):
3939
- self.Message = args[1]
3940
- if "Message" in kwargs:
3941
- self.Message = kwargs["Message"]
3942
- if 2 < len(args):
3943
- self.Time = args[2]
3944
- if "Time" in kwargs:
3945
- self.Time = kwargs["Time"]
4214
+ self.Error = args[1]
4215
+ if "Error" in kwargs:
4216
+ self.Error = kwargs["Error"]
3946
4217
  def __del__(self):
3947
4218
  _linksockslib.DecRef(self.handle)
3948
4219
  def __str__(self):
3949
4220
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
3950
- sv = 'linksocks.LogEntry{'
4221
+ sv = 'linksocks.DisconnectMessage{'
3951
4222
  first = True
3952
4223
  for v in pr:
3953
4224
  if callable(v[1]):
@@ -3960,42 +4231,30 @@ class LogEntry(go.GoClass):
3960
4231
  return sv + '}'
3961
4232
  def __repr__(self):
3962
4233
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
3963
- sv = 'linksocks.LogEntry ( '
4234
+ sv = 'linksocks.DisconnectMessage ( '
3964
4235
  for v in pr:
3965
4236
  if not callable(v[1]):
3966
4237
  sv += v[0] + '=' + str(v[1]) + ', '
3967
4238
  return sv + ')'
3968
4239
  @property
3969
- def LoggerID(self):
3970
- return _linksockslib.linksocks_LogEntry_LoggerID_Get(self.handle)
3971
- @LoggerID.setter
3972
- def LoggerID(self, value):
3973
- if isinstance(value, go.GoClass):
3974
- _linksockslib.linksocks_LogEntry_LoggerID_Set(self.handle, value.handle)
3975
- else:
3976
- _linksockslib.linksocks_LogEntry_LoggerID_Set(self.handle, value)
3977
- @property
3978
- def Message(self):
3979
- return _linksockslib.linksocks_LogEntry_Message_Get(self.handle)
3980
- @Message.setter
3981
- def Message(self, value):
3982
- if isinstance(value, go.GoClass):
3983
- _linksockslib.linksocks_LogEntry_Message_Set(self.handle, value.handle)
3984
- else:
3985
- _linksockslib.linksocks_LogEntry_Message_Set(self.handle, value)
4240
+ def ChannelID(self):
4241
+ return go.uuid_UUID(handle=_linksockslib.linksocks_DisconnectMessage_ChannelID_Get(self.handle))
3986
4242
  @property
3987
- def Time(self):
3988
- return _linksockslib.linksocks_LogEntry_Time_Get(self.handle)
3989
- @Time.setter
3990
- def Time(self, value):
4243
+ def Error(self):
4244
+ return _linksockslib.linksocks_DisconnectMessage_Error_Get(self.handle)
4245
+ @Error.setter
4246
+ def Error(self, value):
3991
4247
  if isinstance(value, go.GoClass):
3992
- _linksockslib.linksocks_LogEntry_Time_Set(self.handle, value.handle)
4248
+ _linksockslib.linksocks_DisconnectMessage_Error_Set(self.handle, value.handle)
3993
4249
  else:
3994
- _linksockslib.linksocks_LogEntry_Time_Set(self.handle, value)
4250
+ _linksockslib.linksocks_DisconnectMessage_Error_Set(self.handle, value)
4251
+ def GetType(self):
4252
+ """GetType() str"""
4253
+ return _linksockslib.linksocks_DisconnectMessage_GetType(self.handle)
3995
4254
 
3996
- # Python type for struct linksocks.LogMessage
3997
- class LogMessage(go.GoClass):
3998
- """LogMessage represents a log message from server to client\n"""
4255
+ # Python type for struct linksocks.ReverseTokenStatus
4256
+ class ReverseTokenStatus(TokenStatus):
4257
+ """ReverseTokenStatus represents the status of a reverse token\n"""
3999
4258
  def __init__(self, *args, **kwargs):
4000
4259
  """
4001
4260
  handle=A Go-side object is always initialized with an explicit handle=arg
@@ -4009,21 +4268,21 @@ class LogMessage(go.GoClass):
4009
4268
  self.handle = args[0].handle
4010
4269
  _linksockslib.IncRef(self.handle)
4011
4270
  else:
4012
- self.handle = _linksockslib.linksocks_LogMessage_CTor()
4271
+ self.handle = _linksockslib.linksocks_ReverseTokenStatus_CTor()
4013
4272
  _linksockslib.IncRef(self.handle)
4014
- if 0 < len(args):
4015
- self.Level = args[0]
4016
- if "Level" in kwargs:
4017
- self.Level = kwargs["Level"]
4018
4273
  if 1 < len(args):
4019
- self.Msg = args[1]
4020
- if "Msg" in kwargs:
4021
- self.Msg = kwargs["Msg"]
4274
+ self.Port = args[1]
4275
+ if "Port" in kwargs:
4276
+ self.Port = kwargs["Port"]
4277
+ if 2 < len(args):
4278
+ self.ConnectorTokens = args[2]
4279
+ if "ConnectorTokens" in kwargs:
4280
+ self.ConnectorTokens = kwargs["ConnectorTokens"]
4022
4281
  def __del__(self):
4023
4282
  _linksockslib.DecRef(self.handle)
4024
4283
  def __str__(self):
4025
4284
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
4026
- sv = 'linksocks.LogMessage{'
4285
+ sv = 'linksocks.ReverseTokenStatus{'
4027
4286
  first = True
4028
4287
  for v in pr:
4029
4288
  if callable(v[1]):
@@ -4036,36 +4295,33 @@ class LogMessage(go.GoClass):
4036
4295
  return sv + '}'
4037
4296
  def __repr__(self):
4038
4297
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
4039
- sv = 'linksocks.LogMessage ( '
4298
+ sv = 'linksocks.ReverseTokenStatus ( '
4040
4299
  for v in pr:
4041
4300
  if not callable(v[1]):
4042
4301
  sv += v[0] + '=' + str(v[1]) + ', '
4043
4302
  return sv + ')'
4044
4303
  @property
4045
- def Level(self):
4046
- return _linksockslib.linksocks_LogMessage_Level_Get(self.handle)
4047
- @Level.setter
4048
- def Level(self, value):
4304
+ def Port(self):
4305
+ return _linksockslib.linksocks_ReverseTokenStatus_Port_Get(self.handle)
4306
+ @Port.setter
4307
+ def Port(self, value):
4049
4308
  if isinstance(value, go.GoClass):
4050
- _linksockslib.linksocks_LogMessage_Level_Set(self.handle, value.handle)
4309
+ _linksockslib.linksocks_ReverseTokenStatus_Port_Set(self.handle, value.handle)
4051
4310
  else:
4052
- _linksockslib.linksocks_LogMessage_Level_Set(self.handle, value)
4311
+ _linksockslib.linksocks_ReverseTokenStatus_Port_Set(self.handle, value)
4053
4312
  @property
4054
- def Msg(self):
4055
- return _linksockslib.linksocks_LogMessage_Msg_Get(self.handle)
4056
- @Msg.setter
4057
- def Msg(self, value):
4313
+ def ConnectorTokens(self):
4314
+ return go.Slice_string(handle=_linksockslib.linksocks_ReverseTokenStatus_ConnectorTokens_Get(self.handle))
4315
+ @ConnectorTokens.setter
4316
+ def ConnectorTokens(self, value):
4058
4317
  if isinstance(value, go.GoClass):
4059
- _linksockslib.linksocks_LogMessage_Msg_Set(self.handle, value.handle)
4318
+ _linksockslib.linksocks_ReverseTokenStatus_ConnectorTokens_Set(self.handle, value.handle)
4060
4319
  else:
4061
- _linksockslib.linksocks_LogMessage_Msg_Set(self.handle, value)
4062
- def GetType(self):
4063
- """GetType() str"""
4064
- return _linksockslib.linksocks_LogMessage_GetType(self.handle)
4320
+ raise TypeError("supplied argument type {t} is not a go.GoClass".format(t=type(value)))
4065
4321
 
4066
- # Python type for struct linksocks.Relay
4067
- class Relay(go.GoClass):
4068
- """Relay handles stream transport between SOCKS5 and WebSocket\n"""
4322
+ # Python type for struct linksocks.ServerOption
4323
+ class ServerOption(go.GoClass):
4324
+ """ServerOption represents configuration options for LinkSocksServer\n"""
4069
4325
  def __init__(self, *args, **kwargs):
4070
4326
  """
4071
4327
  handle=A Go-side object is always initialized with an explicit handle=arg
@@ -4079,13 +4335,69 @@ class Relay(go.GoClass):
4079
4335
  self.handle = args[0].handle
4080
4336
  _linksockslib.IncRef(self.handle)
4081
4337
  else:
4082
- self.handle = _linksockslib.linksocks_Relay_CTor()
4338
+ self.handle = _linksockslib.linksocks_ServerOption_CTor()
4083
4339
  _linksockslib.IncRef(self.handle)
4340
+ if 0 < len(args):
4341
+ self.WSHost = args[0]
4342
+ if "WSHost" in kwargs:
4343
+ self.WSHost = kwargs["WSHost"]
4344
+ if 1 < len(args):
4345
+ self.WSPort = args[1]
4346
+ if "WSPort" in kwargs:
4347
+ self.WSPort = kwargs["WSPort"]
4348
+ if 2 < len(args):
4349
+ self.SocksHost = args[2]
4350
+ if "SocksHost" in kwargs:
4351
+ self.SocksHost = kwargs["SocksHost"]
4352
+ if 3 < len(args):
4353
+ self.PortPool = args[3]
4354
+ if "PortPool" in kwargs:
4355
+ self.PortPool = kwargs["PortPool"]
4356
+ if 4 < len(args):
4357
+ self.SocksWaitClient = args[4]
4358
+ if "SocksWaitClient" in kwargs:
4359
+ self.SocksWaitClient = kwargs["SocksWaitClient"]
4360
+ if 5 < len(args):
4361
+ self.Logger = args[5]
4362
+ if "Logger" in kwargs:
4363
+ self.Logger = kwargs["Logger"]
4364
+ if 6 < len(args):
4365
+ self.BufferSize = args[6]
4366
+ if "BufferSize" in kwargs:
4367
+ self.BufferSize = kwargs["BufferSize"]
4368
+ if 7 < len(args):
4369
+ self.APIKey = args[7]
4370
+ if "APIKey" in kwargs:
4371
+ self.APIKey = kwargs["APIKey"]
4372
+ if 8 < len(args):
4373
+ self.ChannelTimeout = args[8]
4374
+ if "ChannelTimeout" in kwargs:
4375
+ self.ChannelTimeout = kwargs["ChannelTimeout"]
4376
+ if 9 < len(args):
4377
+ self.ConnectTimeout = args[9]
4378
+ if "ConnectTimeout" in kwargs:
4379
+ self.ConnectTimeout = kwargs["ConnectTimeout"]
4380
+ if 10 < len(args):
4381
+ self.FastOpen = args[10]
4382
+ if "FastOpen" in kwargs:
4383
+ self.FastOpen = kwargs["FastOpen"]
4384
+ if 11 < len(args):
4385
+ self.UpstreamProxy = args[11]
4386
+ if "UpstreamProxy" in kwargs:
4387
+ self.UpstreamProxy = kwargs["UpstreamProxy"]
4388
+ if 12 < len(args):
4389
+ self.UpstreamUsername = args[12]
4390
+ if "UpstreamUsername" in kwargs:
4391
+ self.UpstreamUsername = kwargs["UpstreamUsername"]
4392
+ if 13 < len(args):
4393
+ self.UpstreamPassword = args[13]
4394
+ if "UpstreamPassword" in kwargs:
4395
+ self.UpstreamPassword = kwargs["UpstreamPassword"]
4084
4396
  def __del__(self):
4085
4397
  _linksockslib.DecRef(self.handle)
4086
4398
  def __str__(self):
4087
4399
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
4088
- sv = 'linksocks.Relay{'
4400
+ sv = 'linksocks.ServerOption{'
4089
4401
  first = True
4090
4402
  for v in pr:
4091
4403
  if callable(v[1]):
@@ -4098,689 +4410,215 @@ class Relay(go.GoClass):
4098
4410
  return sv + '}'
4099
4411
  def __repr__(self):
4100
4412
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
4101
- sv = 'linksocks.Relay ( '
4413
+ sv = 'linksocks.ServerOption ( '
4102
4414
  for v in pr:
4103
4415
  if not callable(v[1]):
4104
4416
  sv += v[0] + '=' + str(v[1]) + ', '
4105
4417
  return sv + ')'
4106
- def RefuseSocksRequest(self, conn, reason):
4107
- """RefuseSocksRequest(object conn, int reason) str
4108
-
4109
- RefuseSocksRequest refuses a SOCKS5 client request with the specified reason
4110
- """
4111
- return _linksockslib.linksocks_Relay_RefuseSocksRequest(self.handle, conn.handle, reason)
4112
- def HandleNetworkConnection(self, ctx, ws, request):
4113
- """HandleNetworkConnection(object ctx, object ws, object request) str
4114
-
4115
- HandleNetworkConnection handles network connection based on protocol type
4116
- """
4117
- return _linksockslib.linksocks_Relay_HandleNetworkConnection(self.handle, ctx.handle, ws.handle, request.handle)
4118
- def HandleTCPConnection(self, ctx, ws, request):
4119
- """HandleTCPConnection(object ctx, object ws, object request) str
4120
-
4121
- HandleTCPConnection handles TCP network connection
4122
- """
4123
- return _linksockslib.linksocks_Relay_HandleTCPConnection(self.handle, ctx.handle, ws.handle, request.handle)
4124
- def HandleUDPConnection(self, ctx, ws, request):
4125
- """HandleUDPConnection(object ctx, object ws, object request) str
4126
-
4127
- HandleUDPConnection handles UDP network connection
4128
- """
4129
- return _linksockslib.linksocks_Relay_HandleUDPConnection(self.handle, ctx.handle, ws.handle, request.handle)
4130
- def HandleSocksRequest(self, ctx, ws, socksConn, socksUsername, socksPassword):
4131
- """HandleSocksRequest(object ctx, object ws, object socksConn, str socksUsername, str socksPassword) str
4132
-
4133
- HandleSocksRequest handles incoming SOCKS5 client request
4134
- """
4135
- return _linksockslib.linksocks_Relay_HandleSocksRequest(self.handle, ctx.handle, ws.handle, socksConn.handle, socksUsername, socksPassword)
4136
- def HandleRemoteTCPForward(self, ctx, ws, remoteConn, channelID):
4137
- """HandleRemoteTCPForward(object ctx, object ws, object remoteConn, []int channelID) str
4138
-
4139
- HandleRemoteTCPForward handles remote TCP forwarding
4140
- """
4141
- return _linksockslib.linksocks_Relay_HandleRemoteTCPForward(self.handle, ctx.handle, ws.handle, remoteConn.handle, channelID.handle)
4142
- def HandleRemoteUDPForward(self, ctx, ws, udpConn, channelID):
4143
- """HandleRemoteUDPForward(object ctx, object ws, object udpConn, []int channelID) str
4144
-
4145
- HandleRemoteUDPForward handles remote UDP forwarding
4146
- """
4147
- return _linksockslib.linksocks_Relay_HandleRemoteUDPForward(self.handle, ctx.handle, ws.handle, udpConn.handle, channelID.handle)
4148
- def HandleSocksTCPForward(self, ctx, ws, socksConn, channelID):
4149
- """HandleSocksTCPForward(object ctx, object ws, object socksConn, []int channelID) str
4150
-
4151
- HandleSocksTCPForward handles TCP forwarding between SOCKS client and WebSocket
4152
- """
4153
- return _linksockslib.linksocks_Relay_HandleSocksTCPForward(self.handle, ctx.handle, ws.handle, socksConn.handle, channelID.handle)
4154
- def HandleSocksUDPForward(self, ctx, ws, udpConn, socksConn, channelID):
4155
- """HandleSocksUDPForward(object ctx, object ws, object udpConn, object socksConn, []int channelID) str
4156
-
4157
- HandleSocksUDPForward handles SOCKS5 UDP forwarding
4158
- """
4159
- return _linksockslib.linksocks_Relay_HandleSocksUDPForward(self.handle, ctx.handle, ws.handle, udpConn.handle, socksConn.handle, channelID.handle)
4160
- def Close(self, goRun=False):
4161
- """Close()
4162
-
4163
- Close gracefully shuts down the Relay
4164
- """
4165
- _linksockslib.linksocks_Relay_Close(self.handle, goRun)
4166
- def SetConnectionSuccess(self, channelID, goRun=False):
4167
- """SetConnectionSuccess([]int channelID)
4168
-
4169
- SetConnectionSuccess sets the connection success status for a channel
4170
- """
4171
- _linksockslib.linksocks_Relay_SetConnectionSuccess(self.handle, channelID.handle, goRun)
4172
-
4173
- # Python type for struct linksocks.ReverseTokenOptions
4174
- class ReverseTokenOptions(go.GoClass):
4175
- """ReverseTokenOptions represents configuration options for reverse token\n"""
4176
- def __init__(self, *args, **kwargs):
4177
- """
4178
- handle=A Go-side object is always initialized with an explicit handle=arg
4179
- otherwise parameters can be unnamed in order of field names or named fields
4180
- in which case a new Go object is constructed first
4181
- """
4182
- if len(kwargs) == 1 and 'handle' in kwargs:
4183
- self.handle = kwargs['handle']
4184
- _linksockslib.IncRef(self.handle)
4185
- elif len(args) == 1 and isinstance(args[0], go.GoClass):
4186
- self.handle = args[0].handle
4187
- _linksockslib.IncRef(self.handle)
4418
+ @property
4419
+ def WSHost(self):
4420
+ return _linksockslib.linksocks_ServerOption_WSHost_Get(self.handle)
4421
+ @WSHost.setter
4422
+ def WSHost(self, value):
4423
+ if isinstance(value, go.GoClass):
4424
+ _linksockslib.linksocks_ServerOption_WSHost_Set(self.handle, value.handle)
4188
4425
  else:
4189
- self.handle = _linksockslib.linksocks_ReverseTokenOptions_CTor()
4190
- _linksockslib.IncRef(self.handle)
4191
- if 0 < len(args):
4192
- self.Token = args[0]
4193
- if "Token" in kwargs:
4194
- self.Token = kwargs["Token"]
4195
- if 1 < len(args):
4196
- self.Port = args[1]
4197
- if "Port" in kwargs:
4198
- self.Port = kwargs["Port"]
4199
- if 2 < len(args):
4200
- self.Username = args[2]
4201
- if "Username" in kwargs:
4202
- self.Username = kwargs["Username"]
4203
- if 3 < len(args):
4204
- self.Password = args[3]
4205
- if "Password" in kwargs:
4206
- self.Password = kwargs["Password"]
4207
- if 4 < len(args):
4208
- self.AllowManageConnector = args[4]
4209
- if "AllowManageConnector" in kwargs:
4210
- self.AllowManageConnector = kwargs["AllowManageConnector"]
4211
- def __del__(self):
4212
- _linksockslib.DecRef(self.handle)
4213
- def __str__(self):
4214
- pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
4215
- sv = 'linksocks.ReverseTokenOptions{'
4216
- first = True
4217
- for v in pr:
4218
- if callable(v[1]):
4219
- continue
4220
- if first:
4221
- first = False
4222
- else:
4223
- sv += ', '
4224
- sv += v[0] + '=' + str(v[1])
4225
- return sv + '}'
4226
- def __repr__(self):
4227
- pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
4228
- sv = 'linksocks.ReverseTokenOptions ( '
4229
- for v in pr:
4230
- if not callable(v[1]):
4231
- sv += v[0] + '=' + str(v[1]) + ', '
4232
- return sv + ')'
4426
+ _linksockslib.linksocks_ServerOption_WSHost_Set(self.handle, value)
4233
4427
  @property
4234
- def Token(self):
4235
- return _linksockslib.linksocks_ReverseTokenOptions_Token_Get(self.handle)
4236
- @Token.setter
4237
- def Token(self, value):
4428
+ def WSPort(self):
4429
+ return _linksockslib.linksocks_ServerOption_WSPort_Get(self.handle)
4430
+ @WSPort.setter
4431
+ def WSPort(self, value):
4238
4432
  if isinstance(value, go.GoClass):
4239
- _linksockslib.linksocks_ReverseTokenOptions_Token_Set(self.handle, value.handle)
4433
+ _linksockslib.linksocks_ServerOption_WSPort_Set(self.handle, value.handle)
4240
4434
  else:
4241
- _linksockslib.linksocks_ReverseTokenOptions_Token_Set(self.handle, value)
4435
+ _linksockslib.linksocks_ServerOption_WSPort_Set(self.handle, value)
4242
4436
  @property
4243
- def Port(self):
4244
- return _linksockslib.linksocks_ReverseTokenOptions_Port_Get(self.handle)
4245
- @Port.setter
4246
- def Port(self, value):
4437
+ def SocksHost(self):
4438
+ return _linksockslib.linksocks_ServerOption_SocksHost_Get(self.handle)
4439
+ @SocksHost.setter
4440
+ def SocksHost(self, value):
4247
4441
  if isinstance(value, go.GoClass):
4248
- _linksockslib.linksocks_ReverseTokenOptions_Port_Set(self.handle, value.handle)
4442
+ _linksockslib.linksocks_ServerOption_SocksHost_Set(self.handle, value.handle)
4249
4443
  else:
4250
- _linksockslib.linksocks_ReverseTokenOptions_Port_Set(self.handle, value)
4444
+ _linksockslib.linksocks_ServerOption_SocksHost_Set(self.handle, value)
4251
4445
  @property
4252
- def Username(self):
4253
- return _linksockslib.linksocks_ReverseTokenOptions_Username_Get(self.handle)
4254
- @Username.setter
4255
- def Username(self, value):
4446
+ def PortPool(self):
4447
+ return PortPool(handle=_linksockslib.linksocks_ServerOption_PortPool_Get(self.handle))
4448
+ @PortPool.setter
4449
+ def PortPool(self, value):
4256
4450
  if isinstance(value, go.GoClass):
4257
- _linksockslib.linksocks_ReverseTokenOptions_Username_Set(self.handle, value.handle)
4451
+ _linksockslib.linksocks_ServerOption_PortPool_Set(self.handle, value.handle)
4258
4452
  else:
4259
- _linksockslib.linksocks_ReverseTokenOptions_Username_Set(self.handle, value)
4453
+ raise TypeError("supplied argument type {t} is not a go.GoClass".format(t=type(value)))
4260
4454
  @property
4261
- def Password(self):
4262
- return _linksockslib.linksocks_ReverseTokenOptions_Password_Get(self.handle)
4263
- @Password.setter
4264
- def Password(self, value):
4455
+ def SocksWaitClient(self):
4456
+ return _linksockslib.linksocks_ServerOption_SocksWaitClient_Get(self.handle)
4457
+ @SocksWaitClient.setter
4458
+ def SocksWaitClient(self, value):
4265
4459
  if isinstance(value, go.GoClass):
4266
- _linksockslib.linksocks_ReverseTokenOptions_Password_Set(self.handle, value.handle)
4460
+ _linksockslib.linksocks_ServerOption_SocksWaitClient_Set(self.handle, value.handle)
4267
4461
  else:
4268
- _linksockslib.linksocks_ReverseTokenOptions_Password_Set(self.handle, value)
4462
+ _linksockslib.linksocks_ServerOption_SocksWaitClient_Set(self.handle, value)
4269
4463
  @property
4270
- def AllowManageConnector(self):
4271
- return _linksockslib.linksocks_ReverseTokenOptions_AllowManageConnector_Get(self.handle)
4272
- @AllowManageConnector.setter
4273
- def AllowManageConnector(self, value):
4464
+ def Logger(self):
4465
+ return go.zerolog_Logger(handle=_linksockslib.linksocks_ServerOption_Logger_Get(self.handle))
4466
+ @Logger.setter
4467
+ def Logger(self, value):
4274
4468
  if isinstance(value, go.GoClass):
4275
- _linksockslib.linksocks_ReverseTokenOptions_AllowManageConnector_Set(self.handle, value.handle)
4469
+ _linksockslib.linksocks_ServerOption_Logger_Set(self.handle, value.handle)
4276
4470
  else:
4277
- _linksockslib.linksocks_ReverseTokenOptions_AllowManageConnector_Set(self.handle, value)
4278
-
4279
- # Python type for struct linksocks.AuthMessage
4280
- class AuthMessage(go.GoClass):
4281
- """AuthMessage represents an authentication request\n"""
4282
- def __init__(self, *args, **kwargs):
4283
- """
4284
- handle=A Go-side object is always initialized with an explicit handle=arg
4285
- otherwise parameters can be unnamed in order of field names or named fields
4286
- in which case a new Go object is constructed first
4287
- """
4288
- if len(kwargs) == 1 and 'handle' in kwargs:
4289
- self.handle = kwargs['handle']
4290
- _linksockslib.IncRef(self.handle)
4291
- elif len(args) == 1 and isinstance(args[0], go.GoClass):
4292
- self.handle = args[0].handle
4293
- _linksockslib.IncRef(self.handle)
4471
+ raise TypeError("supplied argument type {t} is not a go.GoClass".format(t=type(value)))
4472
+ @property
4473
+ def BufferSize(self):
4474
+ return _linksockslib.linksocks_ServerOption_BufferSize_Get(self.handle)
4475
+ @BufferSize.setter
4476
+ def BufferSize(self, value):
4477
+ if isinstance(value, go.GoClass):
4478
+ _linksockslib.linksocks_ServerOption_BufferSize_Set(self.handle, value.handle)
4294
4479
  else:
4295
- self.handle = _linksockslib.linksocks_AuthMessage_CTor()
4296
- _linksockslib.IncRef(self.handle)
4297
- if 0 < len(args):
4298
- self.Token = args[0]
4299
- if "Token" in kwargs:
4300
- self.Token = kwargs["Token"]
4301
- if 1 < len(args):
4302
- self.Reverse = args[1]
4303
- if "Reverse" in kwargs:
4304
- self.Reverse = kwargs["Reverse"]
4305
- if 2 < len(args):
4306
- self.Instance = args[2]
4307
- if "Instance" in kwargs:
4308
- self.Instance = kwargs["Instance"]
4309
- def __del__(self):
4310
- _linksockslib.DecRef(self.handle)
4311
- def __str__(self):
4312
- pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
4313
- sv = 'linksocks.AuthMessage{'
4314
- first = True
4315
- for v in pr:
4316
- if callable(v[1]):
4317
- continue
4318
- if first:
4319
- first = False
4320
- else:
4321
- sv += ', '
4322
- sv += v[0] + '=' + str(v[1])
4323
- return sv + '}'
4324
- def __repr__(self):
4325
- pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
4326
- sv = 'linksocks.AuthMessage ( '
4327
- for v in pr:
4328
- if not callable(v[1]):
4329
- sv += v[0] + '=' + str(v[1]) + ', '
4330
- return sv + ')'
4480
+ _linksockslib.linksocks_ServerOption_BufferSize_Set(self.handle, value)
4331
4481
  @property
4332
- def Token(self):
4333
- return _linksockslib.linksocks_AuthMessage_Token_Get(self.handle)
4334
- @Token.setter
4335
- def Token(self, value):
4482
+ def APIKey(self):
4483
+ return _linksockslib.linksocks_ServerOption_APIKey_Get(self.handle)
4484
+ @APIKey.setter
4485
+ def APIKey(self, value):
4336
4486
  if isinstance(value, go.GoClass):
4337
- _linksockslib.linksocks_AuthMessage_Token_Set(self.handle, value.handle)
4487
+ _linksockslib.linksocks_ServerOption_APIKey_Set(self.handle, value.handle)
4338
4488
  else:
4339
- _linksockslib.linksocks_AuthMessage_Token_Set(self.handle, value)
4489
+ _linksockslib.linksocks_ServerOption_APIKey_Set(self.handle, value)
4340
4490
  @property
4341
- def Reverse(self):
4342
- return _linksockslib.linksocks_AuthMessage_Reverse_Get(self.handle)
4343
- @Reverse.setter
4344
- def Reverse(self, value):
4491
+ def ChannelTimeout(self):
4492
+ return _linksockslib.linksocks_ServerOption_ChannelTimeout_Get(self.handle)
4493
+ @ChannelTimeout.setter
4494
+ def ChannelTimeout(self, value):
4345
4495
  if isinstance(value, go.GoClass):
4346
- _linksockslib.linksocks_AuthMessage_Reverse_Set(self.handle, value.handle)
4496
+ _linksockslib.linksocks_ServerOption_ChannelTimeout_Set(self.handle, value.handle)
4347
4497
  else:
4348
- _linksockslib.linksocks_AuthMessage_Reverse_Set(self.handle, value)
4498
+ _linksockslib.linksocks_ServerOption_ChannelTimeout_Set(self.handle, value)
4349
4499
  @property
4350
- def Instance(self):
4351
- return go.uuid_UUID(handle=_linksockslib.linksocks_AuthMessage_Instance_Get(self.handle))
4352
- def GetType(self):
4353
- """GetType() str"""
4354
- return _linksockslib.linksocks_AuthMessage_GetType(self.handle)
4355
-
4356
- # Python type for struct linksocks.CLI
4357
- class CLI(go.GoClass):
4358
- """CLI represents the command-line interface for LinkSocks\n"""
4359
- def __init__(self, *args, **kwargs):
4360
- """
4361
- handle=A Go-side object is always initialized with an explicit handle=arg
4362
- otherwise parameters can be unnamed in order of field names or named fields
4363
- in which case a new Go object is constructed first
4364
- """
4365
- if len(kwargs) == 1 and 'handle' in kwargs:
4366
- self.handle = kwargs['handle']
4367
- _linksockslib.IncRef(self.handle)
4368
- elif len(args) == 1 and isinstance(args[0], go.GoClass):
4369
- self.handle = args[0].handle
4370
- _linksockslib.IncRef(self.handle)
4500
+ def ConnectTimeout(self):
4501
+ return _linksockslib.linksocks_ServerOption_ConnectTimeout_Get(self.handle)
4502
+ @ConnectTimeout.setter
4503
+ def ConnectTimeout(self, value):
4504
+ if isinstance(value, go.GoClass):
4505
+ _linksockslib.linksocks_ServerOption_ConnectTimeout_Set(self.handle, value.handle)
4371
4506
  else:
4372
- self.handle = _linksockslib.linksocks_CLI_CTor()
4373
- _linksockslib.IncRef(self.handle)
4374
- def __del__(self):
4375
- _linksockslib.DecRef(self.handle)
4376
- def __str__(self):
4377
- pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
4378
- sv = 'linksocks.CLI{'
4379
- first = True
4380
- for v in pr:
4381
- if callable(v[1]):
4382
- continue
4383
- if first:
4384
- first = False
4385
- else:
4386
- sv += ', '
4387
- sv += v[0] + '=' + str(v[1])
4388
- return sv + '}'
4389
- def __repr__(self):
4390
- pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
4391
- sv = 'linksocks.CLI ( '
4392
- for v in pr:
4393
- if not callable(v[1]):
4394
- sv += v[0] + '=' + str(v[1]) + ', '
4395
- return sv + ')'
4396
- def Execute(self):
4397
- """Execute() str
4398
-
4399
- Execute runs the CLI application
4400
- """
4401
- return _linksockslib.linksocks_CLI_Execute(self.handle)
4402
-
4403
- # Python type for struct linksocks.DataMessage
4404
- class DataMessage(go.GoClass):
4405
- """DataMessage represents a data transfer message\n"""
4406
- def __init__(self, *args, **kwargs):
4407
- """
4408
- handle=A Go-side object is always initialized with an explicit handle=arg
4409
- otherwise parameters can be unnamed in order of field names or named fields
4410
- in which case a new Go object is constructed first
4411
- """
4412
- if len(kwargs) == 1 and 'handle' in kwargs:
4413
- self.handle = kwargs['handle']
4414
- _linksockslib.IncRef(self.handle)
4415
- elif len(args) == 1 and isinstance(args[0], go.GoClass):
4416
- self.handle = args[0].handle
4417
- _linksockslib.IncRef(self.handle)
4507
+ _linksockslib.linksocks_ServerOption_ConnectTimeout_Set(self.handle, value)
4508
+ @property
4509
+ def FastOpen(self):
4510
+ return _linksockslib.linksocks_ServerOption_FastOpen_Get(self.handle)
4511
+ @FastOpen.setter
4512
+ def FastOpen(self, value):
4513
+ if isinstance(value, go.GoClass):
4514
+ _linksockslib.linksocks_ServerOption_FastOpen_Set(self.handle, value.handle)
4418
4515
  else:
4419
- self.handle = _linksockslib.linksocks_DataMessage_CTor()
4420
- _linksockslib.IncRef(self.handle)
4421
- if 0 < len(args):
4422
- self.Protocol = args[0]
4423
- if "Protocol" in kwargs:
4424
- self.Protocol = kwargs["Protocol"]
4425
- if 1 < len(args):
4426
- self.ChannelID = args[1]
4427
- if "ChannelID" in kwargs:
4428
- self.ChannelID = kwargs["ChannelID"]
4429
- if 2 < len(args):
4430
- self.Data = args[2]
4431
- if "Data" in kwargs:
4432
- self.Data = kwargs["Data"]
4433
- if 3 < len(args):
4434
- self.Compression = args[3]
4435
- if "Compression" in kwargs:
4436
- self.Compression = kwargs["Compression"]
4437
- if 4 < len(args):
4438
- self.Address = args[4]
4439
- if "Address" in kwargs:
4440
- self.Address = kwargs["Address"]
4441
- if 5 < len(args):
4442
- self.Port = args[5]
4443
- if "Port" in kwargs:
4444
- self.Port = kwargs["Port"]
4445
- if 6 < len(args):
4446
- self.TargetAddr = args[6]
4447
- if "TargetAddr" in kwargs:
4448
- self.TargetAddr = kwargs["TargetAddr"]
4449
- if 7 < len(args):
4450
- self.TargetPort = args[7]
4451
- if "TargetPort" in kwargs:
4452
- self.TargetPort = kwargs["TargetPort"]
4453
- def __del__(self):
4454
- _linksockslib.DecRef(self.handle)
4455
- def __str__(self):
4456
- pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
4457
- sv = 'linksocks.DataMessage{'
4458
- first = True
4459
- for v in pr:
4460
- if callable(v[1]):
4461
- continue
4462
- if first:
4463
- first = False
4464
- else:
4465
- sv += ', '
4466
- sv += v[0] + '=' + str(v[1])
4467
- return sv + '}'
4468
- def __repr__(self):
4469
- pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
4470
- sv = 'linksocks.DataMessage ( '
4471
- for v in pr:
4472
- if not callable(v[1]):
4473
- sv += v[0] + '=' + str(v[1]) + ', '
4474
- return sv + ')'
4475
- @property
4476
- def Protocol(self):
4477
- return _linksockslib.linksocks_DataMessage_Protocol_Get(self.handle)
4478
- @Protocol.setter
4479
- def Protocol(self, value):
4480
- if isinstance(value, go.GoClass):
4481
- _linksockslib.linksocks_DataMessage_Protocol_Set(self.handle, value.handle)
4482
- else:
4483
- _linksockslib.linksocks_DataMessage_Protocol_Set(self.handle, value)
4484
- @property
4485
- def ChannelID(self):
4486
- return go.uuid_UUID(handle=_linksockslib.linksocks_DataMessage_ChannelID_Get(self.handle))
4487
- @property
4488
- def Data(self):
4489
- return go.Slice_byte(handle=_linksockslib.linksocks_DataMessage_Data_Get(self.handle))
4490
- @Data.setter
4491
- def Data(self, value):
4492
- if isinstance(value, go.GoClass):
4493
- _linksockslib.linksocks_DataMessage_Data_Set(self.handle, value.handle)
4494
- else:
4495
- raise TypeError("supplied argument type {t} is not a go.GoClass".format(t=type(value)))
4496
- @property
4497
- def Compression(self):
4498
- return _linksockslib.linksocks_DataMessage_Compression_Get(self.handle)
4499
- @Compression.setter
4500
- def Compression(self, value):
4501
- if isinstance(value, go.GoClass):
4502
- _linksockslib.linksocks_DataMessage_Compression_Set(self.handle, value.handle)
4503
- else:
4504
- _linksockslib.linksocks_DataMessage_Compression_Set(self.handle, value)
4505
- @property
4506
- def Address(self):
4507
- return _linksockslib.linksocks_DataMessage_Address_Get(self.handle)
4508
- @Address.setter
4509
- def Address(self, value):
4510
- if isinstance(value, go.GoClass):
4511
- _linksockslib.linksocks_DataMessage_Address_Set(self.handle, value.handle)
4512
- else:
4513
- _linksockslib.linksocks_DataMessage_Address_Set(self.handle, value)
4516
+ _linksockslib.linksocks_ServerOption_FastOpen_Set(self.handle, value)
4514
4517
  @property
4515
- def Port(self):
4516
- return _linksockslib.linksocks_DataMessage_Port_Get(self.handle)
4517
- @Port.setter
4518
- def Port(self, value):
4518
+ def UpstreamProxy(self):
4519
+ return _linksockslib.linksocks_ServerOption_UpstreamProxy_Get(self.handle)
4520
+ @UpstreamProxy.setter
4521
+ def UpstreamProxy(self, value):
4519
4522
  if isinstance(value, go.GoClass):
4520
- _linksockslib.linksocks_DataMessage_Port_Set(self.handle, value.handle)
4523
+ _linksockslib.linksocks_ServerOption_UpstreamProxy_Set(self.handle, value.handle)
4521
4524
  else:
4522
- _linksockslib.linksocks_DataMessage_Port_Set(self.handle, value)
4525
+ _linksockslib.linksocks_ServerOption_UpstreamProxy_Set(self.handle, value)
4523
4526
  @property
4524
- def TargetAddr(self):
4525
- return _linksockslib.linksocks_DataMessage_TargetAddr_Get(self.handle)
4526
- @TargetAddr.setter
4527
- def TargetAddr(self, value):
4527
+ def UpstreamUsername(self):
4528
+ return _linksockslib.linksocks_ServerOption_UpstreamUsername_Get(self.handle)
4529
+ @UpstreamUsername.setter
4530
+ def UpstreamUsername(self, value):
4528
4531
  if isinstance(value, go.GoClass):
4529
- _linksockslib.linksocks_DataMessage_TargetAddr_Set(self.handle, value.handle)
4532
+ _linksockslib.linksocks_ServerOption_UpstreamUsername_Set(self.handle, value.handle)
4530
4533
  else:
4531
- _linksockslib.linksocks_DataMessage_TargetAddr_Set(self.handle, value)
4534
+ _linksockslib.linksocks_ServerOption_UpstreamUsername_Set(self.handle, value)
4532
4535
  @property
4533
- def TargetPort(self):
4534
- return _linksockslib.linksocks_DataMessage_TargetPort_Get(self.handle)
4535
- @TargetPort.setter
4536
- def TargetPort(self, value):
4536
+ def UpstreamPassword(self):
4537
+ return _linksockslib.linksocks_ServerOption_UpstreamPassword_Get(self.handle)
4538
+ @UpstreamPassword.setter
4539
+ def UpstreamPassword(self, value):
4537
4540
  if isinstance(value, go.GoClass):
4538
- _linksockslib.linksocks_DataMessage_TargetPort_Set(self.handle, value.handle)
4539
- else:
4540
- _linksockslib.linksocks_DataMessage_TargetPort_Set(self.handle, value)
4541
- def GetType(self):
4542
- """GetType() str"""
4543
- return _linksockslib.linksocks_DataMessage_GetType(self.handle)
4544
-
4545
- # Python type for struct linksocks.DynamicForwarder
4546
- class DynamicForwarder(go.GoClass):
4547
- """DynamicForwarder handles dynamic batching and sending of network data\n"""
4548
- def __init__(self, *args, **kwargs):
4549
- """
4550
- handle=A Go-side object is always initialized with an explicit handle=arg
4551
- otherwise parameters can be unnamed in order of field names or named fields
4552
- in which case a new Go object is constructed first
4553
- """
4554
- if len(kwargs) == 1 and 'handle' in kwargs:
4555
- self.handle = kwargs['handle']
4556
- _linksockslib.IncRef(self.handle)
4557
- elif len(args) == 1 and isinstance(args[0], go.GoClass):
4558
- self.handle = args[0].handle
4559
- _linksockslib.IncRef(self.handle)
4541
+ _linksockslib.linksocks_ServerOption_UpstreamPassword_Set(self.handle, value.handle)
4560
4542
  else:
4561
- self.handle = _linksockslib.linksocks_DynamicForwarder_CTor()
4562
- _linksockslib.IncRef(self.handle)
4563
- def __del__(self):
4564
- _linksockslib.DecRef(self.handle)
4565
- def __str__(self):
4566
- pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
4567
- sv = 'linksocks.DynamicForwarder{'
4568
- first = True
4569
- for v in pr:
4570
- if callable(v[1]):
4571
- continue
4572
- if first:
4573
- first = False
4574
- else:
4575
- sv += ', '
4576
- sv += v[0] + '=' + str(v[1])
4577
- return sv + '}'
4578
- def __repr__(self):
4579
- pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
4580
- sv = 'linksocks.DynamicForwarder ( '
4581
- for v in pr:
4582
- if not callable(v[1]):
4583
- sv += v[0] + '=' + str(v[1]) + ', '
4584
- return sv + ')'
4585
- def ProcessReads(self, conn, goRun=False):
4586
- """ProcessReads(object conn)
4543
+ _linksockslib.linksocks_ServerOption_UpstreamPassword_Set(self.handle, value)
4544
+ def WithWSHost(self, host):
4545
+ """WithWSHost(str host) object
4587
4546
 
4588
- ProcessReads handles reading from a network connection and forwarding to WebSocket with dynamic batching
4547
+ WithWSHost sets the WebSocket host
4589
4548
  """
4590
- _linksockslib.linksocks_DynamicForwarder_ProcessReads(self.handle, conn.handle, goRun)
4591
- def ProcessReadsImmediate(self, conn, goRun=False):
4592
- """ProcessReadsImmediate(object conn)
4549
+ return ServerOption(handle=_linksockslib.linksocks_ServerOption_WithWSHost(self.handle, host))
4550
+ def WithWSPort(self, port):
4551
+ """WithWSPort(int port) object
4593
4552
 
4594
- processReadsImmediate handles reading directly without batching
4553
+ WithWSPort sets the WebSocket port
4595
4554
  """
4596
- _linksockslib.linksocks_DynamicForwarder_ProcessReadsImmediate(self.handle, conn.handle, goRun)
4597
- def ProcessUDPReads(self, conn, goRun=False):
4598
- """ProcessUDPReads(object conn)
4555
+ return ServerOption(handle=_linksockslib.linksocks_ServerOption_WithWSPort(self.handle, port))
4556
+ def WithSocksHost(self, host):
4557
+ """WithSocksHost(str host) object
4599
4558
 
4600
- ProcessUDPReads handles reading from a UDP connection with appropriate metadata
4601
- """
4602
- _linksockslib.linksocks_DynamicForwarder_ProcessUDPReads(self.handle, conn.handle, goRun)
4603
-
4604
- # Python type for struct linksocks.TokenStatus
4605
- class TokenStatus(go.GoClass):
4606
- """TokenStatus represents the status of a token\n"""
4607
- def __init__(self, *args, **kwargs):
4608
- """
4609
- handle=A Go-side object is always initialized with an explicit handle=arg
4610
- otherwise parameters can be unnamed in order of field names or named fields
4611
- in which case a new Go object is constructed first
4612
- """
4613
- if len(kwargs) == 1 and 'handle' in kwargs:
4614
- self.handle = kwargs['handle']
4615
- _linksockslib.IncRef(self.handle)
4616
- elif len(args) == 1 and isinstance(args[0], go.GoClass):
4617
- self.handle = args[0].handle
4618
- _linksockslib.IncRef(self.handle)
4619
- else:
4620
- self.handle = _linksockslib.linksocks_TokenStatus_CTor()
4621
- _linksockslib.IncRef(self.handle)
4622
- if 0 < len(args):
4623
- self.Token = args[0]
4624
- if "Token" in kwargs:
4625
- self.Token = kwargs["Token"]
4626
- if 1 < len(args):
4627
- self.Type = args[1]
4628
- if "Type" in kwargs:
4629
- self.Type = kwargs["Type"]
4630
- if 2 < len(args):
4631
- self.ClientsCount = args[2]
4632
- if "ClientsCount" in kwargs:
4633
- self.ClientsCount = kwargs["ClientsCount"]
4634
- def __del__(self):
4635
- _linksockslib.DecRef(self.handle)
4636
- def __str__(self):
4637
- pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
4638
- sv = 'linksocks.TokenStatus{'
4639
- first = True
4640
- for v in pr:
4641
- if callable(v[1]):
4642
- continue
4643
- if first:
4644
- first = False
4645
- else:
4646
- sv += ', '
4647
- sv += v[0] + '=' + str(v[1])
4648
- return sv + '}'
4649
- def __repr__(self):
4650
- pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
4651
- sv = 'linksocks.TokenStatus ( '
4652
- for v in pr:
4653
- if not callable(v[1]):
4654
- sv += v[0] + '=' + str(v[1]) + ', '
4655
- return sv + ')'
4656
- @property
4657
- def Token(self):
4658
- return _linksockslib.linksocks_TokenStatus_Token_Get(self.handle)
4659
- @Token.setter
4660
- def Token(self, value):
4661
- if isinstance(value, go.GoClass):
4662
- _linksockslib.linksocks_TokenStatus_Token_Set(self.handle, value.handle)
4663
- else:
4664
- _linksockslib.linksocks_TokenStatus_Token_Set(self.handle, value)
4665
- @property
4666
- def Type(self):
4667
- return _linksockslib.linksocks_TokenStatus_Type_Get(self.handle)
4668
- @Type.setter
4669
- def Type(self, value):
4670
- if isinstance(value, go.GoClass):
4671
- _linksockslib.linksocks_TokenStatus_Type_Set(self.handle, value.handle)
4672
- else:
4673
- _linksockslib.linksocks_TokenStatus_Type_Set(self.handle, value)
4674
- @property
4675
- def ClientsCount(self):
4676
- return _linksockslib.linksocks_TokenStatus_ClientsCount_Get(self.handle)
4677
- @ClientsCount.setter
4678
- def ClientsCount(self, value):
4679
- if isinstance(value, go.GoClass):
4680
- _linksockslib.linksocks_TokenStatus_ClientsCount_Set(self.handle, value.handle)
4681
- else:
4682
- _linksockslib.linksocks_TokenStatus_ClientsCount_Set(self.handle, value)
4683
-
4684
- # Python type for struct linksocks.LinkSocksServer
4685
- class LinkSocksServer(go.GoClass):
4686
- """LinkSocksServer represents a SOCKS5 over WebSocket protocol server\n"""
4687
- def __init__(self, *args, **kwargs):
4688
- """
4689
- handle=A Go-side object is always initialized with an explicit handle=arg
4690
- otherwise parameters can be unnamed in order of field names or named fields
4691
- in which case a new Go object is constructed first
4559
+ WithSocksHost sets the SOCKS host
4692
4560
  """
4693
- if len(kwargs) == 1 and 'handle' in kwargs:
4694
- self.handle = kwargs['handle']
4695
- _linksockslib.IncRef(self.handle)
4696
- elif len(args) == 1 and isinstance(args[0], go.GoClass):
4697
- self.handle = args[0].handle
4698
- _linksockslib.IncRef(self.handle)
4699
- else:
4700
- self.handle = _linksockslib.linksocks_LinkSocksServer_CTor()
4701
- _linksockslib.IncRef(self.handle)
4702
- def __del__(self):
4703
- _linksockslib.DecRef(self.handle)
4704
- def __str__(self):
4705
- pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
4706
- sv = 'linksocks.LinkSocksServer{'
4707
- first = True
4708
- for v in pr:
4709
- if callable(v[1]):
4710
- continue
4711
- if first:
4712
- first = False
4713
- else:
4714
- sv += ', '
4715
- sv += v[0] + '=' + str(v[1])
4716
- return sv + '}'
4717
- def __repr__(self):
4718
- pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
4719
- sv = 'linksocks.LinkSocksServer ( '
4720
- for v in pr:
4721
- if not callable(v[1]):
4722
- sv += v[0] + '=' + str(v[1]) + ', '
4723
- return sv + ')'
4724
- def AddReverseToken(self, opts):
4725
- """AddReverseToken(object opts) object, str
4561
+ return ServerOption(handle=_linksockslib.linksocks_ServerOption_WithSocksHost(self.handle, host))
4562
+ def WithPortPool(self, pool):
4563
+ """WithPortPool(object pool) object
4726
4564
 
4727
- AddReverseToken adds a new token for reverse socks and assigns a port
4565
+ WithPortPool sets the port pool
4728
4566
  """
4729
- return ReverseTokenResult(handle=_linksockslib.linksocks_LinkSocksServer_AddReverseToken(self.handle, opts.handle))
4730
- def AddForwardToken(self, token):
4731
- """AddForwardToken(str token) str, str
4567
+ return ServerOption(handle=_linksockslib.linksocks_ServerOption_WithPortPool(self.handle, pool.handle))
4568
+ def WithSocksWaitClient(self, wait):
4569
+ """WithSocksWaitClient(bool wait) object
4732
4570
 
4733
- AddForwardToken adds a new token for forward socks proxy
4571
+ WithSocksWaitClient sets whether to wait for client before starting SOCKS server
4734
4572
  """
4735
- return _linksockslib.linksocks_LinkSocksServer_AddForwardToken(self.handle, token)
4736
- def AddConnectorToken(self, connectorToken, reverseToken):
4737
- """AddConnectorToken(str connectorToken, str reverseToken) str, str
4573
+ return ServerOption(handle=_linksockslib.linksocks_ServerOption_WithSocksWaitClient(self.handle, wait))
4574
+ def WithLogger(self, logger):
4575
+ """WithLogger(object logger) object
4738
4576
 
4739
- AddConnectorToken adds a new connector token that forwards requests to a reverse token
4577
+ WithLogger sets the logger
4740
4578
  """
4741
- return _linksockslib.linksocks_LinkSocksServer_AddConnectorToken(self.handle, connectorToken, reverseToken)
4742
- def RemoveToken(self, token):
4743
- """RemoveToken(str token) bool
4579
+ return ServerOption(handle=_linksockslib.linksocks_ServerOption_WithLogger(self.handle, logger.handle))
4580
+ def WithBufferSize(self, size):
4581
+ """WithBufferSize(int size) object
4744
4582
 
4745
- RemoveToken removes a token and disconnects all its clients
4583
+ WithBufferSize sets the buffer size for data transfer
4746
4584
  """
4747
- return _linksockslib.linksocks_LinkSocksServer_RemoveToken(self.handle, token)
4748
- def Serve(self, ctx):
4749
- """Serve(object ctx) str
4585
+ return ServerOption(handle=_linksockslib.linksocks_ServerOption_WithBufferSize(self.handle, size))
4586
+ def WithAPI(self, apiKey):
4587
+ """WithAPI(str apiKey) object
4750
4588
 
4751
- Serve starts the WebSocket server and waits for clients
4589
+ WithAPI sets apiKey to enable the HTTP API
4752
4590
  """
4753
- return _linksockslib.linksocks_LinkSocksServer_Serve(self.handle, ctx.handle)
4754
- def WaitReady(self, ctx, timeout):
4755
- """WaitReady(object ctx, long timeout) str
4591
+ return ServerOption(handle=_linksockslib.linksocks_ServerOption_WithAPI(self.handle, apiKey))
4592
+ def WithChannelTimeout(self, timeout):
4593
+ """WithChannelTimeout(long timeout) object
4756
4594
 
4757
- WaitReady starts the server and waits for the server to be ready with optional timeout
4595
+ WithChannelTimeout sets the channel timeout duration
4758
4596
  """
4759
- return _linksockslib.linksocks_LinkSocksServer_WaitReady(self.handle, ctx.handle, timeout)
4760
- def Close(self, goRun=False):
4761
- """Close()
4597
+ return ServerOption(handle=_linksockslib.linksocks_ServerOption_WithChannelTimeout(self.handle, timeout))
4598
+ def WithConnectTimeout(self, timeout):
4599
+ """WithConnectTimeout(long timeout) object
4762
4600
 
4763
- Close gracefully shuts down the LinkSocksServer
4601
+ WithConnectTimeout sets the connect timeout duration
4764
4602
  """
4765
- _linksockslib.linksocks_LinkSocksServer_Close(self.handle, goRun)
4766
- def GetClientCount(self):
4767
- """GetClientCount() int
4603
+ return ServerOption(handle=_linksockslib.linksocks_ServerOption_WithConnectTimeout(self.handle, timeout))
4604
+ def WithFastOpen(self, fastOpen):
4605
+ """WithFastOpen(bool fastOpen) object
4768
4606
 
4769
- GetClientCount returns the total number of connected clients
4607
+ WithFastOpen controls whether to wait for connect success response
4770
4608
  """
4771
- return _linksockslib.linksocks_LinkSocksServer_GetClientCount(self.handle)
4772
- def HasClients(self):
4773
- """HasClients() bool
4609
+ return ServerOption(handle=_linksockslib.linksocks_ServerOption_WithFastOpen(self.handle, fastOpen))
4610
+ def WithUpstreamProxy(self, proxy):
4611
+ """WithUpstreamProxy(str proxy) object
4774
4612
 
4775
- HasClients returns true if there are any connected clients
4613
+ WithUpstreamProxy sets the upstream SOCKS5 proxy
4776
4614
  """
4777
- return _linksockslib.linksocks_LinkSocksServer_HasClients(self.handle)
4778
- def GetTokenClientCount(self, token):
4779
- """GetTokenClientCount(str token) int
4615
+ return ServerOption(handle=_linksockslib.linksocks_ServerOption_WithUpstreamProxy(self.handle, proxy))
4616
+ def WithUpstreamAuth(self, username, password):
4617
+ """WithUpstreamAuth(str username, str password) object
4780
4618
 
4781
- GetTokenClientCount counts clients connected for a given token
4619
+ WithUpstreamAuth sets the upstream SOCKS5 proxy authentication
4782
4620
  """
4783
- return _linksockslib.linksocks_LinkSocksServer_GetTokenClientCount(self.handle, token)
4621
+ return ServerOption(handle=_linksockslib.linksocks_ServerOption_WithUpstreamAuth(self.handle, username, password))
4784
4622
 
4785
4623
  # Python type for struct linksocks.TokenRequest
4786
4624
  class TokenRequest(go.GoClass):
@@ -4914,9 +4752,256 @@ class TokenRequest(go.GoClass):
4914
4752
  else:
4915
4753
  _linksockslib.linksocks_TokenRequest_AllowManageConnector_Set(self.handle, value)
4916
4754
 
4917
- # Python type for struct linksocks.ReverseTokenStatus
4918
- class ReverseTokenStatus(TokenStatus):
4919
- """ReverseTokenStatus represents the status of a reverse token\n"""
4755
+ # Python type for struct linksocks.WSConn
4756
+ class WSConn(go.GoClass):
4757
+ """WSConn wraps a websocket.Conn with mutex protection\n"""
4758
+ def __init__(self, *args, **kwargs):
4759
+ """
4760
+ handle=A Go-side object is always initialized with an explicit handle=arg
4761
+ otherwise parameters can be unnamed in order of field names or named fields
4762
+ in which case a new Go object is constructed first
4763
+ """
4764
+ if len(kwargs) == 1 and 'handle' in kwargs:
4765
+ self.handle = kwargs['handle']
4766
+ _linksockslib.IncRef(self.handle)
4767
+ elif len(args) == 1 and isinstance(args[0], go.GoClass):
4768
+ self.handle = args[0].handle
4769
+ _linksockslib.IncRef(self.handle)
4770
+ else:
4771
+ self.handle = _linksockslib.linksocks_WSConn_CTor()
4772
+ _linksockslib.IncRef(self.handle)
4773
+ def __del__(self):
4774
+ _linksockslib.DecRef(self.handle)
4775
+ def __str__(self):
4776
+ pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
4777
+ sv = 'linksocks.WSConn{'
4778
+ first = True
4779
+ for v in pr:
4780
+ if callable(v[1]):
4781
+ continue
4782
+ if first:
4783
+ first = False
4784
+ else:
4785
+ sv += ', '
4786
+ sv += v[0] + '=' + str(v[1])
4787
+ return sv + '}'
4788
+ def __repr__(self):
4789
+ pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
4790
+ sv = 'linksocks.WSConn ( '
4791
+ for v in pr:
4792
+ if not callable(v[1]):
4793
+ sv += v[0] + '=' + str(v[1]) + ', '
4794
+ return sv + ')'
4795
+ def Label(self):
4796
+ """Label() str"""
4797
+ return _linksockslib.linksocks_WSConn_Label(self.handle)
4798
+ def GetClientIP(self):
4799
+ """GetClientIP() str
4800
+
4801
+ GetClientIP returns the client IP address
4802
+ """
4803
+ return _linksockslib.linksocks_WSConn_GetClientIP(self.handle)
4804
+ def SetClientIPFromRequest(self, r, goRun=False):
4805
+ """SetClientIPFromRequest(object r)
4806
+
4807
+ SetClientIPFromRequest extracts and sets the client IP from HTTP request
4808
+ """
4809
+ _linksockslib.linksocks_WSConn_SetClientIPFromRequest(self.handle, r.handle, goRun)
4810
+ def SyncWriteBinary(self, data):
4811
+ """SyncWriteBinary([]int data) str
4812
+
4813
+ SyncWriteBinary performs thread-safe binary writes to the websocket connection
4814
+ """
4815
+ return _linksockslib.linksocks_WSConn_SyncWriteBinary(self.handle, data.handle)
4816
+ def ReadMessage(self):
4817
+ """ReadMessage() object, str
4818
+
4819
+ ReadMessage reads a BaseMessage from the websocket connection
4820
+ """
4821
+ return BaseMessage(handle=_linksockslib.linksocks_WSConn_ReadMessage(self.handle))
4822
+ def WriteMessage(self, msg):
4823
+ """WriteMessage(object msg) str
4824
+
4825
+ WriteMessage writes a BaseMessage to the websocket connection
4826
+ """
4827
+ return _linksockslib.linksocks_WSConn_WriteMessage(self.handle, msg.handle)
4828
+ def SyncWriteControl(self, messageType, data, deadline):
4829
+ """SyncWriteControl(int messageType, []int data, object deadline) str
4830
+
4831
+ SyncWriteControl performs thread-safe control message writes and tracks ping time
4832
+ """
4833
+ return _linksockslib.linksocks_WSConn_SyncWriteControl(self.handle, messageType, data.handle, deadline.handle)
4834
+ def Close(self):
4835
+ """Close() str
4836
+
4837
+ Close closes the underlying websocket connection
4838
+ """
4839
+ return _linksockslib.linksocks_WSConn_Close(self.handle)
4840
+
4841
+ # Python type for struct linksocks.StatusResponse
4842
+ class StatusResponse(go.GoClass):
4843
+ """StatusResponse represents the server status\n"""
4844
+ def __init__(self, *args, **kwargs):
4845
+ """
4846
+ handle=A Go-side object is always initialized with an explicit handle=arg
4847
+ otherwise parameters can be unnamed in order of field names or named fields
4848
+ in which case a new Go object is constructed first
4849
+ """
4850
+ if len(kwargs) == 1 and 'handle' in kwargs:
4851
+ self.handle = kwargs['handle']
4852
+ _linksockslib.IncRef(self.handle)
4853
+ elif len(args) == 1 and isinstance(args[0], go.GoClass):
4854
+ self.handle = args[0].handle
4855
+ _linksockslib.IncRef(self.handle)
4856
+ else:
4857
+ self.handle = _linksockslib.linksocks_StatusResponse_CTor()
4858
+ _linksockslib.IncRef(self.handle)
4859
+ if 0 < len(args):
4860
+ self.Version = args[0]
4861
+ if "Version" in kwargs:
4862
+ self.Version = kwargs["Version"]
4863
+ if 1 < len(args):
4864
+ self.Tokens = args[1]
4865
+ if "Tokens" in kwargs:
4866
+ self.Tokens = kwargs["Tokens"]
4867
+ def __del__(self):
4868
+ _linksockslib.DecRef(self.handle)
4869
+ def __str__(self):
4870
+ pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
4871
+ sv = 'linksocks.StatusResponse{'
4872
+ first = True
4873
+ for v in pr:
4874
+ if callable(v[1]):
4875
+ continue
4876
+ if first:
4877
+ first = False
4878
+ else:
4879
+ sv += ', '
4880
+ sv += v[0] + '=' + str(v[1])
4881
+ return sv + '}'
4882
+ def __repr__(self):
4883
+ pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
4884
+ sv = 'linksocks.StatusResponse ( '
4885
+ for v in pr:
4886
+ if not callable(v[1]):
4887
+ sv += v[0] + '=' + str(v[1]) + ', '
4888
+ return sv + ')'
4889
+ @property
4890
+ def Version(self):
4891
+ return _linksockslib.linksocks_StatusResponse_Version_Get(self.handle)
4892
+ @Version.setter
4893
+ def Version(self, value):
4894
+ if isinstance(value, go.GoClass):
4895
+ _linksockslib.linksocks_StatusResponse_Version_Set(self.handle, value.handle)
4896
+ else:
4897
+ _linksockslib.linksocks_StatusResponse_Version_Set(self.handle, value)
4898
+ @property
4899
+ def Tokens(self):
4900
+ return Slice_interface_(handle=_linksockslib.linksocks_StatusResponse_Tokens_Get(self.handle))
4901
+ @Tokens.setter
4902
+ def Tokens(self, value):
4903
+ if isinstance(value, go.GoClass):
4904
+ _linksockslib.linksocks_StatusResponse_Tokens_Set(self.handle, value.handle)
4905
+ else:
4906
+ raise TypeError("supplied argument type {t} is not a go.GoClass".format(t=type(value)))
4907
+
4908
+ # Python type for struct linksocks.APIHandler
4909
+ class APIHandler(go.GoClass):
4910
+ """APIHandler handles HTTP API requests for LinkSocksServer\n"""
4911
+ def __init__(self, *args, **kwargs):
4912
+ """
4913
+ handle=A Go-side object is always initialized with an explicit handle=arg
4914
+ otherwise parameters can be unnamed in order of field names or named fields
4915
+ in which case a new Go object is constructed first
4916
+ """
4917
+ if len(kwargs) == 1 and 'handle' in kwargs:
4918
+ self.handle = kwargs['handle']
4919
+ _linksockslib.IncRef(self.handle)
4920
+ elif len(args) == 1 and isinstance(args[0], go.GoClass):
4921
+ self.handle = args[0].handle
4922
+ _linksockslib.IncRef(self.handle)
4923
+ else:
4924
+ self.handle = _linksockslib.linksocks_APIHandler_CTor()
4925
+ _linksockslib.IncRef(self.handle)
4926
+ def __del__(self):
4927
+ _linksockslib.DecRef(self.handle)
4928
+ def __str__(self):
4929
+ pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
4930
+ sv = 'linksocks.APIHandler{'
4931
+ first = True
4932
+ for v in pr:
4933
+ if callable(v[1]):
4934
+ continue
4935
+ if first:
4936
+ first = False
4937
+ else:
4938
+ sv += ', '
4939
+ sv += v[0] + '=' + str(v[1])
4940
+ return sv + '}'
4941
+ def __repr__(self):
4942
+ pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
4943
+ sv = 'linksocks.APIHandler ( '
4944
+ for v in pr:
4945
+ if not callable(v[1]):
4946
+ sv += v[0] + '=' + str(v[1]) + ', '
4947
+ return sv + ')'
4948
+ def RegisterHandlers(self, mux, goRun=False):
4949
+ """RegisterHandlers(object mux)
4950
+
4951
+ RegisterHandlers registers API endpoints with the provided mux
4952
+ """
4953
+ _linksockslib.linksocks_APIHandler_RegisterHandlers(self.handle, mux.handle, goRun)
4954
+
4955
+ # Python type for struct linksocks.CLI
4956
+ class CLI(go.GoClass):
4957
+ """CLI represents the command-line interface for LinkSocks\n"""
4958
+ def __init__(self, *args, **kwargs):
4959
+ """
4960
+ handle=A Go-side object is always initialized with an explicit handle=arg
4961
+ otherwise parameters can be unnamed in order of field names or named fields
4962
+ in which case a new Go object is constructed first
4963
+ """
4964
+ if len(kwargs) == 1 and 'handle' in kwargs:
4965
+ self.handle = kwargs['handle']
4966
+ _linksockslib.IncRef(self.handle)
4967
+ elif len(args) == 1 and isinstance(args[0], go.GoClass):
4968
+ self.handle = args[0].handle
4969
+ _linksockslib.IncRef(self.handle)
4970
+ else:
4971
+ self.handle = _linksockslib.linksocks_CLI_CTor()
4972
+ _linksockslib.IncRef(self.handle)
4973
+ def __del__(self):
4974
+ _linksockslib.DecRef(self.handle)
4975
+ def __str__(self):
4976
+ pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
4977
+ sv = 'linksocks.CLI{'
4978
+ first = True
4979
+ for v in pr:
4980
+ if callable(v[1]):
4981
+ continue
4982
+ if first:
4983
+ first = False
4984
+ else:
4985
+ sv += ', '
4986
+ sv += v[0] + '=' + str(v[1])
4987
+ return sv + '}'
4988
+ def __repr__(self):
4989
+ pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
4990
+ sv = 'linksocks.CLI ( '
4991
+ for v in pr:
4992
+ if not callable(v[1]):
4993
+ sv += v[0] + '=' + str(v[1]) + ', '
4994
+ return sv + ')'
4995
+ def Execute(self):
4996
+ """Execute() str
4997
+
4998
+ Execute runs the CLI application
4999
+ """
5000
+ return _linksockslib.linksocks_CLI_Execute(self.handle)
5001
+
5002
+ # Python type for struct linksocks.ConnectorResponseMessage
5003
+ class ConnectorResponseMessage(go.GoClass):
5004
+ """ConnectorResponseMessage represents a connector management response\n"""
4920
5005
  def __init__(self, *args, **kwargs):
4921
5006
  """
4922
5007
  handle=A Go-side object is always initialized with an explicit handle=arg
@@ -4930,21 +5015,29 @@ class ReverseTokenStatus(TokenStatus):
4930
5015
  self.handle = args[0].handle
4931
5016
  _linksockslib.IncRef(self.handle)
4932
5017
  else:
4933
- self.handle = _linksockslib.linksocks_ReverseTokenStatus_CTor()
5018
+ self.handle = _linksockslib.linksocks_ConnectorResponseMessage_CTor()
4934
5019
  _linksockslib.IncRef(self.handle)
5020
+ if 0 < len(args):
5021
+ self.Success = args[0]
5022
+ if "Success" in kwargs:
5023
+ self.Success = kwargs["Success"]
4935
5024
  if 1 < len(args):
4936
- self.Port = args[1]
4937
- if "Port" in kwargs:
4938
- self.Port = kwargs["Port"]
5025
+ self.Error = args[1]
5026
+ if "Error" in kwargs:
5027
+ self.Error = kwargs["Error"]
4939
5028
  if 2 < len(args):
4940
- self.ConnectorTokens = args[2]
4941
- if "ConnectorTokens" in kwargs:
4942
- self.ConnectorTokens = kwargs["ConnectorTokens"]
5029
+ self.ChannelID = args[2]
5030
+ if "ChannelID" in kwargs:
5031
+ self.ChannelID = kwargs["ChannelID"]
5032
+ if 3 < len(args):
5033
+ self.ConnectorToken = args[3]
5034
+ if "ConnectorToken" in kwargs:
5035
+ self.ConnectorToken = kwargs["ConnectorToken"]
4943
5036
  def __del__(self):
4944
5037
  _linksockslib.DecRef(self.handle)
4945
5038
  def __str__(self):
4946
5039
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
4947
- sv = 'linksocks.ReverseTokenStatus{'
5040
+ sv = 'linksocks.ConnectorResponseMessage{'
4948
5041
  first = True
4949
5042
  for v in pr:
4950
5043
  if callable(v[1]):
@@ -4957,33 +5050,48 @@ class ReverseTokenStatus(TokenStatus):
4957
5050
  return sv + '}'
4958
5051
  def __repr__(self):
4959
5052
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
4960
- sv = 'linksocks.ReverseTokenStatus ( '
5053
+ sv = 'linksocks.ConnectorResponseMessage ( '
4961
5054
  for v in pr:
4962
5055
  if not callable(v[1]):
4963
5056
  sv += v[0] + '=' + str(v[1]) + ', '
4964
5057
  return sv + ')'
4965
5058
  @property
4966
- def Port(self):
4967
- return _linksockslib.linksocks_ReverseTokenStatus_Port_Get(self.handle)
4968
- @Port.setter
4969
- def Port(self, value):
5059
+ def Success(self):
5060
+ return _linksockslib.linksocks_ConnectorResponseMessage_Success_Get(self.handle)
5061
+ @Success.setter
5062
+ def Success(self, value):
4970
5063
  if isinstance(value, go.GoClass):
4971
- _linksockslib.linksocks_ReverseTokenStatus_Port_Set(self.handle, value.handle)
5064
+ _linksockslib.linksocks_ConnectorResponseMessage_Success_Set(self.handle, value.handle)
4972
5065
  else:
4973
- _linksockslib.linksocks_ReverseTokenStatus_Port_Set(self.handle, value)
5066
+ _linksockslib.linksocks_ConnectorResponseMessage_Success_Set(self.handle, value)
4974
5067
  @property
4975
- def ConnectorTokens(self):
4976
- return go.Slice_string(handle=_linksockslib.linksocks_ReverseTokenStatus_ConnectorTokens_Get(self.handle))
4977
- @ConnectorTokens.setter
4978
- def ConnectorTokens(self, value):
5068
+ def Error(self):
5069
+ return _linksockslib.linksocks_ConnectorResponseMessage_Error_Get(self.handle)
5070
+ @Error.setter
5071
+ def Error(self, value):
4979
5072
  if isinstance(value, go.GoClass):
4980
- _linksockslib.linksocks_ReverseTokenStatus_ConnectorTokens_Set(self.handle, value.handle)
5073
+ _linksockslib.linksocks_ConnectorResponseMessage_Error_Set(self.handle, value.handle)
4981
5074
  else:
4982
- raise TypeError("supplied argument type {t} is not a go.GoClass".format(t=type(value)))
5075
+ _linksockslib.linksocks_ConnectorResponseMessage_Error_Set(self.handle, value)
5076
+ @property
5077
+ def ChannelID(self):
5078
+ return go.uuid_UUID(handle=_linksockslib.linksocks_ConnectorResponseMessage_ChannelID_Get(self.handle))
5079
+ @property
5080
+ def ConnectorToken(self):
5081
+ return _linksockslib.linksocks_ConnectorResponseMessage_ConnectorToken_Get(self.handle)
5082
+ @ConnectorToken.setter
5083
+ def ConnectorToken(self, value):
5084
+ if isinstance(value, go.GoClass):
5085
+ _linksockslib.linksocks_ConnectorResponseMessage_ConnectorToken_Set(self.handle, value.handle)
5086
+ else:
5087
+ _linksockslib.linksocks_ConnectorResponseMessage_ConnectorToken_Set(self.handle, value)
5088
+ def GetType(self):
5089
+ """GetType() str"""
5090
+ return _linksockslib.linksocks_ConnectorResponseMessage_GetType(self.handle)
4983
5091
 
4984
- # Python type for struct linksocks.WSConn
4985
- class WSConn(go.GoClass):
4986
- """WSConn wraps a websocket.Conn with mutex protection\n"""
5092
+ # Python type for struct linksocks.ContextWithCancel
5093
+ class ContextWithCancel(go.GoClass):
5094
+ """ContextWithCancel wraps context and cancel function for Python bindings\n"""
4987
5095
  def __init__(self, *args, **kwargs):
4988
5096
  """
4989
5097
  handle=A Go-side object is always initialized with an explicit handle=arg
@@ -4997,13 +5105,13 @@ class WSConn(go.GoClass):
4997
5105
  self.handle = args[0].handle
4998
5106
  _linksockslib.IncRef(self.handle)
4999
5107
  else:
5000
- self.handle = _linksockslib.linksocks_WSConn_CTor()
5108
+ self.handle = _linksockslib.linksocks_ContextWithCancel_CTor()
5001
5109
  _linksockslib.IncRef(self.handle)
5002
5110
  def __del__(self):
5003
5111
  _linksockslib.DecRef(self.handle)
5004
5112
  def __str__(self):
5005
5113
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
5006
- sv = 'linksocks.WSConn{'
5114
+ sv = 'linksocks.ContextWithCancel{'
5007
5115
  first = True
5008
5116
  for v in pr:
5009
5117
  if callable(v[1]):
@@ -5016,60 +5124,27 @@ class WSConn(go.GoClass):
5016
5124
  return sv + '}'
5017
5125
  def __repr__(self):
5018
5126
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
5019
- sv = 'linksocks.WSConn ( '
5127
+ sv = 'linksocks.ContextWithCancel ( '
5020
5128
  for v in pr:
5021
5129
  if not callable(v[1]):
5022
5130
  sv += v[0] + '=' + str(v[1]) + ', '
5023
5131
  return sv + ')'
5024
- def Label(self):
5025
- """Label() str"""
5026
- return _linksockslib.linksocks_WSConn_Label(self.handle)
5027
- def GetClientIP(self):
5028
- """GetClientIP() str
5029
-
5030
- GetClientIP returns the client IP address
5031
- """
5032
- return _linksockslib.linksocks_WSConn_GetClientIP(self.handle)
5033
- def SetClientIPFromRequest(self, r, goRun=False):
5034
- """SetClientIPFromRequest(object r)
5035
-
5036
- SetClientIPFromRequest extracts and sets the client IP from HTTP request
5037
- """
5038
- _linksockslib.linksocks_WSConn_SetClientIPFromRequest(self.handle, r.handle, goRun)
5039
- def SyncWriteBinary(self, data):
5040
- """SyncWriteBinary([]int data) str
5041
-
5042
- SyncWriteBinary performs thread-safe binary writes to the websocket connection
5043
- """
5044
- return _linksockslib.linksocks_WSConn_SyncWriteBinary(self.handle, data.handle)
5045
- def ReadMessage(self):
5046
- """ReadMessage() object, str
5047
-
5048
- ReadMessage reads a BaseMessage from the websocket connection
5049
- """
5050
- return BaseMessage(handle=_linksockslib.linksocks_WSConn_ReadMessage(self.handle))
5051
- def WriteMessage(self, msg):
5052
- """WriteMessage(object msg) str
5053
-
5054
- WriteMessage writes a BaseMessage to the websocket connection
5055
- """
5056
- return _linksockslib.linksocks_WSConn_WriteMessage(self.handle, msg.handle)
5057
- def SyncWriteControl(self, messageType, data, deadline):
5058
- """SyncWriteControl(int messageType, []int data, object deadline) str
5132
+ def Cancel(self, goRun=False):
5133
+ """Cancel()
5059
5134
 
5060
- SyncWriteControl performs thread-safe control message writes and tracks ping time
5135
+ Cancel calls the cancel function to cancel the context
5061
5136
  """
5062
- return _linksockslib.linksocks_WSConn_SyncWriteControl(self.handle, messageType, data.handle, deadline.handle)
5063
- def Close(self):
5064
- """Close() str
5137
+ _linksockslib.linksocks_ContextWithCancel_Cancel(self.handle, goRun)
5138
+ def Context(self):
5139
+ """Context() object
5065
5140
 
5066
- Close closes the underlying websocket connection
5141
+ Context returns the underlying context.Context
5067
5142
  """
5068
- return _linksockslib.linksocks_WSConn_Close(self.handle)
5143
+ return go.context_Context(handle=_linksockslib.linksocks_ContextWithCancel_Context(self.handle))
5069
5144
 
5070
- # Python type for struct linksocks.APIHandler
5071
- class APIHandler(go.GoClass):
5072
- """APIHandler handles HTTP API requests for LinkSocksServer\n"""
5145
+ # Python type for struct linksocks.PortPool
5146
+ class PortPool(go.GoClass):
5147
+ """PortPool is a thread-safe port pool for managing available network ports\n"""
5073
5148
  def __init__(self, *args, **kwargs):
5074
5149
  """
5075
5150
  handle=A Go-side object is always initialized with an explicit handle=arg
@@ -5083,13 +5158,13 @@ class APIHandler(go.GoClass):
5083
5158
  self.handle = args[0].handle
5084
5159
  _linksockslib.IncRef(self.handle)
5085
5160
  else:
5086
- self.handle = _linksockslib.linksocks_APIHandler_CTor()
5161
+ self.handle = _linksockslib.linksocks_PortPool_CTor()
5087
5162
  _linksockslib.IncRef(self.handle)
5088
5163
  def __del__(self):
5089
5164
  _linksockslib.DecRef(self.handle)
5090
5165
  def __str__(self):
5091
5166
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
5092
- sv = 'linksocks.APIHandler{'
5167
+ sv = 'linksocks.PortPool{'
5093
5168
  first = True
5094
5169
  for v in pr:
5095
5170
  if callable(v[1]):
@@ -5102,21 +5177,28 @@ class APIHandler(go.GoClass):
5102
5177
  return sv + '}'
5103
5178
  def __repr__(self):
5104
5179
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
5105
- sv = 'linksocks.APIHandler ( '
5180
+ sv = 'linksocks.PortPool ( '
5106
5181
  for v in pr:
5107
5182
  if not callable(v[1]):
5108
5183
  sv += v[0] + '=' + str(v[1]) + ', '
5109
5184
  return sv + ')'
5110
- def RegisterHandlers(self, mux, goRun=False):
5111
- """RegisterHandlers(object mux)
5185
+ def Get(self, requestedPort):
5186
+ """Get(int requestedPort) int
5112
5187
 
5113
- RegisterHandlers registers API endpoints with the provided mux
5188
+ Get retrieves an available port from the pool
5189
+ If a specific port is requested, it will try to allocate that port
5114
5190
  """
5115
- _linksockslib.linksocks_APIHandler_RegisterHandlers(self.handle, mux.handle, goRun)
5191
+ return _linksockslib.linksocks_PortPool_Get(self.handle, requestedPort)
5192
+ def Put(self, port, goRun=False):
5193
+ """Put(int port)
5194
+
5195
+ Put returns a port back to the pool
5196
+ """
5197
+ _linksockslib.linksocks_PortPool_Put(self.handle, port, goRun)
5116
5198
 
5117
- # Python type for struct linksocks.ConnectMessage
5118
- class ConnectMessage(go.GoClass):
5119
- """ConnectMessage represents a TCP connection request\n"""
5199
+ # Python type for struct linksocks.ReverseTokenResult
5200
+ class ReverseTokenResult(go.GoClass):
5201
+ """ReverseTokenResult represents the result of adding a reverse token\n"""
5120
5202
  def __init__(self, *args, **kwargs):
5121
5203
  """
5122
5204
  handle=A Go-side object is always initialized with an explicit handle=arg
@@ -5130,29 +5212,21 @@ class ConnectMessage(go.GoClass):
5130
5212
  self.handle = args[0].handle
5131
5213
  _linksockslib.IncRef(self.handle)
5132
5214
  else:
5133
- self.handle = _linksockslib.linksocks_ConnectMessage_CTor()
5215
+ self.handle = _linksockslib.linksocks_ReverseTokenResult_CTor()
5134
5216
  _linksockslib.IncRef(self.handle)
5135
5217
  if 0 < len(args):
5136
- self.Protocol = args[0]
5137
- if "Protocol" in kwargs:
5138
- self.Protocol = kwargs["Protocol"]
5218
+ self.Token = args[0]
5219
+ if "Token" in kwargs:
5220
+ self.Token = kwargs["Token"]
5139
5221
  if 1 < len(args):
5140
- self.Address = args[1]
5141
- if "Address" in kwargs:
5142
- self.Address = kwargs["Address"]
5143
- if 2 < len(args):
5144
- self.Port = args[2]
5222
+ self.Port = args[1]
5145
5223
  if "Port" in kwargs:
5146
5224
  self.Port = kwargs["Port"]
5147
- if 3 < len(args):
5148
- self.ChannelID = args[3]
5149
- if "ChannelID" in kwargs:
5150
- self.ChannelID = kwargs["ChannelID"]
5151
5225
  def __del__(self):
5152
5226
  _linksockslib.DecRef(self.handle)
5153
5227
  def __str__(self):
5154
5228
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
5155
- sv = 'linksocks.ConnectMessage{'
5229
+ sv = 'linksocks.ReverseTokenResult{'
5156
5230
  first = True
5157
5231
  for v in pr:
5158
5232
  if callable(v[1]):
@@ -5165,48 +5239,86 @@ class ConnectMessage(go.GoClass):
5165
5239
  return sv + '}'
5166
5240
  def __repr__(self):
5167
5241
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
5168
- sv = 'linksocks.ConnectMessage ( '
5242
+ sv = 'linksocks.ReverseTokenResult ( '
5169
5243
  for v in pr:
5170
5244
  if not callable(v[1]):
5171
5245
  sv += v[0] + '=' + str(v[1]) + ', '
5172
5246
  return sv + ')'
5173
5247
  @property
5174
- def Protocol(self):
5175
- return _linksockslib.linksocks_ConnectMessage_Protocol_Get(self.handle)
5176
- @Protocol.setter
5177
- def Protocol(self, value):
5178
- if isinstance(value, go.GoClass):
5179
- _linksockslib.linksocks_ConnectMessage_Protocol_Set(self.handle, value.handle)
5180
- else:
5181
- _linksockslib.linksocks_ConnectMessage_Protocol_Set(self.handle, value)
5182
- @property
5183
- def Address(self):
5184
- return _linksockslib.linksocks_ConnectMessage_Address_Get(self.handle)
5185
- @Address.setter
5186
- def Address(self, value):
5248
+ def Token(self):
5249
+ return _linksockslib.linksocks_ReverseTokenResult_Token_Get(self.handle)
5250
+ @Token.setter
5251
+ def Token(self, value):
5187
5252
  if isinstance(value, go.GoClass):
5188
- _linksockslib.linksocks_ConnectMessage_Address_Set(self.handle, value.handle)
5253
+ _linksockslib.linksocks_ReverseTokenResult_Token_Set(self.handle, value.handle)
5189
5254
  else:
5190
- _linksockslib.linksocks_ConnectMessage_Address_Set(self.handle, value)
5255
+ _linksockslib.linksocks_ReverseTokenResult_Token_Set(self.handle, value)
5191
5256
  @property
5192
5257
  def Port(self):
5193
- return _linksockslib.linksocks_ConnectMessage_Port_Get(self.handle)
5258
+ return _linksockslib.linksocks_ReverseTokenResult_Port_Get(self.handle)
5194
5259
  @Port.setter
5195
5260
  def Port(self, value):
5196
5261
  if isinstance(value, go.GoClass):
5197
- _linksockslib.linksocks_ConnectMessage_Port_Set(self.handle, value.handle)
5262
+ _linksockslib.linksocks_ReverseTokenResult_Port_Set(self.handle, value.handle)
5198
5263
  else:
5199
- _linksockslib.linksocks_ConnectMessage_Port_Set(self.handle, value)
5200
- @property
5201
- def ChannelID(self):
5202
- return go.uuid_UUID(handle=_linksockslib.linksocks_ConnectMessage_ChannelID_Get(self.handle))
5203
- def GetType(self):
5204
- """GetType() str"""
5205
- return _linksockslib.linksocks_ConnectMessage_GetType(self.handle)
5264
+ _linksockslib.linksocks_ReverseTokenResult_Port_Set(self.handle, value)
5265
+
5266
+ # Python type for struct linksocks.SocketManager
5267
+ class SocketManager(go.GoClass):
5268
+ """SocketManager manages socket lifecycle and reuse\n"""
5269
+ def __init__(self, *args, **kwargs):
5270
+ """
5271
+ handle=A Go-side object is always initialized with an explicit handle=arg
5272
+ otherwise parameters can be unnamed in order of field names or named fields
5273
+ in which case a new Go object is constructed first
5274
+ """
5275
+ if len(kwargs) == 1 and 'handle' in kwargs:
5276
+ self.handle = kwargs['handle']
5277
+ _linksockslib.IncRef(self.handle)
5278
+ elif len(args) == 1 and isinstance(args[0], go.GoClass):
5279
+ self.handle = args[0].handle
5280
+ _linksockslib.IncRef(self.handle)
5281
+ else:
5282
+ self.handle = _linksockslib.linksocks_SocketManager_CTor()
5283
+ _linksockslib.IncRef(self.handle)
5284
+ def __del__(self):
5285
+ _linksockslib.DecRef(self.handle)
5286
+ def __str__(self):
5287
+ pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
5288
+ sv = 'linksocks.SocketManager{'
5289
+ first = True
5290
+ for v in pr:
5291
+ if callable(v[1]):
5292
+ continue
5293
+ if first:
5294
+ first = False
5295
+ else:
5296
+ sv += ', '
5297
+ sv += v[0] + '=' + str(v[1])
5298
+ return sv + '}'
5299
+ def __repr__(self):
5300
+ pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
5301
+ sv = 'linksocks.SocketManager ( '
5302
+ for v in pr:
5303
+ if not callable(v[1]):
5304
+ sv += v[0] + '=' + str(v[1]) + ', '
5305
+ return sv + ')'
5306
+ def GetListener(self, port):
5307
+ """GetListener(int port) object, str"""
5308
+ return go.net_Listener(handle=_linksockslib.linksocks_SocketManager_GetListener(self.handle, port))
5309
+ def ReleaseListener(self, port, goRun=False):
5310
+ """ReleaseListener(int port) """
5311
+ _linksockslib.linksocks_SocketManager_ReleaseListener(self.handle, port, goRun)
5312
+ def Close(self, goRun=False):
5313
+ """Close()
5314
+
5315
+ Close closes all managed sockets immediately
5316
+ """
5317
+ _linksockslib.linksocks_SocketManager_Close(self.handle, goRun)
5206
5318
 
5207
- # Python type for struct linksocks.ServerOption
5208
- class ServerOption(go.GoClass):
5209
- """ServerOption represents configuration options for LinkSocksServer\n"""
5319
+ # Python type for struct linksocks.DataMessage
5320
+ class DataMessage(go.GoClass):
5321
+ """DataMessage represents a data transfer message\n"""
5210
5322
  def __init__(self, *args, **kwargs):
5211
5323
  """
5212
5324
  handle=A Go-side object is always initialized with an explicit handle=arg
@@ -5220,69 +5332,45 @@ class ServerOption(go.GoClass):
5220
5332
  self.handle = args[0].handle
5221
5333
  _linksockslib.IncRef(self.handle)
5222
5334
  else:
5223
- self.handle = _linksockslib.linksocks_ServerOption_CTor()
5335
+ self.handle = _linksockslib.linksocks_DataMessage_CTor()
5224
5336
  _linksockslib.IncRef(self.handle)
5225
5337
  if 0 < len(args):
5226
- self.WSHost = args[0]
5227
- if "WSHost" in kwargs:
5228
- self.WSHost = kwargs["WSHost"]
5338
+ self.Protocol = args[0]
5339
+ if "Protocol" in kwargs:
5340
+ self.Protocol = kwargs["Protocol"]
5229
5341
  if 1 < len(args):
5230
- self.WSPort = args[1]
5231
- if "WSPort" in kwargs:
5232
- self.WSPort = kwargs["WSPort"]
5342
+ self.ChannelID = args[1]
5343
+ if "ChannelID" in kwargs:
5344
+ self.ChannelID = kwargs["ChannelID"]
5233
5345
  if 2 < len(args):
5234
- self.SocksHost = args[2]
5235
- if "SocksHost" in kwargs:
5236
- self.SocksHost = kwargs["SocksHost"]
5346
+ self.Data = args[2]
5347
+ if "Data" in kwargs:
5348
+ self.Data = kwargs["Data"]
5237
5349
  if 3 < len(args):
5238
- self.PortPool = args[3]
5239
- if "PortPool" in kwargs:
5240
- self.PortPool = kwargs["PortPool"]
5350
+ self.Compression = args[3]
5351
+ if "Compression" in kwargs:
5352
+ self.Compression = kwargs["Compression"]
5241
5353
  if 4 < len(args):
5242
- self.SocksWaitClient = args[4]
5243
- if "SocksWaitClient" in kwargs:
5244
- self.SocksWaitClient = kwargs["SocksWaitClient"]
5354
+ self.Address = args[4]
5355
+ if "Address" in kwargs:
5356
+ self.Address = kwargs["Address"]
5245
5357
  if 5 < len(args):
5246
- self.Logger = args[5]
5247
- if "Logger" in kwargs:
5248
- self.Logger = kwargs["Logger"]
5358
+ self.Port = args[5]
5359
+ if "Port" in kwargs:
5360
+ self.Port = kwargs["Port"]
5249
5361
  if 6 < len(args):
5250
- self.BufferSize = args[6]
5251
- if "BufferSize" in kwargs:
5252
- self.BufferSize = kwargs["BufferSize"]
5362
+ self.TargetAddr = args[6]
5363
+ if "TargetAddr" in kwargs:
5364
+ self.TargetAddr = kwargs["TargetAddr"]
5253
5365
  if 7 < len(args):
5254
- self.APIKey = args[7]
5255
- if "APIKey" in kwargs:
5256
- self.APIKey = kwargs["APIKey"]
5257
- if 8 < len(args):
5258
- self.ChannelTimeout = args[8]
5259
- if "ChannelTimeout" in kwargs:
5260
- self.ChannelTimeout = kwargs["ChannelTimeout"]
5261
- if 9 < len(args):
5262
- self.ConnectTimeout = args[9]
5263
- if "ConnectTimeout" in kwargs:
5264
- self.ConnectTimeout = kwargs["ConnectTimeout"]
5265
- if 10 < len(args):
5266
- self.FastOpen = args[10]
5267
- if "FastOpen" in kwargs:
5268
- self.FastOpen = kwargs["FastOpen"]
5269
- if 11 < len(args):
5270
- self.UpstreamProxy = args[11]
5271
- if "UpstreamProxy" in kwargs:
5272
- self.UpstreamProxy = kwargs["UpstreamProxy"]
5273
- if 12 < len(args):
5274
- self.UpstreamUsername = args[12]
5275
- if "UpstreamUsername" in kwargs:
5276
- self.UpstreamUsername = kwargs["UpstreamUsername"]
5277
- if 13 < len(args):
5278
- self.UpstreamPassword = args[13]
5279
- if "UpstreamPassword" in kwargs:
5280
- self.UpstreamPassword = kwargs["UpstreamPassword"]
5366
+ self.TargetPort = args[7]
5367
+ if "TargetPort" in kwargs:
5368
+ self.TargetPort = kwargs["TargetPort"]
5281
5369
  def __del__(self):
5282
5370
  _linksockslib.DecRef(self.handle)
5283
5371
  def __str__(self):
5284
5372
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
5285
- sv = 'linksocks.ServerOption{'
5373
+ sv = 'linksocks.DataMessage{'
5286
5374
  first = True
5287
5375
  for v in pr:
5288
5376
  if callable(v[1]):
@@ -5295,219 +5383,84 @@ class ServerOption(go.GoClass):
5295
5383
  return sv + '}'
5296
5384
  def __repr__(self):
5297
5385
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
5298
- sv = 'linksocks.ServerOption ( '
5386
+ sv = 'linksocks.DataMessage ( '
5299
5387
  for v in pr:
5300
5388
  if not callable(v[1]):
5301
5389
  sv += v[0] + '=' + str(v[1]) + ', '
5302
5390
  return sv + ')'
5303
5391
  @property
5304
- def WSHost(self):
5305
- return _linksockslib.linksocks_ServerOption_WSHost_Get(self.handle)
5306
- @WSHost.setter
5307
- def WSHost(self, value):
5308
- if isinstance(value, go.GoClass):
5309
- _linksockslib.linksocks_ServerOption_WSHost_Set(self.handle, value.handle)
5310
- else:
5311
- _linksockslib.linksocks_ServerOption_WSHost_Set(self.handle, value)
5312
- @property
5313
- def WSPort(self):
5314
- return _linksockslib.linksocks_ServerOption_WSPort_Get(self.handle)
5315
- @WSPort.setter
5316
- def WSPort(self, value):
5317
- if isinstance(value, go.GoClass):
5318
- _linksockslib.linksocks_ServerOption_WSPort_Set(self.handle, value.handle)
5319
- else:
5320
- _linksockslib.linksocks_ServerOption_WSPort_Set(self.handle, value)
5321
- @property
5322
- def SocksHost(self):
5323
- return _linksockslib.linksocks_ServerOption_SocksHost_Get(self.handle)
5324
- @SocksHost.setter
5325
- def SocksHost(self, value):
5326
- if isinstance(value, go.GoClass):
5327
- _linksockslib.linksocks_ServerOption_SocksHost_Set(self.handle, value.handle)
5328
- else:
5329
- _linksockslib.linksocks_ServerOption_SocksHost_Set(self.handle, value)
5330
- @property
5331
- def PortPool(self):
5332
- return PortPool(handle=_linksockslib.linksocks_ServerOption_PortPool_Get(self.handle))
5333
- @PortPool.setter
5334
- def PortPool(self, value):
5392
+ def Protocol(self):
5393
+ return _linksockslib.linksocks_DataMessage_Protocol_Get(self.handle)
5394
+ @Protocol.setter
5395
+ def Protocol(self, value):
5335
5396
  if isinstance(value, go.GoClass):
5336
- _linksockslib.linksocks_ServerOption_PortPool_Set(self.handle, value.handle)
5397
+ _linksockslib.linksocks_DataMessage_Protocol_Set(self.handle, value.handle)
5337
5398
  else:
5338
- raise TypeError("supplied argument type {t} is not a go.GoClass".format(t=type(value)))
5399
+ _linksockslib.linksocks_DataMessage_Protocol_Set(self.handle, value)
5339
5400
  @property
5340
- def SocksWaitClient(self):
5341
- return _linksockslib.linksocks_ServerOption_SocksWaitClient_Get(self.handle)
5342
- @SocksWaitClient.setter
5343
- def SocksWaitClient(self, value):
5344
- if isinstance(value, go.GoClass):
5345
- _linksockslib.linksocks_ServerOption_SocksWaitClient_Set(self.handle, value.handle)
5346
- else:
5347
- _linksockslib.linksocks_ServerOption_SocksWaitClient_Set(self.handle, value)
5401
+ def ChannelID(self):
5402
+ return go.uuid_UUID(handle=_linksockslib.linksocks_DataMessage_ChannelID_Get(self.handle))
5348
5403
  @property
5349
- def Logger(self):
5350
- return go.zerolog_Logger(handle=_linksockslib.linksocks_ServerOption_Logger_Get(self.handle))
5351
- @Logger.setter
5352
- def Logger(self, value):
5404
+ def Data(self):
5405
+ return go.Slice_byte(handle=_linksockslib.linksocks_DataMessage_Data_Get(self.handle))
5406
+ @Data.setter
5407
+ def Data(self, value):
5353
5408
  if isinstance(value, go.GoClass):
5354
- _linksockslib.linksocks_ServerOption_Logger_Set(self.handle, value.handle)
5409
+ _linksockslib.linksocks_DataMessage_Data_Set(self.handle, value.handle)
5355
5410
  else:
5356
5411
  raise TypeError("supplied argument type {t} is not a go.GoClass".format(t=type(value)))
5357
5412
  @property
5358
- def BufferSize(self):
5359
- return _linksockslib.linksocks_ServerOption_BufferSize_Get(self.handle)
5360
- @BufferSize.setter
5361
- def BufferSize(self, value):
5362
- if isinstance(value, go.GoClass):
5363
- _linksockslib.linksocks_ServerOption_BufferSize_Set(self.handle, value.handle)
5364
- else:
5365
- _linksockslib.linksocks_ServerOption_BufferSize_Set(self.handle, value)
5366
- @property
5367
- def APIKey(self):
5368
- return _linksockslib.linksocks_ServerOption_APIKey_Get(self.handle)
5369
- @APIKey.setter
5370
- def APIKey(self, value):
5371
- if isinstance(value, go.GoClass):
5372
- _linksockslib.linksocks_ServerOption_APIKey_Set(self.handle, value.handle)
5373
- else:
5374
- _linksockslib.linksocks_ServerOption_APIKey_Set(self.handle, value)
5375
- @property
5376
- def ChannelTimeout(self):
5377
- return _linksockslib.linksocks_ServerOption_ChannelTimeout_Get(self.handle)
5378
- @ChannelTimeout.setter
5379
- def ChannelTimeout(self, value):
5380
- if isinstance(value, go.GoClass):
5381
- _linksockslib.linksocks_ServerOption_ChannelTimeout_Set(self.handle, value.handle)
5382
- else:
5383
- _linksockslib.linksocks_ServerOption_ChannelTimeout_Set(self.handle, value)
5384
- @property
5385
- def ConnectTimeout(self):
5386
- return _linksockslib.linksocks_ServerOption_ConnectTimeout_Get(self.handle)
5387
- @ConnectTimeout.setter
5388
- def ConnectTimeout(self, value):
5413
+ def Compression(self):
5414
+ return _linksockslib.linksocks_DataMessage_Compression_Get(self.handle)
5415
+ @Compression.setter
5416
+ def Compression(self, value):
5389
5417
  if isinstance(value, go.GoClass):
5390
- _linksockslib.linksocks_ServerOption_ConnectTimeout_Set(self.handle, value.handle)
5418
+ _linksockslib.linksocks_DataMessage_Compression_Set(self.handle, value.handle)
5391
5419
  else:
5392
- _linksockslib.linksocks_ServerOption_ConnectTimeout_Set(self.handle, value)
5420
+ _linksockslib.linksocks_DataMessage_Compression_Set(self.handle, value)
5393
5421
  @property
5394
- def FastOpen(self):
5395
- return _linksockslib.linksocks_ServerOption_FastOpen_Get(self.handle)
5396
- @FastOpen.setter
5397
- def FastOpen(self, value):
5422
+ def Address(self):
5423
+ return _linksockslib.linksocks_DataMessage_Address_Get(self.handle)
5424
+ @Address.setter
5425
+ def Address(self, value):
5398
5426
  if isinstance(value, go.GoClass):
5399
- _linksockslib.linksocks_ServerOption_FastOpen_Set(self.handle, value.handle)
5427
+ _linksockslib.linksocks_DataMessage_Address_Set(self.handle, value.handle)
5400
5428
  else:
5401
- _linksockslib.linksocks_ServerOption_FastOpen_Set(self.handle, value)
5429
+ _linksockslib.linksocks_DataMessage_Address_Set(self.handle, value)
5402
5430
  @property
5403
- def UpstreamProxy(self):
5404
- return _linksockslib.linksocks_ServerOption_UpstreamProxy_Get(self.handle)
5405
- @UpstreamProxy.setter
5406
- def UpstreamProxy(self, value):
5431
+ def Port(self):
5432
+ return _linksockslib.linksocks_DataMessage_Port_Get(self.handle)
5433
+ @Port.setter
5434
+ def Port(self, value):
5407
5435
  if isinstance(value, go.GoClass):
5408
- _linksockslib.linksocks_ServerOption_UpstreamProxy_Set(self.handle, value.handle)
5436
+ _linksockslib.linksocks_DataMessage_Port_Set(self.handle, value.handle)
5409
5437
  else:
5410
- _linksockslib.linksocks_ServerOption_UpstreamProxy_Set(self.handle, value)
5438
+ _linksockslib.linksocks_DataMessage_Port_Set(self.handle, value)
5411
5439
  @property
5412
- def UpstreamUsername(self):
5413
- return _linksockslib.linksocks_ServerOption_UpstreamUsername_Get(self.handle)
5414
- @UpstreamUsername.setter
5415
- def UpstreamUsername(self, value):
5440
+ def TargetAddr(self):
5441
+ return _linksockslib.linksocks_DataMessage_TargetAddr_Get(self.handle)
5442
+ @TargetAddr.setter
5443
+ def TargetAddr(self, value):
5416
5444
  if isinstance(value, go.GoClass):
5417
- _linksockslib.linksocks_ServerOption_UpstreamUsername_Set(self.handle, value.handle)
5445
+ _linksockslib.linksocks_DataMessage_TargetAddr_Set(self.handle, value.handle)
5418
5446
  else:
5419
- _linksockslib.linksocks_ServerOption_UpstreamUsername_Set(self.handle, value)
5447
+ _linksockslib.linksocks_DataMessage_TargetAddr_Set(self.handle, value)
5420
5448
  @property
5421
- def UpstreamPassword(self):
5422
- return _linksockslib.linksocks_ServerOption_UpstreamPassword_Get(self.handle)
5423
- @UpstreamPassword.setter
5424
- def UpstreamPassword(self, value):
5449
+ def TargetPort(self):
5450
+ return _linksockslib.linksocks_DataMessage_TargetPort_Get(self.handle)
5451
+ @TargetPort.setter
5452
+ def TargetPort(self, value):
5425
5453
  if isinstance(value, go.GoClass):
5426
- _linksockslib.linksocks_ServerOption_UpstreamPassword_Set(self.handle, value.handle)
5454
+ _linksockslib.linksocks_DataMessage_TargetPort_Set(self.handle, value.handle)
5427
5455
  else:
5428
- _linksockslib.linksocks_ServerOption_UpstreamPassword_Set(self.handle, value)
5429
- def WithWSHost(self, host):
5430
- """WithWSHost(str host) object
5431
-
5432
- WithWSHost sets the WebSocket host
5433
- """
5434
- return ServerOption(handle=_linksockslib.linksocks_ServerOption_WithWSHost(self.handle, host))
5435
- def WithWSPort(self, port):
5436
- """WithWSPort(int port) object
5437
-
5438
- WithWSPort sets the WebSocket port
5439
- """
5440
- return ServerOption(handle=_linksockslib.linksocks_ServerOption_WithWSPort(self.handle, port))
5441
- def WithSocksHost(self, host):
5442
- """WithSocksHost(str host) object
5443
-
5444
- WithSocksHost sets the SOCKS host
5445
- """
5446
- return ServerOption(handle=_linksockslib.linksocks_ServerOption_WithSocksHost(self.handle, host))
5447
- def WithPortPool(self, pool):
5448
- """WithPortPool(object pool) object
5449
-
5450
- WithPortPool sets the port pool
5451
- """
5452
- return ServerOption(handle=_linksockslib.linksocks_ServerOption_WithPortPool(self.handle, pool.handle))
5453
- def WithSocksWaitClient(self, wait):
5454
- """WithSocksWaitClient(bool wait) object
5455
-
5456
- WithSocksWaitClient sets whether to wait for client before starting SOCKS server
5457
- """
5458
- return ServerOption(handle=_linksockslib.linksocks_ServerOption_WithSocksWaitClient(self.handle, wait))
5459
- def WithLogger(self, logger):
5460
- """WithLogger(object logger) object
5461
-
5462
- WithLogger sets the logger
5463
- """
5464
- return ServerOption(handle=_linksockslib.linksocks_ServerOption_WithLogger(self.handle, logger.handle))
5465
- def WithBufferSize(self, size):
5466
- """WithBufferSize(int size) object
5467
-
5468
- WithBufferSize sets the buffer size for data transfer
5469
- """
5470
- return ServerOption(handle=_linksockslib.linksocks_ServerOption_WithBufferSize(self.handle, size))
5471
- def WithAPI(self, apiKey):
5472
- """WithAPI(str apiKey) object
5473
-
5474
- WithAPI sets apiKey to enable the HTTP API
5475
- """
5476
- return ServerOption(handle=_linksockslib.linksocks_ServerOption_WithAPI(self.handle, apiKey))
5477
- def WithChannelTimeout(self, timeout):
5478
- """WithChannelTimeout(long timeout) object
5479
-
5480
- WithChannelTimeout sets the channel timeout duration
5481
- """
5482
- return ServerOption(handle=_linksockslib.linksocks_ServerOption_WithChannelTimeout(self.handle, timeout))
5483
- def WithConnectTimeout(self, timeout):
5484
- """WithConnectTimeout(long timeout) object
5485
-
5486
- WithConnectTimeout sets the connect timeout duration
5487
- """
5488
- return ServerOption(handle=_linksockslib.linksocks_ServerOption_WithConnectTimeout(self.handle, timeout))
5489
- def WithFastOpen(self, fastOpen):
5490
- """WithFastOpen(bool fastOpen) object
5491
-
5492
- WithFastOpen controls whether to wait for connect success response
5493
- """
5494
- return ServerOption(handle=_linksockslib.linksocks_ServerOption_WithFastOpen(self.handle, fastOpen))
5495
- def WithUpstreamProxy(self, proxy):
5496
- """WithUpstreamProxy(str proxy) object
5497
-
5498
- WithUpstreamProxy sets the upstream SOCKS5 proxy
5499
- """
5500
- return ServerOption(handle=_linksockslib.linksocks_ServerOption_WithUpstreamProxy(self.handle, proxy))
5501
- def WithUpstreamAuth(self, username, password):
5502
- """WithUpstreamAuth(str username, str password) object
5503
-
5504
- WithUpstreamAuth sets the upstream SOCKS5 proxy authentication
5505
- """
5506
- return ServerOption(handle=_linksockslib.linksocks_ServerOption_WithUpstreamAuth(self.handle, username, password))
5456
+ _linksockslib.linksocks_DataMessage_TargetPort_Set(self.handle, value)
5457
+ def GetType(self):
5458
+ """GetType() str"""
5459
+ return _linksockslib.linksocks_DataMessage_GetType(self.handle)
5507
5460
 
5508
- # Python type for struct linksocks.StatusResponse
5509
- class StatusResponse(go.GoClass):
5510
- """StatusResponse represents the server status\n"""
5461
+ # Python type for struct linksocks.LogEntry
5462
+ class LogEntry(go.GoClass):
5463
+ """LogEntry represents a single log entry with metadata\n"""
5511
5464
  def __init__(self, *args, **kwargs):
5512
5465
  """
5513
5466
  handle=A Go-side object is always initialized with an explicit handle=arg
@@ -5521,21 +5474,25 @@ class StatusResponse(go.GoClass):
5521
5474
  self.handle = args[0].handle
5522
5475
  _linksockslib.IncRef(self.handle)
5523
5476
  else:
5524
- self.handle = _linksockslib.linksocks_StatusResponse_CTor()
5477
+ self.handle = _linksockslib.linksocks_LogEntry_CTor()
5525
5478
  _linksockslib.IncRef(self.handle)
5526
5479
  if 0 < len(args):
5527
- self.Version = args[0]
5528
- if "Version" in kwargs:
5529
- self.Version = kwargs["Version"]
5480
+ self.LoggerID = args[0]
5481
+ if "LoggerID" in kwargs:
5482
+ self.LoggerID = kwargs["LoggerID"]
5530
5483
  if 1 < len(args):
5531
- self.Tokens = args[1]
5532
- if "Tokens" in kwargs:
5533
- self.Tokens = kwargs["Tokens"]
5484
+ self.Message = args[1]
5485
+ if "Message" in kwargs:
5486
+ self.Message = kwargs["Message"]
5487
+ if 2 < len(args):
5488
+ self.Time = args[2]
5489
+ if "Time" in kwargs:
5490
+ self.Time = kwargs["Time"]
5534
5491
  def __del__(self):
5535
5492
  _linksockslib.DecRef(self.handle)
5536
5493
  def __str__(self):
5537
5494
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
5538
- sv = 'linksocks.StatusResponse{'
5495
+ sv = 'linksocks.LogEntry{'
5539
5496
  first = True
5540
5497
  for v in pr:
5541
5498
  if callable(v[1]):
@@ -5548,33 +5505,42 @@ class StatusResponse(go.GoClass):
5548
5505
  return sv + '}'
5549
5506
  def __repr__(self):
5550
5507
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
5551
- sv = 'linksocks.StatusResponse ( '
5508
+ sv = 'linksocks.LogEntry ( '
5552
5509
  for v in pr:
5553
5510
  if not callable(v[1]):
5554
5511
  sv += v[0] + '=' + str(v[1]) + ', '
5555
5512
  return sv + ')'
5556
5513
  @property
5557
- def Version(self):
5558
- return _linksockslib.linksocks_StatusResponse_Version_Get(self.handle)
5559
- @Version.setter
5560
- def Version(self, value):
5514
+ def LoggerID(self):
5515
+ return _linksockslib.linksocks_LogEntry_LoggerID_Get(self.handle)
5516
+ @LoggerID.setter
5517
+ def LoggerID(self, value):
5561
5518
  if isinstance(value, go.GoClass):
5562
- _linksockslib.linksocks_StatusResponse_Version_Set(self.handle, value.handle)
5519
+ _linksockslib.linksocks_LogEntry_LoggerID_Set(self.handle, value.handle)
5563
5520
  else:
5564
- _linksockslib.linksocks_StatusResponse_Version_Set(self.handle, value)
5521
+ _linksockslib.linksocks_LogEntry_LoggerID_Set(self.handle, value)
5565
5522
  @property
5566
- def Tokens(self):
5567
- return Slice_interface_(handle=_linksockslib.linksocks_StatusResponse_Tokens_Get(self.handle))
5568
- @Tokens.setter
5569
- def Tokens(self, value):
5523
+ def Message(self):
5524
+ return _linksockslib.linksocks_LogEntry_Message_Get(self.handle)
5525
+ @Message.setter
5526
+ def Message(self, value):
5570
5527
  if isinstance(value, go.GoClass):
5571
- _linksockslib.linksocks_StatusResponse_Tokens_Set(self.handle, value.handle)
5528
+ _linksockslib.linksocks_LogEntry_Message_Set(self.handle, value.handle)
5572
5529
  else:
5573
- raise TypeError("supplied argument type {t} is not a go.GoClass".format(t=type(value)))
5530
+ _linksockslib.linksocks_LogEntry_Message_Set(self.handle, value)
5531
+ @property
5532
+ def Time(self):
5533
+ return _linksockslib.linksocks_LogEntry_Time_Get(self.handle)
5534
+ @Time.setter
5535
+ def Time(self, value):
5536
+ if isinstance(value, go.GoClass):
5537
+ _linksockslib.linksocks_LogEntry_Time_Set(self.handle, value.handle)
5538
+ else:
5539
+ _linksockslib.linksocks_LogEntry_Time_Set(self.handle, value)
5574
5540
 
5575
- # Python type for struct linksocks.TokenResponse
5576
- class TokenResponse(go.GoClass):
5577
- """TokenResponse represents the response for token operations\n"""
5541
+ # Python type for struct linksocks.PartnersMessage
5542
+ class PartnersMessage(go.GoClass):
5543
+ """PartnersMessage represents a partners count update message\n"""
5578
5544
  def __init__(self, *args, **kwargs):
5579
5545
  """
5580
5546
  handle=A Go-side object is always initialized with an explicit handle=arg
@@ -5588,29 +5554,17 @@ class TokenResponse(go.GoClass):
5588
5554
  self.handle = args[0].handle
5589
5555
  _linksockslib.IncRef(self.handle)
5590
5556
  else:
5591
- self.handle = _linksockslib.linksocks_TokenResponse_CTor()
5557
+ self.handle = _linksockslib.linksocks_PartnersMessage_CTor()
5592
5558
  _linksockslib.IncRef(self.handle)
5593
5559
  if 0 < len(args):
5594
- self.Success = args[0]
5595
- if "Success" in kwargs:
5596
- self.Success = kwargs["Success"]
5597
- if 1 < len(args):
5598
- self.Token = args[1]
5599
- if "Token" in kwargs:
5600
- self.Token = kwargs["Token"]
5601
- if 2 < len(args):
5602
- self.Port = args[2]
5603
- if "Port" in kwargs:
5604
- self.Port = kwargs["Port"]
5605
- if 3 < len(args):
5606
- self.Error = args[3]
5607
- if "Error" in kwargs:
5608
- self.Error = kwargs["Error"]
5560
+ self.Count = args[0]
5561
+ if "Count" in kwargs:
5562
+ self.Count = kwargs["Count"]
5609
5563
  def __del__(self):
5610
5564
  _linksockslib.DecRef(self.handle)
5611
5565
  def __str__(self):
5612
5566
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
5613
- sv = 'linksocks.TokenResponse{'
5567
+ sv = 'linksocks.PartnersMessage{'
5614
5568
  first = True
5615
5569
  for v in pr:
5616
5570
  if callable(v[1]):
@@ -5623,51 +5577,97 @@ class TokenResponse(go.GoClass):
5623
5577
  return sv + '}'
5624
5578
  def __repr__(self):
5625
5579
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
5626
- sv = 'linksocks.TokenResponse ( '
5580
+ sv = 'linksocks.PartnersMessage ( '
5627
5581
  for v in pr:
5628
5582
  if not callable(v[1]):
5629
5583
  sv += v[0] + '=' + str(v[1]) + ', '
5630
5584
  return sv + ')'
5631
5585
  @property
5632
- def Success(self):
5633
- return _linksockslib.linksocks_TokenResponse_Success_Get(self.handle)
5634
- @Success.setter
5635
- def Success(self, value):
5586
+ def Count(self):
5587
+ return _linksockslib.linksocks_PartnersMessage_Count_Get(self.handle)
5588
+ @Count.setter
5589
+ def Count(self, value):
5636
5590
  if isinstance(value, go.GoClass):
5637
- _linksockslib.linksocks_TokenResponse_Success_Set(self.handle, value.handle)
5591
+ _linksockslib.linksocks_PartnersMessage_Count_Set(self.handle, value.handle)
5638
5592
  else:
5639
- _linksockslib.linksocks_TokenResponse_Success_Set(self.handle, value)
5640
- @property
5641
- def Token(self):
5642
- return _linksockslib.linksocks_TokenResponse_Token_Get(self.handle)
5643
- @Token.setter
5644
- def Token(self, value):
5645
- if isinstance(value, go.GoClass):
5646
- _linksockslib.linksocks_TokenResponse_Token_Set(self.handle, value.handle)
5593
+ _linksockslib.linksocks_PartnersMessage_Count_Set(self.handle, value)
5594
+ def GetType(self):
5595
+ """GetType() str"""
5596
+ return _linksockslib.linksocks_PartnersMessage_GetType(self.handle)
5597
+
5598
+ # Python type for struct linksocks.AuthResponseMessage
5599
+ class AuthResponseMessage(go.GoClass):
5600
+ """AuthResponseMessage represents an authentication response\n"""
5601
+ def __init__(self, *args, **kwargs):
5602
+ """
5603
+ handle=A Go-side object is always initialized with an explicit handle=arg
5604
+ otherwise parameters can be unnamed in order of field names or named fields
5605
+ in which case a new Go object is constructed first
5606
+ """
5607
+ if len(kwargs) == 1 and 'handle' in kwargs:
5608
+ self.handle = kwargs['handle']
5609
+ _linksockslib.IncRef(self.handle)
5610
+ elif len(args) == 1 and isinstance(args[0], go.GoClass):
5611
+ self.handle = args[0].handle
5612
+ _linksockslib.IncRef(self.handle)
5647
5613
  else:
5648
- _linksockslib.linksocks_TokenResponse_Token_Set(self.handle, value)
5614
+ self.handle = _linksockslib.linksocks_AuthResponseMessage_CTor()
5615
+ _linksockslib.IncRef(self.handle)
5616
+ if 0 < len(args):
5617
+ self.Success = args[0]
5618
+ if "Success" in kwargs:
5619
+ self.Success = kwargs["Success"]
5620
+ if 1 < len(args):
5621
+ self.Error = args[1]
5622
+ if "Error" in kwargs:
5623
+ self.Error = kwargs["Error"]
5624
+ def __del__(self):
5625
+ _linksockslib.DecRef(self.handle)
5626
+ def __str__(self):
5627
+ pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
5628
+ sv = 'linksocks.AuthResponseMessage{'
5629
+ first = True
5630
+ for v in pr:
5631
+ if callable(v[1]):
5632
+ continue
5633
+ if first:
5634
+ first = False
5635
+ else:
5636
+ sv += ', '
5637
+ sv += v[0] + '=' + str(v[1])
5638
+ return sv + '}'
5639
+ def __repr__(self):
5640
+ pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
5641
+ sv = 'linksocks.AuthResponseMessage ( '
5642
+ for v in pr:
5643
+ if not callable(v[1]):
5644
+ sv += v[0] + '=' + str(v[1]) + ', '
5645
+ return sv + ')'
5649
5646
  @property
5650
- def Port(self):
5651
- return _linksockslib.linksocks_TokenResponse_Port_Get(self.handle)
5652
- @Port.setter
5653
- def Port(self, value):
5647
+ def Success(self):
5648
+ return _linksockslib.linksocks_AuthResponseMessage_Success_Get(self.handle)
5649
+ @Success.setter
5650
+ def Success(self, value):
5654
5651
  if isinstance(value, go.GoClass):
5655
- _linksockslib.linksocks_TokenResponse_Port_Set(self.handle, value.handle)
5652
+ _linksockslib.linksocks_AuthResponseMessage_Success_Set(self.handle, value.handle)
5656
5653
  else:
5657
- _linksockslib.linksocks_TokenResponse_Port_Set(self.handle, value)
5654
+ _linksockslib.linksocks_AuthResponseMessage_Success_Set(self.handle, value)
5658
5655
  @property
5659
5656
  def Error(self):
5660
- return _linksockslib.linksocks_TokenResponse_Error_Get(self.handle)
5657
+ return _linksockslib.linksocks_AuthResponseMessage_Error_Get(self.handle)
5661
5658
  @Error.setter
5662
5659
  def Error(self, value):
5663
5660
  if isinstance(value, go.GoClass):
5664
- _linksockslib.linksocks_TokenResponse_Error_Set(self.handle, value.handle)
5661
+ _linksockslib.linksocks_AuthResponseMessage_Error_Set(self.handle, value.handle)
5665
5662
  else:
5666
- _linksockslib.linksocks_TokenResponse_Error_Set(self.handle, value)
5663
+ _linksockslib.linksocks_AuthResponseMessage_Error_Set(self.handle, value)
5664
+ def GetType(self):
5665
+ """GetType() str"""
5666
+ return _linksockslib.linksocks_AuthResponseMessage_GetType(self.handle)
5667
5667
 
5668
- # Python type for struct linksocks.ConnectorMessage
5669
- class ConnectorMessage(go.GoClass):
5670
- """ConnectorMessage represents a connector management command from reverse client\n"""
5668
+ # Python type for struct linksocks.ConnectResponseMessage
5669
+ class ConnectResponseMessage(go.GoClass):
5670
+ """ConnectResponseMessage represents a connection response\n"""
5671
5671
  def __init__(self, *args, **kwargs):
5672
5672
  """
5673
5673
  handle=A Go-side object is always initialized with an explicit handle=arg
@@ -5681,25 +5681,25 @@ class ConnectorMessage(go.GoClass):
5681
5681
  self.handle = args[0].handle
5682
5682
  _linksockslib.IncRef(self.handle)
5683
5683
  else:
5684
- self.handle = _linksockslib.linksocks_ConnectorMessage_CTor()
5684
+ self.handle = _linksockslib.linksocks_ConnectResponseMessage_CTor()
5685
5685
  _linksockslib.IncRef(self.handle)
5686
5686
  if 0 < len(args):
5687
- self.ChannelID = args[0]
5688
- if "ChannelID" in kwargs:
5689
- self.ChannelID = kwargs["ChannelID"]
5687
+ self.Success = args[0]
5688
+ if "Success" in kwargs:
5689
+ self.Success = kwargs["Success"]
5690
5690
  if 1 < len(args):
5691
- self.ConnectorToken = args[1]
5692
- if "ConnectorToken" in kwargs:
5693
- self.ConnectorToken = kwargs["ConnectorToken"]
5691
+ self.Error = args[1]
5692
+ if "Error" in kwargs:
5693
+ self.Error = kwargs["Error"]
5694
5694
  if 2 < len(args):
5695
- self.Operation = args[2]
5696
- if "Operation" in kwargs:
5697
- self.Operation = kwargs["Operation"]
5695
+ self.ChannelID = args[2]
5696
+ if "ChannelID" in kwargs:
5697
+ self.ChannelID = kwargs["ChannelID"]
5698
5698
  def __del__(self):
5699
5699
  _linksockslib.DecRef(self.handle)
5700
5700
  def __str__(self):
5701
5701
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
5702
- sv = 'linksocks.ConnectorMessage{'
5702
+ sv = 'linksocks.ConnectResponseMessage{'
5703
5703
  first = True
5704
5704
  for v in pr:
5705
5705
  if callable(v[1]):
@@ -5712,35 +5712,35 @@ class ConnectorMessage(go.GoClass):
5712
5712
  return sv + '}'
5713
5713
  def __repr__(self):
5714
5714
  pr = [(p, getattr(self, p)) for p in dir(self) if not p.startswith('__')]
5715
- sv = 'linksocks.ConnectorMessage ( '
5715
+ sv = 'linksocks.ConnectResponseMessage ( '
5716
5716
  for v in pr:
5717
5717
  if not callable(v[1]):
5718
5718
  sv += v[0] + '=' + str(v[1]) + ', '
5719
5719
  return sv + ')'
5720
5720
  @property
5721
- def ChannelID(self):
5722
- return go.uuid_UUID(handle=_linksockslib.linksocks_ConnectorMessage_ChannelID_Get(self.handle))
5723
- @property
5724
- def ConnectorToken(self):
5725
- return _linksockslib.linksocks_ConnectorMessage_ConnectorToken_Get(self.handle)
5726
- @ConnectorToken.setter
5727
- def ConnectorToken(self, value):
5721
+ def Success(self):
5722
+ return _linksockslib.linksocks_ConnectResponseMessage_Success_Get(self.handle)
5723
+ @Success.setter
5724
+ def Success(self, value):
5728
5725
  if isinstance(value, go.GoClass):
5729
- _linksockslib.linksocks_ConnectorMessage_ConnectorToken_Set(self.handle, value.handle)
5726
+ _linksockslib.linksocks_ConnectResponseMessage_Success_Set(self.handle, value.handle)
5730
5727
  else:
5731
- _linksockslib.linksocks_ConnectorMessage_ConnectorToken_Set(self.handle, value)
5728
+ _linksockslib.linksocks_ConnectResponseMessage_Success_Set(self.handle, value)
5732
5729
  @property
5733
- def Operation(self):
5734
- return _linksockslib.linksocks_ConnectorMessage_Operation_Get(self.handle)
5735
- @Operation.setter
5736
- def Operation(self, value):
5730
+ def Error(self):
5731
+ return _linksockslib.linksocks_ConnectResponseMessage_Error_Get(self.handle)
5732
+ @Error.setter
5733
+ def Error(self, value):
5737
5734
  if isinstance(value, go.GoClass):
5738
- _linksockslib.linksocks_ConnectorMessage_Operation_Set(self.handle, value.handle)
5735
+ _linksockslib.linksocks_ConnectResponseMessage_Error_Set(self.handle, value.handle)
5739
5736
  else:
5740
- _linksockslib.linksocks_ConnectorMessage_Operation_Set(self.handle, value)
5737
+ _linksockslib.linksocks_ConnectResponseMessage_Error_Set(self.handle, value)
5738
+ @property
5739
+ def ChannelID(self):
5740
+ return go.uuid_UUID(handle=_linksockslib.linksocks_ConnectResponseMessage_ChannelID_Get(self.handle))
5741
5741
  def GetType(self):
5742
5742
  """GetType() str"""
5743
- return _linksockslib.linksocks_ConnectorMessage_GetType(self.handle)
5743
+ return _linksockslib.linksocks_ConnectResponseMessage_GetType(self.handle)
5744
5744
 
5745
5745
 
5746
5746
  # ---- Slices ---
@@ -5750,24 +5750,24 @@ class ConnectorMessage(go.GoClass):
5750
5750
 
5751
5751
 
5752
5752
  # ---- Constructors ---
5753
- def NewContextWithCancel():
5754
- """NewContextWithCancel() object
5753
+ def NewLinkSocksClient(token, opt):
5754
+ """NewLinkSocksClient(str token, object opt) object
5755
5755
 
5756
- NewContextWithCancel creates a new context from the global context
5756
+ NewLinkSocksClient creates a new LinkSocksClient instance
5757
5757
  """
5758
- return ContextWithCancel(handle=_linksockslib.linksocks_NewContextWithCancel())
5759
- def NewPortPoolFromRange(start, end):
5760
- """NewPortPoolFromRange(int start, int end) object
5758
+ return LinkSocksClient(handle=_linksockslib.linksocks_NewLinkSocksClient(token, opt.handle))
5759
+ def NewRelay(logger, option):
5760
+ """NewRelay(object logger, object option) object
5761
5761
 
5762
- NewPortPoolFromRange creates a new port pool from a range of ports
5762
+ NewRelay creates a new Relay instance
5763
5763
  """
5764
- return PortPool(handle=_linksockslib.linksocks_NewPortPoolFromRange(start, end))
5765
- def NewPortPool(ports):
5766
- """NewPortPool([]int ports) object
5764
+ return Relay(handle=_linksockslib.linksocks_NewRelay(logger.handle, option.handle))
5765
+ def NewLinkSocksServer(opt):
5766
+ """NewLinkSocksServer(object opt) object
5767
5767
 
5768
- NewPortPool creates a new port pool from a slice of ports
5768
+ NewLinkSocksServer creates a new LinkSocksServer instance
5769
5769
  """
5770
- return PortPool(handle=_linksockslib.linksocks_NewPortPool(ports.handle))
5770
+ return LinkSocksServer(handle=_linksockslib.linksocks_NewLinkSocksServer(opt.handle))
5771
5771
  def DefaultClientOption():
5772
5772
  """DefaultClientOption() object
5773
5773
 
@@ -5780,39 +5780,18 @@ def NewDefaultRelayOption():
5780
5780
  NewDefaultRelayOption creates a RelayOption with default values
5781
5781
  """
5782
5782
  return RelayOption(handle=_linksockslib.linksocks_NewDefaultRelayOption())
5783
- def NewSocketManager(host, log):
5784
- """NewSocketManager(str host, object log) object"""
5785
- return SocketManager(handle=_linksockslib.linksocks_NewSocketManager(host, log.handle))
5786
- def NewLinkSocksClient(token, opt):
5787
- """NewLinkSocksClient(str token, object opt) object
5788
-
5789
- NewLinkSocksClient creates a new LinkSocksClient instance
5790
- """
5791
- return LinkSocksClient(handle=_linksockslib.linksocks_NewLinkSocksClient(token, opt.handle))
5792
- def NewRelay(logger, option):
5793
- """NewRelay(object logger, object option) object
5794
-
5795
- NewRelay creates a new Relay instance
5796
- """
5797
- return Relay(handle=_linksockslib.linksocks_NewRelay(logger.handle, option.handle))
5798
5783
  def DefaultReverseTokenOptions():
5799
5784
  """DefaultReverseTokenOptions() object
5800
5785
 
5801
5786
  DefaultReverseTokenOptions returns default options for reverse token
5802
5787
  """
5803
5788
  return ReverseTokenOptions(handle=_linksockslib.linksocks_DefaultReverseTokenOptions())
5804
- def NewCLI():
5805
- """NewCLI() object
5806
-
5807
- NewCLI creates a new CLI instance
5808
- """
5809
- return CLI(handle=_linksockslib.linksocks_NewCLI())
5810
- def NewLinkSocksServer(opt):
5811
- """NewLinkSocksServer(object opt) object
5789
+ def DefaultServerOption():
5790
+ """DefaultServerOption() object
5812
5791
 
5813
- NewLinkSocksServer creates a new LinkSocksServer instance
5792
+ DefaultServerOption returns default server options
5814
5793
  """
5815
- return LinkSocksServer(handle=_linksockslib.linksocks_NewLinkSocksServer(opt.handle))
5794
+ return ServerOption(handle=_linksockslib.linksocks_DefaultServerOption())
5816
5795
  def NewWSConn(conn, label, logger):
5817
5796
  """NewWSConn(object conn, str label, object logger) object
5818
5797
 
@@ -5825,81 +5804,84 @@ def NewAPIHandler(server, apiKey):
5825
5804
  NewAPIHandler creates a new API handler for the given server
5826
5805
  """
5827
5806
  return APIHandler(handle=_linksockslib.linksocks_NewAPIHandler(server.handle, apiKey))
5828
- def DefaultServerOption():
5829
- """DefaultServerOption() object
5807
+ def NewCLI():
5808
+ """NewCLI() object
5830
5809
 
5831
- DefaultServerOption returns default server options
5810
+ NewCLI creates a new CLI instance
5832
5811
  """
5833
- return ServerOption(handle=_linksockslib.linksocks_DefaultServerOption())
5812
+ return CLI(handle=_linksockslib.linksocks_NewCLI())
5813
+ def NewContextWithCancel():
5814
+ """NewContextWithCancel() object
5815
+
5816
+ NewContextWithCancel creates a new context from the global context
5817
+ """
5818
+ return ContextWithCancel(handle=_linksockslib.linksocks_NewContextWithCancel())
5819
+ def NewPortPoolFromRange(start, end):
5820
+ """NewPortPoolFromRange(int start, int end) object
5821
+
5822
+ NewPortPoolFromRange creates a new port pool from a range of ports
5823
+ """
5824
+ return PortPool(handle=_linksockslib.linksocks_NewPortPoolFromRange(start, end))
5825
+ def NewPortPool(ports):
5826
+ """NewPortPool([]int ports) object
5827
+
5828
+ NewPortPool creates a new port pool from a slice of ports
5829
+ """
5830
+ return PortPool(handle=_linksockslib.linksocks_NewPortPool(ports.handle))
5831
+ def NewSocketManager(host, log):
5832
+ """NewSocketManager(str host, object log) object"""
5833
+ return SocketManager(handle=_linksockslib.linksocks_NewSocketManager(host, log.handle))
5834
5834
 
5835
5835
 
5836
5836
  # ---- Functions ---
5837
- def NewLoggerWithID(id):
5838
- """NewLoggerWithID(str id) object
5837
+ def Background():
5838
+ """Background() object
5839
5839
 
5840
- NewLoggerWithID creates a new zerolog.Logger that tags output with the given ID
5840
+ Background returns a global context
5841
5841
  """
5842
- return go.zerolog_Logger(handle=_linksockslib.linksocks_NewLoggerWithID(id))
5843
- def GetLogEntries():
5844
- """GetLogEntries() []object"""
5845
- return Slice_linksocks_LogEntry(handle=_linksockslib.linksocks_GetLogEntries())
5846
- def NewLogger(cb):
5847
- """NewLogger(callable cb) object
5842
+ return go.context_Context(handle=_linksockslib.linksocks_Background())
5843
+ def CancelLogWaiters(goRun=False):
5844
+ """CancelLogWaiters()
5848
5845
 
5849
- NewLogger creates a new zerolog.Logger with auto-generated ID
5846
+ CancelLogWaiters cancels all waiting log listeners
5850
5847
  """
5851
- return go.zerolog_Logger(handle=_linksockslib.linksocks_NewLogger(cb))
5852
- def ParseMessage(data):
5853
- """ParseMessage([]int data) object, str"""
5854
- return BaseMessage(handle=_linksockslib.linksocks_ParseMessage(data.handle))
5855
- def SetLoggerGlobalLevel(level, goRun=False):
5856
- """SetLoggerGlobalLevel(int level)
5848
+ _linksockslib.linksocks_CancelLogWaiters(goRun)
5849
+ def NewContext():
5850
+ """NewContext() object
5857
5851
 
5858
- SetLoggerGlobalLevel sets the global log level for all loggers
5852
+ NewContext creates a new context from the global context
5859
5853
  """
5860
- _linksockslib.linksocks_SetLoggerGlobalLevel(level, goRun)
5861
- def WaitForLogEntries(timeoutMs):
5862
- """WaitForLogEntries(long timeoutMs) []object"""
5863
- return Slice_linksocks_LogEntry(handle=_linksockslib.linksocks_WaitForLogEntries(timeoutMs))
5854
+ return go.context_Context(handle=_linksockslib.linksocks_NewContext())
5864
5855
  def PackMessage(msg):
5865
5856
  """PackMessage(object msg) []int, str
5866
5857
 
5867
5858
  PackMessage converts a message to binary format
5868
5859
  """
5869
5860
  return go.Slice_byte(handle=_linksockslib.linksocks_PackMessage(msg.handle))
5870
- def ParseDuration(s):
5871
- """ParseDuration(str s) long, str
5872
-
5873
- ParseDuration parses a duration string.
5874
- A duration string is a possibly signed sequence of decimal numbers,
5875
- each with optional fraction and a unit suffix, such as "300ms", "-1.5h" or "2h45m".
5876
- Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h".
5877
- """
5878
- return _linksockslib.linksocks_ParseDuration(s)
5879
5861
  def DebugLog(logger, msg, goRun=False):
5880
5862
  """DebugLog(object logger, str msg)
5881
5863
 
5882
5864
  DebugLog logs a debug message
5883
5865
  """
5884
5866
  _linksockslib.linksocks_DebugLog(logger.handle, msg, goRun)
5885
- def NewContext():
5886
- """NewContext() object
5867
+ def NewLogger(cb):
5868
+ """NewLogger(callable cb) object
5887
5869
 
5888
- NewContext creates a new context from the global context
5870
+ NewLogger creates a new zerolog.Logger with auto-generated ID
5889
5871
  """
5890
- return go.context_Context(handle=_linksockslib.linksocks_NewContext())
5872
+ return go.zerolog_Logger(handle=_linksockslib.linksocks_NewLogger(cb))
5891
5873
  def NewLoggerWithLevel(level, cb):
5892
5874
  """NewLoggerWithLevel(int level, callable cb) object
5893
5875
 
5894
5876
  NewLoggerWithLevel creates a new zerolog.Logger with auto-generated ID and specified level
5895
5877
  """
5896
5878
  return go.zerolog_Logger(handle=_linksockslib.linksocks_NewLoggerWithLevel(level, cb))
5897
- def CancelLogWaiters(goRun=False):
5898
- """CancelLogWaiters()
5899
-
5900
- CancelLogWaiters cancels all waiting log listeners
5901
- """
5902
- _linksockslib.linksocks_CancelLogWaiters(goRun)
5879
+ def WaitForLogEntries(timeoutMs):
5880
+ """WaitForLogEntries(long timeoutMs) []object"""
5881
+ return Slice_linksocks_LogEntry(handle=_linksockslib.linksocks_WaitForLogEntries(timeoutMs))
5882
+ def GetLogEntries():
5883
+ """GetLogEntries() []object"""
5884
+ return Slice_linksocks_LogEntry(handle=_linksockslib.linksocks_GetLogEntries())
5903
5885
  def NewLoggerWithIDAndLevel(id, level):
5904
5886
  """NewLoggerWithIDAndLevel(str id, int level) object
5905
5887
 
@@ -5912,11 +5894,29 @@ def CancelGlobalContext(goRun=False):
5912
5894
  CancelGlobalContext cancels the global context
5913
5895
  """
5914
5896
  _linksockslib.linksocks_CancelGlobalContext(goRun)
5915
- def Background():
5916
- """Background() object
5897
+ def ParseDuration(s):
5898
+ """ParseDuration(str s) long, str
5917
5899
 
5918
- Background returns a global context
5900
+ ParseDuration parses a duration string.
5901
+ A duration string is a possibly signed sequence of decimal numbers,
5902
+ each with optional fraction and a unit suffix, such as "300ms", "-1.5h" or "2h45m".
5903
+ Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h".
5919
5904
  """
5920
- return go.context_Context(handle=_linksockslib.linksocks_Background())
5905
+ return _linksockslib.linksocks_ParseDuration(s)
5906
+ def SetLoggerGlobalLevel(level, goRun=False):
5907
+ """SetLoggerGlobalLevel(int level)
5908
+
5909
+ SetLoggerGlobalLevel sets the global log level for all loggers
5910
+ """
5911
+ _linksockslib.linksocks_SetLoggerGlobalLevel(level, goRun)
5912
+ def NewLoggerWithID(id):
5913
+ """NewLoggerWithID(str id) object
5914
+
5915
+ NewLoggerWithID creates a new zerolog.Logger that tags output with the given ID
5916
+ """
5917
+ return go.zerolog_Logger(handle=_linksockslib.linksocks_NewLoggerWithID(id))
5918
+ def ParseMessage(data):
5919
+ """ParseMessage([]int data) object, str"""
5920
+ return BaseMessage(handle=_linksockslib.linksocks_ParseMessage(data.handle))
5921
5921
 
5922
5922