2 Commits

3 changed files with 24 additions and 139 deletions

View File

@@ -1,101 +0,0 @@
FROM ubuntu:24.04
# Install required tools for MinGW cross-compilation, CMake, and dependencies
RUN apt-get update && apt-get install -y \
git \
make \
curl \
wget \
unzip \
cmake \
build-essential \
mingw-w64 \
g++-mingw-w64-x86-64-posix \
gcc-mingw-w64-x86-64-posix \
pkg-config \
&& rm -rf /var/lib/apt/lists/*
# Download and install Go 1.25.4
RUN wget https://go.dev/dl/go1.25.4.linux-amd64.tar.gz && \
tar -C /usr/local -xzf go1.25.4.linux-amd64.tar.gz && \
rm go1.25.4.linux-amd64.tar.gz
ENV PATH=$PATH:/usr/local/go/bin
# Download OpenCV 4.12.0 source
RUN wget https://github.com/opencv/opencv/archive/4.12.0.zip && \
unzip 4.12.0.zip && \
mv opencv-4.12.0 opencv && \
rm 4.12.0.zip
# Create MinGW toolchain file for CMake
RUN echo 'set(CMAKE_SYSTEM_NAME Windows)' > /opencv/toolchain.cmake && \
echo 'set(CMAKE_SYSTEM_PROCESSOR AMD64)' >> /opencv/toolchain.cmake && \
echo 'set(TOOLCHAIN x86_64-w64-mingw32)' >> /opencv/toolchain.cmake && \
echo 'set(CMAKE_C_COMPILER /usr/bin/${TOOLCHAIN}-gcc-posix)' >> /opencv/toolchain.cmake && \
echo 'set(CMAKE_CXX_COMPILER /usr/bin/${TOOLCHAIN}-g++-posix)' >> /opencv/toolchain.cmake && \
echo 'set(CMAKE_RC_COMPILER /usr/bin/${TOOLCHAIN}-windres)' >> /opencv/toolchain.cmake && \
echo 'set(CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN})' >> /opencv/toolchain.cmake && \
echo 'set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)' >> /opencv/toolchain.cmake && \
echo 'set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)' >> /opencv/toolchain.cmake && \
echo 'set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)' >> /opencv/toolchain.cmake
# Build and install OpenCV for Windows (static libs, minimal build to avoid dependency issues)
RUN cd /opencv && mkdir build && cd build && \
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchain.cmake \
-DCMAKE_INSTALL_PREFIX=/usr/x86_64-w64-mingw32 \
-DBUILD_SHARED_LIBS=OFF \
-DWITH_IPP=OFF \
-DBUILD_EXAMPLES=OFF \
-DBUILD_TESTS=OFF \
-DBUILD_PERF_TESTS=OFF \
-DBUILD_opencv_apps=OFF \
-DWITH_FFMPEG=OFF \
-DWITH_OPENGL=OFF \
-DWITH_QT=OFF \
-DWITH_VTK=OFF \
-DWITH_GTK=OFF \
-DCPU_BASELINE=SSE3 \
-DWITH_TBB=OFF \
-DWITH_PROTOBUF=ON \
-DBUILD_PROTOBUF=ON \
-DPROTOBUF_UPDATE_FILES=OFF \
-DWITH_PNG=ON \
-DWITH_JPEG=ON \
-DWITH_TIFF=ON \
-DWITH_WEBP=ON \
-DWITH_OPENJPEG=ON \
-DWITH_OPENEXR=OFF \
-DBUILD_PNG=ON \
-DBUILD_JPEG=ON \
-DBUILD_TIFF=ON \
-DBUILD_WEBP=ON \
-DBUILD_OPENJPEG=ON \
-DBUILD_ZLIB=ON \
.. && \
make -j$(nproc) && \
make install
# List the actual libraries to help debug
RUN echo "Installed OpenCV libraries:" && ls -la /usr/x86_64-w64-mingw32/lib/*.a | head -30
# Set CGO environment variables with corrected library names and paths
ENV CGO_CPPFLAGS="-I/usr/x86_64-w64-mingw32/include/opencv4"
ENV CGO_CXXFLAGS="--std=c++11"
# Include both main lib directory and opencv4/3rdparty subdirectory, use correct library names and Windows system libs
ENV CGO_LDFLAGS="-L/usr/x86_64-w64-mingw32/lib -L/usr/x86_64-w64-mingw32/lib/opencv4/3rdparty -lopencv_core4120 -lopencv_imgproc4120 -lopencv_objdetect4120 -lopencv_flann4120 -lopencv_features2d4120 -lopencv_calib3d4120 -lopencv_highgui4120 -lopencv_videoio4120 -lopencv_imgcodecs4120 -lopencv_video4120 -lopencv_photo4120 -lopencv_ml4120 -lopencv_dnn4120 -lopencv_gapi4120 -lopencv_stitching4120 -llibprotobuf -llibpng -llibopenjp2 -llibwebp -llibtiff -llibjpeg-turbo -lzlib -lade -lgdi32 -lole32 -loleaut32 -luuid -lcomdlg32 -lstdc++fs -lws2_32 -static-libgcc -static-libstdc++ -static"
ENV PKG_CONFIG_PATH=/usr/x86_64-w64-mingw32/lib/pkgconfig
ENV LD_LIBRARY_PATH=/usr/x86_64-w64-mingw32/lib
# Clone the repository
RUN git clone https://git.weirdcat.su/weirdcat/auto-attendance.git /go/src/auto-attendance
# Set working directory
WORKDIR /go/src/auto-attendance
# Download Go modules
RUN go mod download
# Build the Windows executable with CGO enabled, customenv tag, and MinGW compilers
RUN GOOS=windows GOARCH=amd64 CGO_ENABLED=1 \
CC=x86_64-w64-mingw32-gcc-posix CXX=x86_64-w64-mingw32-g++-posix \
go build -tags customenv -v -o bin/autoattendance.exe ./cmd/

View File

@@ -41,7 +41,7 @@
Вам потребуется поддерживаемая операционная система из списка ниже. Если галочки нет, то поддержка появится в будущем. Вам потребуется поддерживаемая операционная система из списка ниже. Если галочки нет, то поддержка появится в будущем.
- [x] Linux (Wayland) - [x] Linux (Wayland)
- [x] Linux (XORG) - [x] Linux (XORG)
- [x] Windows 10/11 - [ ] Windows 10/11 (не тестировалось, должно билдиться)
- [ ] MacOS (не тестировалось, должно билдиться) - [ ] MacOS (не тестировалось, должно билдиться)
### ⬇️ Установка ### ⬇️ Установка
@@ -50,23 +50,12 @@
### ⚙️ Настройка ### ⚙️ Настройка
При первом запуске будет необходимо выполнить настройку приложения. Расположение файла конфигурации зависит от системы: При первом запуске будет необходимо выполнить настройку приложения. В Linux файл конфигурации располагается здесь:
- В Linux: `~/.config/auto-attendance/auto-attendance.toml`. Необходимо получить актуальный файл конфигурации, который будет работать с конкретным журналом посещений
- `~/.config/auto-attendance/auto-attendance.toml`
- В Windows:
- `C:\Users\user\AppData\Roaming\auto-attendance\auto-attendance.toml`
Необходимо получить актуальный файл конфигурации, который будет работать с конкретным журналом посещений. Ключевую роль играют следующие параметры:
```toml
qr_query_token = '' # Название query-параметра, содержащего уникальный токен ссылки
self_approve_url = '' # Полный URL ссылки QR-кода (без query-параметров)
```
## 🔨 Сборка ## 🔨 Сборка
### Make (Linux, MacOS) ### 🧩 Зависимости
#### 🧩 Зависимости
- git - git
- make - make
@@ -74,7 +63,24 @@ self_approve_url = '' # Полный URL ссылки QR-кода (без query
- opencv 4.12.0 - opencv 4.12.0
- go 1.25.4 - go 1.25.4
#### Порядок сборки ### Go
Используйте следующую команду в терминале:
```bash
go install git.weirdcat.su/weirdcat/auto-attendance/cmd/qrminator-cli@main
```
Далее можно запускать командой:
```bash
qrminator-cli
```
Убедитесь, что вы добавили `~/.go/bin` в PATH. Например:
```bash
export PATH=$PATH:~/.go/bin
```
### Make
Склонируйте мой репозиторий: Склонируйте мой репозиторий:
```bash ```bash
@@ -93,30 +99,10 @@ make
# make build-linux # make build-linux
# make build-macos # make build-macos
# make build-windows
``` ```
Далее для запуска можете использовать команду `make run`. Далее для запуска можете использовать команду `make run`.
### Dockerfile (Windows)
На данный момент единственный проверенный и самый простой способ собрать приложение под Windows - использовать [специальный Dockerfile](https://git.weirdcat.su/weirdcat/auto-attendance/raw/branch/main/Dockerfile.windows-build). На Windows для этого можно использовать WSL с Docker.
#### Порядок сборки (Bash):
```bash
# Создаем директорию и переходим в нее
mkdir build && cd build
# Получаем содержимое Dockerfile
curl "https://git.weirdcat.su/weirdcat/auto-attendance/raw/branch/main/Dockerfile.windows-build" > Dockerfile
# Выполняем сборку
docker build -t autoattendance-build-windows .
# Копируем бинарник из образа в текущую папку
docker run --rm -v $(pwd):/output autoattendance-build-windows sh -c "cp /go/src/auto-attendance/bin/autoattendance.exe /output/"
```
Готовое приложение - файл `autoattendance.exe`.
# Поддержать разработчиков # Поддержать разработчиков
![Николай (Telegram)](https://t.me/thebreadcat) ![Николай (Telegram)](https://t.me/thebreadcat)

View File

@@ -75,7 +75,7 @@ func (v *linkValidatorImpl) ValidateLink(rawURL string) (token string, ok bool)
} }
} }
token = parsedURL.Query().Get("token") token = parsedURL.Query().Get(v.config.Communication.QrQueryToken)
if token == "" { if token == "" {
v.log.Debug("URL missing token parameter", "url", rawURL) v.log.Debug("URL missing token parameter", "url", rawURL)
return "", false return "", false