Add server sent events, change vfs structure, dark mode error pages and dark mode anonydrop
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -493,7 +493,7 @@ namespace Tesses::Framework::Http
|
||||
static bool parseUntillBoundaryEnd(std::shared_ptr<Tesses::Framework::Streams::Stream> src, std::shared_ptr<Tesses::Framework::Streams::Stream> dest, std::string boundary)
|
||||
{
|
||||
bool hasMore=true;
|
||||
uint8_t* checkBuffer = new uint8_t[boundary.size()];
|
||||
std::vector<uint8_t> 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<uint8_t> buffer(len);
|
||||
len = bStrm->ReadBlock(buffer.data(),len);
|
||||
std::string query((const char*)buffer.data(),len);
|
||||
HttpUtils::QueryParamsDecode(ctx.queryParams, query);
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -108,36 +108,34 @@ namespace Tesses::Framework::Streams {
|
||||
void Stream::CopyToLimit(std::shared_ptr<Stream> strm,uint64_t len, size_t buffSize)
|
||||
{
|
||||
size_t read;
|
||||
uint8_t* buffer = new uint8_t[buffSize];
|
||||
std::vector<uint8_t> 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<Stream> strm, size_t buffSize)
|
||||
{
|
||||
size_t read;
|
||||
uint8_t* buffer = new uint8_t[buffSize];
|
||||
std::vector<uint8_t> 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()
|
||||
|
||||
@@ -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<uint8_t> 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 ");
|
||||
|
||||
@@ -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<uint8_t> 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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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<uint8_t> 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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user