%global commit 4208db6e27c46f3ccec8b98722af7ec23bc62e73 Name: udp2raw Version: 20251012 Release: 1%{?dist} Summary: Udp2raw tunnel License: MIT URL: https://github.com/wangyu-/udp2raw Source0: https://github.com/wangyu-/udp2raw/archive/%{commit}.tar.gz BuildRequires: clang BuildRequires: cmake BuildRequires: systemd %description A Tunnel which turns UDP Traffic into Encrypted FakeTCP/UDP/ICMP Traffic by using Raw Socket. %prep %setup -q -n %{name}-%{commit} sed -i 's|-fsanitize=address,undefined||' CMakeLists.txt %build echo "const char *gitversion = \"%{commit}\";" > git_version.h %ifarch x86_64 g++ -v -o %{name}_aes -I. main.cpp lib/md5.cpp lib/pbkdf2-sha1.cpp lib/pbkdf2-sha256.cpp encrypt.cpp log.cpp network.cpp common.cpp connection.cpp misc.cpp fd_manager.cpp client.cpp server.cpp -lpthread lib/aes_acc/aesacc.c lib/aes_acc/aesarm.c lib/aes_acc/aesni.c my_ev.cpp -isystem libev -std=c++11 -Wall -Wextra -Wno-unused-variable -Wno-unused-parameter -Wno-missing-field-initializers -lrt -O2 lib/aes_acc/asm/x64.S -lgcc_eh -ggdb %endif %ifarch i686 g++ -v -o %{name}_aes -I. main.cpp lib/md5.cpp lib/pbkdf2-sha1.cpp lib/pbkdf2-sha256.cpp encrypt.cpp log.cpp network.cpp common.cpp connection.cpp misc.cpp fd_manager.cpp client.cpp server.cpp -lpthread lib/aes_acc/aesacc.c lib/aes_acc/aesarm.c lib/aes_acc/aesni.c my_ev.cpp -isystem libev -std=c++11 -Wall -Wextra -Wno-unused-variable -Wno-unused-parameter -Wno-missing-field-initializers -lrt -O2 lib/aes_acc/asm/x86.S -lgcc_eh -ggdb %endif %cmake -B %{_vpath_builddir} -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang %cmake_build %install %ifnarch x86_64 i686 install -Dm755 %{name}_aes %{buildroot}%{_bindir}/%{name}_aes %endif install -Dm755 %{_vpath_builddir}/%{name} %{buildroot}%{_bindir}/%{name} install -Dm644 example.conf %{buildroot}%{_sysconfdir}/%{name}/example.conf mkdir -p %{buildroot}%{_unitdir} cat > %{buildroot}%{_unitdir}/%{name}@.service << 'EOF' [Unit] Description=Udp2raw tunnel (%i) After=network-online.target Wants=network-online.target [Service] Type=simple ExecStart=/usr/bin/udp2raw --conf-file /etc/udp2raw/%i.conf Restart=on-failure RestartSec=5 CapabilityBoundingSet=CAP_NET_RAW CAP_NET_BIND_SERVICE AmbientCapabilities=CAP_NET_RAW CAP_NET_BIND_SERVICE [Install] WantedBy=multi-user.target EOF %files %license LICENSE.md %doc README.md doc/*.md %dir %{_sysconfdir}/%{name} %config(noreplace) %{_sysconfdir}/%{name}/example.conf %{_bindir}/%{name}* %{_unitdir}/%{name}@.service %changelog