(self)
| 39 | return True |
| 40 | |
| 41 | def state_auth_1(self): |
| 42 | ret = struct.unpack('BB', self.read_buf) |
| 43 | if ret[0] != 5: |
| 44 | # general error |
| 45 | raise GeneralProxyError(1) |
| 46 | elif ret[1] == 0: |
| 47 | # no auth required |
| 48 | self.set_state("auth_done", length=2) |
| 49 | elif ret[1] == 2: |
| 50 | # username/password |
| 51 | self.append_write_buf(struct.pack('BB', 1, len(self._auth[0])) + \ |
| 52 | self._auth[0] + struct.pack('B', len(self._auth[1])) + \ |
| 53 | self._auth[1]) |
| 54 | self.set_state("auth_needed", length=2, expectBytes=2) |
| 55 | else: |
| 56 | if ret[1] == 0xff: |
| 57 | # auth error |
| 58 | raise Socks5AuthError(2) |
| 59 | else: |
| 60 | # other error |
| 61 | raise GeneralProxyError(1) |
| 62 | return True |
| 63 | |
| 64 | def state_auth_needed(self): |
| 65 | ret = struct.unpack('BB', self.read_buf[0:2]) |
nothing calls this directly
no test coverage detected