diff --git a/.gitea/workflows/tag.yaml b/.gitea/workflows/tag.yaml index 1837ea9..5de2747 100644 --- a/.gitea/workflows/tag.yaml +++ b/.gitea/workflows/tag.yaml @@ -13,7 +13,7 @@ jobs: runs-on: arch-builder steps: - uses: actions/checkout@v4 - - run: pacman --noconfirm -Sy mbedtls curl + - run: pacman --noconfirm -Sy mbedtls curl zip zig ninja - run: pacman --config /opt/cross/ppc/pacman.conf --noconfirm -Sy mbedtls - run: cp Packaging/Linux/PKGBUILD /home/build/PKGBUILD - run: cp Packaging/Linux/build-arch.sh /home/build/build-arch.sh @@ -21,6 +21,14 @@ jobs: - run: chown build:build /home/build/PKGBUILD - run: chown build:build /home/build/build-arch.sh - run: su build -c /home/build/build-arch.sh + - run: env -C Packaging/Tools bash build.sh + - uses: akkuman/gitea-release-action@v1 + env: + NODE_OPTIONS: '--experimental-fetch' # if nodejs < 18 + with: + prerelease: true + files: |- + artifacts/** update-tap: runs-on: ubuntu-latest diff --git a/.gitignore b/.gitignore index f8bc89b..eb1fdcf 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ builds .vscode out /.vs +artifacts \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 8d5040c..20cc302 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -137,11 +137,6 @@ else() target_compile_definitions(TessesFramework PUBLIC TESSESFRAMEWORK_CERT_BUNDLE_FILE=${TESSESFRAMEWORK_CERT_BUNDLE_FILE}) endif() if(NOT TESSESFRAMEWORK_FETCHCONTENT) -if(MBEDTLS_DIR STREQUAL "") -else() -target_include_directories(${TessesFramework_TARGET} PUBLIC ${MBEDTLS_DIR}/include) -target_link_directories(${TessesFramework_TARGET} PUBLIC ${MBEDTLS_DIR}/lib) -endif() target_link_libraries(${TessesFramework_TARGET} PUBLIC mbedtls mbedx509 mbedcrypto) endif() endif() @@ -219,7 +214,7 @@ if(TESSESFRAMEWORK_FETCHCONTENT) target_link_libraries(tessesframework_shared PUBLIC mbedtls mbedx509 mbedcrypto everest p256m) else() -target_link_libraries(tessesframework_shared PUBLIC MbedTLS::mbedcrypto MbedTLS::mbedtls MbedTLS::mbedx509) +target_link_libraries(tessesframework_shared PUBLIC mbedtls mbedx509 mbedcrypto) endif() endif() diff --git a/CMakePresets.json b/CMakePresets.json deleted file mode 100644 index 5869874..0000000 --- a/CMakePresets.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "version": 3, - "configurePresets": [ - { - "name": "linux-debug", - "displayName": "Linux Debug", - "description": "Target the Windows Subsystem for Linux (WSL) or a remote Linux system.", - "generator": "Ninja", - "binaryDir": "${sourceDir}/out/build/${presetName}", - "installDir": "${sourceDir}/out/install/${presetName}", - "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug" }, - "condition": { - "type": "equals", - "lhs": "${hostSystemName}", - "rhs": "Linux" - }, - "vendor": { "microsoft.com/VisualStudioRemoteSettings/CMake/2.0": { "remoteSourceRootDir": "$env{HOME}/.vs/$ms{projectDirName}" } } - }, - { - "name": "macos-debug", - "displayName": "macOS Debug", - "description": "Target a remote macOS system.", - "generator": "Ninja", - "binaryDir": "${sourceDir}/out/build/${presetName}", - "installDir": "${sourceDir}/out/install/${presetName}", - "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug" }, - "condition": { - "type": "equals", - "lhs": "${hostSystemName}", - "rhs": "Darwin" - }, - "vendor": { "microsoft.com/VisualStudioRemoteSettings/CMake/1.0": { "sourceDir": "$env{HOME}/.vs/$ms{projectDirName}" } } - }, - { - "name": "windows-base", - "description": "Target Windows with the Visual Studio development environment.", - "hidden": true, - "generator": "Ninja", - "binaryDir": "${sourceDir}/out/build/${presetName}", - "installDir": "${sourceDir}/out/install/${presetName}", - "cacheVariables": { - "CMAKE_C_COMPILER": "cl.exe", - "CMAKE_CXX_COMPILER": "cl.exe", - "TESSESFRAMEWORK_ENABLE_MBED": false, - "TESSESFRAMEWORK_FETCHCONTENT": false - }, - "condition": { - "type": "equals", - "lhs": "${hostSystemName}", - "rhs": "Windows" - } - }, - { - "name": "x64-debug", - "displayName": "x64 Debug", - "description": "Target Windows (64-bit) with the Visual Studio development environment. (Debug)", - "inherits": "windows-base", - "architecture": { - "value": "x64", - "strategy": "external" - }, - "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug" } - }, - { - "name": "x64-release", - "displayName": "x64 Release", - "description": "Target Windows (64-bit) with the Visual Studio development environment. (RelWithDebInfo)", - "inherits": "x64-debug", - "cacheVariables": { "CMAKE_BUILD_TYPE": "Release" } - }, - { - "name": "x86-debug", - "displayName": "x86 Debug", - "description": "Target Windows (32-bit) with the Visual Studio development environment. (Debug)", - "inherits": "windows-base", - "architecture": { - "value": "x86", - "strategy": "external" - }, - "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug" } - }, - { - "name": "x86-release", - "displayName": "x86 Release", - "description": "Target Windows (32-bit) with the Visual Studio development environment. (RelWithDebInfo)", - "inherits": "x86-debug", - "cacheVariables": { "CMAKE_BUILD_TYPE": "Release" } - } - ] -} \ No newline at end of file diff --git a/Packaging/Tools/build.sh b/Packaging/Tools/build.sh new file mode 100644 index 0000000..ccf35a8 --- /dev/null +++ b/Packaging/Tools/build.sh @@ -0,0 +1,35 @@ +mkdir -p ../../artifacts +mkdir -p builds +git clone --depth 1 https://git.tesses.org/tesses50/zig-cross builds/zig-cross + + + +for tripple in x86_64-linux-musl x86-linux-musl aarch64-linux-musl arm-linux-musleabi riscv64-linux-musl powerpc-linux-musleabihf; do + export BUILDDIR=builds/$tripple + mkdir -p $BUILDDIR + cmake -S ../.. -B $BUILDDIR --toolchain $PWD/builds/zig-cross/$tripple\.cmake -DCMAKE_BUILD_TYPE=Release -DTESSESFRAMEWORK_INSTALL_DEVELOPMENT=OFF -DTESSESFRAMEWORK_ENABLE_EXAMPLES=OFF -DTESSESFRAMEWORK_ENABLE_SHARED=OFF -DTESSESFRAMEWORK_ENABLE_STATIC=ON -DCMAKE_EXE_LINKER_FLAGS="-static-libgcc -static-libstdc++ -static -Wl,--strip-all" -DCMAKE_POSITION_INDEPENDENT_CODE=ON -GNinja + cmake --build $BUILDDIR || exit 1 + cmake --install $BUILDDIR --prefix $BUILDDIR/out + tar cvzf ../../artifacts/tessesframework-tools-$tripple\.tar.gz -C $BUILDDIR/out/ bin + +done + +for tripple in x86_64-windows-gnu x86-windows-gnu aarch64-windows-gnu; do + export BUILDDIR=builds/$tripple + mkdir -p $BUILDDIR + cmake -S ../.. -B $BUILDDIR --toolchain $PWD/builds/zig-cross/$tripple\.cmake -DCMAKE_BUILD_TYPE=Release -DTESSESFRAMEWORK_INSTALL_DEVELOPMENT=OFF -DTESSESFRAMEWORK_ENABLE_EXAMPLES=OFF -DTESSESFRAMEWORK_ENABLE_SHARED=OFF -DTESSESFRAMEWORK_ENABLE_STATIC=ON -DCMAKE_EXE_LINKER_FLAGS="-static-libgcc -static-libstdc++ -static -Wl,--strip-all" -DCMAKE_POSITION_INDEPENDENT_CODE=ON -GNinja + cmake --build $BUILDDIR || exit 1 + cmake --install $BUILDDIR --prefix $BUILDDIR/out + + env -C $BUILDDIR/out zip -r ../../../../../artifacts/tessesframework-tools-$tripple\.zip bin +done + +for tripple in x86_64-macos-none aarch64-macos-none; do + export BUILDDIR=builds/$tripple + mkdir -p $BUILDDIR + cmake -S ../.. -B $BUILDDIR --toolchain $PWD/builds/zig-cross/$tripple\.cmake -DCMAKE_BUILD_TYPE=Release -DTESSESFRAMEWORK_INSTALL_DEVELOPMENT=OFF -DTESSESFRAMEWORK_ENABLE_EXAMPLES=OFF -DTESSESFRAMEWORK_ENABLE_SHARED=OFF -DTESSESFRAMEWORK_ENABLE_STATIC=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON -GNinja -DCMAKE_EXE_LINKER_FLAGS="-Wl,--strip-all" + cmake --build $BUILDDIR || exit 1 + cmake --install $BUILDDIR --prefix $BUILDDIR/out + tar cvzf ../../artifacts/tessesframework-tools-$tripple\.tar.gz -C $BUILDDIR/out/ bin + +done \ No newline at end of file diff --git a/apps/tanonydrop.cpp b/apps/tanonydrop.cpp index 915fc01..84e9b20 100644 --- a/apps/tanonydrop.cpp +++ b/apps/tanonydrop.cpp @@ -50,7 +50,7 @@ int main(int argc, char** argv) .SendText( "" "" - "AnonyDrop - Uploaded successfully" + "AnonyDrop - Uploaded successfully" "" "

Uploaded successfully

" "Back" diff --git a/src/Filesystem/LocalFS.cpp b/src/Filesystem/LocalFS.cpp index 54fa695..f9e4e9a 100644 --- a/src/Filesystem/LocalFS.cpp +++ b/src/Filesystem/LocalFS.cpp @@ -33,9 +33,17 @@ namespace Tesses::Framework::Filesystem #endif bool LocalFilesystem::Stat(VFSPath path, StatData& sfs) { + std::string s = VFSPathToSystem(path); + #if defined(_WIN32) + + struct __stat64 st; + if(_stat64(s.c_str(),&st) == 0) + #else struct stat st; if(stat(s.c_str(),&st) == 0) + #endif + { sfs.Device = (uint64_t)st.st_dev; @@ -46,8 +54,13 @@ namespace Tesses::Framework::Filesystem sfs.GroupId = (uint32_t)st.st_gid; sfs.DeviceId = (uint64_t)st.st_rdev; sfs.Size = (uint64_t)st.st_size; + #if defined(_WIN32) + sfs.BlockSize = 512; + sfs.BlockCount = sfs.Size / sfs.BlockSize; + #else sfs.BlockSize = (uint64_t)st.st_blksize; sfs.BlockCount = (uint64_t)st.st_blocks; + #endif sfs.LastAccess = Date::DateTime((int64_t)st.st_atime); sfs.LastModified = Date::DateTime((int64_t)st.st_mtime); sfs.LastStatus = Date::DateTime((int64_t)st.st_ctime); diff --git a/src/Http/HttpServer.cpp b/src/Http/HttpServer.cpp index af301dd..9438c1b 100644 --- a/src/Http/HttpServer.cpp +++ b/src/Http/HttpServer.cpp @@ -493,7 +493,7 @@ namespace Tesses::Framework::Http static bool parseUntillBoundaryEnd(std::shared_ptr src, std::shared_ptr dest, std::string boundary) { bool hasMore=true; - uint8_t* checkBuffer = new uint8_t[boundary.size()]; + std::vector checkBuffer(boundary.size()); int b; size_t i = 0; @@ -558,8 +558,6 @@ namespace Tesses::Framework::Http { dest->Write(buffer,offsetInMem); } - delete[] checkBuffer; - return hasMore; } @@ -1128,10 +1126,9 @@ namespace Tesses::Framework::Http if(ctx.requestHeaders.TryGetFirst("Content-Type",type) && type == "application/x-www-form-urlencoded" && ctx.requestHeaders.TryGetFirstInt("Content-Length",length)) { size_t len = (size_t)length; - uint8_t* buffer = new uint8_t[len]; - len = bStrm->ReadBlock(buffer,len); - std::string query((const char*)buffer,len); - delete[] buffer; + std::vector buffer(len); + len = bStrm->ReadBlock(buffer.data(),len); + std::string query((const char*)buffer.data(),len); HttpUtils::QueryParamsDecode(ctx.queryParams, query); } diff --git a/src/Streams/NetworkStream.cpp b/src/Streams/NetworkStream.cpp index 9bbbcc0..ae9622c 100644 --- a/src/Streams/NetworkStream.cpp +++ b/src/Streams/NetworkStream.cpp @@ -739,6 +739,7 @@ namespace Tesses::Framework::Streams { } void NetworkStream::SetReusePort(bool reuse) { + #if !defined(_WIN32) if(!this->success) return; int no = reuse ? 1 : 0; if (NETWORK_SETSOCKOPT(sock, SOL_SOCKET, SO_REUSEPORT, (const char*)&no, sizeof(no)) != 0) @@ -748,6 +749,7 @@ namespace Tesses::Framework::Streams { NETWORK_CLOSE(this->sock); } + #endif } void NetworkStream::SetMulticastTTL(uint8_t ttl) { diff --git a/src/Streams/Stream.cpp b/src/Streams/Stream.cpp index 2384249..f801e05 100644 --- a/src/Streams/Stream.cpp +++ b/src/Streams/Stream.cpp @@ -108,36 +108,34 @@ namespace Tesses::Framework::Streams { void Stream::CopyToLimit(std::shared_ptr strm,uint64_t len, size_t buffSize) { size_t read; - uint8_t* buffer = new uint8_t[buffSize]; + std::vector buffer(buffSize); uint64_t offset = 0; do { if(offset >= len) break; - read = (size_t)std::min(len-offset,(uint64_t)buffSize); + read = (size_t)std::min(len-offset,(uint64_t)buffer.size()); - read = this->Read(buffer,read); - strm->WriteBlock(buffer, read); + read = this->Read(buffer.data(),read); + strm->WriteBlock(buffer.data(), read); offset += read; } while(read > 0 && !strm->EndOfStream()); strm->Flush(); - delete[] buffer; } void Stream::CopyTo(std::shared_ptr strm, size_t buffSize) { size_t read; - uint8_t* buffer = new uint8_t[buffSize]; + std::vector buffer(buffSize); do { - read = this->Read(buffer,buffSize); - strm->WriteBlock(buffer, read); + read = this->Read(buffer.data(),buffer.size()); + strm->WriteBlock(buffer.data(), read); } while(read > 0 && !strm->EndOfStream()); strm->Flush(); - delete[] buffer; } Stream::~Stream() diff --git a/src/Text/HeaderGenerator.cpp b/src/Text/HeaderGenerator.cpp index 2fa4eb5..800c905 100644 --- a/src/Text/HeaderGenerator.cpp +++ b/src/Text/HeaderGenerator.cpp @@ -16,12 +16,12 @@ namespace Tesses::Framework::Text { uint64_t total = 0; size_t read; - uint8_t* data = new uint8_t[BLK_SZ]; + std::vector data(BLK_SZ); bool first=true; do { - read = strm->ReadBlock(data, BLK_SZ); + read = strm->ReadBlock(data.data(), data.size()); for(size_t i = 0; i < read; i++) { @@ -33,7 +33,6 @@ namespace Tesses::Framework::Text { } while(read != 0); - delete data; writer->WriteLine("};"); writer->Write("const size_t "); diff --git a/src/TextStreams/StdIOReader.cpp b/src/TextStreams/StdIOReader.cpp index d210862..9b5f6f3 100644 --- a/src/TextStreams/StdIOReader.cpp +++ b/src/TextStreams/StdIOReader.cpp @@ -9,23 +9,18 @@ namespace Tesses::Framework::TextStreams } bool ConsoleReader::ReadBlock(std::string& str,size_t len) { - #if defined(_WIN32) - uint8_t* buff = new uint8_t[len]; - #else - uint8_t buff[len]; - #endif + std::vector buff(len); + size_t read=0; size_t readTotal=0; - uint8_t* buffOff=buff; + uint8_t* buffOff=buff.data(); do { read=fread(buffOff,1,len,stdin); if(read != 0) {readTotal+= read;len-=read; buffOff+=read;} } while(read != 0); if(readTotal == 0) return false; - str.append((const char*)buff, readTotal); - #if defined(_WIN32) - delete buff; - #endif + str.append((const char*)buff.data(), readTotal); + return true; } diff --git a/src/TextStreams/StreamReader.cpp b/src/TextStreams/StreamReader.cpp index e7c2c30..3f9ad53 100644 --- a/src/TextStreams/StreamReader.cpp +++ b/src/TextStreams/StreamReader.cpp @@ -30,13 +30,12 @@ namespace Tesses::Framework::TextStreams { bool StreamReader::ReadBlock(std::string& str, size_t len) { - uint8_t* buff = new uint8_t[len]; + std::vector buff(len); - len = strm->ReadBlock(buff,len); - if(len == 0) {delete buff; return false;} - str.append((const char*)buff, len); + len = strm->ReadBlock(buff.data(),len); + if(len == 0) { return false;} + str.append((const char*)buff.data(), len); - delete buff; return true; }