Function to start the relay server
(self)
| 148 | super(ForwardMachine, self).__init__(**kwargs) |
| 149 | |
| 150 | def run(self): |
| 151 | """ |
| 152 | Function to start the relay server |
| 153 | """ |
| 154 | self.ssock = socket.socket(self.af, self.proto, 0) |
| 155 | self.ssock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) |
| 156 | if self.mode == ForwardMachine.MODE.TPROXY: |
| 157 | self.ssock.setsockopt(socket.SOL_IP, socket.IP_TRANSPARENT, 1) # TPROXY ! |
| 158 | self.ssock.bind((self.bind_address, self.port)) |
| 159 | self.ssock.listen(5) |
| 160 | print(self.ct.green("Relay server waiting on port %s" % self.port)) |
| 161 | while True: |
| 162 | conn, addr = self.ssock.accept() |
| 163 | # Calc dest |
| 164 | dest = conn.getsockname() |
| 165 | if self.mode == ForwardMachine.MODE.SERVER or ( |
| 166 | dest[0] in self.local_ips and self.remote_address |
| 167 | ): |
| 168 | dest = (self.remote_address,) + dest[1:] |
| 169 | print(self.ct.green("%s -> %s connected !" % (repr(addr), repr(dest)))) |
| 170 | try: |
| 171 | threading.Thread( |
| 172 | target=self.handler, |
| 173 | args=(conn, addr, dest), |
| 174 | ).start() |
| 175 | except Exception: |
| 176 | print(self.ct.red("%s errored !" % repr(addr))) |
| 177 | conn.close() |
| 178 | pass |
| 179 | |
| 180 | def xfrmcs(self, pkt, ctx): |
| 181 | """ |