Repository: fortra/impacket (branch: configurable_socks_address)
Commit date: 2023-11-09T10:28:35Z

Workflow file: .github/workflows/build_and_test.yml (Build and test Impacket)
# GitHub Action workflow to build and run Impacket's tests
#

name: Build and test Impacket

on: [push, pull_request]

env:
  DOCKER_TAG: impacket:latests
  PIP_INDEX_URL: http://localhost:8629/2023-11-09
  UV_INDEX_URL: http://localhost:8629/2023-11-09

jobs:
  lint:
    name: Check syntax errors and warnings
    runs-on: ubuntu-latest
    services:
      pypi_wayback:
        image: ghcr.io/waleko/pypi-wayback
        ports:
          - 8629:8080
    if:
      github.event_name == 'push' || github.event.pull_request.head.repo.full_name !=
      github.repository

    steps:
      - name: Checkout Impacket
        uses: actions/checkout@v3

      - name: Setup Python 3.8
        uses: actions/setup-python@v4
        with:
          python-version: 3.8

      - name: Install Python dependencies
        run: |
          python -m pip install flake8

      - name: Check syntax errors
        run: |
          flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics

      - name: Check PEP8 warnings
        run: |
          flake8 . --count --ignore=E1,E2,E3,E501,W291,W293 --exit-zero --max-complexity=65 --max-line-length=127 --statistics

  test:
    name: Run unit tests and build wheel
    needs: lint
    runs-on: ${{ matrix.os }}
    services:
      pypi_wayback:
        image: ghcr.io/waleko/pypi-wayback
        ports:
          - 8629:8080
    if:
      github.event_name == 'push' || github.event.pull_request.head.repo.full_name !=
      github.repository

    strategy:
      fail-fast: false
      matrix:
        python-version: ["3.7", "3.8", "3.9", "3.10"]
        experimental: [false]
        os: [ubuntu-latest]
        include:
          - python-version: "3.6"
            experimental: false
            os: ubuntu-20.04
          - python-version: "3.11-dev"
            experimental: true
            os: ubuntu-latest
    continue-on-error: ${{ matrix.experimental }}

    steps:
      - name: Checkout Impacket
        uses: actions/checkout@v3

      - name: Setup Python ${{ matrix.python-version }}
        uses: actions/setup-python@v4
        with:
          python-version: ${{ matrix.python-version }}

      - name: Install Python dependencies
        run: |
          python -m pip install --upgrade pip wheel
          python -m pip install tox tox-gh-actions -r requirements.txt -r requirements-test.txt

      - name: Run unit tests
        run: |
          tox -- -m 'not remote'

      - name: Build wheel artifact
        run: |
          python setup.py bdist_wheel

  docker:
    name: Build docker image
    needs: lint
    runs-on: ubuntu-latest
    services:
      pypi_wayback:
        image: ghcr.io/waleko/pypi-wayback
        ports:
          - 8629:8080
    if:
      github.event_name == 'push' || github.event.pull_request.head.repo.full_name !=
      github.repository

    continue-on-error: true
    steps:
      - name: Checkout Impacket
        uses: actions/checkout@v3

      - name: Build docker image
        run: |
          docker build -t ${{ env.DOCKER_TAG }} .


Failed build logs:
step_name: Check syntax errors and warnings/5_Check syntax errors.txt
log: ##[group]Run flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
[36;1mflake8 . --count --select=E9,F63,F7,F82 --show-source --statistics[0m
shell: /usr/bin/bash -e {0}
env:
  DOCKER_TAG: impacket:latests
  pythonLocation: /opt/hostedtoolcache/Python/3.8.18/x64
  PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.8.18/x64/lib/pkgconfig
  Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.8.18/x64
  Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.8.18/x64
  Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.8.18/x64
  LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.8.18/x64/lib
##[endgroup]
./impacket/examples/ntlmrelayx/servers/socksserver.py:463:18: E999 SyntaxError: non-default argument follows default argument
    def __init__(self, server_address=('127.0.0.1', 1080), handler_class=SocksRequestHandler, api_port):
                 ^
1     E999 SyntaxError: non-default argument follows default argument
1
##[error]Process completed with exit code 1.


Changed files:
impacket/examples/ntlmrelayx/servers/socksserver.py

Fix diff:
diff --git a/impacket/examples/ntlmrelayx/servers/socksserver.py b/impacket/examples/ntlmrelayx/servers/socksserver.py
index 53f8cd5b..43bf6c63 100644
--- a/impacket/examples/ntlmrelayx/servers/socksserver.py
+++ b/impacket/examples/ntlmrelayx/servers/socksserver.py
@@ -460,7 +460,7 @@ class SocksRequestHandler(socketserver.BaseRequestHandler):
 
 
 class SOCKS(socketserver.ThreadingMixIn, socketserver.TCPServer):
-    def __init__(self, server_address=('127.0.0.1', 1080), handler_class=SocksRequestHandler, api_port):
+    def __init__(self, server_address=('127.0.0.1', 1080), handler_class=SocksRequestHandler, api_port=9090):
         LOG.info('SOCKS proxy started. Listening on %s:%d', server_address[0], server_address[1])
 
         self.activeRelays = {}