allow a request to be processed in a job

Now we allow a request to be passed into a job queue,
and after the job finishes the request is passed into
a controller again. In order to achieve this we have
a requests queue in System, when we put a request
to the job this Request structure is preserved in the
queue and for a new request a new Request is added to
the queue.

while here:
- remove App::Lock()/Unlock(), use scoped locking
- fix: Plugin now has a Call method which takes ModelConnector
  and a logger (used in multithreaded environment)
- BaseThread has a main_model_connector pointer
  to the main (from the main thread) model connector
- the FastCGI structure fcgi_request moved from App to Request
- some methods for handling requests moved from App to Request
- small refactoring in main.cpp
- add Http class (a http client)
This commit is contained in:
Tomasz Sowa 2022-07-25 14:21:21 +02:00
parent b2d92b85a0
commit 979ef907fe
65 changed files with 7018 additions and 4437 deletions

View File

@ -65,7 +65,7 @@ all: winix winix.so plugins
winix: $(objfiles_main) winix.so
$(CXX) -o winix $(CXXFLAGS) $(LDFLAGS) $(objfiles_main) winix.so
$(CXX) -o winix $(CXXFLAGS) $(LDFLAGS) $(objfiles_main) winix.so -lcurl
winix.so: $(objfiles_no_main)
@ -73,7 +73,7 @@ winix.so: $(objfiles_no_main)
@cd ../../morm ; $(MAKE) -e
@cd ../../ezc ; $(MAKE) -e
@cd ../../tito ; $(MAKE) -e
$(CXX) -shared -rdynamic -Wl,-whole-archive -o winix.so $(CXXFLAGS) $(objfiles_no_main) ../../pikotools/src/pikotools.a ../../morm/src/morm.a ../../ezc/src/ezc.a ../../tito/src/tito.a $(LDFLAGS) -lfcgi -lpq -lz -lpthread -lcurl -lmagic -Wl,-no-whole-archive
$(CXX) -shared -rdynamic -Wl,-whole-archive -o winix.so $(CXXFLAGS) $(objfiles_no_main) ../../pikotools/src/pikotools.a ../../morm/src/morm.a ../../ezc/src/ezc.a ../../tito/src/tito.a $(LDFLAGS) -lfcgi -lpq -lz -lpthread -lmagic -Wl,-no-whole-archive
plugins: FORCE

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -74,18 +74,20 @@ public:
bool DropPrivileges();
void InitLoggers();
Log & GetMainLog();
void LoadPlugins();
bool InitializePlugins();
bool Init();
bool InitializeRequestForFastCGI();
void SetRequestDependency();
void InitializeNewRequest();
void PrepareRequest();
void PutRequestToJob();
void Start();
void Close();
void LogUserGroups();
void LogRequestTime();
bool Demonize();
void SetStopSignal();
bool WasStopSignal();
bool Lock();
void Unlock();
Synchro * GetSynchro();
void StartThreads();
void WaitForThreads();
@ -95,10 +97,6 @@ public:
// pointers to the current request and a session
Cur cur;
// temporary one request object
// current request
Request req;
// users sessions
SessionManager session_manager;
@ -106,7 +104,8 @@ public:
Db db;
DbConn db_conn;
// an unique id for each request
size_t request_id;
// ...
System system;
@ -136,24 +135,12 @@ private:
AcceptBaseParser accept_base_parser;
AcceptEncodingParser accept_encoding_parser;
Compress compress;
FCGX_Request fcgi_request;
int fcgi_socket;
Synchro synchro;
pthread_t signal_thread;
std::string socket_to_send_on_exit;
std::string send_data_buf;
pt::WTextStream json_out_stream;
std::string aheader_name, aheader_value;
//std::wstring html_filtered;
//std::string output_8bit;
pt::TextStream serialized_model;
pt::WTextStream post_log_tmp_buffer;
pt::WTextStream output_tmp_filtered_stream;
BinaryPage output_8bit;
BinaryPage compressed_output;
std::wstring cookie_id_string;
std::wstring http_header_name;
std::wstring http_header_value;
std::string http_header_8bit;
@ -199,48 +186,15 @@ private:
void CheckIfNeedSSLredirect();
void SetLocale();
void CheckPostRedirect();
void UseEzcGenerator();
void AddDefaultModels();
void SaveSessionsIfNeeded(); // !! IMPROVE ME wywalic do menagera sesji??
void LogAccess();
void SendData(const BinaryPage & page, FCGX_Stream * out);
void ReadRequest();
void SendAnswer();
void PrepareRawAnswer();
void PrepareJsonAnswer();
void PrepareXmlAnswer();
void PrepareCsvAnswer();
void PrepareContenerizedAnswer();
void PutSeparatorIfNeeded(bool put_separator);
void SerializeFieldJson(const wchar_t * field_name);
void SerializeStream(const pt::WTextStream & input_stream, const wchar_t * field_name);
void SerializeStreamJson(const pt::WTextStream & input_stream, const wchar_t * field_name);
void SerializeStreamXml(const pt::WTextStream & input_stream, const wchar_t * field_name);
void SerializeStreamCsv(const pt::WTextStream & input_stream, const wchar_t * field_name);
void SerializeAllFrames();
void SerializeSpecificFrames();
void SerializeModels();
void Send8bitOutput(BinaryPage & output);
void SerializeModel(morm::Wrapper & wrapper, const wchar_t * field_name);
void SerializeModelJson(morm::Wrapper & wrapper, const wchar_t * field_name);
void SerializeModelXml(morm::Wrapper & wrapper, const wchar_t * field_name);
void SerializeModelCsv(morm::Wrapper & wrapper, const wchar_t * field_name);
void FilterHtmlIfNeeded(const pt::WTextStream & input_stream, BinaryPage & output, bool clear_stream = true);
void LogEnvironmentVariables();
void LogEnvironmentHTTPVariables();
void ParseAcceptHeader(const wchar_t * header_name, const std::wstring & env, std::vector<HeaderValue> & container, size_t max_len);
void ParseAcceptHeader();
void ParseAcceptLanguageHeader();
void SetEnv(const char * name, std::wstring & env);
void ReadEnvVariables();
void ReadEnvHTTPVariables();
@ -250,37 +204,17 @@ private:
void ParsePostJson();
void ReadPostJson();
void ReadPostVars();
void CheckIE();
void CheckKonqueror();
void CheckRequestMethod();
void CheckSSL();
void CheckHtmx();
void SetSubdomain();
bool IsRequestedFrame();
void ModifyStatusCodeIfNeeded();
void PrepareSessionCookie();
void SendHeaders();
void SendCookies();
bool AddHeader(const wchar_t * name, const wchar_t * value);
bool AddHeader(const std::wstring & name, const std::wstring & value);
bool AddHeader(const wchar_t * name, const pt::WTextStream & value);
bool AddHeader(const std::wstring & name, const pt::WTextStream & value);
bool CreateStaticResourcePath(pt::WTextStream & out_path);
void PrepareSendFileHeaderForStaticMountpoint();
void PrepareHeaderContentType();
void ModifyStatusForRedirect();
void PrepareSendFileHeader();
void PrepareContentEncodingHeader(int compress_encoding);
void PrepareContentLengthHeader(size_t output_size);
void PrepareHeaderStatus(int http_status);
void PrepareHeaders(bool compressing, int compress_encoding, size_t output_size);
int SelectDeflateVersion();
void SelectCompression(size_t source_len, bool & compression_allowed, int & compression_encoding);
bool CanSendContent();
void ClearAfterRequest();
void IncrementRequestId();
void LogUser(const char * msg, uid_t id);
void LogGroup(const char * msg, gid_t id, bool put_logend = true);
@ -295,6 +229,7 @@ private:
bool DoDatabaseMigration();
bool TryToMakeDatabaseMigration();
void WaitForRequestsToFinish();
// !! IMPROVE ME

View File

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2010-2019, Tomasz Sowa
* Copyright (c) 2010-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -42,10 +42,11 @@ namespace Winix
BaseThread::BaseThread() : thread_signal(PTHREAD_COND_INITIALIZER)
{
synchro = 0;
thread_id = 0;
work_mode = 0;
wake_up_was_called = false;
synchro = nullptr;
thread_id = 0;
work_mode = 0;
wake_up_was_called = false;
main_model_connector = nullptr;
}
@ -66,6 +67,12 @@ void BaseThread::set_main_file_log(pt::FileLog * file_log)
}
void BaseThread::set_main_model_connector(morm::ModelConnector * main_model_connector)
{
this->main_model_connector = main_model_connector;
}
void BaseThread::Mode(int mode)
{
work_mode = mode;

View File

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2010-2019, Tomasz Sowa
* Copyright (c) 2010-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -57,6 +57,7 @@ public:
void set_main_log_buffer(pt::WTextStream * log_buffer);
void set_main_file_log(pt::FileLog * file_log);
void set_main_model_connector(morm::ModelConnector * main_model_connector);
// work mode
// we have two modes:
@ -105,11 +106,13 @@ protected:
// logger for the main thread
Log main_log;
// log from WinixBase is meant to be used by the second thread
// log from WinixBase is meant to be used by the other thread
// model connector for the main thread
// model_connector from the based class WinixModelDeprecated is meant to be used by the second thread
morm::ModelConnector * main_model_connector;
protected:
// signal came (work mode = 0 - default)

View File

@ -135,7 +135,7 @@ void Config::AssignValues()
fcgi_socket_chmod = Int(L"fcgi_socket_chmod", 0770);
fcgi_socket_user = Text(L"fcgi_socket_user");
fcgi_socket_group = Text(L"fcgi_socket_group");
fcgi_socket_listen = Int(L"fcgi_socket_listen", 100);
fcgi_socket_listen = Int(L"fcgi_socket_listen", 1024);
log_level = Int(L"log_level", 1);
log_request = Int(L"log_request", 1);
log_save_each_line = Bool(L"log_save_each_line", false);
@ -344,6 +344,8 @@ void Config::AssignValues()
use_antispam_mechanism_for_not_logged_users = Bool(L"use_antispam_mechanism_for_not_logged_users", true);
antispam_list_max_size = Size(L"antispam_list_max_size", 10);
add_header_cache_no_store_in_htmx_request = Bool(L"add_header_cache_no_store_in_htmx_request", true);
request_queue_job_limit = Size(L"request_queue_job_limit", 1024);
}

View File

@ -94,7 +94,7 @@ public:
bool log_stdout;
// how many requests should be saved in the same time
// if you have a very busy server you can incrase this value
// if you have a very busy server you can increase this value
// default: 1
int log_request;
@ -934,7 +934,7 @@ public:
// default: X_Real_IP
std::wstring proxy_ip_header;
// use an antismap mechanism for not logged users
// use an antispam mechanism for not logged users
// when they try to add a new item
// default: true
bool use_antispam_mechanism_for_not_logged_users;
@ -952,6 +952,13 @@ public:
// https://github.com/bigskysoftware/htmx/issues/497
bool add_header_cache_no_store_in_htmx_request;
// a limit for the queue for requests
// when a request is scheduled to a job
// default: 1024
// if the limit is reached then the http status 503 Service Unavailable is returned
size_t request_queue_job_limit;
Config();

View File

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2010-2014, Tomasz Sowa
* Copyright (c) 2010-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -56,6 +56,14 @@ struct Cur
// those pointers are never null, if there is no a session for the user
// the 'session' pointer pointers at a special temporary session
Cur()
{
request = nullptr;
session = nullptr;
mount = nullptr;
}
};

View File

@ -83,6 +83,11 @@ public:
static constexpr const wchar_t * text_csv_utf8 = L"text/csv; charset=UTF-8";
static constexpr const wchar_t * text_javascript_utf8 = L"text/javascript; charset=UTF-8";
static constexpr const wchar_t * application_x_www_form_urlencoded = L"application/x-www-form-urlencoded";
static constexpr const wchar_t * multipart_form_data = L"multipart/form-data";
static constexpr const wchar_t * bearer = L"Bearer";
static const int status_200_ok = 200;
static const int status_300_multiple_choices = 300;
@ -95,6 +100,7 @@ public:
static const int status_404_not_found = 404;
static const int status_414_uri_too_long = 414;
static const int status_500_internal_server_error = 500;
static const int status_503_service_unavailale = 503;
static constexpr const wchar_t * str_status_200 = L"OK";
@ -108,6 +114,7 @@ public:
static constexpr const wchar_t * str_status_404 = L"Not Found";
static constexpr const wchar_t * str_status_414 = L"URI Too Long";
static constexpr const wchar_t * str_status_500 = L"Internal Server Error";
static constexpr const wchar_t * str_status_503 = L"Service Unavailable";
static const wchar_t * find_status_string_value(int http_status);
@ -135,6 +142,7 @@ protected:
{status_404_not_found, str_status_404},
{status_414_uri_too_long, str_status_414},
{status_500_internal_server_error, str_status_500},
{status_503_service_unavailale, str_status_503},
};
};

View File

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2010-2021, Tomasz Sowa
* Copyright (c) 2010-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -496,27 +496,27 @@ void Image::ImageSavedCorrectly()
}
log << log3 << "Image: generated a thumbnail: " << dst_path << logend;
plugin->Call((Session*)0, WINIX_CREATED_THUMB, &file_work);
plugin->Call(model_connector, &log, nullptr, WINIX_CREATED_THUMB, &file_work, nullptr, 0, 0);
}
else
if( item_work.type == WINIX_IMAGE_TYPE_RESIZE )
{
log << log3 << "Image: image resized: " << dst_path << logend;
plugin->Call((Session*)0, WINIX_IMAGE_RESIZED, &file_work);
plugin->Call(model_connector, &log, nullptr, WINIX_IMAGE_RESIZED, &file_work, nullptr, 0, 0);
}
else
if( item_work.type == WINIX_IMAGE_TYPE_CROP )
{
log << log3 << "Image: image cropped: " << dst_path << logend;
// !! IMPROVE ME add a correct message
//plugin->Call((Session*)0, WINIX_IMAGE_RESIZED, &file_work);
//plugin->Call(model_connector, &log, nullptr, WINIX_IMAGE_RESIZED, &file_work, nullptr, 0, 0);
}
else
if( item_work.type == WINIX_IMAGE_TYPE_CROP_THUMB )
{
log << log3 << "Image: image thumbnail cropped: " << dst_path << logend;
// !! IMPROVE ME add a correct message
//plugin->Call((Session*)0, WINIX_IMAGE_RESIZED, &file_work);
//plugin->Call(model_connector, &log, nullptr, WINIX_IMAGE_RESIZED, &file_work, nullptr, 0, 0);
}
else
if( item_work.type == WINIX_IMAGE_TYPE_CREATE_CROP_NEW_THUMB )

View File

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2012-2019, Tomasz Sowa
* Copyright (c) 2012-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -35,6 +35,9 @@
#include "job.h"
#include "plugin.h"
#include "log.h"
#include "functions/functions.h"
#include "lock.h"
namespace Winix
@ -45,31 +48,110 @@ namespace Winix
Job::Job()
{
jobs_queue_tab.resize(WINIX_JOBS_HOW_MANY_PRIORITIES);
jobs_queue_tab.resize(PRIORITY_HIGHEST + 1);
cur = nullptr;
functions = nullptr;
mounts = nullptr;
load_avg = nullptr;
req_tab = nullptr;
}
void Job::CheckPriority(int & priority) const
void Job::SetCur(Cur * cur)
{
if( priority < 0 )
priority = 0;
this->cur = cur;
}
if( priority >= WINIX_JOBS_HOW_MANY_PRIORITIES )
priority = WINIX_JOBS_HOW_MANY_PRIORITIES - 1;
void Job::SetFunctions(Functions * functions)
{
this->functions = functions;
}
void Job::SetLoadAvg(LoadAvg * load_avg)
{
this->load_avg = load_avg;
}
void Job::SetMounts(Mounts * mounts)
{
this->mounts = mounts;
}
void Job::SetReqTab(std::list<Request> * req_tab)
{
this->req_tab = req_tab;
}
void Job::CheckPriority(size_t & priority) const
{
if( priority > PRIORITY_HIGHEST )
priority = PRIORITY_HIGHEST;
}
// first thread (objects locked)
void Job::Add(pt::Space & job, int priority)
void Job::Add(pt::Space & job, size_t priority)
{
CheckPriority(priority);
jobs_queue_tab[priority].push(job);
JobTask task;
task.job_type = JobTask::JOB_TYPE_DEFAULT;
task.job_id = JobTask::JOB_ID_DEFAULT;
task.job = job;
jobs_queue_tab[priority].push(task);
WakeUpThread();
}
// first thread (objects locked)
void Job::Add(Request * request, pt::Space & job, size_t priority)
{
CheckPriority(priority);
JobTask task;
task.job_type = JobTask::JOB_TYPE_REQUEST_CONTINUATION;
task.job_id = JobTask::JOB_ID_DEFAULT;
task.request = request;
task.job = job;
jobs_queue_tab[priority].push(task);
WakeUpThread();
}
size_t Job::Size(int priority) const
// first thread (objects locked)
void Job::Add(long job_id, pt::Space & job, size_t priority)
{
CheckPriority(priority);
JobTask task;
task.job_type = JobTask::JOB_TYPE_DEFAULT;
task.job_id = job_id;
task.job = job;
jobs_queue_tab[priority].push(task);
WakeUpThread();
}
// first thread (objects locked)
void Job::Add(long job_id, Request * request, pt::Space & job, size_t priority)
{
CheckPriority(priority);
JobTask task;
task.job_type = JobTask::JOB_TYPE_REQUEST_CONTINUATION;
task.job_id = job_id;
task.request = request;
task.job = job;
jobs_queue_tab[priority].push(task);
WakeUpThread();
}
size_t Job::Size(size_t priority) const
{
CheckPriority(priority);
return jobs_queue_tab[priority].size();
@ -81,14 +163,14 @@ size_t Job::Size() const
{
size_t sum = 0;
for(size_t i=0 ; i<WINIX_JOBS_HOW_MANY_PRIORITIES ; ++i)
for(size_t i=0 ; i <= PRIORITY_HIGHEST ; ++i)
sum += Size(i);
return sum;
}
bool Job::Empty(int priority) const
bool Job::Empty(size_t priority) const
{
CheckPriority(priority);
return jobs_queue_tab[priority].empty();
@ -97,7 +179,7 @@ bool Job::Empty(int priority) const
bool Job::Empty() const
{
for(size_t i=0 ; i<WINIX_JOBS_HOW_MANY_PRIORITIES ; ++i)
for(size_t i=0 ; i <= PRIORITY_HIGHEST ; ++i)
if( !Empty(i) )
return false;
@ -121,19 +203,20 @@ bool Job::SignalReceived()
// second thread (objects not locked)
void Job::Do()
{
size_t i = WINIX_JOBS_HOW_MANY_PRIORITIES;
size_t i = PRIORITY_HIGHEST + 1;
bool is_empty;
while( i-- > 0 && !IsExitSignal() )
{
do
{
Lock();
is_empty = Empty(i);
Unlock();
{
Winix::Lock lock(synchro);
is_empty = Empty(i);
}
if( !is_empty )
DoQueue(jobs_queue_tab[i]);
DoQueue(jobs_queue_tab[i], i);
}
while( !is_empty && !IsExitSignal() );
}
@ -141,45 +224,144 @@ bool is_empty;
// second thread (objects not locked, jobs_queue is not empty)
void Job::DoQueue(JobsQueue & jobs_queue)
void Job::DoQueue(JobsQueue & jobs_queue, size_t priority)
{
bool is_empty;
do
{
Lock();
// references will not be invalidated after insertion to jobs_queue
// (jobs_queue is std::queue and it uses std::deque by default)
pt::Space & job = jobs_queue.front();
Unlock();
JobTask * job_task = nullptr;
DoJob(job);
{
Winix::Lock lock(synchro);
Lock();
jobs_queue.pop();
is_empty = jobs_queue.empty();
Unlock();
if( !jobs_queue.empty() )
{
job_task = &jobs_queue.front();
}
}
if( job_task )
{
DoJob(*job_task, priority);
{
Winix::Lock lock(synchro);
jobs_queue.pop();
is_empty = jobs_queue.empty();
}
}
}
while( !is_empty && !IsExitSignal() );
}
// second thread (objects not locked)
void Job::DoJob(pt::Space & job)
void Job::DoJob(JobTask & task, size_t priority)
{
PluginRes res;
try
{
PluginRes res = plugin->Call((Session*)0, WINIX_JOB, &job);
main_log << logsave;
if( task.job_type == JobTask::JOB_TYPE_REQUEST_CONTINUATION )
{
if( task.request )
{
Cur local_cur;
// is this correct? we can read the task.request->session ... from the second thread?
// chyba tak bo ta struktura zostaje na stosie specjalnie dla joba do uzytku
local_cur.request = task.request;
local_cur.session = task.request->session;
local_cur.mount = task.request->mount;
cur->request->run_state = Request::RunState::job_run;
res = plugin->Call(model_connector, &log, &local_cur, WINIX_JOB, &task.job, nullptr, task.job_type, task.job_id);
{
Winix::Lock lock(synchro);
cur->request = local_cur.request;
cur->session = local_cur.session;
cur->mount = local_cur.mount;
// winix templates functions uses its own cur (global pointer in TemplatesFunctions namespace)
// so we have to set it correctly
DoRequestContinuationJob(task, priority);
}
}
else
{
log << log2 << "Job: request continuation task doesn't have a request set, skipping the job and request continuation" << logend;
log << log2 << "Job: this is an internal error, the request if exists in the queue will never be removed" << logend;
}
}
else
{
res = plugin->Call(model_connector, &log, nullptr, WINIX_JOB, &task.job, nullptr, task.job_type, task.job_id);
}
log << logsave;
if( res.res_true == 0 )
DoWinixJob(job);
{
DoWinixJob(task.job); // probably this will be removed
}
}
catch(...)
{
log << log2 << "Job: an exception was catched when doing a job" << logend;
}
}
// second thread (objects locked)
// use main_log (after locking) for the logs to be in the correct order
void Job::DoRequestContinuationJob(JobTask & job_task, size_t priority)
{
if( cur->request->function )
{
main_log << config->log_delimiter << logend;
main_log << log3 << "Job: making a continuation for request " << cur->request << logend;
main_log << log4 << "Job: doing directory analysis again" << logend;
if( functions->ParseOnlyDirs() )
{
cur->mount = mounts->CalcCurMount(cur->request);
cur->request->mount = cur->mount;
cur->request->run_state = Request::RunState::job_continuation_run;
functions->ContinueMakeFunction();
}
}
else
{
main_log << log2 << "Job: request continuation task doesn't have a funtion set, return 500 internal error" << logend;
cur->request->http_status = Header::status_500_internal_server_error;
}
if( cur->request->run_state == Request::RunState::assigned_to_job )
{
log << log3 << "Job: this request (" << cur->request << ") has been moved to the job queue again" << logend;
Add(cur->request->job_id, cur->request, cur->request->job, priority);
}
else
{
cur->request->FinishRequest(); // jak cur->request->function bedzie null to nie zadzialaja funkcje templajtowe
load_avg->StopRequest(cur->request);
cur->request->Clear();
cur->request->run_state = Request::RunState::finished;
RemoveOldRequest(cur->request);
}
main_log << logendrequest;
}
// second thread (objects not locked)
void Job::DoWinixJob(pt::Space & job)
{
@ -188,6 +370,28 @@ void Job::DoWinixJob(pt::Space & job)
// second thread (objects locked)
// use main_log for the logs to be in the correct order
void Job::RemoveOldRequest(Request * request)
{
std::list<Request>::iterator i = req_tab->begin();
while( i != req_tab->end() )
{
if( &(*i) == request )
{
main_log << log3 << "Job: removing request " << request << logend;
req_tab->erase(i);
break;
}
else
{
++i;
}
}
}
} // namespace Winix

View File

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2012-2014, Tomasz Sowa
* Copyright (c) 2012-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -32,22 +32,26 @@
*
*/
#ifndef headerfile_winix_core_jobs
#define headerfile_winix_core_jobs
#ifndef headerfile_winix_core_job
#define headerfile_winix_core_job
#include <vector>
#include <queue>
#include "basethread.h"
#include "space/space.h"
#include "jobtask.h"
#include "cur.h"
#include "loadavg.h"
#include "mounts.h"
namespace Winix
{
class Functions;
#define WINIX_JOBS_HOW_MANY_PRIORITIES 32
@ -55,19 +59,35 @@ class Job : public BaseThread
{
public:
static const size_t PRIORITY_LOWEST = 0;
static const size_t PRIORITY_HIGHEST = 31;
static const size_t PRIORITY_DEFAULT = 16;
static const size_t PRIORITY_REQUEST_CONTINUATION = 17;
Job();
void SetCur(Cur * cur);
void SetFunctions(Functions * functions);
void SetLoadAvg(LoadAvg * load_avg);
void SetMounts(Mounts * mounts);
void SetReqTab(std::list<Request> * req_tab);
/*
add a new job to the queue
priority: 0-31 (0 - the lowest priority, 31 - the highest priority)
*/
void Add(pt::Space & job, int priority = 0);
void Add(pt::Space & job, size_t priority = PRIORITY_DEFAULT);
void Add(Request * request, pt::Space & job, size_t priority = PRIORITY_DEFAULT);
void Add(long job_id, pt::Space & job, size_t priority = PRIORITY_DEFAULT);
void Add(long job_id, Request * request, pt::Space & job, size_t priority = PRIORITY_DEFAULT);
/*
queue size, and size of all jobs in any priority
*/
size_t Size(int priority) const;
size_t Size(size_t priority) const;
size_t Size() const;
@ -75,17 +95,23 @@ public:
true if specified queue is empty
or if all queues are empty
*/
bool Empty(int priority) const;
bool Empty(size_t priority) const;
bool Empty() const;
private:
typedef std::queue<pt::Space> JobsQueue;
Cur * cur;
Functions * functions;
LoadAvg * load_avg;
Mounts * mounts;
std::list<Request> * req_tab;
typedef std::queue<JobTask> JobsQueue;
typedef std::vector<JobsQueue> JobsQueueTab;
JobsQueueTab jobs_queue_tab;
void CheckPriority(int & priority) const;
void CheckPriority(size_t & priority) const;
void SaveToFile();
void ReadFromFile();
@ -101,9 +127,11 @@ private:
bool SignalReceived();
void Do();
void DoQueue(JobsQueue & jobs_queue);
void DoJob(pt::Space & job);
void DoQueue(JobsQueue & jobs_queue, size_t priority);
void DoJob(JobTask & task, size_t priority);
void DoRequestContinuationJob(JobTask & job_task, size_t priority);
void DoWinixJob(pt::Space & job);
void RemoveOldRequest(Request * request);
};

84
winixd/core/jobtask.h Normal file
View File

@ -0,0 +1,84 @@
/*
* This file is a part of Winix
* and is distributed under the 2-Clause BSD licence.
* Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
#ifndef headerfile_winix_core_jobtask
#define headerfile_winix_core_jobtask
#include "space/space.h"
#include "core/request.h"
namespace Winix
{
class JobTask
{
public:
static const long JOB_TYPE_DEFAULT = 1;
static const long JOB_TYPE_REQUEST_CONTINUATION = 2;
/*
* the value of job_id will be defined by each controller
* so the default value is better to have -1 instead of for example 1
*/
static const long JOB_ID_DEFAULT = -1;
long job_type;
long job_id;
Request * request;
pt::Space job;
JobTask()
{
clear();
}
void clear()
{
job_type = JOB_TYPE_DEFAULT;
job_id = JOB_ID_DEFAULT;
request = nullptr;
job.clear();
}
};
}
#endif

View File

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2009-2014, Tomasz Sowa
* Copyright (c) 2009-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -43,14 +43,38 @@ namespace Winix
Mount::Mount()
{
Clear();
}
Mount::Mount(const Mount & m)
{
operator=(m);
}
Mount & Mount::operator=(const Mount & m)
{
dir_id = m.dir_id;
type = m.type;
fs = m.fs;
param = m.param;
return *this;
}
void Mount::Clear()
{
dir_id = -1;
type = -1;
fs = -1;
ClearParams();
}
void Mount::ClearParams()
{
size_t i;

View File

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2009-2014, Tomasz Sowa
* Copyright (c) 2009-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -73,6 +73,10 @@ public:
Mount();
Mount(const Mount & m);
Mount & operator=(const Mount & m);
void Clear();
void ClearParams();
bool IsPar(int code);

View File

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2010-2014, Tomasz Sowa
* Copyright (c) 2010-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -35,6 +35,7 @@
#include "mountparser.h"
#include "log.h"
#include "misc.h"
#include "dirs.h"
namespace Winix

View File

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2010-2021, Tomasz Sowa
* Copyright (c) 2010-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -41,7 +41,6 @@
#include <stdlib.h>
#include <limits.h>
#include "mount.h"
#include "dirs.h"
#include "models/item.h"
#include "winixmodeldeprecated.h"
@ -49,6 +48,7 @@
namespace Winix
{
class Dirs;

View File

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2009-2021, Tomasz Sowa
* Copyright (c) 2009-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -37,6 +37,7 @@
#include "log.h"
#include "db/db.h"
#include "cur.h"
#include "dirs.h"
@ -49,6 +50,7 @@ Mounts::Mounts()
{
pmount = &empty_mount;
skip_static = false;
dirs = nullptr;
}
@ -99,7 +101,7 @@ void Mounts::CreateMounts()
CreateMountFs();
CreateMountPar();
plugin->Call((Session*)0, WINIX_ADD_MOUNTS);
plugin->Call(WINIX_ADD_MOUNTS);
empty_mount.param.resize(mount_par_tab.size());
empty_mount.ClearParams();
@ -118,12 +120,6 @@ void Mounts::SetDb(Db * pdb)
db = pdb;
}
void Mounts::SetCur(Cur * pcur)
{
cur = pcur;
}
int Mounts::AddMountType(const wchar_t * type)
{
@ -221,13 +217,11 @@ void Mounts::ReadMounts(const std::wstring & mounts)
mount_parser.Parse(mounts, mount_tab);
CalcCurMount();
// IMPROVE ME
// cur->mount is pointing to the empty mount (it is set in functions.cpp in CheckSpecialFile method)
// may would be better to call WINIX_FSTAB_CHANGED after the cur->mount is set?
// some plugins are using 'cur' object
plugin->Call((Session*)0, WINIX_FSTAB_CHANGED);
plugin->Call(WINIX_FSTAB_CHANGED);
}
@ -292,7 +286,7 @@ void Mounts::MountCmsForRoot()
Mount * Mounts::CalcCurMount()
Mount * Mounts::CalcCurMount(Request * request)
{
std::vector<Item*>::reverse_iterator i;
@ -300,10 +294,10 @@ std::vector<Item*>::reverse_iterator i;
// when the program starts (when the dir_tab is empty()
// we don't want to call MountCmsForRoot()
if( cur->request->dir_tab.empty() )
if( request->dir_tab.empty() )
return pmount;
for(i = cur->request->dir_tab.rbegin() ; i!=cur->request->dir_tab.rend() ; ++i)
for(i = request->dir_tab.rbegin() ; i!=request->dir_tab.rend() ; ++i)
{
std::map<long, Mount>::iterator m = mount_tab.find( (*i)->id );

View File

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2009-2018, Tomasz Sowa
* Copyright (c) 2009-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -42,7 +42,6 @@
#include <vector>
#include "mount.h"
#include "error.h"
#include "dirs.h"
#include "db/db.h"
#include "request.h"
#include "mountparser.h"
@ -51,7 +50,7 @@
namespace Winix
{
class Dirs;
@ -115,7 +114,6 @@ public:
void SetDirs(Dirs * pdirs);
void SetDb(Db * pdb);
void SetCur(Cur * pcur);
// dir_id, mount_point
typedef std::map<long, Mount> MountTab;
@ -126,7 +124,7 @@ public:
void ReadMounts(const std::wstring & mounts);
void ReadMounts();
Mount * CalcCurMount();
Mount * CalcCurMount(Request * request);
Mount * CalcMount(long dir_id);
// current mount point
@ -146,7 +144,6 @@ private:
Db * db;
Dirs * dirs;
Cur * cur;
bool skip_static;

View File

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2008-2018, Tomasz Sowa
* Copyright (c) 2008-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -48,47 +48,6 @@ namespace Winix
{
/*
*
* PluginInfo
*
*
*/
void PluginInfo::set_dependency_for(WinixBase * winix_base)
{
plugin->SetDependencyFor(winix_base);
}
void PluginInfo::set_dependency_for(WinixBase & winix_base)
{
set_dependency_for(&winix_base);
}
void PluginInfo::set_dependency_for(WinixModelDeprecated * winix_model)
{
plugin->SetDependencyFor(winix_model);
//model_connector = winix_model->get_model_connector();
// CHECKME what about model_connector here?
}
void PluginInfo::set_dependency_for(WinixModelDeprecated & winix_model)
{
set_dependency_for(&winix_model);
}
/*
*
* Plugin
*
*
*/
void Plugin::UnloadPlugins()
{
size_t i;
@ -113,6 +72,8 @@ Plugin::Plugin()
templates = nullptr;
session_manager = nullptr;
winix_request = nullptr;
plugin = this;
}
@ -127,17 +88,6 @@ void Plugin::SetDb(Db * pdb)
db = pdb;
}
//void Plugin::SetConfig(Config * pconfig)
//{
// config = pconfig;
//}
void Plugin::SetCur(Cur * pcur)
{
cur = pcur;
}
void Plugin::SetSystem(System * psystem)
{
@ -145,6 +95,12 @@ void Plugin::SetSystem(System * psystem)
}
void Plugin::SetCur(Cur * cur)
{
this->cur = cur;
}
void Plugin::SetFunctions(Functions * pfunctions)
{
functions = pfunctions;
@ -157,12 +113,6 @@ void Plugin::SetTemplates(Templates * ptemplates)
}
//void Plugin::SetSynchro(Synchro * psynchro)
//{
// synchro = psynchro;
//}
void Plugin::SetSessionManager(SessionManager * psession_manager)
{
session_manager = psession_manager;
@ -192,10 +142,10 @@ void Plugin::Unlock()
bool Plugin::SetDependency(PluginInfo & info)
bool Plugin::SetDependencyForPluginInfo(morm::ModelConnector * pmodel_connector, Log * plog, Cur * pcur, PluginInfo & info)
{
// for safety we call a plugin function only when all our pointers are not null
bool res = (db && config && cur && system && functions && templates && synchro && session_manager && winix_request);
bool res = (pmodel_connector && plog && pcur && db && config && system && functions && templates && synchro && session_manager && winix_request);
if( !res )
{
@ -204,39 +154,22 @@ bool Plugin::SetDependency(PluginInfo & info)
info.db = db;
info.config = config;
info.cur = cur;
info.cur = pcur;
info.system = system;
info.functions = functions;
info.templates = templates;
info.synchro = synchro;
info.session_manager = session_manager;
info.plugin = this;
info.model_connector = pmodel_connector;;
/*
* FIXME
* if we call a message from a different thread then a different model connector is needed
* (each thread should have its own model connector)
*
*/
info.model_connector = system->get_model_connector();
info.log.set_log_buffer(plog->get_log_buffer());
info.log.set_file_log(plog->get_file_log());
info.log.SetDependency(&log);
return res;
return res;
}
void Plugin::SetDependencyFor(WinixBase * winix_base)
{
winix_base->set_dependency(winix_request);
}
void Plugin::SetDependencyFor(WinixModelDeprecated * winix_model)
{
winix_model->set_dependency(winix_request);
}
void Plugin::LoadPlugins(const std::wstring & plugins_dir, const std::vector<std::wstring> & plugins)
{
@ -304,7 +237,7 @@ void * plugin_handle;
int old_current_plugin;
PluginInfo info;
if( !SetDependency(info) )
if( !SetDependencyForPluginInfo(model_connector, &log, cur, info) )
return;
if( !(plugin_handle = LoadInitFun(filename, fun_init)) )
@ -315,6 +248,10 @@ PluginInfo info;
current_plugin = (int)plugins.size();
info.plugin_id = current_plugin;
/*
* WARNING:
* all pointers from Cur are null pointers here
*/
fun_init(info);
PluginsItem item;
@ -362,19 +299,18 @@ bool Plugin::HasMessage(int message)
}
void Plugin::Call(Session * ses, int message, Slots::iterator & slot, PluginInfo & info)
void Plugin::Call(morm::ModelConnector * model_connector, Log * plog, Cur * cur, int message, Slots::iterator & slot, PluginInfo & info)
{
if( !SetDependency(info) )
if( !SetDependencyForPluginInfo(model_connector, plog, cur, info) )
return;
current_plugin = slot->second.index;
info.plugin_id = current_plugin;
info.session = ses;
if( current_plugin != -1 && ses )
info.plugin_data_base = ses->plugin_data.Get(current_plugin);
if( current_plugin != -1 && cur->session && !cur->session->is_temporary_session() )
info.plugin_data_base = cur->session->plugin_data.Get(current_plugin);
else
info.plugin_data_base = 0;
info.plugin_data_base = nullptr;
if( !slot->second.is_running )
{
@ -411,136 +347,104 @@ void Plugin::Call(Session * ses, int message, Slots::iterator & slot, PluginInfo
PluginRes Plugin::Call(Session * ses, int message, void * p1_, void * p2_, long l1_, long l2_)
PluginRes Plugin::Call(morm::ModelConnector * model_connector, Log * plog, Cur * cur, int message, void * p1, void * p2, long l1, long l2)
{
PluginRes res;
int old_current_plugin = current_plugin;
PluginInfo info;
PluginRes res;
int old_current_plugin = current_plugin;
PluginInfo info;
Cur local_cur;
if( !cur )
cur = &local_cur;
Slots::iterator i = slots.lower_bound(message);
for( ; i!=slots.end() && i->first==message ; ++i )
{
info.Clear();
info.p1 = p1_;
info.p2 = p2_;
info.l1 = l1_;
info.l2 = l2_;
info.p1 = p1;
info.p2 = p2;
info.l1 = l1;
info.l2 = l2;
Call(ses, message, i, info);
Call(model_connector, plog, cur, message, i, info);
if( info.res )
++res.res_true;
else
++res.res_false;
}
current_plugin = old_current_plugin;
return res;
return res;
}
PluginRes Plugin::Call(morm::ModelConnector * model_connector, Log * plog, Session * session, Request * request, Mount * mount, int message, void * p1, void * p2, long l1, long l2)
{
Cur local_cur;
local_cur.session = session;
local_cur.request = request;
local_cur.mount = mount;
return Call(model_connector, plog, &local_cur, message, p1, p2, l1, l2);
}
PluginRes Plugin::Call(int message)
{
return Call(cur->session, message, 0, 0, 0, 0);
return Call(model_connector, &log, cur, message, 0, 0, 0, 0);
}
PluginRes Plugin::Call(int message, void * p1_)
{
return Call(cur->session, message, p1_, 0, 0, 0);
return Call(model_connector, &log, cur, message, p1_, 0, 0, 0);
}
PluginRes Plugin::Call(int message, void * p1_, void * p2_)
{
return Call(cur->session, message, p1_, p2_, 0, 0);
return Call(model_connector, &log, cur, message, p1_, p2_, 0, 0);
}
PluginRes Plugin::Call(int message, long l1_)
{
return Call(cur->session, message, 0, 0, l1_, 0);
return Call(model_connector, &log, cur, message, 0, 0, l1_, 0);
}
PluginRes Plugin::Call(int message, long l1_, long l2_)
{
return Call(cur->session, message, 0, 0, l1_, l2_);
return Call(model_connector, &log, cur, message, 0, 0, l1_, l2_);
}
PluginRes Plugin::Call(int message, void * p1_, long l1_)
{
return Call(cur->session, message, p1_, 0, l1_, 0);
return Call(model_connector, &log, cur, message, p1_, 0, l1_, 0);
}
PluginRes Plugin::Call(int message, void * p1_, long l1_, long l2_)
{
return Call(cur->session, message, p1_, 0, l1_, l2_);
return Call(model_connector, &log, cur, message, p1_, 0, l1_, l2_);
}
PluginRes Plugin::Call(int message, void * p1_, void * p2_, long l1_)
{
return Call(cur->session, message, p1_, p2_, l1_, 0);
return Call(model_connector, &log, cur, message, p1_, p2_, l1_, 0);
}
PluginRes Plugin::Call(Session * ses, int message)
{
return Call(ses, message, 0, 0, 0, 0);
}
PluginRes Plugin::Call(Session * ses, int message, void * p1_)
{
return Call(ses, message, p1_, 0, 0, 0);
}
PluginRes Plugin::Call(Session * ses, int message, void * p1_, void * p2_)
{
return Call(ses, message, p1_, p2_, 0, 0);
}
PluginRes Plugin::Call(Session * ses, int message, long l1_)
{
return Call(ses, message, 0, 0, l1_, 0);
}
PluginRes Plugin::Call(Session * ses, int message, long l1_, long l2_)
{
return Call(ses, message, 0, 0, l1_, l2_);
}
PluginRes Plugin::Call(Session * ses, int message, void * p1_, long l1_)
{
return Call(ses, message, p1_, 0, l1_, 0);
}
PluginRes Plugin::Call(Session * ses, int message, void * p1_, long l1_, long l2_)
{
return Call(ses, message, p1_, 0, l1_, l2_);
}
PluginRes Plugin::Call(Session * ses, int message, void * p1_, void * p2_, long l1_)
{
return Call(ses, message, p1_, p2_, l1_, 0);
}
size_t Plugin::Size()
{
return plugins.size();

View File

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2008-2021, Tomasz Sowa
* Copyright (c) 2008-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -40,8 +40,10 @@
#include <map>
#include "pluginmsg.h"
#include "plugindata.h"
#include "winixbase.h"
#include "winixmodeldeprecated.h"
#include "modelconnector.h"
#include "mount.h"
@ -78,6 +80,7 @@ class WinixRequest;
class Plugin;
class Session;
class Request;
// move me to a different file
@ -111,14 +114,6 @@ struct PluginInfo
morm::ModelConnector * model_connector;
// a session
// some messages are sent in a session's context e.g. logging a user
// this pointer in not always the same as cur->session, it is preferred
// to use this pointer instead of cur->session
// (cur->session can point at a temporary object)
// this pointer can be null
Session * session;
// pointer to the plugin session (can be null if not set by the plugin or if session is null)
// this is taken from session->plugin_data.Get()
// you should use WINIX_SESSION_CREATED and WINIX_PLUGIN_SESSION_DATA_REMOVE
@ -130,13 +125,6 @@ struct PluginInfo
bool res;
void set_dependency_for(WinixBase * winix_base);
void set_dependency_for(WinixBase & winix_base);
void set_dependency_for(WinixModelDeprecated * winix_model);
void set_dependency_for(WinixModelDeprecated & winix_model);
void Clear()
{
// pointers to winix objects are not cleared here
@ -147,7 +135,6 @@ struct PluginInfo
l2 = 0;
plugin_id = -1;
session = 0;
plugin_data_base = 0;
res = false;
@ -173,11 +160,11 @@ struct PluginRes
class Plugin : public WinixBase
class Plugin : public WinixModelDeprecated
{
public:
// index of a plugin which is called by Call() method
// index of a plugin which is called by CallAllRegisteredMessages() method
// normally: -1
int current_plugin;
@ -215,12 +202,10 @@ public:
~Plugin();
void SetDb(Db * pdb);
//void SetConfig(Config * pconfig);
void SetCur(Cur * pcur);
void SetSystem(System * psystem);
void SetCur(Cur * cur);
void SetFunctions(Functions * pfunctions);
void SetTemplates(Templates * ptemplates);
//void SetSynchro(Synchro * psynchro);
void SetSessionManager(SessionManager * psession_manager);
void SetWinixRequest(WinixRequest * winix_request);
@ -244,16 +229,9 @@ public:
PluginRes Call(int message, void * p1_, long l1_);
PluginRes Call(int message, void * p1_, long l1_, long l2_);
PluginRes Call(int message, void * p1_, void * p2_, long l1_);
PluginRes Call(Session * ses, int message, void * p1_, void * p2_, long l1_, long l2_);
PluginRes Call(Session * ses, int message);
PluginRes Call(Session * ses, int message, void * p1_);
PluginRes Call(Session * ses, int message, void * p1_, void * p2_);
PluginRes Call(Session * ses, int message, long l1_);
PluginRes Call(Session * ses, int message, long l1_, long l2_);
PluginRes Call(Session * ses, int message, void * p1_, long l1_);
PluginRes Call(Session * ses, int message, void * p1_, long l1_, long l2_);
PluginRes Call(Session * ses, int message, void * p1_, void * p2_, long l1_);
PluginRes Call(morm::ModelConnector * model_connector, Log * plog, Cur * cur, int message, void * p1 = nullptr, void * p2 = nullptr, long l1 = 0, long l2 = 0);
PluginRes Call(morm::ModelConnector * model_connector, Log * plog, Session * session, Request * request, Mount * mount, int message, void * p1 = nullptr, void * p2 = nullptr, long l1 = 0, long l2 = 0);
// how many plugins there are
size_t Size();
@ -269,15 +247,13 @@ public:
private:
Db * db;
//Config * config;
Cur * cur;
System * system;
Functions * functions;
Templates * templates;
//Synchro * synchro;
SessionManager * session_manager;
WinixRequest * winix_request;
WinixRequest * winix_request; // is it needed anymore? !!!!!!!!!!!!!!!!
std::wstring temp_path; // used when loading plugins
@ -287,11 +263,10 @@ private:
Slots slots;
void * LoadInitFun(const wchar_t * filename, Fun1 & fun_init);
void Call(Session * ses, int message, Slots::iterator & slot, PluginInfo & info);
void Call(morm::ModelConnector * model_connector, Log * plog, Cur * cur, int message, Slots::iterator & slot, PluginInfo & info);
bool SetDependency(PluginInfo & info);
void SetDependencyFor(WinixBase * winix_base);
void SetDependencyFor(WinixModelDeprecated * winix_model);
bool SetDependencyForPluginInfo(morm::ModelConnector * pmodel_connector, Log * plog, Cur * pcur, PluginInfo & info);
void Lock();
void Unlock();

View File

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2008-2021, Tomasz Sowa
* Copyright (c) 2008-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -180,6 +180,7 @@ namespace Winix
// the request is being ended
// you can clear some of your objects here
// in p1 you have a pointer to the Request object
#define WINIX_END_REQUEST 30140
// a new file (page) has been added
@ -323,6 +324,13 @@ namespace Winix
// session is null
// if you process the job then return 'true' from the processing method (from plugin call)
// so this prevent to make a standard (system) job
// in l1 there is a job type (from JobTask structure), e.g. if you want to know whether
// the job is a request continuation you should compare l1 == JobTask::JOB_TYPE_REQUEST_CONTINUATION
// in l2 there is a job_id - the values passed to the Job::Add(long job_id, ...) method
// if you have called Add(...) without long job_id parameter then the default value JobTask::JOB_ID_DEFAULT is used
// if the job type is JobTask::JOB_TYPE_REQUEST_CONTINUATION then a pointer to Session can be set,
// such a Session has allow_to_delete flag set to false but of course you have to Lock/Unlock when
// you are using this structure
#define WINIX_JOB 31200

View File

@ -70,7 +70,7 @@ void PostParser::Parse(FCGX_Stream * in, Request & request)
HttpSimpleParser::Parse();
if( has_winix_raw_post_msg )
plugin->Call(0, WINIX_RAW_POST_STRING, &raw_post);
plugin->Call(WINIX_RAW_POST_STRING, &raw_post);
raw_post.clear();
}
@ -114,7 +114,7 @@ void PostParser::CreateLog(bool param_added, const std::wstring & name, const st
void PostParser::Parameter(std::wstring & name, std::wstring & value)
{
if( has_winix_post_params_msg )
plugin->Call(0, WINIX_POST_PARAMS, &name, &value);
plugin->Call(WINIX_POST_PARAMS, &name, &value);
bool added = request->AddPostVar(name, value);
CreateLog(added, name, value);

File diff suppressed because it is too large Load Diff

View File

@ -51,6 +51,11 @@
#include "models.h"
#include "models/winixmodel.h"
#include "header.h"
#include "compress.h"
#include "plugin.h"
#include "mount.h"
#include "mounts.h"
namespace Winix
@ -60,7 +65,7 @@ namespace Winix
class FunctionBase;
class Templates;
@ -87,6 +92,15 @@ public:
*/
size_t id;
// the state of the request
// not_assigned - the object is not being used
// normal_run - run in the main thread, this state is set after a new request is made
// assigned_to_job - the request is preserved and a new job will be called
// job_run - run in the job thread (objects are locked)
// finished - the request is finished and the object can be removed
enum RunState { not_assigned = 0, normal_run, assigned_to_job, job_run, job_continuation_run, finished};
RunState run_state;
/*
* request start time
@ -230,13 +244,23 @@ public:
// null if there is no a function
FunctionBase * function;
// current session (if exists, can be null)
Session * session;
// current mount point (can be null, it is treated as cms filesystem then)
Mount * mount;
// parameters (name:value)
ParamTab param_tab;
// this is a pointer either to the item (if exists) or to the last directory
Item * last_item;
// can we use gzip compression algorithm when sending content to the client
bool accept_gzip;
// can we use deflate compression algorithm when sending content to the client
bool accept_deflate;
/*
@ -412,16 +436,24 @@ public:
std::vector<Item> item_tab;
/*
* FastCGI request structure with pointers to input/output streams
*/
FCGX_Request fcgi_request;
long job_id;
pt::Space job;
Request();
void SetConfig(Config * pconfig);
void SetConfig(Config * config);
void SetTemplates(Templates * templates);
void SetCompress(Compress * compress);
void SetPlugin(Plugin * plugin);
void SetMounts(Mounts * mounts);
void fields();
@ -473,10 +505,34 @@ public:
bool has_frame(const wchar_t * frame);
bool has_frame(const std::wstring & frame);
void create_job(long job_id);
void modify_status_code_if_needed();
// RENAMEME to add_header_if_not_exists
bool AddHeader(const wchar_t * name, const wchar_t * value);
bool AddHeader(const std::wstring & name, const std::wstring & value);
bool AddHeader(const wchar_t * name, const pt::WTextStream & value);
bool AddHeader(const std::wstring & name, const pt::WTextStream & value);
void FinishRequest();
private:
Config * config;
Templates * templates;
Compress * compress;
Plugin * plugin;
Mounts * mounts;
BinaryPage output_8bit;
BinaryPage compressed_output;
pt::WTextStream output_tmp_filtered_stream;
pt::TextStream serialized_model;
std::string aheader_name, aheader_value;
std::wstring cookie_id_string;
std::string send_data_buf;
// used in ParamValue() and PostVar() when there is no such a param
const std::wstring str_empty;
@ -493,6 +549,45 @@ private:
void http_status_error_title(EzcEnv & env);
void http_status_error_description(EzcEnv & env);
void SendAnswer();
void PrepareRawAnswer();
void PrepareJsonAnswer();
void PrepareXmlAnswer();
void PrepareCsvAnswer();
void PrepareContenerizedAnswer();
void PutSeparatorIfNeeded(bool put_separator);
void SerializeFieldJson(const wchar_t * field_name);
void SerializeStream(const pt::WTextStream & input_stream, const wchar_t * field_name);
void SerializeStreamJson(const pt::WTextStream & input_stream, const wchar_t * field_name);
void SerializeStreamXml(const pt::WTextStream & input_stream, const wchar_t * field_name);
void SerializeStreamCsv(const pt::WTextStream & input_stream, const wchar_t * field_name);
void SerializeAllFrames();
void SerializeSpecificFrames();
void SerializeModels();
void SerializeModel(morm::Wrapper & wrapper, const wchar_t * field_name);
void SerializeModelJson(morm::Wrapper & wrapper, const wchar_t * field_name);
void SerializeModelXml(morm::Wrapper & wrapper, const wchar_t * field_name);
void SerializeModelCsv(morm::Wrapper & wrapper, const wchar_t * field_name);
void FilterHtmlIfNeeded(const pt::WTextStream & input_stream, BinaryPage & output, bool clear_stream = true);
void Send8bitOutput(BinaryPage & output);
void SendData(const BinaryPage & page, FCGX_Stream * out);
void UseEzcGenerator();
int SelectDeflateVersion();
void SelectCompression(size_t source_len, bool & compression_allowed, int & compression_encoding);
void PrepareSessionCookie();
void PrepareHeaders(bool compressing, int compress_encoding, size_t output_size);
void ModifyStatusForRedirect();
void PrepareSendFileHeaderForStaticMountpoint();
void PrepareSendFileHeader();
void PrepareContentEncodingHeader(int compress_encoding);
void PrepareContentLengthHeader(size_t output_size);
void PrepareHeaderContentType();
void PrepareHeaderStatus(int http_status);
void SendHeaders();
void SendCookies();
bool CreateStaticResourcePath(pt::WTextStream & out_path);
bool CanSendContent();
void LogRequestTime();
MORM_MEMBER_FIELD(Request)

View File

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2008-2018, Tomasz Sowa
* Copyright (c) 2008-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -97,6 +97,7 @@ void Session::Clear(bool clear_plugin_data)
new_session = true;
spam_score = 0;
remove_me = false;
allow_to_delete = true;
start_time = 0;
last_time = 0;
@ -121,6 +122,11 @@ void Session::ClearAfterRequest()
}
bool Session::is_temporary_session() const
{
return id == 0;
}
} // namespace Winix

View File

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2008-2021, Tomasz Sowa
* Copyright (c) 2008-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -66,7 +66,7 @@ public:
void ClearAfterRequest();
// 0 - means that there is a temporary session
// 0 - means that this is a temporary session
long id;
// a session index
@ -101,10 +101,17 @@ public:
bool remember_me;
// if true then this session will be removed by SessionManager
// without checking the time expiration
// if remove_me is true and if allow_to_delete is true then this session will be
// removed by SessionManager without checking the time expiration
bool remove_me;
// if the session can be removed then this value is true (default)
// if we continue a request from a controller to a job
// then we set this value to false in order for the SessionManager
// to not delete this
bool allow_to_delete;
PluginData plugin_data;
@ -133,6 +140,8 @@ public:
bool is_temporary_session() const;
};

View File

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2008-2018, Tomasz Sowa
* Copyright (c) 2008-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -82,7 +82,7 @@ Table::iterator i = table.begin();
{
if( i->plugin_data.HasAllocatedData() )
{
plugin->Call(&*i, WINIX_PLUGIN_SESSION_DATA_REMOVE); // the session passed here is ok?
plugin->Call(model_connector, &log, &*i, nullptr, nullptr, WINIX_PLUGIN_SESSION_DATA_REMOVE, nullptr, nullptr, 0, 0); // the session passed here is ok?
}
//i->plugin_data.DeleteAll(); // it's better to call it here instead in the destructor
@ -116,7 +116,7 @@ IndexId::iterator i = index_id.find(id);
if( i->second->plugin_data.HasAllocatedData() )
{
plugin->Call(&*(i->second), WINIX_PLUGIN_SESSION_DATA_REMOVE); // the session passed here is ok?
plugin->Call(model_connector, &log, &*(i->second), nullptr, nullptr, WINIX_PLUGIN_SESSION_DATA_REMOVE, nullptr, nullptr, 0, 0); // the session passed here is ok?
}
//i->second->plugin_data.DeleteAll();

View File

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2008-2019, Tomasz Sowa
* Copyright (c) 2008-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -40,6 +40,7 @@
#include "session.h"
#include "sessionparser.h"
#include "functions/functionbase.h"
#include "system.h"
@ -558,7 +559,7 @@ SessionContainer::Iterator SessionManager::SessionEnd()
// called from the main thread (from App::Close)
void SessionManager::DeleteSessions()
{
SessionContainer::Iterator i;
@ -567,7 +568,7 @@ void SessionManager::DeleteSessions()
{
if( i->puser && !i->remember_me )
{
plugin->Call(&(*i), WINIX_PREPARE_USER_TO_LOGOUT, i->puser);
plugin->Call(main_model_connector, &main_log, &(*i), nullptr, nullptr, WINIX_PREPARE_USER_TO_LOGOUT, i->puser, nullptr, 0, 0);
last_container->UserLogout(i->puser->id, i->id);
}
}
@ -599,7 +600,7 @@ SessionContainer::Iterator i = session_tab.FindById(old_id);
}
if( changed )
plugin->Call(&(*i), WINIX_SESSION_CHANGED_ID, old_id, new_id);
plugin->Call(main_model_connector, &main_log, &(*i), nullptr, nullptr, WINIX_SESSION_CHANGED_ID, nullptr, nullptr, old_id, new_id);
else
main_log << log1 << "SM: I cannot create a new session id (still uses old one)" << logend;
}
@ -612,19 +613,20 @@ return changed;
}
// called from the main thread (from App::Init)
void SessionManager::InitTmpSession()
{
Session * old_session = cur->session;
main_log << log4 << "SM: initializing temporary session" << logend;
cur->session = &temporary_session;
plugin->Call(WINIX_SESSION_CREATED);
plugin->Call(main_model_connector, &main_log, nullptr, WINIX_SESSION_CREATED);
cur->session = old_session;
}
// called from the main thread at the and (from App::Close)
void SessionManager::UninitTmpSession()
{
Session * old_session = cur->session;
@ -635,18 +637,16 @@ void SessionManager::UninitTmpSession()
if( cur->session->plugin_data.HasAllocatedData() )
{
plugin->Call(cur->session, WINIX_PLUGIN_SESSION_DATA_REMOVE);
plugin->Call(main_model_connector, &main_log, cur->session, nullptr, nullptr, WINIX_PLUGIN_SESSION_DATA_REMOVE);
}
//cur->session->plugin_data.DeleteAll(); // this will call plugin.Call(WINIX_PLUGIN_SESSION_DATA_REMOVE);
cur->session->plugin_data.Resize(0);
cur->session = old_session;
}
// called from the main thread (from App::Init)
void SessionManager::LoadSessions()
{
SessionParser sp;
@ -665,7 +665,7 @@ SessionContainer::Iterator i;
for(i=session_tab.Begin() ; i != session_tab.End() ; ++i)
{
i->plugin_data.Resize(plugin->Size());
plugin->Call(&(*i), WINIX_SESSION_CREATED);
plugin->Call(main_model_connector, &main_log, &(*i), nullptr, nullptr, WINIX_SESSION_CREATED);
/*
!! IMPROVE ME
@ -673,7 +673,7 @@ SessionContainer::Iterator i;
*/
if( i->puser )
plugin->Call(&(*i), WINIX_USER_LOGGED);
plugin->Call(main_model_connector, &main_log, &(*i), nullptr, nullptr, WINIX_USER_LOGGED);
}
}
else
@ -758,7 +758,7 @@ size_t SessionManager::MarkAllSessionsToRemove(long user_id)
{
if( i->puser && i->puser->id == user_id )
{
plugin->Call(&(*i), WINIX_PREPARE_USER_TO_LOGOUT, i->puser);
plugin->Call(main_model_connector, &main_log, &(*i), nullptr, nullptr, WINIX_PREPARE_USER_TO_LOGOUT, i->puser);
last_container->UserLogout(i->puser->id, i->id);
i->remove_me = true;
i->puser = 0;
@ -871,7 +871,7 @@ const int deleted_max_at_once = 10;
}
else
{
if( i->remove_me || IsSessionOutdated(*i) )
if( i->allow_to_delete && (i->remove_me || IsSessionOutdated(*i)) )
{
Session * ses = &(*i);
++i;
@ -917,16 +917,16 @@ void SessionManager::DeleteSession(Session * del_session)
{
if( del_session->puser )
{
plugin->Call(del_session, WINIX_PREPARE_USER_TO_LOGOUT, del_session->puser);
plugin->Call(model_connector, &log, del_session, nullptr, nullptr, WINIX_PREPARE_USER_TO_LOGOUT, del_session->puser, nullptr, 0, 0);
last_container->UserLogout(del_session->puser->id, del_session->id);
del_session->puser = 0;
}
long id = del_session->id;
plugin->Call(del_session, WINIX_PREPARE_SESSION_TO_REMOVE);
plugin->Call(model_connector, &log, del_session, nullptr, nullptr, WINIX_PREPARE_SESSION_TO_REMOVE, del_session->puser, nullptr, 0, 0);
session_tab.EraseById(del_session->id);
plugin->Call((Session*)0, WINIX_SESSION_REMOVED, id);
plugin->Call(model_connector, &log, nullptr, WINIX_SESSION_REMOVED, nullptr, nullptr, id, 0);
}

View File

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2008-2019, Tomasz Sowa
* Copyright (c) 2008-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -43,7 +43,6 @@
#include "config.h"
#include "request.h"
#include "lastcontainer.h"
#include "system.h"
#include "synchro.h"
#include "basethread.h"
#include "sessionidmanager.h"

View File

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2010-2021, Tomasz Sowa
* Copyright (c) 2010-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -137,7 +137,6 @@ bool System::Init()
mounts.SkipStaticDirs(config->dont_use_static_dirs);
mounts.SetDirs(&dirs);
mounts.SetDb(db);
mounts.SetCur(cur); // only one method is using cur, can be passed as a parameter to the method
mounts.CreateMounts();
mounts.ReadMounts();
@ -168,6 +167,12 @@ bool System::Init()
if( !thread_manager.Add(&image, L"image") )
return false;
job.SetCur(cur);
job.SetFunctions(functions);
job.SetLoadAvg(&load_avg);
job.SetMounts(&mounts);
job.SetReqTab(&req_tab);
// SetSynchro will be called by ThreadManager itself
// job.ReadFromFile();
if( !thread_manager.Add(&job, L"job") )
@ -1440,7 +1445,7 @@ bool System::FollowAllLinks(const std::wstring & link_to,
log << log3 << "System: current directory changed and the new file loaded" << logend;
}
mounts.CalcCurMount();
mounts.CalcCurMount(cur->request);
}
else
{
@ -1522,5 +1527,28 @@ bool System::AddCommonFileToVar(const wchar_t * file_path, const wchar_t * url,
void System::DeleteOldRequests(bool leave_one_object)
{
std::list<Request>::iterator i = req_tab.begin();
while( i != req_tab.end() )
{
// leave at least one object (even if it is finished)
if( i->run_state == Request::RunState::finished && (!leave_one_object || req_tab.size() > 1) )
{
log << log3 << "System: removing finished request " << cur->request << logend;
std::list<Request>::iterator old_i = i;
++i;
req_tab.erase(old_i);
}
else
{
++i;
}
}
}
} // namespace Winix

View File

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2010-2018, Tomasz Sowa
* Copyright (c) 2010-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -108,6 +108,9 @@ public:
// when winix starts
TimeZones time_zones;
// list of requests, if a request is to be continued in a job then it is preserved in the req_tab
// and a new Request is inserted for the next incoming request
std::list<Request> req_tab;
using WinixModelDeprecated::get_model_connector;
@ -221,6 +224,7 @@ public:
void CreateItemLink(const Item & item, std::wstring & link, bool clear_str = true);
void DeleteOldRequests(bool leave_one_object = false);
private:

View File

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2011-2021, Tomasz Sowa
* Copyright (c) 2011-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -121,6 +121,7 @@ bool ThreadManager::Add(BaseThread * pbase, const wchar_t * thread_name)
data.model_connector.set_winix_time_zones(nullptr); // null for a moment, may will be changed
data.model_connector.set_winix_pattern_cacher(nullptr); // null for a moment, may will be changed
item.object->set_main_model_connector(get_model_connector());
item.object->set_model_connector(&data.model_connector);
if( were_started )

View File

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2018-2021, Tomasz Sowa
* Copyright (c) 2018-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -69,7 +69,7 @@ void WinixBase::set_log_buffer(pt::WTextStream * log_buffer)
}
void WinixBase::set_file_log(FileLog * file_log)
void WinixBase::set_file_log(pt::FileLog * file_log)
{
log.set_file_log(file_log);
}

View File

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2018-2021, Tomasz Sowa
* Copyright (c) 2018-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -59,7 +59,7 @@ public:
void set_config(Config * config);
void set_synchro(Synchro * synchro);
void set_log_buffer(pt::WTextStream * log_buffer);
void set_file_log(FileLog * file_log);
void set_file_log(pt::FileLog * file_log);
Log * get_logger();

View File

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2018-2021, Tomasz Sowa
* Copyright (c) 2018-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -36,12 +36,16 @@
#define headerfile_winix_core_winixmodel
#include "core/winixbase.h"
#include "plugin.h"
#include "morm.h"
namespace Winix
{
/*
* Plugin class is based on WinixModelDeprecated so we cannot include plugin.h here
*/
class Plugin;
// may rename it to WinixConnector or WinixStorage?
class WinixModelDeprecated : public WinixBase

View File

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2008-2021, Tomasz Sowa
* Copyright (c) 2008-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -34,6 +34,7 @@
#include "cat.h"
namespace Winix
{

View File

@ -167,6 +167,24 @@ void FunctionBase::Clear()
void FunctionBase::ContinueMakePost()
{
// do nothing by default
}
void FunctionBase::ContinueMakeGet()
{
// do nothing by default
}
void FunctionBase::ContinueMakeDelete()
{
// do nothing by default
}
} // namespace Winix

View File

@ -40,7 +40,6 @@
#include "db/db.h"
#include "core/request.h"
#include "core/config.h"
#include "core/system.h"
#include "core/synchro.h"
#include "notify/notify.h"
#include "core/winixrequest.h"
@ -116,6 +115,14 @@ public:
virtual void MakeDelete();
virtual void Clear();
/*
* called from the jobs thread
* objects are locked
*/
virtual void ContinueMakePost();
virtual void ContinueMakeGet();
virtual void ContinueMakeDelete();
//void SetConfig(Config * pconfig);
//void SetCur(Cur * pcur);
@ -130,7 +137,6 @@ public:
protected:
//Config * config;
//Cur * cur;
Db * db; // depracated
//System * system;
Functions * functions;

View File

@ -50,22 +50,21 @@ FunctionParser::FunctionParser()
}
bool FunctionParser::Parse(Cur * pcur, Db * pdb, Functions * pfunctions, System * psystem)
bool FunctionParser::Parse(Request * request, Dirs * dirs, Functions * functions)
{
db = pdb;
cur = pcur;
system = psystem;
functions = pfunctions;
this->request = request;
this->dirs = dirs;
this->functions = functions;
last_dir = nullptr;
path = cur->request->env_request_uri.c_str();
path = request->env_request_uri.c_str();
status = true;
// IMPROVEME put WINIX_URL_MAX_SIZE to the config
if( cur->request->env_request_uri.size() <= WINIX_URL_MAX_SIZE )
if( request->env_request_uri.size() <= WINIX_URL_MAX_SIZE )
{
if( !cur->request->dir_tab.empty() )
if( !request->dir_tab.empty() )
{
last_dir = cur->request->dir_tab.back();
last_dir = request->dir_tab.back();
PrintCurrentDirs();
if( ParseDirsItemFunction() )
@ -77,36 +76,74 @@ bool FunctionParser::Parse(Cur * pcur, Db * pdb, Functions * pfunctions, System
else
{
status = false;
cur->request->http_status = Header::status_500_internal_server_error;
request->http_status = Header::status_500_internal_server_error;
log << log1 << "FP: no root directory provided in the request dir_tab" << logend;
}
}
else
{
status = false;
cur->request->http_status = Header::status_414_uri_too_long;
log << log1 << "FP: the URL is too long: " << cur->request->env_request_uri.size() << logend;
request->http_status = Header::status_414_uri_too_long;
log << log1 << "FP: the URL is too long: " << request->env_request_uri.size() << logend;
}
return status;
}
bool FunctionParser::ParseDirs(Request * request, Dirs * dirs)
{
this->request = request;
this->dirs = dirs;
this->functions = nullptr;
last_dir = nullptr;
path = request->env_request_uri.c_str();
status = true;
// IMPROVEME put WINIX_URL_MAX_SIZE to the config
if( request->env_request_uri.size() <= WINIX_URL_MAX_SIZE )
{
if( !request->dir_tab.empty() )
{
last_dir = request->dir_tab.back();
PrintCurrentDirs();
ParseDirs();
}
else
{
status = false;
request->http_status = Header::status_500_internal_server_error;
log << log1 << "FP: no root directory provided in the request dir_tab" << logend;
}
}
else
{
status = false;
request->http_status = Header::status_414_uri_too_long;
log << log1 << "FP: the URL is too long: " << request->env_request_uri.size() << logend;
}
return status;
}
/*
* there should be at least the root directory
*/
void FunctionParser::PrintCurrentDirs()
{
std::vector<Item*>::iterator i = cur->request->dir_tab.begin();
std::vector<Item*>::iterator i = request->dir_tab.begin();
for( ; i != cur->request->dir_tab.end() ; ++i)
for( ; i != request->dir_tab.end() ; ++i)
{
LogDir(*i);
}
}
bool FunctionParser::ParseDirsItemFunction()
void FunctionParser::ParseDirs()
{
ReadName();
@ -115,6 +152,12 @@ bool FunctionParser::ParseDirsItemFunction()
AddDir();
ReadName();
}
}
bool FunctionParser::ParseDirsItemFunction()
{
ParseDirs();
if( name.empty() )
{
@ -150,7 +193,7 @@ bool FunctionParser::ParseDirsItemFunction()
if( !CheckAddFunction() )
{
log << log3 << "FP: unknown function: " << name << logend;
cur->request->http_status = Header::status_404_not_found;
request->http_status = Header::status_404_not_found;
status = false;
return false;
}
@ -167,7 +210,7 @@ bool FunctionParser::IsDir()
if( name.empty() || !last_dir )
return false;
last_dir = system->dirs.GetDir(name, last_dir->id);
last_dir = dirs->GetDir(name, last_dir->id);
return last_dir != nullptr;
}
@ -175,8 +218,8 @@ bool FunctionParser::IsDir()
bool FunctionParser::CheckAddItem()
{
// cur->request->dir_tab has at least one element
long parent_id = cur->request->dir_tab.back()->id;
// request->dir_tab has at least one element
long parent_id = request->dir_tab.back()->id;
morm::Finder<Item> finder(model_connector);
finder.
@ -184,33 +227,36 @@ bool FunctionParser::CheckAddItem()
where().
eq(L"parent_id", parent_id).
eq(L"url", name).
get(cur->request->item);
get(request->item);
if( cur->request->item.found() )
if( request->item.found() )
{
log << log3 << "FP: Item: id: " << cur->request->item.id << ", url: " << cur->request->item.url << logend;
cur->request->last_item = &cur->request->item;
cur->request->is_item = true;
log << log3 << "FP: Item: id: " << request->item.id << ", url: " << request->item.url << logend;
request->last_item = &request->item;
request->is_item = true;
}
else
{
log << log3 << "FP: No Item: url: " << name << logend;
cur->request->http_status = Header::status_404_not_found;
request->http_status = Header::status_404_not_found;
status = false;
}
return cur->request->item.found();
return request->item.found();
}
bool FunctionParser::CheckAddFunction()
{
cur->request->function = functions->Find(name);
if( cur->request->function )
if( functions )
{
log << log3 << "FP: Function: " << cur->request->function->fun.url << logend;
request->function = functions->Find(name);
}
if( request->function )
{
log << log3 << "FP: Function: " << request->function->fun.url << logend;
return true;
}
@ -231,9 +277,9 @@ void FunctionParser::LogDir(Item * dir)
void FunctionParser::AddDir()
{
cur->request->dir_tab.push_back(last_dir);
request->dir_tab.push_back(last_dir);
LogDir(last_dir);
cur->request->last_item = cur->request->dir_tab.back();
request->last_item = request->dir_tab.back();
}
@ -302,7 +348,7 @@ void FunctionParser::AddParam()
{
param.name = name;
param.value = value;
cur->request->param_tab.push_back(param);
request->param_tab.push_back(param);
log << log3 << "FP: Param: name=" << param.name;
@ -323,15 +369,15 @@ void FunctionParser::ParseAnchor()
while( *path )
name_ascii += GetChar();
pt::utf8_to_wide(name_ascii, cur->request->anchor);
pt::utf8_to_wide(name_ascii, request->anchor);
if( !cur->request->anchor.empty() )
log << log3 << "FP: anchor: " << cur->request->anchor << logend;
if( !request->anchor.empty() )
log << log3 << "FP: anchor: " << request->anchor << logend;
}
else
if( *path != 0 )
{
cur->request->http_status = Header::status_400_bad_request;
request->http_status = Header::status_400_bad_request;
status = false;
}
}
@ -362,7 +408,7 @@ int FunctionParser::FromHex(int c)
}
else
{
cur->request->http_status = Header::status_400_bad_request;
request->http_status = Header::status_400_bad_request;
status = false;
}
@ -383,7 +429,7 @@ int c;
if( c == 0 && status )
{
cur->request->http_status = Header::status_400_bad_request;
request->http_status = Header::status_400_bad_request;
status = false;
}

View File

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2008-2021, Tomasz Sowa
* Copyright (c) 2008-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -40,7 +40,7 @@
#include "core/winixmodeldeprecated.h"
#include "db/db.h"
#include "core/cur.h"
#include "core/system.h"
#include "core/dirs.h"
namespace Winix
@ -60,13 +60,15 @@ public:
/*
* if the method returns false then cur->request->http_status will be already set to a specific error
*/
bool Parse(Cur * pcur, Db * pdb, Functions * pfunctions, System * psystem);
bool Parse(Request * request, Dirs * dirs, Functions * functions);
bool ParseDirs(Request * request, Dirs * dirs);
private:
Db * db;
Cur * cur;
System * system;
Request * request;
Dirs * dirs;
Functions * functions;
const wchar_t * path;
@ -79,6 +81,7 @@ private:
void SkipSlashes();
void PrintCurrentDirs();
void ParseDirs();
bool ParseDirsItemFunction();
void ParseParams();
void ParseAnchor();

View File

@ -170,6 +170,7 @@ Error Functions::CheckSpecialFile(const Item & item)
cur->mount = system->mounts.GetEmptyMount();
system->mounts.ReadMounts(item.item_content.content_raw);
system->mounts.CalcCurMount(cur->request);
cur->mount = system->mounts.pmount;
templates->ReadNewIndexTemplates();
templates->ReadNewChangeTemplates();
@ -275,7 +276,7 @@ void Functions::CreateFunctions()
Add(fun_who);
Add(fun_vim);
plugin->Call((Session*)0, WINIX_CREATE_FUNCTIONS);
plugin->Call(WINIX_CREATE_FUNCTIONS);
}
@ -312,10 +313,15 @@ void Functions::Finish()
bool Functions::Parse()
{
return function_parser.Parse(cur, db, this, system);
return function_parser.Parse(cur->request, &system->dirs, this);
}
bool Functions::ParseOnlyDirs()
{
return function_parser.ParseDirs(cur->request, &system->dirs);
}
void Functions::SetDefaultFunctionForFile()
{
@ -494,6 +500,56 @@ void Functions::MakeFunction()
}
void Functions::ContinueMakeFunction()
{
if( !cur->request->function )
{
cur->request->status = WINIX_ERR_NO_FUNCTION;
log << log1 << "Functions: no function (neither cat nor ls)" << logend;
return;
}
// if( !system->DirsHaveReadExecPerm() ||
// !system->HasReadExecAccess(cur->request->function->fun) ||
// !cur->request->function->HasAccess() )
// {
// cur->request->status = WINIX_ERR_PERMISSION_DENIED;
// return;
// }
if( cur->request->method == Request::get )
{
log << log4 << "Functions: continuing method get for request " << cur->request
<< " for function " << cur->request->function->fun.url << logend;
cur->request->function->ContinueMakeGet();
}
else
if( cur->request->method == Request::post )
{
log << log4 << "Functions: continuing method post for request " << cur->request
<< " for function " << cur->request->function->fun.url << logend;
cur->request->function->ContinueMakePost();
}
else
if( cur->request->method == Request::head )
{
// do nothing
// !! IMPROVE ME
// we should make a page similar like in a GET request but the content should not be returned only
}
else
if( cur->request->method == Request::delete_ )
{
log << log4 << "Functions: continuing method delete for request " << cur->request
<< " for function " << cur->request->function->fun.url << logend;
cur->request->function->ContinueMakeDelete();
}
else
{
log << log1 << "Functions: cannot continue a request, unknown request method (skipping)" << logend;
}
}

View File

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2010-2018, Tomasz Sowa
* Copyright (c) 2010-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -151,6 +151,7 @@ public:
void Init();
void Finish();
bool Parse();
bool ParseOnlyDirs();
size_t FunctionsSize();
Iterator Begin();
@ -159,6 +160,12 @@ public:
void CheckFunctionAndSymlink();
void MakeFunction();
/*
* this function is called from the jobs thread
* objects are locked
*/
void ContinueMakeFunction();
//void SetConfig(Config * pconfig);
void SetCur(Cur * pcur);

View File

@ -40,20 +40,21 @@
#include <fcntl.h>
#include <sys/types.h>
#include <unistd.h>
#include <curl/curl.h>
#include "core/app.h"
#include "core/version.h"
#include "core/lock.h"
#include "utf8/utf8.h"
#include "mainoptions/mainoptionsparser.h"
#include "pikotools/version.h"
#include "tito.h"
#include "runstatus.h"
namespace Winix
{
/*
application object
*/
@ -104,6 +105,42 @@ void print_syntax()
RunStatus ParseParameters(int argc, const char ** argv, pt::Space & options)
{
pt::Space arguments;
pt::MainOptionsParser options_parser;
RunStatus run_status;
arguments.add(L"c", 1);
arguments.add(L"config", 1);
pt::MainOptionsParser::Status status = options_parser.parse(argc, argv, options, arguments);
if( status != pt::MainOptionsParser::status_ok )
{
Winix::print_syntax();
run_status.exit_code = RunStatus::EXIT_CODE_PARAMETERS_SYNTAX_ERROR;
run_status.should_continue = false;
}
else
{
if( options.has_key(L"h") || options.has_key(L"help") || options.has_key(L"?") )
{
Winix::print_syntax();
run_status.should_continue = false;
}
if( options.has_key(L"v") || options.has_key(L"version") )
{
Winix::print_version();
run_status.should_continue = false;
}
}
return run_status;
}
void CreateNewDescriptor(int des_dst, int flags)
{
int descriptor;
@ -278,50 +315,56 @@ bool ReadConfigs(const pt::Space & options, const char ** env)
return status;
}
} // namespace Winix
int main(int argc, const char ** argv, const char ** env)
bool InitCurlLibrary()
{
using Winix::app;
/*
*
* from documentation https://curl.se/libcurl/c/curl_global_init.html
* This function is thread-safe since libcurl 7.84.0 if curl_version_info has the CURL_VERSION_THREADSAFE
* feature bit set (most platforms).
*
* If this is not thread-safe, you must not call this function when any other thread in the program
* (i.e. a thread sharing the same memory) is running. This does not just mean no other thread that
* is using libcurl. Because curl_global_init calls functions of other libraries that are similarly
* thread unsafe, it could conflict with any other thread that uses these other libraries.
*
*/
CURLcode code = curl_global_init(CURL_GLOBAL_ALL);
bool ok = (code == CURLE_OK);
std::srand(std::time(0));
app.system.system_start = time(0);
pt::Space options;
pt::Space arguments;
pt::MainOptionsParser options_parser;
arguments.add(L"c", 1);
arguments.add(L"config", 1);
pt::MainOptionsParser::Status status = options_parser.parse(argc, argv, options, arguments);
if( status != pt::MainOptionsParser::status_ok )
if( !ok )
{
Winix::print_syntax();
return 6;
std::cout << "Cannot initialize curl library, exiting" << std::endl;
}
if( options.has_key(L"h") || options.has_key(L"help") || options.has_key(L"?") )
return ok;
}
void CleanupCurlLibrary()
{
curl_global_cleanup();
}
RunStatus InitializeWinix(Log & log, pt::Space & options, const char ** env)
{
RunStatus run_status;
if( !InitCurlLibrary() )
{
Winix::print_syntax();
return 0;
run_status.exit_code = RunStatus::EXIT_CODE_CANNOT_INITIALIZE_CURL;
run_status.should_continue = false;
return run_status;
}
if( options.has_key(L"v") || options.has_key(L"version") )
if( !ReadConfigs(options, env) )
{
Winix::print_version();
return 0;
}
pt::WTextStream * log_buffer = log.get_log_buffer();
Winix::Log & log = app.GetMainLog();
pt::WTextStream * log_buffer = log.get_log_buffer();
Winix::LogInfo(log, Winix::log3, "UTC booting Winix", true, ""); // date will be printed as UTC because the time zones are not loaded yet
if( !Winix::ReadConfigs(options, env) )
{
// we need to print the buffer by hand because the logger
// is not fully initialized yet
if( log_buffer && !log_buffer->empty() )
@ -329,21 +372,26 @@ using Winix::app;
pt::wide_stream_to_utf8(*log_buffer, std::cout);
}
return 2;
run_status.exit_code = RunStatus::EXIT_CODE_CANNOT_CORRECTLY_READ_CONFIG;
run_status.should_continue = false;
return run_status;
}
if( options.has_key(L"dump-config") )
{
pt::WTextStream * log_buffer = log.get_log_buffer();
if( log_buffer )
{
log << "all read config options (some of the values could have been modified by winix"
<< " but the modified values are not printed here):" << Winix::logend;
<< " but the modified values are not printed here):" << logend;
app.config.space.serialize_to_space_stream(*log_buffer, true);
log << Winix::logend;
log << logend;
pt::wide_stream_to_utf8(*log_buffer, std::cout);
}
return 0;
run_status.should_continue = false;
return run_status;
}
app.InitLoggers();
@ -352,55 +400,105 @@ using Winix::app;
app.config.log_stdout = false;
if( !app.config.log_stdout )
Winix::CloseDescriptors();
CloseDescriptors();
if( app.config.demonize && !app.Demonize() )
{
log << Winix::logsave;
return 4;
log << logsave;
run_status.exit_code = RunStatus::EXIT_CODE_CANNOT_DEMONIZE;
run_status.should_continue = false;
return run_status;
}
if( !app.InitFCGI() )
{
log << Winix::logsave;
return 5;
/*
* WARNING:
* when there is a problem with initializing FastCGI FCGX_OpenSocket() will call exit()
* and we never reach here
*/
log << logsave;
run_status.exit_code = RunStatus::EXIT_CODE_CANNOT_INITIALIZE_FASTCGI;
run_status.should_continue = false;
return run_status;
}
if( !app.DropPrivileges() )
{
log << Winix::logsave;
return 3;
log << logsave;
run_status.exit_code = RunStatus::EXIT_CODE_CANNOT_DROP_PRIVILEGES;
run_status.should_continue = false;
return run_status;
}
app.LogUserGroups();
Winix::SavePidFile(log);
SavePidFile(log);
// app.Init() starts other threads as well (they will be waiting on the lock)
if( !app.Init() )
{
Winix::RemovePidFile();
log << Winix::logsave;
return 1;
run_status.exit_code = RunStatus::EXIT_CODE_CANNOT_INITIALIZE_APPLICATION;
run_status.should_continue = false;
return run_status;
}
app.StartThreads();
// now we have more threads, we should use Lock() and Unlock()
// saving all starting logs
app.Lock();
Winix::LogInfo(log, Winix::log1, "Winix", true, "started");
log << Winix::logsave;
app.Unlock();
// main loop
app.Start();
app.Close();
Winix::LogInfo(log, Winix::log1, "Winix", true, "stopped");
Winix::RemovePidFile();
log << Winix::logsave;
return 0;
return run_status;
}
void UninitializeWinix(Log & log)
{
Winix::RemovePidFile();
log << Winix::logsave;
Winix::CleanupCurlLibrary();
}
} // namespace Winix
int main(int argc, const char ** argv, const char ** env)
{
using Winix::app;
Winix::RunStatus run_status;
pt::Space options;
std::srand(std::time(0));
app.system.system_start = time(0);
run_status = Winix::ParseParameters(argc, argv, options);
if( !run_status.should_continue )
return run_status.exit_code;
Winix::Log & log = app.GetMainLog();
Winix::LogInfo(log, Winix::log3, "UTC booting Winix", true, ""); // date will be printed as UTC because the time zones are not loaded yet
run_status = Winix::InitializeWinix(log, options, env);
if( run_status.should_continue )
{
app.StartThreads();
// now we are in multi threaded environment, we should use our locking mechanism
// saving all starting logs (logger can be used without locking)
Winix::LogInfo(log, Winix::log1, "Winix", true, "started");
log << Winix::logsave;
// start the main loop
app.Start();
// close winix
app.Close();
// now all other threads are terminated, we are in single threaded environment again
}
Winix::LogInfo(log, Winix::log1, "Winix", true, "stopped");
UninitializeWinix(log);
return run_status.exit_code;
}

69
winixd/main/runstatus.h Normal file
View File

@ -0,0 +1,69 @@
/*
* This file is a part of Winix
* and is distributed under the 2-Clause BSD licence.
* Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
#ifndef headerfile_winix_main_runstatus
#define headerfile_winix_main_runstatus
namespace Winix
{
struct RunStatus
{
const static int EXIT_CODE_OK = 0;
const static int EXIT_CODE_CANNOT_INITIALIZE_APPLICATION = 1;
const static int EXIT_CODE_CANNOT_CORRECTLY_READ_CONFIG = 2;
const static int EXIT_CODE_CANNOT_DROP_PRIVILEGES = 3;
const static int EXIT_CODE_CANNOT_DEMONIZE = 4;
const static int EXIT_CODE_CANNOT_INITIALIZE_FASTCGI = 5;
const static int EXIT_CODE_PARAMETERS_SYNTAX_ERROR = 6;
const static int EXIT_CODE_CANNOT_INITIALIZE_CURL = 7;
int exit_code;
bool should_continue;
RunStatus()
{
exit_code = EXIT_CODE_OK;
should_continue = true;
}
};
}
#endif

View File

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2008-2018, Tomasz Sowa
* Copyright (c) 2008-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -104,7 +104,7 @@ bool Notify::Init()
notify_template_activate_account = AddTemplate(L"notify_confirm_account.txt");
notify_template_reset_password = AddTemplate(L"notify_reset_password.txt");
plugin->Call((Session*)0, WINIX_NOTIFY_ADD_TEMPLATE);
plugin->Call(WINIX_NOTIFY_ADD_TEMPLATE);
return true;
}

View File

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2008-2021, Tomasz Sowa
* Copyright (c) 2008-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -94,7 +94,7 @@ void NotifyThread::PatternsChanged()
bool NotifyThread::Init()
{
TemplatesNotifyFunctions::CreateFunctions();
plugin->Call((Session*)0, WINIX_NOTIFY_TEMPLATES_CREATEFUNCTIONS, &TemplatesNotifyFunctions::ezc_functions);
plugin->Call(WINIX_NOTIFY_TEMPLATES_CREATEFUNCTIONS, &TemplatesNotifyFunctions::ezc_functions);
return true;
}

View File

@ -96,10 +96,14 @@
./edb.o: ../../../../winix/winixd/core/textstream.h
./edb.o: ../../../../winix/winixd/models/winixmodel.h
./edb.o: ../../../../winix/winixd/core/header.h
./edb.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./edb.o: ../../../../winix/winixd/core/compress.h
./edb.o: ../../../../winix/winixd/core/plugin.h
./edb.o: ../../../../winix/winixd/core/pluginmsg.h
./edb.o: ../../../../winix/winixd/core/plugindata.h
./edb.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./edb.o: ../../../../winix/winixd/core/mount.h
./edb.o: ../../../../winix/winixd/core/mounts.h
./edb.o: ../../../../winix/winixd/core/mountparser.h
./exportinfo.o: ../../../../winix/winixd/core/log.h exportinfo.h
./exportinfo.o: ../../../../winix/winixd/core/system.h
./exportinfo.o: ../../../../winix/winixd/core/job.h
@ -161,12 +165,9 @@
./exportinfo.o: ../../../../winix/winixd/core/synchro.h
./exportinfo.o: ../../../../winix/winixd/core/filelog.h
./exportinfo.o: ../../../../winix/winixd/core/lock.h
./exportinfo.o: ../../../../winix/winixd/core/plugin.h
./exportinfo.o: ../../../../winix/winixd/core/pluginmsg.h
./exportinfo.o: ../../../../winix/winixd/core/plugindata.h
./exportinfo.o: ../../../../winix/winixd/core/winixbase.h
./exportinfo.o: ../../../../winix/winixd/core/dirs.h
./exportinfo.o: ../../../../winix/winixd/core/dircontainer.h
./exportinfo.o: ../../../../winix/winixd/core/jobtask.h
./exportinfo.o: ../../../../winix/winixd/core/request.h
./exportinfo.o: ../../../../winix/winixd/core/requesttypes.h
./exportinfo.o: ../../../../winix/winixd/models/item.h
./exportinfo.o: ../../../../winix/winixd/models/winixmodel.h
./exportinfo.o: ../../../../winix/winixd/models/winixmodelconnector.h
@ -185,6 +186,18 @@
./exportinfo.o: ../../../../ezc/src/models.h
./exportinfo.o: ../../../../ezc/src/patternparser.h
./exportinfo.o: ../../../../winix/winixd/templates/htmltextstream.h
./exportinfo.o: ../../../../winix/winixd/core/error.h
./exportinfo.o: ../../../../winix/winixd/core/config.h
./exportinfo.o: ../../../../winix/winixd/core/textstream.h
./exportinfo.o: ../../../../winix/winixd/models/winixmodel.h
./exportinfo.o: ../../../../winix/winixd/core/header.h
./exportinfo.o: ../../../../winix/winixd/core/compress.h
./exportinfo.o: ../../../../winix/winixd/core/winixbase.h
./exportinfo.o: ../../../../winix/winixd/core/plugin.h
./exportinfo.o: ../../../../winix/winixd/core/pluginmsg.h
./exportinfo.o: ../../../../winix/winixd/core/plugindata.h
./exportinfo.o: ../../../../winix/winixd/core/mount.h
./exportinfo.o: ../../../../winix/winixd/core/mounts.h
./exportinfo.o: ../../../../winix/winixd/db/db.h
./exportinfo.o: ../../../../winix/winixd/db/dbbase.h
./exportinfo.o: ../../../../winix/winixd/models/user.h
@ -192,26 +205,20 @@
./exportinfo.o: ../../../../winix/winixd/core/dircontainer.h
./exportinfo.o: ../../../../winix/winixd/core/ugcontainer.h
./exportinfo.o: ../../../../winix/winixd/core/request.h
./exportinfo.o: ../../../../winix/winixd/core/requesttypes.h
./exportinfo.o: ../../../../winix/winixd/core/error.h
./exportinfo.o: ../../../../winix/winixd/core/config.h
./exportinfo.o: ../../../../winix/winixd/core/textstream.h
./exportinfo.o: ../../../../winix/winixd/models/winixmodel.h
./exportinfo.o: ../../../../winix/winixd/core/header.h
./exportinfo.o: ../../../../winix/winixd/core/mounts.h
./exportinfo.o: ../../../../winix/winixd/core/mount.h
./exportinfo.o: ../../../../winix/winixd/core/mountparser.h
./exportinfo.o: ../../../../winix/winixd/core/cur.h
./exportinfo.o: ../../../../winix/winixd/core/session.h
./exportinfo.o: ../../../../winix/winixd/core/rebus.h
./exportinfo.o: ../../../../winix/winixd/core/ipban.h
./exportinfo.o: ../../../../winix/winixd/core/loadavg.h
./exportinfo.o: ../../../../winix/winixd/core/dirs.h
./exportinfo.o: ../../../../winix/winixd/core/dircontainer.h
./exportinfo.o: ../../../../winix/winixd/core/crypt.h
./exportinfo.o: ../../../../winix/winixd/core/run.h
./exportinfo.o: ../../../../winix/winixd/core/users.h
./exportinfo.o: ../../../../winix/winixd/core/ugcontainer.h
./exportinfo.o: ../../../../winix/winixd/core/lastcontainer.h
./exportinfo.o: ../../../../winix/winixd/core/cur.h
./exportinfo.o: ../../../../winix/winixd/core/session.h
./exportinfo.o: ../../../../winix/winixd/core/rebus.h
./exportinfo.o: ../../../../winix/winixd/core/ipban.h
./exportinfo.o: ../../../../winix/winixd/core/groups.h
./exportinfo.o: ../../../../winix/winixd/core/loadavg.h
./exportinfo.o: ../../../../winix/winixd/core/image.h
./exportinfo.o: ../../../../winix/winixd/core/threadmanager.h
./exportinfo.o: ../../../../winix/winixd/models/winixmodelconnector.h
@ -355,33 +362,15 @@
./funexport.o: ../../../../winix/winixd/core/textstream.h
./funexport.o: ../../../../winix/winixd/models/winixmodel.h
./funexport.o: ../../../../winix/winixd/core/header.h
./funexport.o: ../../../../winix/winixd/core/system.h
./funexport.o: ../../../../winix/winixd/core/job.h
./funexport.o: ../../../../winix/winixd/core/basethread.h
./funexport.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./funexport.o: ../../../../winix/winixd/core/compress.h
./funexport.o: ../../../../winix/winixd/core/plugin.h
./funexport.o: ../../../../winix/winixd/core/pluginmsg.h
./funexport.o: ../../../../winix/winixd/core/plugindata.h
./funexport.o: ../../../../winix/winixd/core/dirs.h
./funexport.o: ../../../../winix/winixd/core/dircontainer.h
./funexport.o: ../../../../winix/winixd/core/request.h
./funexport.o: ../../../../winix/winixd/core/mounts.h
./funexport.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./funexport.o: ../../../../winix/winixd/core/mount.h
./funexport.o: ../../../../winix/winixd/core/mounts.h
./funexport.o: ../../../../winix/winixd/core/request.h
./funexport.o: ../../../../winix/winixd/core/mountparser.h
./funexport.o: ../../../../winix/winixd/core/crypt.h
./funexport.o: ../../../../winix/winixd/core/run.h
./funexport.o: ../../../../winix/winixd/core/users.h
./funexport.o: ../../../../winix/winixd/core/ugcontainer.h
./funexport.o: ../../../../winix/winixd/core/lastcontainer.h
./funexport.o: ../../../../winix/winixd/core/cur.h
./funexport.o: ../../../../winix/winixd/core/session.h
./funexport.o: ../../../../winix/winixd/core/rebus.h
./funexport.o: ../../../../winix/winixd/core/ipban.h
./funexport.o: ../../../../winix/winixd/core/groups.h
./funexport.o: ../../../../winix/winixd/core/loadavg.h
./funexport.o: ../../../../winix/winixd/core/image.h
./funexport.o: ../../../../winix/winixd/core/threadmanager.h
./funexport.o: ../../../../winix/winixd/models/winixmodelconnector.h
./funexport.o: ../../../../winix/winixd/notify/notify.h
./funexport.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./funexport.o: ../../../../winix/winixd/notify/notifypool.h
@ -400,15 +389,34 @@
./funexport.o: ../../../../winix/winixd/notify/templatesnotify.h
./funexport.o: ../../../../winix/winixd/core/textstream.h
./funexport.o: ../../../../winix/winixd/core/users.h
./funexport.o: ../../../../winix/winixd/core/timezones.h
./funexport.o: ../../../../winix/winixd/core/timezone.h
./funexport.o: ../../../../winix/winixd/core/winixrequest.h
./funexport.o: ../../../../winix/winixd/core/winixsystem.h
./funexport.o: ../../../../winix/winixd/core/system.h
./funexport.o: ../../../../winix/winixd/core/job.h
./funexport.o: ../../../../winix/winixd/core/basethread.h
./funexport.o: ../../../../winix/winixd/core/jobtask.h
./funexport.o: ../../../../winix/winixd/core/cur.h
./funexport.o: ../../../../winix/winixd/core/session.h
./funexport.o: ../../../../winix/winixd/core/rebus.h
./funexport.o: ../../../../winix/winixd/core/ipban.h
./funexport.o: ../../../../winix/winixd/core/loadavg.h
./funexport.o: ../../../../winix/winixd/core/dirs.h
./funexport.o: ../../../../winix/winixd/core/dircontainer.h
./funexport.o: ../../../../winix/winixd/core/crypt.h
./funexport.o: ../../../../winix/winixd/core/run.h
./funexport.o: ../../../../winix/winixd/core/users.h
./funexport.o: ../../../../winix/winixd/core/ugcontainer.h
./funexport.o: ../../../../winix/winixd/core/lastcontainer.h
./funexport.o: ../../../../winix/winixd/core/groups.h
./funexport.o: ../../../../winix/winixd/core/image.h
./funexport.o: ../../../../winix/winixd/core/threadmanager.h
./funexport.o: ../../../../winix/winixd/models/winixmodelconnector.h
./funexport.o: ../../../../winix/winixd/core/timezones.h
./funexport.o: ../../../../winix/winixd/core/timezone.h
./funexport.o: ../../../../winix/winixd/core/cur.h
./funexport.o: ../../../../winix/winixd/core/sessionmanager.h
./funexport.o: ../../../../winix/winixd/core/sessioncontainer.h
./funexport.o: ../../../../winix/winixd/core/ipbancontainer.h
./funexport.o: ../../../../winix/winixd/core/system.h
./funexport.o: ../../../../winix/winixd/core/sessionidmanager.h
./funexport.o: ../../../../tito/src/base64.h ../../../../tito/src/aes.h
./funexport.o: ../../../../winix/winixd/core/slog.h exportinfo.h export.h
@ -421,42 +429,35 @@
./init.o: ../../../../winix/winixd/core/plugin.h
./init.o: ../../../../winix/winixd/core/pluginmsg.h
./init.o: ../../../../winix/winixd/core/plugindata.h
./init.o: ../../../../winix/winixd/core/winixbase.h
./init.o: ../../../../morm/src/modelconnector.h
./init.o: ../../../../morm/src/clearer.h
./init.o: ../../../../pikotools/src/date/date.h
./init.o: ../../../../pikotools/src/convert/inttostr.h
./init.o: ../../../../pikotools/src/space/space.h
./init.o: ../../../../pikotools/src/textstream/types.h
./init.o: ../../../../pikotools/src/utf8/utf8.h
./init.o: ../../../../pikotools/src/textstream/stream.h
./init.o: ../../../../pikotools/src/utf8/utf8_templates.h
./init.o: ../../../../pikotools/src/utf8/utf8_private.h
./init.o: ../../../../morm/src/ft.h ../../../../morm/src/dbconnector.h
./init.o: ../../../../pikotools/src/textstream/textstream.h
./init.o: ../../../../pikotools/src/textstream/stream.h
./init.o: ../../../../pikotools/src/membuffer/membuffer.h
./init.o: ../../../../pikotools/src/textstream/types.h
./init.o: ../../../../pikotools/src/utf8/utf8_stream.h
./init.o: ../../../../pikotools/src/log/log.h
./init.o: ../../../../pikotools/src/log/filelog.h
./init.o: ../../../../morm/src/queryresult.h
./init.o: ../../../../morm/src/flatconnector.h exportthread.h
./init.o: ../../../../winix/winixd/core/basethread.h message.h exportinfo.h
./init.o: ../../../../winix/winixd/core/system.h
./init.o: ../../../../winix/winixd/core/job.h
./init.o: ../../../../winix/winixd/core/basethread.h
./init.o: ../../../../winix/winixd/core/synchro.h
./init.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./init.o: ../../../../winix/winixd/core/winixbase.h
./init.o: ../../../../winix/winixd/core/config.h
./init.o: ../../../../pikotools/src/space/spaceparser.h
./init.o: ../../../../pikotools/src/space/space.h
./init.o: ../../../../pikotools/src/convert/baseparser.h
./init.o: ../../../../pikotools/src/textstream/textstream.h
./init.o: ../../../../pikotools/src/textstream/stream.h
./init.o: ../../../../pikotools/src/space/space.h
./init.o: ../../../../pikotools/src/textstream/types.h
./init.o: ../../../../pikotools/src/convert/inttostr.h
./init.o: ../../../../pikotools/src/utf8/utf8.h
./init.o: ../../../../pikotools/src/textstream/stream.h
./init.o: ../../../../pikotools/src/utf8/utf8_templates.h
./init.o: ../../../../pikotools/src/utf8/utf8_private.h
./init.o: ../../../../pikotools/src/date/date.h
./init.o: ../../../../pikotools/src/membuffer/membuffer.h
./init.o: ../../../../pikotools/src/textstream/types.h
./init.o: ../../../../pikotools/src/utf8/utf8_stream.h
./init.o: ../../../../winix/winixd/core/log.h
./init.o: ../../../../winix/winixd/core/logmanipulators.h
./init.o: ../../../../morm/src/morm.h ../../../../morm/src/version.h
./init.o: ../../../../morm/src/morm_types.h ../../../../morm/src/model.h
./init.o: ../../../../pikotools/src/log/log.h
./init.o: ../../../../pikotools/src/log/filelog.h ../../../../morm/src/morm.h
./init.o: ../../../../morm/src/version.h ../../../../morm/src/morm_types.h
./init.o: ../../../../morm/src/model.h ../../../../morm/src/modelconnector.h
./init.o: ../../../../morm/src/clearer.h ../../../../morm/src/ft.h
./init.o: ../../../../morm/src/dbconnector.h
./init.o: ../../../../morm/src/queryresult.h
./init.o: ../../../../morm/src/flatconnector.h
./init.o: ../../../../morm/src/dbexpression.h
./init.o: ../../../../morm/src/baseexpression.h
./init.o: ../../../../morm/src/modelenv.h ../../../../morm/src/modeldata.h
@ -478,9 +479,15 @@
./init.o: ../../../../winix/winixd/core/synchro.h
./init.o: ../../../../winix/winixd/core/filelog.h
./init.o: ../../../../winix/winixd/core/lock.h
./init.o: ../../../../winix/winixd/core/plugin.h
./init.o: ../../../../winix/winixd/core/dirs.h
./init.o: ../../../../winix/winixd/core/dircontainer.h
./init.o: ../../../../winix/winixd/core/synchro.h
./init.o: ../../../../winix/winixd/core/mount.h exportthread.h
./init.o: ../../../../winix/winixd/core/basethread.h message.h exportinfo.h
./init.o: ../../../../winix/winixd/core/system.h
./init.o: ../../../../winix/winixd/core/job.h
./init.o: ../../../../winix/winixd/core/basethread.h
./init.o: ../../../../winix/winixd/core/jobtask.h
./init.o: ../../../../winix/winixd/core/request.h
./init.o: ../../../../winix/winixd/core/requesttypes.h
./init.o: ../../../../winix/winixd/models/item.h
./init.o: ../../../../winix/winixd/models/winixmodel.h
./init.o: ../../../../winix/winixd/models/winixmodelconnector.h
@ -497,6 +504,15 @@
./init.o: ../../../../ezc/src/expressionparser.h ../../../../ezc/src/models.h
./init.o: ../../../../ezc/src/patternparser.h
./init.o: ../../../../winix/winixd/templates/htmltextstream.h
./init.o: ../../../../winix/winixd/core/error.h
./init.o: ../../../../winix/winixd/core/config.h
./init.o: ../../../../winix/winixd/core/textstream.h
./init.o: ../../../../winix/winixd/models/winixmodel.h
./init.o: ../../../../winix/winixd/core/header.h
./init.o: ../../../../winix/winixd/core/compress.h
./init.o: ../../../../winix/winixd/core/winixbase.h
./init.o: ../../../../winix/winixd/core/plugin.h
./init.o: ../../../../winix/winixd/core/mounts.h
./init.o: ../../../../winix/winixd/db/db.h
./init.o: ../../../../winix/winixd/db/dbbase.h
./init.o: ../../../../winix/winixd/models/user.h
@ -504,26 +520,20 @@
./init.o: ../../../../winix/winixd/core/dircontainer.h
./init.o: ../../../../winix/winixd/core/ugcontainer.h
./init.o: ../../../../winix/winixd/core/request.h
./init.o: ../../../../winix/winixd/core/requesttypes.h
./init.o: ../../../../winix/winixd/core/error.h
./init.o: ../../../../winix/winixd/core/config.h
./init.o: ../../../../winix/winixd/core/textstream.h
./init.o: ../../../../winix/winixd/models/winixmodel.h
./init.o: ../../../../winix/winixd/core/header.h
./init.o: ../../../../winix/winixd/core/mounts.h
./init.o: ../../../../winix/winixd/core/mount.h
./init.o: ../../../../winix/winixd/core/mountparser.h
./init.o: ../../../../winix/winixd/core/cur.h
./init.o: ../../../../winix/winixd/core/session.h
./init.o: ../../../../winix/winixd/core/rebus.h
./init.o: ../../../../winix/winixd/core/ipban.h
./init.o: ../../../../winix/winixd/core/loadavg.h
./init.o: ../../../../winix/winixd/core/dirs.h
./init.o: ../../../../winix/winixd/core/dircontainer.h
./init.o: ../../../../winix/winixd/core/crypt.h
./init.o: ../../../../winix/winixd/core/run.h
./init.o: ../../../../winix/winixd/core/users.h
./init.o: ../../../../winix/winixd/core/ugcontainer.h
./init.o: ../../../../winix/winixd/core/lastcontainer.h
./init.o: ../../../../winix/winixd/core/cur.h
./init.o: ../../../../winix/winixd/core/session.h
./init.o: ../../../../winix/winixd/core/rebus.h
./init.o: ../../../../winix/winixd/core/ipban.h
./init.o: ../../../../winix/winixd/core/groups.h
./init.o: ../../../../winix/winixd/core/loadavg.h
./init.o: ../../../../winix/winixd/core/image.h
./init.o: ../../../../winix/winixd/core/threadmanager.h
./init.o: ../../../../winix/winixd/models/winixmodelconnector.h
@ -552,14 +562,12 @@
./init.o: ../../../../winix/winixd/core/error.h
./init.o: ../../../../winix/winixd/core/dirs.h funexport.h
./init.o: ../../../../winix/winixd/functions/functionbase.h
./init.o: ../../../../winix/winixd/core/request.h
./init.o: ../../../../winix/winixd/core/winixrequest.h
./init.o: ../../../../winix/winixd/core/winixsystem.h
./init.o: ../../../../winix/winixd/core/cur.h
./init.o: ../../../../winix/winixd/core/sessionmanager.h
./init.o: ../../../../winix/winixd/core/sessioncontainer.h
./init.o: ../../../../winix/winixd/core/ipbancontainer.h
./init.o: ../../../../winix/winixd/core/system.h
./init.o: ../../../../winix/winixd/core/sessionidmanager.h
./init.o: ../../../../tito/src/base64.h ../../../../tito/src/aes.h
./init.o: ../../../../winix/winixd/core/slog.h

View File

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2011-2021, Tomasz Sowa
* Copyright (c) 2011-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -251,12 +251,12 @@ void Init(PluginInfo & info)
{
using namespace Export;
info.set_dependency_for(edb);
edb.set_dependency(info.functions);
edb.SetConn(info.db->GetConn());
edb.LogQueries(info.config->log_db_query);
edb.SetDirs(&info.system->dirs);
info.set_dependency_for(export_info);
export_info.set_dependency((WinixModelDeprecated*)info.functions);
export_info.SetSystem(info.system);
export_info.SetConfig(info.config);
export_info.SetEDb(&edb);

View File

@ -98,33 +98,15 @@
./gallery.o: ../../../../winix/winixd/core/textstream.h
./gallery.o: ../../../../winix/winixd/models/winixmodel.h
./gallery.o: ../../../../winix/winixd/core/header.h
./gallery.o: ../../../../winix/winixd/core/system.h
./gallery.o: ../../../../winix/winixd/core/job.h
./gallery.o: ../../../../winix/winixd/core/basethread.h
./gallery.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./gallery.o: ../../../../winix/winixd/core/compress.h
./gallery.o: ../../../../winix/winixd/core/plugin.h
./gallery.o: ../../../../winix/winixd/core/pluginmsg.h
./gallery.o: ../../../../winix/winixd/core/plugindata.h
./gallery.o: ../../../../winix/winixd/core/dirs.h
./gallery.o: ../../../../winix/winixd/core/dircontainer.h
./gallery.o: ../../../../winix/winixd/core/request.h
./gallery.o: ../../../../winix/winixd/core/mounts.h
./gallery.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./gallery.o: ../../../../winix/winixd/core/mount.h
./gallery.o: ../../../../winix/winixd/core/mounts.h
./gallery.o: ../../../../winix/winixd/core/request.h
./gallery.o: ../../../../winix/winixd/core/mountparser.h
./gallery.o: ../../../../winix/winixd/core/crypt.h
./gallery.o: ../../../../winix/winixd/core/run.h
./gallery.o: ../../../../winix/winixd/core/users.h
./gallery.o: ../../../../winix/winixd/core/ugcontainer.h
./gallery.o: ../../../../winix/winixd/core/lastcontainer.h
./gallery.o: ../../../../winix/winixd/core/cur.h
./gallery.o: ../../../../winix/winixd/core/session.h
./gallery.o: ../../../../winix/winixd/core/rebus.h
./gallery.o: ../../../../winix/winixd/core/ipban.h
./gallery.o: ../../../../winix/winixd/core/groups.h
./gallery.o: ../../../../winix/winixd/core/loadavg.h
./gallery.o: ../../../../winix/winixd/core/image.h
./gallery.o: ../../../../winix/winixd/core/threadmanager.h
./gallery.o: ../../../../winix/winixd/models/winixmodelconnector.h
./gallery.o: ../../../../winix/winixd/notify/notify.h
./gallery.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./gallery.o: ../../../../winix/winixd/notify/notifypool.h
@ -134,15 +116,34 @@
./gallery.o: ../../../../winix/winixd/core/basethread.h
./gallery.o: ../../../../winix/winixd/notify/templatesnotify.h
./gallery.o: ../../../../winix/winixd/core/users.h
./gallery.o: ../../../../winix/winixd/core/timezones.h
./gallery.o: ../../../../winix/winixd/core/timezone.h
./gallery.o: ../../../../winix/winixd/core/ugcontainer.h
./gallery.o: ../../../../winix/winixd/core/lastcontainer.h
./gallery.o: ../../../../winix/winixd/core/cur.h
./gallery.o: ../../../../winix/winixd/core/session.h
./gallery.o: ../../../../winix/winixd/core/rebus.h
./gallery.o: ../../../../winix/winixd/core/ipban.h
./gallery.o: ../../../../winix/winixd/core/winixrequest.h
./gallery.o: ../../../../winix/winixd/core/winixsystem.h
./gallery.o: ../../../../winix/winixd/core/system.h
./gallery.o: ../../../../winix/winixd/core/job.h
./gallery.o: ../../../../winix/winixd/core/basethread.h
./gallery.o: ../../../../winix/winixd/core/jobtask.h
./gallery.o: ../../../../winix/winixd/core/loadavg.h
./gallery.o: ../../../../winix/winixd/core/dirs.h
./gallery.o: ../../../../winix/winixd/core/dircontainer.h
./gallery.o: ../../../../winix/winixd/core/crypt.h
./gallery.o: ../../../../winix/winixd/core/run.h
./gallery.o: ../../../../winix/winixd/core/users.h
./gallery.o: ../../../../winix/winixd/core/groups.h
./gallery.o: ../../../../winix/winixd/core/image.h
./gallery.o: ../../../../winix/winixd/core/threadmanager.h
./gallery.o: ../../../../winix/winixd/models/winixmodelconnector.h
./gallery.o: ../../../../winix/winixd/core/timezones.h
./gallery.o: ../../../../winix/winixd/core/timezone.h
./gallery.o: ../../../../winix/winixd/core/cur.h
./gallery.o: ../../../../winix/winixd/core/sessionmanager.h
./gallery.o: ../../../../winix/winixd/core/sessioncontainer.h
./gallery.o: ../../../../winix/winixd/core/ipbancontainer.h
./gallery.o: ../../../../winix/winixd/core/system.h
./gallery.o: ../../../../winix/winixd/core/sessionidmanager.h
./gallery.o: ../../../../tito/src/base64.h ../../../../tito/src/aes.h
./gallery.o: ../../../../winix/winixd/core/slog.h galleryinfo.h
@ -315,33 +316,15 @@
./init.o: ../../../../winix/winixd/core/textstream.h
./init.o: ../../../../winix/winixd/models/winixmodel.h
./init.o: ../../../../winix/winixd/core/header.h
./init.o: ../../../../winix/winixd/core/system.h
./init.o: ../../../../winix/winixd/core/job.h
./init.o: ../../../../winix/winixd/core/basethread.h
./init.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./init.o: ../../../../winix/winixd/core/compress.h
./init.o: ../../../../winix/winixd/core/plugin.h
./init.o: ../../../../winix/winixd/core/pluginmsg.h
./init.o: ../../../../winix/winixd/core/plugindata.h
./init.o: ../../../../winix/winixd/core/dirs.h
./init.o: ../../../../winix/winixd/core/dircontainer.h
./init.o: ../../../../winix/winixd/core/request.h
./init.o: ../../../../winix/winixd/core/mounts.h
./init.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./init.o: ../../../../winix/winixd/core/mount.h
./init.o: ../../../../winix/winixd/core/mounts.h
./init.o: ../../../../winix/winixd/core/request.h
./init.o: ../../../../winix/winixd/core/mountparser.h
./init.o: ../../../../winix/winixd/core/crypt.h
./init.o: ../../../../winix/winixd/core/run.h
./init.o: ../../../../winix/winixd/core/users.h
./init.o: ../../../../winix/winixd/core/ugcontainer.h
./init.o: ../../../../winix/winixd/core/lastcontainer.h
./init.o: ../../../../winix/winixd/core/cur.h
./init.o: ../../../../winix/winixd/core/session.h
./init.o: ../../../../winix/winixd/core/rebus.h
./init.o: ../../../../winix/winixd/core/ipban.h
./init.o: ../../../../winix/winixd/core/groups.h
./init.o: ../../../../winix/winixd/core/loadavg.h
./init.o: ../../../../winix/winixd/core/image.h
./init.o: ../../../../winix/winixd/core/threadmanager.h
./init.o: ../../../../winix/winixd/models/winixmodelconnector.h
./init.o: ../../../../winix/winixd/notify/notify.h
./init.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./init.o: ../../../../winix/winixd/notify/notifypool.h
@ -351,15 +334,34 @@
./init.o: ../../../../winix/winixd/core/basethread.h
./init.o: ../../../../winix/winixd/notify/templatesnotify.h
./init.o: ../../../../winix/winixd/core/users.h
./init.o: ../../../../winix/winixd/core/timezones.h
./init.o: ../../../../winix/winixd/core/timezone.h
./init.o: ../../../../winix/winixd/core/ugcontainer.h
./init.o: ../../../../winix/winixd/core/lastcontainer.h
./init.o: ../../../../winix/winixd/core/cur.h
./init.o: ../../../../winix/winixd/core/session.h
./init.o: ../../../../winix/winixd/core/rebus.h
./init.o: ../../../../winix/winixd/core/ipban.h
./init.o: ../../../../winix/winixd/core/winixrequest.h
./init.o: ../../../../winix/winixd/core/winixsystem.h
./init.o: ../../../../winix/winixd/core/system.h
./init.o: ../../../../winix/winixd/core/job.h
./init.o: ../../../../winix/winixd/core/basethread.h
./init.o: ../../../../winix/winixd/core/jobtask.h
./init.o: ../../../../winix/winixd/core/loadavg.h
./init.o: ../../../../winix/winixd/core/dirs.h
./init.o: ../../../../winix/winixd/core/dircontainer.h
./init.o: ../../../../winix/winixd/core/crypt.h
./init.o: ../../../../winix/winixd/core/run.h
./init.o: ../../../../winix/winixd/core/users.h
./init.o: ../../../../winix/winixd/core/groups.h
./init.o: ../../../../winix/winixd/core/image.h
./init.o: ../../../../winix/winixd/core/threadmanager.h
./init.o: ../../../../winix/winixd/models/winixmodelconnector.h
./init.o: ../../../../winix/winixd/core/timezones.h
./init.o: ../../../../winix/winixd/core/timezone.h
./init.o: ../../../../winix/winixd/core/cur.h
./init.o: ../../../../winix/winixd/core/sessionmanager.h
./init.o: ../../../../winix/winixd/core/sessioncontainer.h
./init.o: ../../../../winix/winixd/core/ipbancontainer.h
./init.o: ../../../../winix/winixd/core/system.h
./init.o: ../../../../winix/winixd/core/sessionidmanager.h
./init.o: ../../../../tito/src/base64.h ../../../../tito/src/aes.h
./init.o: ../../../../winix/winixd/core/slog.h galleryinfo.h
@ -367,6 +369,7 @@
./init.o: ../../../../winix/winixd/functions/functions.h
./init.o: ../../../../winix/winixd/functions/functionbase.h
./init.o: ../../../../winix/winixd/functions/functionparser.h
./init.o: ../../../../winix/winixd/core/dirs.h
./init.o: ../../../../winix/winixd/functions/account.h
./init.o: ../../../../winix/winixd/functions/adduser.h
./init.o: ../../../../winix/winixd/functions/cat.h
@ -511,33 +514,15 @@
./templates.o: ../../../../winix/winixd/core/textstream.h
./templates.o: ../../../../winix/winixd/models/winixmodel.h
./templates.o: ../../../../winix/winixd/core/header.h
./templates.o: ../../../../winix/winixd/core/system.h
./templates.o: ../../../../winix/winixd/core/job.h
./templates.o: ../../../../winix/winixd/core/basethread.h
./templates.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./templates.o: ../../../../winix/winixd/core/compress.h
./templates.o: ../../../../winix/winixd/core/plugin.h
./templates.o: ../../../../winix/winixd/core/pluginmsg.h
./templates.o: ../../../../winix/winixd/core/plugindata.h
./templates.o: ../../../../winix/winixd/core/dirs.h
./templates.o: ../../../../winix/winixd/core/dircontainer.h
./templates.o: ../../../../winix/winixd/core/request.h
./templates.o: ../../../../winix/winixd/core/mounts.h
./templates.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./templates.o: ../../../../winix/winixd/core/mount.h
./templates.o: ../../../../winix/winixd/core/mounts.h
./templates.o: ../../../../winix/winixd/core/request.h
./templates.o: ../../../../winix/winixd/core/mountparser.h
./templates.o: ../../../../winix/winixd/core/crypt.h
./templates.o: ../../../../winix/winixd/core/run.h
./templates.o: ../../../../winix/winixd/core/users.h
./templates.o: ../../../../winix/winixd/core/ugcontainer.h
./templates.o: ../../../../winix/winixd/core/lastcontainer.h
./templates.o: ../../../../winix/winixd/core/cur.h
./templates.o: ../../../../winix/winixd/core/session.h
./templates.o: ../../../../winix/winixd/core/rebus.h
./templates.o: ../../../../winix/winixd/core/ipban.h
./templates.o: ../../../../winix/winixd/core/groups.h
./templates.o: ../../../../winix/winixd/core/loadavg.h
./templates.o: ../../../../winix/winixd/core/image.h
./templates.o: ../../../../winix/winixd/core/threadmanager.h
./templates.o: ../../../../winix/winixd/models/winixmodelconnector.h
./templates.o: ../../../../winix/winixd/notify/notify.h
./templates.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./templates.o: ../../../../winix/winixd/notify/notifypool.h
@ -547,15 +532,34 @@
./templates.o: ../../../../winix/winixd/core/basethread.h
./templates.o: ../../../../winix/winixd/notify/templatesnotify.h
./templates.o: ../../../../winix/winixd/core/users.h
./templates.o: ../../../../winix/winixd/core/timezones.h
./templates.o: ../../../../winix/winixd/core/timezone.h
./templates.o: ../../../../winix/winixd/core/ugcontainer.h
./templates.o: ../../../../winix/winixd/core/lastcontainer.h
./templates.o: ../../../../winix/winixd/core/cur.h
./templates.o: ../../../../winix/winixd/core/session.h
./templates.o: ../../../../winix/winixd/core/rebus.h
./templates.o: ../../../../winix/winixd/core/ipban.h
./templates.o: ../../../../winix/winixd/core/winixrequest.h
./templates.o: ../../../../winix/winixd/core/winixsystem.h
./templates.o: ../../../../winix/winixd/core/system.h
./templates.o: ../../../../winix/winixd/core/job.h
./templates.o: ../../../../winix/winixd/core/basethread.h
./templates.o: ../../../../winix/winixd/core/jobtask.h
./templates.o: ../../../../winix/winixd/core/loadavg.h
./templates.o: ../../../../winix/winixd/core/dirs.h
./templates.o: ../../../../winix/winixd/core/dircontainer.h
./templates.o: ../../../../winix/winixd/core/crypt.h
./templates.o: ../../../../winix/winixd/core/run.h
./templates.o: ../../../../winix/winixd/core/users.h
./templates.o: ../../../../winix/winixd/core/groups.h
./templates.o: ../../../../winix/winixd/core/image.h
./templates.o: ../../../../winix/winixd/core/threadmanager.h
./templates.o: ../../../../winix/winixd/models/winixmodelconnector.h
./templates.o: ../../../../winix/winixd/core/timezones.h
./templates.o: ../../../../winix/winixd/core/timezone.h
./templates.o: ../../../../winix/winixd/core/cur.h
./templates.o: ../../../../winix/winixd/core/sessionmanager.h
./templates.o: ../../../../winix/winixd/core/sessioncontainer.h
./templates.o: ../../../../winix/winixd/core/ipbancontainer.h
./templates.o: ../../../../winix/winixd/core/system.h
./templates.o: ../../../../winix/winixd/core/sessionidmanager.h
./templates.o: ../../../../tito/src/base64.h ../../../../tito/src/aes.h
./templates.o: ../../../../winix/winixd/core/slog.h galleryinfo.h
@ -570,6 +574,7 @@
./templates.o: ../../../../winix/winixd/functions/functions.h
./templates.o: ../../../../winix/winixd/functions/functionbase.h
./templates.o: ../../../../winix/winixd/functions/functionparser.h
./templates.o: ../../../../winix/winixd/core/dirs.h
./templates.o: ../../../../winix/winixd/functions/account.h
./templates.o: ../../../../winix/winixd/functions/adduser.h
./templates.o: ../../../../winix/winixd/functions/cat.h

View File

@ -88,6 +88,10 @@
# ../../../../winix/winixd/core/job.h includes:
# basethread.h
# space/space.h
# jobtask.h
# cur.h
# loadavg.h
# mounts.h
./groupinfo.o: ../../../../winix/winixd/core/basethread.h
# ../../../../winix/winixd/core/basethread.h includes:
# synchro.h
@ -96,7 +100,6 @@
./groupinfo.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
# ../../../../winix/winixd/core/winixmodeldeprecated.h includes:
# core/winixbase.h
# plugin.h
# morm.h
./groupinfo.o: ../../../../winix/winixd/core/winixbase.h
# ../../../../winix/winixd/core/winixbase.h includes:
@ -269,26 +272,32 @@
./groupinfo.o: ../../../../winix/winixd/core/lock.h
# ../../../../winix/winixd/core/lock.h includes:
# synchro.h
./groupinfo.o: ../../../../winix/winixd/core/plugin.h
# ../../../../winix/winixd/core/plugin.h includes:
# pluginmsg.h
# plugindata.h
# winixbase.h
# modelconnector.h
./groupinfo.o: ../../../../winix/winixd/core/pluginmsg.h
./groupinfo.o: ../../../../winix/winixd/core/plugindata.h
./groupinfo.o: ../../../../winix/winixd/core/winixbase.h
./groupinfo.o: ../../../../winix/winixd/core/dirs.h
# ../../../../winix/winixd/core/dirs.h includes:
# dircontainer.h
# db/db.h
# request.h
# models/item.h
# winixmodeldeprecated.h
./groupinfo.o: ../../../../winix/winixd/core/dircontainer.h
# ../../../../winix/winixd/core/dircontainer.h includes:
# winixbase.h
./groupinfo.o: ../../../../winix/winixd/core/jobtask.h
# ../../../../winix/winixd/core/jobtask.h includes:
# space/space.h
# core/request.h
./groupinfo.o: ../../../../winix/winixd/core/request.h
# ../../../../winix/winixd/core/request.h includes:
# requesttypes.h
# models/item.h
# error.h
# config.h
# textstream.h
# templates/htmltextstream.h
# date/date.h
# space/space.h
# textstream/textstream.h
# outstreams.h
# models.h
# models/winixmodel.h
# header.h
# compress.h
# plugin.h
# mount.h
# mounts.h
./groupinfo.o: ../../../../winix/winixd/core/requesttypes.h
# ../../../../winix/winixd/core/requesttypes.h includes:
# textstream/textstream.h
./groupinfo.o: ../../../../winix/winixd/models/item.h
# ../../../../winix/winixd/models/item.h includes:
# winixmodel.h
@ -401,6 +410,43 @@
# utf8/utf8.h
# log/log.h
./groupinfo.o: ../../../../winix/winixd/templates/htmltextstream.h
./groupinfo.o: ../../../../winix/winixd/core/error.h
./groupinfo.o: ../../../../winix/winixd/core/config.h
./groupinfo.o: ../../../../winix/winixd/core/textstream.h
# ../../../../winix/winixd/core/textstream.h includes:
# misc.h
# space/space.h
# date/date.h
# textstream/textstream.h
# utf8/utf8.h
./groupinfo.o: ../../../../winix/winixd/models/winixmodel.h
./groupinfo.o: ../../../../winix/winixd/core/header.h
# ../../../../winix/winixd/core/header.h includes:
# log.h
# textstream/textstream.h
./groupinfo.o: ../../../../winix/winixd/core/compress.h
# ../../../../winix/winixd/core/compress.h includes:
# requesttypes.h
# winixbase.h
./groupinfo.o: ../../../../winix/winixd/core/winixbase.h
./groupinfo.o: ../../../../winix/winixd/core/plugin.h
# ../../../../winix/winixd/core/plugin.h includes:
# pluginmsg.h
# plugindata.h
# winixmodeldeprecated.h
# modelconnector.h
# mount.h
./groupinfo.o: ../../../../winix/winixd/core/pluginmsg.h
./groupinfo.o: ../../../../winix/winixd/core/plugindata.h
./groupinfo.o: ../../../../winix/winixd/core/mount.h
./groupinfo.o: ../../../../winix/winixd/core/mounts.h
# ../../../../winix/winixd/core/mounts.h includes:
# mount.h
# error.h
# db/db.h
# request.h
# mountparser.h
# winixmodeldeprecated.h
./groupinfo.o: ../../../../winix/winixd/db/db.h
# ../../../../winix/winixd/db/db.h includes:
# dbbase.h
@ -425,12 +471,6 @@
# core/textstream.h
# textstream/textstream.h
./groupinfo.o: ../../../../winix/winixd/core/textstream.h
# ../../../../winix/winixd/core/textstream.h includes:
# misc.h
# space/space.h
# date/date.h
# textstream/textstream.h
# utf8/utf8.h
./groupinfo.o: ../../../../winix/winixd/core/error.h
./groupinfo.o: ../../../../winix/winixd/models/user.h
# ../../../../winix/winixd/models/user.h includes:
@ -443,73 +483,18 @@
# ../../../../winix/winixd/models/group.h includes:
# model.h
./groupinfo.o: ../../../../winix/winixd/core/dircontainer.h
# ../../../../winix/winixd/core/dircontainer.h includes:
# winixbase.h
# models/item.h
./groupinfo.o: ../../../../winix/winixd/core/ugcontainer.h
# ../../../../winix/winixd/core/ugcontainer.h includes:
# winixbase.h
./groupinfo.o: ../../../../winix/winixd/core/request.h
# ../../../../winix/winixd/core/request.h includes:
# requesttypes.h
# models/item.h
# error.h
# config.h
# textstream.h
# templates/htmltextstream.h
# date/date.h
# space/space.h
# textstream/textstream.h
# outstreams.h
# models.h
# models/winixmodel.h
# header.h
./groupinfo.o: ../../../../winix/winixd/core/requesttypes.h
# ../../../../winix/winixd/core/requesttypes.h includes:
# textstream/textstream.h
./groupinfo.o: ../../../../winix/winixd/core/error.h
./groupinfo.o: ../../../../winix/winixd/core/config.h
./groupinfo.o: ../../../../winix/winixd/core/textstream.h
./groupinfo.o: ../../../../winix/winixd/models/winixmodel.h
./groupinfo.o: ../../../../winix/winixd/core/header.h
# ../../../../winix/winixd/core/header.h includes:
# log.h
# textstream/textstream.h
./groupinfo.o: ../../../../winix/winixd/core/mounts.h
# ../../../../winix/winixd/core/mounts.h includes:
# mount.h
# error.h
# dirs.h
# db/db.h
# request.h
# mountparser.h
# winixmodeldeprecated.h
./groupinfo.o: ../../../../winix/winixd/core/mount.h
./groupinfo.o: ../../../../winix/winixd/core/mountparser.h
# ../../../../winix/winixd/core/mountparser.h includes:
# mount.h
# dirs.h
# models/item.h
# winixmodeldeprecated.h
./groupinfo.o: ../../../../winix/winixd/core/crypt.h
# ../../../../winix/winixd/core/crypt.h includes:
# run.h
# config.h
# models/user.h
# winixbase.h
./groupinfo.o: ../../../../winix/winixd/core/run.h
# ../../../../winix/winixd/core/run.h includes:
# winixbase.h
./groupinfo.o: ../../../../winix/winixd/core/users.h
# ../../../../winix/winixd/core/users.h includes:
# models/user.h
# ugcontainer.h
# lastcontainer.h
# cur.h
# db/db.h
# models/winixmodel.h
./groupinfo.o: ../../../../winix/winixd/core/ugcontainer.h
./groupinfo.o: ../../../../winix/winixd/core/lastcontainer.h
# ../../../../winix/winixd/core/lastcontainer.h includes:
# date/date.h
# winixbase.h
./groupinfo.o: ../../../../winix/winixd/core/cur.h
# ../../../../winix/winixd/core/cur.h includes:
# request.h
@ -532,6 +517,36 @@
# ../../../../winix/winixd/core/loadavg.h includes:
# winixbase.h
# request.h
./groupinfo.o: ../../../../winix/winixd/core/dirs.h
# ../../../../winix/winixd/core/dirs.h includes:
# dircontainer.h
# db/db.h
# request.h
# models/item.h
# winixmodeldeprecated.h
./groupinfo.o: ../../../../winix/winixd/core/dircontainer.h
./groupinfo.o: ../../../../winix/winixd/core/crypt.h
# ../../../../winix/winixd/core/crypt.h includes:
# run.h
# config.h
# models/user.h
# winixbase.h
./groupinfo.o: ../../../../winix/winixd/core/run.h
# ../../../../winix/winixd/core/run.h includes:
# winixbase.h
./groupinfo.o: ../../../../winix/winixd/core/users.h
# ../../../../winix/winixd/core/users.h includes:
# models/user.h
# ugcontainer.h
# lastcontainer.h
# cur.h
# db/db.h
# models/winixmodel.h
./groupinfo.o: ../../../../winix/winixd/core/ugcontainer.h
./groupinfo.o: ../../../../winix/winixd/core/lastcontainer.h
# ../../../../winix/winixd/core/lastcontainer.h includes:
# date/date.h
# winixbase.h
./groupinfo.o: ../../../../winix/winixd/core/image.h
# ../../../../winix/winixd/core/image.h includes:
# basethread.h
@ -596,7 +611,6 @@
# config.h
# request.h
# lastcontainer.h
# system.h
# synchro.h
# basethread.h
# sessionidmanager.h
@ -610,7 +624,6 @@
# ../../../../winix/winixd/core/ipbancontainer.h includes:
# ipban.h
# winixmodeldeprecated.h
./groupinfo.o: ../../../../winix/winixd/core/system.h
./groupinfo.o: ../../../../winix/winixd/core/sessionidmanager.h
# ../../../../winix/winixd/core/sessionidmanager.h includes:
# base64.h
@ -685,12 +698,9 @@
./groups.o: ../../../../winix/winixd/core/synchro.h
./groups.o: ../../../../winix/winixd/core/filelog.h
./groups.o: ../../../../winix/winixd/core/lock.h
./groups.o: ../../../../winix/winixd/core/plugin.h
./groups.o: ../../../../winix/winixd/core/pluginmsg.h
./groups.o: ../../../../winix/winixd/core/plugindata.h
./groups.o: ../../../../winix/winixd/core/winixbase.h
./groups.o: ../../../../winix/winixd/core/dirs.h
./groups.o: ../../../../winix/winixd/core/dircontainer.h
./groups.o: ../../../../winix/winixd/core/jobtask.h
./groups.o: ../../../../winix/winixd/core/request.h
./groups.o: ../../../../winix/winixd/core/requesttypes.h
./groups.o: ../../../../winix/winixd/models/item.h
./groups.o: ../../../../winix/winixd/models/winixmodel.h
./groups.o: ../../../../winix/winixd/models/winixmodelconnector.h
@ -710,6 +720,18 @@
./groups.o: ../../../../ezc/src/expressionparser.h
./groups.o: ../../../../ezc/src/models.h ../../../../ezc/src/patternparser.h
./groups.o: ../../../../winix/winixd/templates/htmltextstream.h
./groups.o: ../../../../winix/winixd/core/error.h
./groups.o: ../../../../winix/winixd/core/config.h
./groups.o: ../../../../winix/winixd/core/textstream.h
./groups.o: ../../../../winix/winixd/models/winixmodel.h
./groups.o: ../../../../winix/winixd/core/header.h
./groups.o: ../../../../winix/winixd/core/compress.h
./groups.o: ../../../../winix/winixd/core/winixbase.h
./groups.o: ../../../../winix/winixd/core/plugin.h
./groups.o: ../../../../winix/winixd/core/pluginmsg.h
./groups.o: ../../../../winix/winixd/core/plugindata.h
./groups.o: ../../../../winix/winixd/core/mount.h
./groups.o: ../../../../winix/winixd/core/mounts.h
./groups.o: ../../../../winix/winixd/db/db.h
./groups.o: ../../../../winix/winixd/db/dbbase.h
./groups.o: ../../../../winix/winixd/db/dbconn.h
@ -721,25 +743,19 @@
./groups.o: ../../../../winix/winixd/core/dircontainer.h
./groups.o: ../../../../winix/winixd/core/ugcontainer.h
./groups.o: ../../../../winix/winixd/core/request.h
./groups.o: ../../../../winix/winixd/core/requesttypes.h
./groups.o: ../../../../winix/winixd/core/error.h
./groups.o: ../../../../winix/winixd/core/config.h
./groups.o: ../../../../winix/winixd/core/textstream.h
./groups.o: ../../../../winix/winixd/models/winixmodel.h
./groups.o: ../../../../winix/winixd/core/header.h
./groups.o: ../../../../winix/winixd/core/mounts.h
./groups.o: ../../../../winix/winixd/core/mount.h
./groups.o: ../../../../winix/winixd/core/mountparser.h
./groups.o: ../../../../winix/winixd/core/crypt.h
./groups.o: ../../../../winix/winixd/core/run.h
./groups.o: ../../../../winix/winixd/core/users.h
./groups.o: ../../../../winix/winixd/core/ugcontainer.h
./groups.o: ../../../../winix/winixd/core/lastcontainer.h
./groups.o: ../../../../winix/winixd/core/cur.h
./groups.o: ../../../../winix/winixd/core/session.h
./groups.o: ../../../../winix/winixd/core/rebus.h
./groups.o: ../../../../winix/winixd/core/ipban.h
./groups.o: ../../../../winix/winixd/core/loadavg.h
./groups.o: ../../../../winix/winixd/core/dirs.h
./groups.o: ../../../../winix/winixd/core/dircontainer.h
./groups.o: ../../../../winix/winixd/core/crypt.h
./groups.o: ../../../../winix/winixd/core/run.h
./groups.o: ../../../../winix/winixd/core/users.h
./groups.o: ../../../../winix/winixd/core/ugcontainer.h
./groups.o: ../../../../winix/winixd/core/lastcontainer.h
./groups.o: ../../../../winix/winixd/core/image.h
./groups.o: ../../../../winix/winixd/core/threadmanager.h
./groups.o: ../../../../winix/winixd/models/winixmodelconnector.h
@ -758,7 +774,6 @@
./groups.o: ../../../../winix/winixd/core/sessionmanager.h
./groups.o: ../../../../winix/winixd/core/sessioncontainer.h
./groups.o: ../../../../winix/winixd/core/ipbancontainer.h
./groups.o: ../../../../winix/winixd/core/system.h
./groups.o: ../../../../winix/winixd/core/sessionidmanager.h
./groups.o: ../../../../tito/src/base64.h ../../../../tito/src/aes.h
./groups.o: ../../../../winix/winixd/core/slog.h
@ -767,47 +782,40 @@
# ../../../../winix/winixd/core/plugin.h includes:
# pluginmsg.h
# plugindata.h
# winixbase.h
# winixmodeldeprecated.h
# modelconnector.h
# mount.h
./init.o: ../../../../winix/winixd/core/pluginmsg.h
./init.o: ../../../../winix/winixd/core/plugindata.h
./init.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./init.o: ../../../../winix/winixd/core/winixbase.h
./init.o: ../../../../morm/src/modelconnector.h
./init.o: ../../../../morm/src/clearer.h
./init.o: ../../../../pikotools/src/date/date.h
./init.o: ../../../../pikotools/src/convert/inttostr.h
./init.o: ../../../../pikotools/src/space/space.h ../../../../morm/src/ft.h
./init.o: ../../../../morm/src/dbconnector.h
./init.o: ../../../../pikotools/src/textstream/textstream.h
./init.o: ../../../../pikotools/src/textstream/stream.h
./init.o: ../../../../pikotools/src/membuffer/membuffer.h
./init.o: ../../../../winix/winixd/core/config.h
./init.o: ../../../../pikotools/src/space/spaceparser.h
./init.o: ../../../../pikotools/src/space/space.h
./init.o: ../../../../pikotools/src/textstream/types.h
./init.o: ../../../../pikotools/src/convert/inttostr.h
./init.o: ../../../../pikotools/src/utf8/utf8.h
./init.o: ../../../../pikotools/src/textstream/stream.h
./init.o: ../../../../pikotools/src/utf8/utf8_templates.h
./init.o: ../../../../pikotools/src/utf8/utf8_private.h
./init.o: ../../../../pikotools/src/utf8/utf8_stream.h
./init.o: ../../../../pikotools/src/log/log.h
./init.o: ../../../../pikotools/src/log/filelog.h
./init.o: ../../../../morm/src/queryresult.h
./init.o: ../../../../morm/src/flatconnector.h groupinfo.h groups.h
./init.o: ../../../../pikotools/src/space/spaceparser.h
./init.o: ../../../../pikotools/src/space/space.h
./init.o: ../../../../pikotools/src/textstream/types.h
./init.o: ../../../../pikotools/src/convert/baseparser.h
./init.o: ../../../../winix/winixd/core/winixrequest.h
./init.o: ../../../../winix/winixd/core/winixsystem.h
./init.o: ../../../../winix/winixd/core/system.h
./init.o: ../../../../winix/winixd/core/job.h
./init.o: ../../../../winix/winixd/core/basethread.h
./init.o: ../../../../winix/winixd/core/synchro.h
./init.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./init.o: ../../../../winix/winixd/core/winixbase.h
./init.o: ../../../../winix/winixd/core/config.h
./init.o: ../../../../pikotools/src/textstream/textstream.h
./init.o: ../../../../pikotools/src/textstream/stream.h
./init.o: ../../../../pikotools/src/space/space.h
./init.o: ../../../../pikotools/src/date/date.h
./init.o: ../../../../pikotools/src/membuffer/membuffer.h
./init.o: ../../../../pikotools/src/textstream/types.h
./init.o: ../../../../pikotools/src/utf8/utf8_stream.h
./init.o: ../../../../winix/winixd/core/log.h
./init.o: ../../../../winix/winixd/core/logmanipulators.h
./init.o: ../../../../morm/src/morm.h ../../../../morm/src/version.h
./init.o: ../../../../morm/src/morm_types.h ../../../../morm/src/model.h
./init.o: ../../../../pikotools/src/log/log.h
./init.o: ../../../../pikotools/src/log/filelog.h ../../../../morm/src/morm.h
./init.o: ../../../../morm/src/version.h ../../../../morm/src/morm_types.h
./init.o: ../../../../morm/src/model.h ../../../../morm/src/modelconnector.h
./init.o: ../../../../morm/src/clearer.h ../../../../morm/src/ft.h
./init.o: ../../../../morm/src/dbconnector.h
./init.o: ../../../../morm/src/queryresult.h
./init.o: ../../../../morm/src/flatconnector.h
./init.o: ../../../../morm/src/dbexpression.h
./init.o: ../../../../morm/src/baseexpression.h
./init.o: ../../../../morm/src/modelenv.h ../../../../morm/src/modeldata.h
@ -829,9 +837,16 @@
./init.o: ../../../../winix/winixd/core/synchro.h
./init.o: ../../../../winix/winixd/core/filelog.h
./init.o: ../../../../winix/winixd/core/lock.h
./init.o: ../../../../winix/winixd/core/plugin.h
./init.o: ../../../../winix/winixd/core/dirs.h
./init.o: ../../../../winix/winixd/core/dircontainer.h
./init.o: ../../../../winix/winixd/core/synchro.h
./init.o: ../../../../winix/winixd/core/mount.h groupinfo.h groups.h
./init.o: ../../../../winix/winixd/core/winixrequest.h
./init.o: ../../../../winix/winixd/core/winixsystem.h
./init.o: ../../../../winix/winixd/core/system.h
./init.o: ../../../../winix/winixd/core/job.h
./init.o: ../../../../winix/winixd/core/basethread.h
./init.o: ../../../../winix/winixd/core/jobtask.h
./init.o: ../../../../winix/winixd/core/request.h
./init.o: ../../../../winix/winixd/core/requesttypes.h
./init.o: ../../../../winix/winixd/models/item.h
./init.o: ../../../../winix/winixd/models/winixmodel.h
./init.o: ../../../../winix/winixd/models/winixmodelconnector.h
@ -851,6 +866,15 @@
./init.o: ../../../../ezc/src/expressionparser.h ../../../../ezc/src/models.h
./init.o: ../../../../ezc/src/patternparser.h
./init.o: ../../../../winix/winixd/templates/htmltextstream.h
./init.o: ../../../../winix/winixd/core/error.h
./init.o: ../../../../winix/winixd/core/config.h
./init.o: ../../../../winix/winixd/core/textstream.h
./init.o: ../../../../winix/winixd/models/winixmodel.h
./init.o: ../../../../winix/winixd/core/header.h
./init.o: ../../../../winix/winixd/core/compress.h
./init.o: ../../../../winix/winixd/core/winixbase.h
./init.o: ../../../../winix/winixd/core/plugin.h
./init.o: ../../../../winix/winixd/core/mounts.h
./init.o: ../../../../winix/winixd/db/db.h
./init.o: ../../../../winix/winixd/db/dbbase.h
./init.o: ../../../../winix/winixd/db/dbconn.h
@ -862,25 +886,19 @@
./init.o: ../../../../winix/winixd/core/dircontainer.h
./init.o: ../../../../winix/winixd/core/ugcontainer.h
./init.o: ../../../../winix/winixd/core/request.h
./init.o: ../../../../winix/winixd/core/requesttypes.h
./init.o: ../../../../winix/winixd/core/error.h
./init.o: ../../../../winix/winixd/core/config.h
./init.o: ../../../../winix/winixd/core/textstream.h
./init.o: ../../../../winix/winixd/models/winixmodel.h
./init.o: ../../../../winix/winixd/core/header.h
./init.o: ../../../../winix/winixd/core/mounts.h
./init.o: ../../../../winix/winixd/core/mount.h
./init.o: ../../../../winix/winixd/core/mountparser.h
./init.o: ../../../../winix/winixd/core/crypt.h
./init.o: ../../../../winix/winixd/core/run.h
./init.o: ../../../../winix/winixd/core/users.h
./init.o: ../../../../winix/winixd/core/ugcontainer.h
./init.o: ../../../../winix/winixd/core/lastcontainer.h
./init.o: ../../../../winix/winixd/core/cur.h
./init.o: ../../../../winix/winixd/core/session.h
./init.o: ../../../../winix/winixd/core/rebus.h
./init.o: ../../../../winix/winixd/core/ipban.h
./init.o: ../../../../winix/winixd/core/loadavg.h
./init.o: ../../../../winix/winixd/core/dirs.h
./init.o: ../../../../winix/winixd/core/dircontainer.h
./init.o: ../../../../winix/winixd/core/crypt.h
./init.o: ../../../../winix/winixd/core/run.h
./init.o: ../../../../winix/winixd/core/users.h
./init.o: ../../../../winix/winixd/core/ugcontainer.h
./init.o: ../../../../winix/winixd/core/lastcontainer.h
./init.o: ../../../../winix/winixd/core/image.h
./init.o: ../../../../winix/winixd/core/threadmanager.h
./init.o: ../../../../winix/winixd/models/winixmodelconnector.h
@ -899,7 +917,6 @@
./init.o: ../../../../winix/winixd/core/sessionmanager.h
./init.o: ../../../../winix/winixd/core/sessioncontainer.h
./init.o: ../../../../winix/winixd/core/ipbancontainer.h
./init.o: ../../../../winix/winixd/core/system.h
./init.o: ../../../../winix/winixd/core/sessionidmanager.h
./init.o: ../../../../tito/src/base64.h ../../../../tito/src/aes.h
./init.o: ../../../../winix/winixd/core/slog.h
@ -959,18 +976,17 @@
# db/db.h
# core/request.h
# core/config.h
# core/system.h
# core/synchro.h
# notify/notify.h
# core/winixrequest.h
# models/item.h
./init.o: ../../../../winix/winixd/core/request.h
./init.o: ../../../../winix/winixd/functions/functionparser.h
# ../../../../winix/winixd/functions/functionparser.h includes:
# core/winixmodeldeprecated.h
# db/db.h
# core/cur.h
# core/system.h
# core/dirs.h
./init.o: ../../../../winix/winixd/core/dirs.h
./init.o: ../../../../winix/winixd/functions/account.h
# ../../../../winix/winixd/functions/account.h includes:
# functionbase.h
@ -1236,12 +1252,21 @@
./templates.o: ../../../../winix/winixd/core/job.h
./templates.o: ../../../../winix/winixd/core/basethread.h
./templates.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./templates.o: ../../../../winix/winixd/core/jobtask.h
./templates.o: ../../../../winix/winixd/core/request.h
./templates.o: ../../../../winix/winixd/core/requesttypes.h
./templates.o: ../../../../winix/winixd/core/error.h
./templates.o: ../../../../winix/winixd/core/config.h
./templates.o: ../../../../winix/winixd/core/textstream.h
./templates.o: ../../../../winix/winixd/models/winixmodel.h
./templates.o: ../../../../winix/winixd/core/header.h
./templates.o: ../../../../winix/winixd/core/compress.h
./templates.o: ../../../../winix/winixd/core/winixbase.h
./templates.o: ../../../../winix/winixd/core/plugin.h
./templates.o: ../../../../winix/winixd/core/pluginmsg.h
./templates.o: ../../../../winix/winixd/core/plugindata.h
./templates.o: ../../../../winix/winixd/core/winixbase.h
./templates.o: ../../../../winix/winixd/core/dirs.h
./templates.o: ../../../../winix/winixd/core/dircontainer.h
./templates.o: ../../../../winix/winixd/core/mount.h
./templates.o: ../../../../winix/winixd/core/mounts.h
./templates.o: ../../../../winix/winixd/db/db.h
./templates.o: ../../../../winix/winixd/db/dbbase.h
./templates.o: ../../../../winix/winixd/db/dbconn.h
@ -1253,35 +1278,28 @@
./templates.o: ../../../../winix/winixd/core/dircontainer.h
./templates.o: ../../../../winix/winixd/core/ugcontainer.h
./templates.o: ../../../../winix/winixd/core/request.h
./templates.o: ../../../../winix/winixd/core/requesttypes.h
./templates.o: ../../../../winix/winixd/core/error.h
./templates.o: ../../../../winix/winixd/core/config.h
./templates.o: ../../../../winix/winixd/core/textstream.h
./templates.o: ../../../../winix/winixd/models/winixmodel.h
./templates.o: ../../../../winix/winixd/core/header.h
./templates.o: ../../../../winix/winixd/core/mounts.h
./templates.o: ../../../../winix/winixd/core/mount.h
./templates.o: ../../../../winix/winixd/core/mountparser.h
./templates.o: ../../../../winix/winixd/core/cur.h
./templates.o: ../../../../winix/winixd/core/session.h
./templates.o: ../../../../winix/winixd/core/rebus.h
./templates.o: ../../../../winix/winixd/core/ipban.h
./templates.o: ../../../../winix/winixd/core/loadavg.h
./templates.o: ../../../../winix/winixd/core/dirs.h
./templates.o: ../../../../winix/winixd/core/dircontainer.h
./templates.o: ../../../../winix/winixd/core/crypt.h
./templates.o: ../../../../winix/winixd/core/run.h
./templates.o: ../../../../winix/winixd/core/users.h
./templates.o: ../../../../winix/winixd/core/ugcontainer.h
./templates.o: ../../../../winix/winixd/core/lastcontainer.h
./templates.o: ../../../../winix/winixd/core/cur.h
./templates.o: ../../../../winix/winixd/core/session.h
./templates.o: ../../../../winix/winixd/core/rebus.h
./templates.o: ../../../../winix/winixd/core/ipban.h groups.h
./templates.o: ../../../../winix/winixd/core/lastcontainer.h groups.h
./templates.o: ../../../../winix/winixd/core/winixrequest.h
./templates.o: ../../../../winix/winixd/core/winixsystem.h
./templates.o: ../../../../winix/winixd/core/sessionmanager.h
./templates.o: ../../../../winix/winixd/core/sessioncontainer.h
./templates.o: ../../../../winix/winixd/core/ipbancontainer.h
./templates.o: ../../../../winix/winixd/core/system.h
./templates.o: ../../../../winix/winixd/core/sessionidmanager.h
./templates.o: ../../../../tito/src/base64.h ../../../../tito/src/aes.h
./templates.o: ../../../../winix/winixd/core/slog.h
./templates.o: ../../../../winix/winixd/templates/locale.h
./templates.o: ../../../../winix/winixd/core/loadavg.h
./templates.o: ../../../../winix/winixd/core/image.h
./templates.o: ../../../../winix/winixd/core/threadmanager.h
./templates.o: ../../../../winix/winixd/models/winixmodelconnector.h

View File

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2011-2018, Tomasz Sowa
* Copyright (c) 2011-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -97,7 +97,7 @@ using namespace GroupItem;
info.plugin->Assign(WINIX_FSTAB_CHANGED, FstabChanged);
info.plugin->Assign(WINIX_PROCESS_REQUEST, ProcessRequest);
info.set_dependency_for(group_info);
group_info.set_dependency((WinixModelDeprecated*)info.functions);
group_info.SetSystem(info.system);
group_info.SetConfig(info.config);

View File

@ -107,33 +107,15 @@
./funregistermail.o: ../../../../winix/winixd/core/textstream.h
./funregistermail.o: ../../../../winix/winixd/models/winixmodel.h
./funregistermail.o: ../../../../winix/winixd/core/header.h
./funregistermail.o: ../../../../winix/winixd/core/system.h
./funregistermail.o: ../../../../winix/winixd/core/job.h
./funregistermail.o: ../../../../winix/winixd/core/basethread.h
./funregistermail.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./funregistermail.o: ../../../../winix/winixd/core/compress.h
./funregistermail.o: ../../../../winix/winixd/core/plugin.h
./funregistermail.o: ../../../../winix/winixd/core/pluginmsg.h
./funregistermail.o: ../../../../winix/winixd/core/plugindata.h
./funregistermail.o: ../../../../winix/winixd/core/dirs.h
./funregistermail.o: ../../../../winix/winixd/core/dircontainer.h
./funregistermail.o: ../../../../winix/winixd/core/request.h
./funregistermail.o: ../../../../winix/winixd/core/mounts.h
./funregistermail.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./funregistermail.o: ../../../../winix/winixd/core/mount.h
./funregistermail.o: ../../../../winix/winixd/core/mounts.h
./funregistermail.o: ../../../../winix/winixd/core/request.h
./funregistermail.o: ../../../../winix/winixd/core/mountparser.h
./funregistermail.o: ../../../../winix/winixd/core/crypt.h
./funregistermail.o: ../../../../winix/winixd/core/run.h
./funregistermail.o: ../../../../winix/winixd/core/users.h
./funregistermail.o: ../../../../winix/winixd/core/ugcontainer.h
./funregistermail.o: ../../../../winix/winixd/core/lastcontainer.h
./funregistermail.o: ../../../../winix/winixd/core/cur.h
./funregistermail.o: ../../../../winix/winixd/core/session.h
./funregistermail.o: ../../../../winix/winixd/core/rebus.h
./funregistermail.o: ../../../../winix/winixd/core/ipban.h
./funregistermail.o: ../../../../winix/winixd/core/groups.h
./funregistermail.o: ../../../../winix/winixd/core/loadavg.h
./funregistermail.o: ../../../../winix/winixd/core/image.h
./funregistermail.o: ../../../../winix/winixd/core/threadmanager.h
./funregistermail.o: ../../../../winix/winixd/models/winixmodelconnector.h
./funregistermail.o: ../../../../winix/winixd/notify/notify.h
./funregistermail.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./funregistermail.o: ../../../../winix/winixd/notify/notifypool.h
@ -143,15 +125,34 @@
./funregistermail.o: ../../../../winix/winixd/core/basethread.h
./funregistermail.o: ../../../../winix/winixd/notify/templatesnotify.h
./funregistermail.o: ../../../../winix/winixd/core/users.h
./funregistermail.o: ../../../../winix/winixd/core/timezones.h
./funregistermail.o: ../../../../winix/winixd/core/timezone.h
./funregistermail.o: ../../../../winix/winixd/core/ugcontainer.h
./funregistermail.o: ../../../../winix/winixd/core/lastcontainer.h
./funregistermail.o: ../../../../winix/winixd/core/cur.h
./funregistermail.o: ../../../../winix/winixd/core/session.h
./funregistermail.o: ../../../../winix/winixd/core/rebus.h
./funregistermail.o: ../../../../winix/winixd/core/ipban.h
./funregistermail.o: ../../../../winix/winixd/core/winixrequest.h
./funregistermail.o: ../../../../winix/winixd/core/winixsystem.h
./funregistermail.o: ../../../../winix/winixd/core/system.h
./funregistermail.o: ../../../../winix/winixd/core/job.h
./funregistermail.o: ../../../../winix/winixd/core/basethread.h
./funregistermail.o: ../../../../winix/winixd/core/jobtask.h
./funregistermail.o: ../../../../winix/winixd/core/loadavg.h
./funregistermail.o: ../../../../winix/winixd/core/dirs.h
./funregistermail.o: ../../../../winix/winixd/core/dircontainer.h
./funregistermail.o: ../../../../winix/winixd/core/crypt.h
./funregistermail.o: ../../../../winix/winixd/core/run.h
./funregistermail.o: ../../../../winix/winixd/core/users.h
./funregistermail.o: ../../../../winix/winixd/core/groups.h
./funregistermail.o: ../../../../winix/winixd/core/image.h
./funregistermail.o: ../../../../winix/winixd/core/threadmanager.h
./funregistermail.o: ../../../../winix/winixd/models/winixmodelconnector.h
./funregistermail.o: ../../../../winix/winixd/core/timezones.h
./funregistermail.o: ../../../../winix/winixd/core/timezone.h
./funregistermail.o: ../../../../winix/winixd/core/cur.h
./funregistermail.o: ../../../../winix/winixd/core/sessionmanager.h
./funregistermail.o: ../../../../winix/winixd/core/sessioncontainer.h
./funregistermail.o: ../../../../winix/winixd/core/ipbancontainer.h
./funregistermail.o: ../../../../winix/winixd/core/system.h
./funregistermail.o: ../../../../winix/winixd/core/sessionidmanager.h
./funregistermail.o: ../../../../tito/src/base64.h ../../../../tito/src/aes.h
./funregistermail.o: ../../../../winix/winixd/core/slog.h registermail_info.h
@ -267,33 +268,15 @@
./funregistermail_showusers.o: ../../../../winix/winixd/core/textstream.h
./funregistermail_showusers.o: ../../../../winix/winixd/models/winixmodel.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/header.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/system.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/job.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/basethread.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/compress.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/plugin.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/pluginmsg.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/plugindata.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/dirs.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/dircontainer.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/request.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/mounts.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/mount.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/mounts.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/request.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/mountparser.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/crypt.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/run.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/users.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/ugcontainer.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/lastcontainer.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/cur.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/session.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/rebus.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/ipban.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/groups.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/loadavg.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/image.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/threadmanager.h
./funregistermail_showusers.o: ../../../../winix/winixd/models/winixmodelconnector.h
./funregistermail_showusers.o: ../../../../winix/winixd/notify/notify.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./funregistermail_showusers.o: ../../../../winix/winixd/notify/notifypool.h
@ -303,15 +286,34 @@
./funregistermail_showusers.o: ../../../../winix/winixd/core/basethread.h
./funregistermail_showusers.o: ../../../../winix/winixd/notify/templatesnotify.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/users.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/timezones.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/timezone.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/ugcontainer.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/lastcontainer.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/cur.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/session.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/rebus.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/ipban.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/winixrequest.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/winixsystem.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/system.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/job.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/basethread.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/jobtask.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/loadavg.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/dirs.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/dircontainer.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/crypt.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/run.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/users.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/groups.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/image.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/threadmanager.h
./funregistermail_showusers.o: ../../../../winix/winixd/models/winixmodelconnector.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/timezones.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/timezone.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/cur.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/sessionmanager.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/sessioncontainer.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/ipbancontainer.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/system.h
./funregistermail_showusers.o: ../../../../winix/winixd/core/sessionidmanager.h
./funregistermail_showusers.o: ../../../../tito/src/base64.h
./funregistermail_showusers.o: ../../../../tito/src/aes.h
@ -323,53 +325,35 @@
./init.o: ../../../../winix/winixd/core/plugin.h
./init.o: ../../../../winix/winixd/core/pluginmsg.h
./init.o: ../../../../winix/winixd/core/plugindata.h
./init.o: ../../../../winix/winixd/core/winixbase.h
./init.o: ../../../../morm/src/modelconnector.h
./init.o: ../../../../morm/src/clearer.h
./init.o: ../../../../pikotools/src/date/date.h
./init.o: ../../../../pikotools/src/convert/inttostr.h
./init.o: ../../../../pikotools/src/space/space.h
./init.o: ../../../../pikotools/src/textstream/types.h
./init.o: ../../../../pikotools/src/utf8/utf8.h
./init.o: ../../../../pikotools/src/textstream/stream.h
./init.o: ../../../../pikotools/src/utf8/utf8_templates.h
./init.o: ../../../../pikotools/src/utf8/utf8_private.h
./init.o: ../../../../morm/src/ft.h ../../../../morm/src/dbconnector.h
./init.o: ../../../../pikotools/src/textstream/textstream.h
./init.o: ../../../../pikotools/src/textstream/stream.h
./init.o: ../../../../pikotools/src/membuffer/membuffer.h
./init.o: ../../../../pikotools/src/textstream/types.h
./init.o: ../../../../pikotools/src/utf8/utf8_stream.h
./init.o: ../../../../pikotools/src/log/log.h
./init.o: ../../../../pikotools/src/log/filelog.h
./init.o: ../../../../morm/src/queryresult.h
./init.o: ../../../../morm/src/flatconnector.h mdb.h
./init.o: ../../../../winix/winixd/db/dbbase.h
./init.o: ../../../../winix/winixd/core/dirs.h funregistermail.h
./init.o: ../../../../winix/winixd/functions/functionbase.h
./init.o: ../../../../winix/winixd/db/db.h
./init.o: ../../../../winix/winixd/db/dbbase.h
./init.o: ../../../../winix/winixd/db/dbconn.h
./init.o: ../../../../winix/winixd/db/dbtextstream.h
./init.o: ../../../../winix/winixd/core/textstream.h
./init.o: ../../../../winix/winixd/core/misc.h
./init.o: ../../../../winix/winixd/core/requesttypes.h
./init.o: ../../../../winix/winixd/core/winix_const.h
./init.o: ../../../../pikotools/src/convert/convert.h
./init.o: ../../../../pikotools/src/convert/inttostr.h
./init.o: ../../../../pikotools/src/convert/patternreplacer.h
./init.o: ../../../../pikotools/src/convert/strtoint.h
./init.o: ../../../../pikotools/src/convert/text.h
./init.o: ../../../../pikotools/src/convert/double.h
./init.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./init.o: ../../../../winix/winixd/core/winixbase.h
./init.o: ../../../../winix/winixd/core/config.h
./init.o: ../../../../pikotools/src/space/spaceparser.h
./init.o: ../../../../pikotools/src/space/space.h
./init.o: ../../../../pikotools/src/convert/baseparser.h
./init.o: ../../../../pikotools/src/textstream/textstream.h
./init.o: ../../../../pikotools/src/textstream/stream.h
./init.o: ../../../../pikotools/src/space/space.h
./init.o: ../../../../pikotools/src/textstream/types.h
./init.o: ../../../../pikotools/src/convert/inttostr.h
./init.o: ../../../../pikotools/src/utf8/utf8.h
./init.o: ../../../../pikotools/src/textstream/stream.h
./init.o: ../../../../pikotools/src/utf8/utf8_templates.h
./init.o: ../../../../pikotools/src/utf8/utf8_private.h
./init.o: ../../../../pikotools/src/date/date.h
./init.o: ../../../../pikotools/src/membuffer/membuffer.h
./init.o: ../../../../pikotools/src/textstream/types.h
./init.o: ../../../../pikotools/src/utf8/utf8_stream.h
./init.o: ../../../../winix/winixd/core/log.h
./init.o: ../../../../winix/winixd/core/logmanipulators.h
./init.o: ../../../../morm/src/morm.h ../../../../morm/src/version.h
./init.o: ../../../../morm/src/morm_types.h ../../../../morm/src/model.h
./init.o: ../../../../pikotools/src/log/log.h
./init.o: ../../../../pikotools/src/log/filelog.h ../../../../morm/src/morm.h
./init.o: ../../../../morm/src/version.h ../../../../morm/src/morm_types.h
./init.o: ../../../../morm/src/model.h ../../../../morm/src/modelconnector.h
./init.o: ../../../../morm/src/clearer.h ../../../../morm/src/ft.h
./init.o: ../../../../morm/src/dbconnector.h
./init.o: ../../../../morm/src/queryresult.h
./init.o: ../../../../morm/src/flatconnector.h
./init.o: ../../../../morm/src/dbexpression.h
./init.o: ../../../../morm/src/baseexpression.h
./init.o: ../../../../morm/src/modelenv.h ../../../../morm/src/modeldata.h
@ -392,6 +376,24 @@
./init.o: ../../../../winix/winixd/core/filelog.h
./init.o: ../../../../winix/winixd/core/lock.h
./init.o: ../../../../winix/winixd/core/synchro.h
./init.o: ../../../../winix/winixd/core/mount.h mdb.h
./init.o: ../../../../winix/winixd/db/dbbase.h
./init.o: ../../../../winix/winixd/core/dirs.h funregistermail.h
./init.o: ../../../../winix/winixd/functions/functionbase.h
./init.o: ../../../../winix/winixd/db/db.h
./init.o: ../../../../winix/winixd/db/dbbase.h
./init.o: ../../../../winix/winixd/db/dbconn.h
./init.o: ../../../../winix/winixd/db/dbtextstream.h
./init.o: ../../../../winix/winixd/core/textstream.h
./init.o: ../../../../winix/winixd/core/misc.h
./init.o: ../../../../winix/winixd/core/requesttypes.h
./init.o: ../../../../winix/winixd/core/winix_const.h
./init.o: ../../../../pikotools/src/convert/convert.h
./init.o: ../../../../pikotools/src/convert/inttostr.h
./init.o: ../../../../pikotools/src/convert/patternreplacer.h
./init.o: ../../../../pikotools/src/convert/strtoint.h
./init.o: ../../../../pikotools/src/convert/text.h
./init.o: ../../../../pikotools/src/convert/double.h
./init.o: ../../../../winix/winixd/core/error.h
./init.o: ../../../../winix/winixd/models/user.h
./init.o: ../../../../winix/winixd/templates/misc.h
@ -409,6 +411,7 @@
./init.o: ../../../../winix/winixd/models/winixmodelconnector.h
./init.o: ../../../../winix/winixd/models/group.h
./init.o: ../../../../winix/winixd/core/dircontainer.h
./init.o: ../../../../winix/winixd/core/winixbase.h
./init.o: ../../../../winix/winixd/models/item.h
./init.o: ../../../../winix/winixd/models/itemcontent.h
./init.o: ../../../../winix/winixd/templates/htmltextstream.h
@ -419,31 +422,11 @@
./init.o: ../../../../winix/winixd/core/textstream.h
./init.o: ../../../../winix/winixd/models/winixmodel.h
./init.o: ../../../../winix/winixd/core/header.h
./init.o: ../../../../winix/winixd/core/system.h
./init.o: ../../../../winix/winixd/core/job.h
./init.o: ../../../../winix/winixd/core/basethread.h
./init.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./init.o: ../../../../winix/winixd/core/compress.h
./init.o: ../../../../winix/winixd/core/plugin.h
./init.o: ../../../../winix/winixd/core/dirs.h
./init.o: ../../../../winix/winixd/core/dircontainer.h
./init.o: ../../../../winix/winixd/core/request.h
./init.o: ../../../../winix/winixd/core/mounts.h
./init.o: ../../../../winix/winixd/core/mount.h
./init.o: ../../../../winix/winixd/core/request.h
./init.o: ../../../../winix/winixd/core/mountparser.h
./init.o: ../../../../winix/winixd/core/crypt.h
./init.o: ../../../../winix/winixd/core/run.h
./init.o: ../../../../winix/winixd/core/users.h
./init.o: ../../../../winix/winixd/core/ugcontainer.h
./init.o: ../../../../winix/winixd/core/lastcontainer.h
./init.o: ../../../../winix/winixd/core/cur.h
./init.o: ../../../../winix/winixd/core/session.h
./init.o: ../../../../winix/winixd/core/rebus.h
./init.o: ../../../../winix/winixd/core/ipban.h
./init.o: ../../../../winix/winixd/core/groups.h
./init.o: ../../../../winix/winixd/core/loadavg.h
./init.o: ../../../../winix/winixd/core/image.h
./init.o: ../../../../winix/winixd/core/threadmanager.h
./init.o: ../../../../winix/winixd/models/winixmodelconnector.h
./init.o: ../../../../winix/winixd/notify/notify.h
./init.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./init.o: ../../../../winix/winixd/notify/notifypool.h
@ -453,15 +436,34 @@
./init.o: ../../../../winix/winixd/core/basethread.h
./init.o: ../../../../winix/winixd/notify/templatesnotify.h
./init.o: ../../../../winix/winixd/core/users.h
./init.o: ../../../../winix/winixd/core/timezones.h
./init.o: ../../../../winix/winixd/core/timezone.h
./init.o: ../../../../winix/winixd/core/ugcontainer.h
./init.o: ../../../../winix/winixd/core/lastcontainer.h
./init.o: ../../../../winix/winixd/core/cur.h
./init.o: ../../../../winix/winixd/core/session.h
./init.o: ../../../../winix/winixd/core/rebus.h
./init.o: ../../../../winix/winixd/core/ipban.h
./init.o: ../../../../winix/winixd/core/winixrequest.h
./init.o: ../../../../winix/winixd/core/winixsystem.h
./init.o: ../../../../winix/winixd/core/system.h
./init.o: ../../../../winix/winixd/core/job.h
./init.o: ../../../../winix/winixd/core/basethread.h
./init.o: ../../../../winix/winixd/core/jobtask.h
./init.o: ../../../../winix/winixd/core/loadavg.h
./init.o: ../../../../winix/winixd/core/dirs.h
./init.o: ../../../../winix/winixd/core/dircontainer.h
./init.o: ../../../../winix/winixd/core/crypt.h
./init.o: ../../../../winix/winixd/core/run.h
./init.o: ../../../../winix/winixd/core/users.h
./init.o: ../../../../winix/winixd/core/groups.h
./init.o: ../../../../winix/winixd/core/image.h
./init.o: ../../../../winix/winixd/core/threadmanager.h
./init.o: ../../../../winix/winixd/models/winixmodelconnector.h
./init.o: ../../../../winix/winixd/core/timezones.h
./init.o: ../../../../winix/winixd/core/timezone.h
./init.o: ../../../../winix/winixd/core/cur.h
./init.o: ../../../../winix/winixd/core/sessionmanager.h
./init.o: ../../../../winix/winixd/core/sessioncontainer.h
./init.o: ../../../../winix/winixd/core/ipbancontainer.h
./init.o: ../../../../winix/winixd/core/system.h
./init.o: ../../../../winix/winixd/core/sessionidmanager.h
./init.o: ../../../../tito/src/base64.h ../../../../tito/src/aes.h
./init.o: ../../../../winix/winixd/core/slog.h registermail_info.h
@ -609,13 +611,21 @@
./templates.o: ../../../../winix/winixd/core/system.h
./templates.o: ../../../../winix/winixd/core/job.h
./templates.o: ../../../../winix/winixd/core/basethread.h
./templates.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./templates.o: ../../../../winix/winixd/core/jobtask.h
./templates.o: ../../../../winix/winixd/core/request.h
./templates.o: ../../../../winix/winixd/core/error.h
./templates.o: ../../../../winix/winixd/core/config.h
./templates.o: ../../../../winix/winixd/core/textstream.h
./templates.o: ../../../../winix/winixd/models/winixmodel.h
./templates.o: ../../../../winix/winixd/core/header.h
./templates.o: ../../../../winix/winixd/core/compress.h
./templates.o: ../../../../winix/winixd/core/winixbase.h
./templates.o: ../../../../winix/winixd/core/plugin.h
./templates.o: ../../../../winix/winixd/core/pluginmsg.h
./templates.o: ../../../../winix/winixd/core/plugindata.h
./templates.o: ../../../../winix/winixd/core/winixbase.h
./templates.o: ../../../../winix/winixd/core/dirs.h
./templates.o: ../../../../winix/winixd/core/dircontainer.h
./templates.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./templates.o: ../../../../winix/winixd/core/mount.h
./templates.o: ../../../../winix/winixd/core/mounts.h
./templates.o: ../../../../winix/winixd/db/db.h
./templates.o: ../../../../winix/winixd/db/dbbase.h
./templates.o: ../../../../winix/winixd/db/dbconn.h
@ -627,24 +637,19 @@
./templates.o: ../../../../winix/winixd/core/dircontainer.h
./templates.o: ../../../../winix/winixd/core/ugcontainer.h
./templates.o: ../../../../winix/winixd/core/request.h
./templates.o: ../../../../winix/winixd/core/mounts.h
./templates.o: ../../../../winix/winixd/core/mount.h
./templates.o: ../../../../winix/winixd/core/error.h
./templates.o: ../../../../winix/winixd/core/mountparser.h
./templates.o: ../../../../winix/winixd/core/config.h
./templates.o: ../../../../winix/winixd/core/crypt.h
./templates.o: ../../../../winix/winixd/core/run.h
./templates.o: ../../../../winix/winixd/core/users.h
./templates.o: ../../../../winix/winixd/core/ugcontainer.h
./templates.o: ../../../../winix/winixd/core/lastcontainer.h
./templates.o: ../../../../winix/winixd/core/cur.h
./templates.o: ../../../../winix/winixd/core/session.h
./templates.o: ../../../../winix/winixd/core/rebus.h
./templates.o: ../../../../winix/winixd/core/textstream.h
./templates.o: ../../../../winix/winixd/core/ipban.h
./templates.o: ../../../../winix/winixd/models/winixmodel.h
./templates.o: ../../../../winix/winixd/core/groups.h
./templates.o: ../../../../winix/winixd/core/loadavg.h
./templates.o: ../../../../winix/winixd/core/dirs.h
./templates.o: ../../../../winix/winixd/core/dircontainer.h
./templates.o: ../../../../winix/winixd/core/crypt.h
./templates.o: ../../../../winix/winixd/core/run.h
./templates.o: ../../../../winix/winixd/core/users.h
./templates.o: ../../../../winix/winixd/core/groups.h
./templates.o: ../../../../winix/winixd/core/ugcontainer.h
./templates.o: ../../../../winix/winixd/core/image.h
./templates.o: ../../../../winix/winixd/core/threadmanager.h
./templates.o: ../../../../winix/winixd/models/winixmodelconnector.h
@ -657,12 +662,12 @@
./templates.o: ../../../../winix/winixd/core/basethread.h
./templates.o: ../../../../winix/winixd/notify/templatesnotify.h
./templates.o: ../../../../winix/winixd/core/users.h
./templates.o: ../../../../winix/winixd/core/lastcontainer.h
./templates.o: ../../../../winix/winixd/core/timezones.h
./templates.o: ../../../../winix/winixd/core/timezone.h
./templates.o: ../../../../winix/winixd/core/sessionmanager.h
./templates.o: ../../../../winix/winixd/core/sessioncontainer.h
./templates.o: ../../../../winix/winixd/core/ipbancontainer.h
./templates.o: ../../../../winix/winixd/core/system.h
./templates.o: ../../../../winix/winixd/core/sessionidmanager.h
./templates.o: ../../../../tito/src/base64.h ../../../../tito/src/aes.h
./templates.o: ../../../../pikotools/src/html/htmlparser.h

View File

@ -92,10 +92,14 @@
./cache.o: ../../../../winix/winixd/core/textstream.h
./cache.o: ../../../../winix/winixd/models/winixmodel.h
./cache.o: ../../../../winix/winixd/core/header.h
./cache.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./cache.o: ../../../../winix/winixd/core/compress.h
./cache.o: ../../../../winix/winixd/core/plugin.h
./cache.o: ../../../../winix/winixd/core/pluginmsg.h
./cache.o: ../../../../winix/winixd/core/plugindata.h
./cache.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./cache.o: ../../../../winix/winixd/core/mount.h
./cache.o: ../../../../winix/winixd/core/mounts.h
./cache.o: ../../../../winix/winixd/core/mountparser.h
./cache.o: ../../../../winix/winixd/core/misc.h
./cache.o: ../../../../winix/winixd/core/winix_const.h
./cache.o: ../../../../pikotools/src/convert/convert.h
@ -106,32 +110,27 @@
./init.o: ../../../../winix/winixd/core/plugin.h
./init.o: ../../../../winix/winixd/core/pluginmsg.h
./init.o: ../../../../winix/winixd/core/plugindata.h
./init.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./init.o: ../../../../winix/winixd/core/winixbase.h
./init.o: ../../../../winix/winixd/core/config.h
./init.o: ../../../../pikotools/src/space/spaceparser.h
./init.o: ../../../../pikotools/src/space/space.h
./init.o: ../../../../pikotools/src/textstream/types.h
./init.o: ../../../../pikotools/src/convert/inttostr.h
./init.o: ../../../../pikotools/src/utf8/utf8.h
./init.o: ../../../../pikotools/src/textstream/stream.h
./init.o: ../../../../pikotools/src/utf8/utf8_templates.h
./init.o: ../../../../pikotools/src/utf8/utf8_private.h
./init.o: ../../../../pikotools/src/convert/baseparser.h
./init.o: ../../../../morm/src/morm.h ../../../../morm/src/version.h
./init.o: ../../../../morm/src/morm_types.h ../../../../morm/src/model.h
./init.o: ../../../../pikotools/src/textstream/textstream.h
./init.o: ../../../../pikotools/src/textstream/stream.h
./init.o: ../../../../pikotools/src/space/space.h
./init.o: ../../../../pikotools/src/date/date.h
./init.o: ../../../../pikotools/src/convert/inttostr.h
./init.o: ../../../../pikotools/src/membuffer/membuffer.h
./init.o: ../../../../pikotools/src/textstream/types.h
./init.o: ../../../../pikotools/src/utf8/utf8.h
./init.o: ../../../../pikotools/src/textstream/stream.h
./init.o: ../../../../pikotools/src/utf8/utf8_templates.h
./init.o: ../../../../pikotools/src/utf8/utf8_private.h
./init.o: ../../../../pikotools/src/utf8/utf8_stream.h
./init.o: ../../../../winix/winixd/core/log.h
./init.o: ../../../../winix/winixd/core/logmanipulators.h
./init.o: ../../../../pikotools/src/log/log.h
./init.o: ../../../../pikotools/src/log/filelog.h ../../../../morm/src/morm.h
./init.o: ../../../../morm/src/version.h ../../../../morm/src/morm_types.h
./init.o: ../../../../morm/src/model.h ../../../../morm/src/modelconnector.h
./init.o: ../../../../morm/src/modelconnector.h
./init.o: ../../../../morm/src/clearer.h ../../../../morm/src/ft.h
./init.o: ../../../../morm/src/dbconnector.h
./init.o: ../../../../pikotools/src/log/log.h
./init.o: ../../../../pikotools/src/log/filelog.h
./init.o: ../../../../morm/src/queryresult.h
./init.o: ../../../../morm/src/flatconnector.h
./init.o: ../../../../morm/src/dbexpression.h
@ -152,12 +151,21 @@
./init.o: ../../../../morm/src/postgresqlconnector.h
./init.o: ../../../../morm/src/postgresqlqueryresult.h
./init.o: ../../../../morm/src/transaction.h
./init.o: ../../../../winix/winixd/core/mount.h cache.h
./init.o: ../../../../winix/winixd/core/dirs.h
./init.o: ../../../../winix/winixd/core/dircontainer.h
./init.o: ../../../../winix/winixd/core/winixbase.h
./init.o: ../../../../winix/winixd/core/config.h
./init.o: ../../../../pikotools/src/space/spaceparser.h
./init.o: ../../../../pikotools/src/space/space.h
./init.o: ../../../../pikotools/src/textstream/types.h
./init.o: ../../../../pikotools/src/convert/baseparser.h
./init.o: ../../../../winix/winixd/core/log.h
./init.o: ../../../../winix/winixd/core/logmanipulators.h
./init.o: ../../../../winix/winixd/core/synchro.h
./init.o: ../../../../winix/winixd/core/filelog.h
./init.o: ../../../../winix/winixd/core/lock.h
./init.o: ../../../../winix/winixd/core/synchro.h cache.h
./init.o: ../../../../winix/winixd/core/dirs.h
./init.o: ../../../../winix/winixd/core/dircontainer.h
./init.o: ../../../../winix/winixd/core/synchro.h
./init.o: ../../../../winix/winixd/models/item.h
./init.o: ../../../../winix/winixd/models/winixmodel.h
./init.o: ../../../../winix/winixd/models/winixmodelconnector.h
@ -166,7 +174,6 @@
./init.o: ../../../../winix/winixd/templates/misc.h
./init.o: ../../../../winix/winixd/templates/localefilter.h
./init.o: ../../../../winix/winixd/templates/locale.h
./init.o: ../../../../winix/winixd/core/winixbase.h
./init.o: ../../../../pikotools/src/convert/patternreplacer.h
./init.o: ../../../../pikotools/src/convert/strtoint.h
./init.o: ../../../../pikotools/src/convert/text.h
@ -194,8 +201,10 @@
./init.o: ../../../../winix/winixd/core/textstream.h
./init.o: ../../../../winix/winixd/models/winixmodel.h
./init.o: ../../../../winix/winixd/core/header.h
./init.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./init.o: ../../../../winix/winixd/core/compress.h
./init.o: ../../../../winix/winixd/core/plugin.h
./init.o: ../../../../winix/winixd/core/mounts.h
./init.o: ../../../../winix/winixd/core/mountparser.h
./init.o: ../../../../winix/winixd/templates/templates.h
./init.o: ../../../../winix/winixd/templates/patterncacher.h
./init.o: ../../../../winix/winixd/templates/indexpatterns.h
@ -205,21 +214,20 @@
./init.o: ../../../../winix/winixd/core/session.h
./init.o: ../../../../winix/winixd/core/rebus.h
./init.o: ../../../../winix/winixd/core/ipban.h
./init.o: ../../../../winix/winixd/core/mount.h
./init.o: ../../../../winix/winixd/core/system.h
./init.o: ../../../../winix/winixd/core/job.h
./init.o: ../../../../winix/winixd/core/basethread.h
./init.o: ../../../../winix/winixd/core/jobtask.h
./init.o: ../../../../winix/winixd/core/request.h
./init.o: ../../../../winix/winixd/core/cur.h
./init.o: ../../../../winix/winixd/core/loadavg.h
./init.o: ../../../../winix/winixd/core/dirs.h
./init.o: ../../../../winix/winixd/core/mounts.h
./init.o: ../../../../winix/winixd/core/mountparser.h
./init.o: ../../../../winix/winixd/core/crypt.h
./init.o: ../../../../winix/winixd/core/run.h
./init.o: ../../../../winix/winixd/core/users.h
./init.o: ../../../../winix/winixd/core/ugcontainer.h
./init.o: ../../../../winix/winixd/core/lastcontainer.h
./init.o: ../../../../winix/winixd/core/cur.h
./init.o: ../../../../winix/winixd/core/groups.h
./init.o: ../../../../winix/winixd/core/loadavg.h
./init.o: ../../../../winix/winixd/core/image.h
./init.o: ../../../../winix/winixd/core/threadmanager.h
./init.o: ../../../../winix/winixd/models/winixmodelconnector.h
@ -237,7 +245,6 @@
./init.o: ../../../../winix/winixd/core/sessionmanager.h
./init.o: ../../../../winix/winixd/core/sessioncontainer.h
./init.o: ../../../../winix/winixd/core/ipbancontainer.h
./init.o: ../../../../winix/winixd/core/system.h
./init.o: ../../../../winix/winixd/core/sessionidmanager.h
./init.o: ../../../../tito/src/base64.h ../../../../tito/src/aes.h
./init.o: ../../../../pikotools/src/html/htmlparser.h
@ -246,7 +253,6 @@
./init.o: ../../../../winix/winixd/core/slog.h
./init.o: ../../../../winix/winixd/functions/functions.h
./init.o: ../../../../winix/winixd/functions/functionbase.h
./init.o: ../../../../winix/winixd/core/request.h
./init.o: ../../../../winix/winixd/functions/functionparser.h
./init.o: ../../../../winix/winixd/functions/account.h
./init.o: ../../../../winix/winixd/functions/adduser.h
@ -384,10 +390,14 @@
./templates.o: ../../../../ezc/src/outstreams.h ../../../../ezc/src/models.h
./templates.o: ../../../../winix/winixd/models/winixmodel.h
./templates.o: ../../../../winix/winixd/core/header.h
./templates.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./templates.o: ../../../../winix/winixd/core/compress.h
./templates.o: ../../../../winix/winixd/core/plugin.h
./templates.o: ../../../../winix/winixd/core/pluginmsg.h
./templates.o: ../../../../winix/winixd/core/plugindata.h
./templates.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./templates.o: ../../../../winix/winixd/core/mount.h
./templates.o: ../../../../winix/winixd/core/mounts.h
./templates.o: ../../../../winix/winixd/core/mountparser.h
./templates.o: ../../../../ezc/src/pattern.h ../../../../ezc/src/functions.h
./templates.o: ../../../../ezc/src/objects.h
./templates.o: ../../../../ezc/src/expressionparser.h
@ -400,21 +410,20 @@
./templates.o: ../../../../winix/winixd/core/session.h
./templates.o: ../../../../winix/winixd/core/rebus.h
./templates.o: ../../../../winix/winixd/core/ipban.h
./templates.o: ../../../../winix/winixd/core/mount.h
./templates.o: ../../../../winix/winixd/core/system.h
./templates.o: ../../../../winix/winixd/core/job.h
./templates.o: ../../../../winix/winixd/core/basethread.h
./templates.o: ../../../../winix/winixd/core/jobtask.h
./templates.o: ../../../../winix/winixd/core/request.h
./templates.o: ../../../../winix/winixd/core/cur.h
./templates.o: ../../../../winix/winixd/core/loadavg.h
./templates.o: ../../../../winix/winixd/core/dirs.h
./templates.o: ../../../../winix/winixd/core/mounts.h
./templates.o: ../../../../winix/winixd/core/mountparser.h
./templates.o: ../../../../winix/winixd/core/crypt.h
./templates.o: ../../../../winix/winixd/core/run.h
./templates.o: ../../../../winix/winixd/core/users.h
./templates.o: ../../../../winix/winixd/core/ugcontainer.h
./templates.o: ../../../../winix/winixd/core/lastcontainer.h
./templates.o: ../../../../winix/winixd/core/cur.h
./templates.o: ../../../../winix/winixd/core/groups.h
./templates.o: ../../../../winix/winixd/core/loadavg.h
./templates.o: ../../../../winix/winixd/core/image.h
./templates.o: ../../../../winix/winixd/core/threadmanager.h
./templates.o: ../../../../winix/winixd/models/winixmodelconnector.h
@ -432,7 +441,6 @@
./templates.o: ../../../../winix/winixd/core/sessionmanager.h
./templates.o: ../../../../winix/winixd/core/sessioncontainer.h
./templates.o: ../../../../winix/winixd/core/ipbancontainer.h
./templates.o: ../../../../winix/winixd/core/system.h
./templates.o: ../../../../winix/winixd/core/sessionidmanager.h
./templates.o: ../../../../tito/src/base64.h ../../../../tito/src/aes.h
./templates.o: ../../../../pikotools/src/html/htmlparser.h

View File

@ -94,33 +94,15 @@
./init.o: ../../../../winix/winixd/core/textstream.h
./init.o: ../../../../winix/winixd/models/winixmodel.h
./init.o: ../../../../winix/winixd/core/header.h
./init.o: ../../../../winix/winixd/core/system.h
./init.o: ../../../../winix/winixd/core/job.h
./init.o: ../../../../winix/winixd/core/basethread.h
./init.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./init.o: ../../../../winix/winixd/core/compress.h
./init.o: ../../../../winix/winixd/core/plugin.h
./init.o: ../../../../winix/winixd/core/pluginmsg.h
./init.o: ../../../../winix/winixd/core/plugindata.h
./init.o: ../../../../winix/winixd/core/dirs.h
./init.o: ../../../../winix/winixd/core/dircontainer.h
./init.o: ../../../../winix/winixd/core/request.h
./init.o: ../../../../winix/winixd/core/mounts.h
./init.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./init.o: ../../../../winix/winixd/core/mount.h
./init.o: ../../../../winix/winixd/core/mounts.h
./init.o: ../../../../winix/winixd/core/request.h
./init.o: ../../../../winix/winixd/core/mountparser.h
./init.o: ../../../../winix/winixd/core/crypt.h
./init.o: ../../../../winix/winixd/core/run.h
./init.o: ../../../../winix/winixd/core/users.h
./init.o: ../../../../winix/winixd/core/ugcontainer.h
./init.o: ../../../../winix/winixd/core/lastcontainer.h
./init.o: ../../../../winix/winixd/core/cur.h
./init.o: ../../../../winix/winixd/core/session.h
./init.o: ../../../../winix/winixd/core/rebus.h
./init.o: ../../../../winix/winixd/core/ipban.h
./init.o: ../../../../winix/winixd/core/groups.h
./init.o: ../../../../winix/winixd/core/loadavg.h
./init.o: ../../../../winix/winixd/core/image.h
./init.o: ../../../../winix/winixd/core/threadmanager.h
./init.o: ../../../../winix/winixd/models/winixmodelconnector.h
./init.o: ../../../../winix/winixd/notify/notify.h
./init.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./init.o: ../../../../winix/winixd/notify/notifypool.h
@ -130,21 +112,41 @@
./init.o: ../../../../winix/winixd/core/basethread.h
./init.o: ../../../../winix/winixd/notify/templatesnotify.h
./init.o: ../../../../winix/winixd/core/users.h
./init.o: ../../../../winix/winixd/core/timezones.h
./init.o: ../../../../winix/winixd/core/timezone.h
./init.o: ../../../../winix/winixd/core/ugcontainer.h
./init.o: ../../../../winix/winixd/core/lastcontainer.h
./init.o: ../../../../winix/winixd/core/cur.h
./init.o: ../../../../winix/winixd/core/session.h
./init.o: ../../../../winix/winixd/core/rebus.h
./init.o: ../../../../winix/winixd/core/ipban.h
./init.o: ../../../../winix/winixd/core/winixrequest.h
./init.o: ../../../../winix/winixd/core/winixsystem.h
./init.o: ../../../../winix/winixd/core/system.h
./init.o: ../../../../winix/winixd/core/job.h
./init.o: ../../../../winix/winixd/core/basethread.h
./init.o: ../../../../winix/winixd/core/jobtask.h
./init.o: ../../../../winix/winixd/core/loadavg.h
./init.o: ../../../../winix/winixd/core/dirs.h
./init.o: ../../../../winix/winixd/core/dircontainer.h
./init.o: ../../../../winix/winixd/core/crypt.h
./init.o: ../../../../winix/winixd/core/run.h
./init.o: ../../../../winix/winixd/core/users.h
./init.o: ../../../../winix/winixd/core/groups.h
./init.o: ../../../../winix/winixd/core/image.h
./init.o: ../../../../winix/winixd/core/threadmanager.h
./init.o: ../../../../winix/winixd/models/winixmodelconnector.h
./init.o: ../../../../winix/winixd/core/timezones.h
./init.o: ../../../../winix/winixd/core/timezone.h
./init.o: ../../../../winix/winixd/core/cur.h
./init.o: ../../../../winix/winixd/core/sessionmanager.h
./init.o: ../../../../winix/winixd/core/sessioncontainer.h
./init.o: ../../../../winix/winixd/core/ipbancontainer.h
./init.o: ../../../../winix/winixd/core/system.h
./init.o: ../../../../winix/winixd/core/sessionidmanager.h
./init.o: ../../../../tito/src/base64.h ../../../../tito/src/aes.h
./init.o: ../../../../winix/winixd/core/slog.h
./init.o: ../../../../winix/winixd/functions/functions.h
./init.o: ../../../../winix/winixd/functions/functionbase.h
./init.o: ../../../../winix/winixd/functions/functionparser.h
./init.o: ../../../../winix/winixd/core/dirs.h
./init.o: ../../../../winix/winixd/functions/account.h
./init.o: ../../../../winix/winixd/functions/adduser.h
./init.o: ../../../../winix/winixd/functions/cat.h
@ -283,33 +285,15 @@
./seo.o: ../../../../winix/winixd/core/textstream.h
./seo.o: ../../../../winix/winixd/models/winixmodel.h
./seo.o: ../../../../winix/winixd/core/header.h
./seo.o: ../../../../winix/winixd/core/system.h
./seo.o: ../../../../winix/winixd/core/job.h
./seo.o: ../../../../winix/winixd/core/basethread.h
./seo.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./seo.o: ../../../../winix/winixd/core/compress.h
./seo.o: ../../../../winix/winixd/core/plugin.h
./seo.o: ../../../../winix/winixd/core/pluginmsg.h
./seo.o: ../../../../winix/winixd/core/plugindata.h
./seo.o: ../../../../winix/winixd/core/dirs.h
./seo.o: ../../../../winix/winixd/core/dircontainer.h
./seo.o: ../../../../winix/winixd/core/request.h
./seo.o: ../../../../winix/winixd/core/mounts.h
./seo.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./seo.o: ../../../../winix/winixd/core/mount.h
./seo.o: ../../../../winix/winixd/core/mounts.h
./seo.o: ../../../../winix/winixd/core/request.h
./seo.o: ../../../../winix/winixd/core/mountparser.h
./seo.o: ../../../../winix/winixd/core/crypt.h
./seo.o: ../../../../winix/winixd/core/run.h
./seo.o: ../../../../winix/winixd/core/users.h
./seo.o: ../../../../winix/winixd/core/ugcontainer.h
./seo.o: ../../../../winix/winixd/core/lastcontainer.h
./seo.o: ../../../../winix/winixd/core/cur.h
./seo.o: ../../../../winix/winixd/core/session.h
./seo.o: ../../../../winix/winixd/core/rebus.h
./seo.o: ../../../../winix/winixd/core/ipban.h
./seo.o: ../../../../winix/winixd/core/groups.h
./seo.o: ../../../../winix/winixd/core/loadavg.h
./seo.o: ../../../../winix/winixd/core/image.h
./seo.o: ../../../../winix/winixd/core/threadmanager.h
./seo.o: ../../../../winix/winixd/models/winixmodelconnector.h
./seo.o: ../../../../winix/winixd/notify/notify.h
./seo.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./seo.o: ../../../../winix/winixd/notify/notifypool.h
@ -319,21 +303,41 @@
./seo.o: ../../../../winix/winixd/core/basethread.h
./seo.o: ../../../../winix/winixd/notify/templatesnotify.h
./seo.o: ../../../../winix/winixd/core/users.h
./seo.o: ../../../../winix/winixd/core/timezones.h
./seo.o: ../../../../winix/winixd/core/timezone.h
./seo.o: ../../../../winix/winixd/core/ugcontainer.h
./seo.o: ../../../../winix/winixd/core/lastcontainer.h
./seo.o: ../../../../winix/winixd/core/cur.h
./seo.o: ../../../../winix/winixd/core/session.h
./seo.o: ../../../../winix/winixd/core/rebus.h
./seo.o: ../../../../winix/winixd/core/ipban.h
./seo.o: ../../../../winix/winixd/core/winixrequest.h
./seo.o: ../../../../winix/winixd/core/winixsystem.h
./seo.o: ../../../../winix/winixd/core/system.h
./seo.o: ../../../../winix/winixd/core/job.h
./seo.o: ../../../../winix/winixd/core/basethread.h
./seo.o: ../../../../winix/winixd/core/jobtask.h
./seo.o: ../../../../winix/winixd/core/loadavg.h
./seo.o: ../../../../winix/winixd/core/dirs.h
./seo.o: ../../../../winix/winixd/core/dircontainer.h
./seo.o: ../../../../winix/winixd/core/crypt.h
./seo.o: ../../../../winix/winixd/core/run.h
./seo.o: ../../../../winix/winixd/core/users.h
./seo.o: ../../../../winix/winixd/core/groups.h
./seo.o: ../../../../winix/winixd/core/image.h
./seo.o: ../../../../winix/winixd/core/threadmanager.h
./seo.o: ../../../../winix/winixd/models/winixmodelconnector.h
./seo.o: ../../../../winix/winixd/core/timezones.h
./seo.o: ../../../../winix/winixd/core/timezone.h
./seo.o: ../../../../winix/winixd/core/cur.h
./seo.o: ../../../../winix/winixd/core/sessionmanager.h
./seo.o: ../../../../winix/winixd/core/sessioncontainer.h
./seo.o: ../../../../winix/winixd/core/ipbancontainer.h
./seo.o: ../../../../winix/winixd/core/system.h
./seo.o: ../../../../winix/winixd/core/sessionidmanager.h
./seo.o: ../../../../tito/src/base64.h ../../../../tito/src/aes.h
./seo.o: ../../../../winix/winixd/core/slog.h
./seo.o: ../../../../winix/winixd/functions/functions.h
./seo.o: ../../../../winix/winixd/functions/functionbase.h
./seo.o: ../../../../winix/winixd/functions/functionparser.h
./seo.o: ../../../../winix/winixd/core/dirs.h
./seo.o: ../../../../winix/winixd/functions/account.h
./seo.o: ../../../../winix/winixd/functions/adduser.h
./seo.o: ../../../../winix/winixd/functions/cat.h

View File

@ -78,6 +78,14 @@
./init.o: ../../../../winix/winixd/core/textstream.h
./init.o: ../../../../winix/winixd/models/winixmodel.h
./init.o: ../../../../winix/winixd/core/header.h
./init.o: ../../../../winix/winixd/core/compress.h
./init.o: ../../../../winix/winixd/core/winixbase.h
./init.o: ../../../../winix/winixd/core/plugin.h
./init.o: ../../../../winix/winixd/core/pluginmsg.h
./init.o: ../../../../winix/winixd/core/plugindata.h
./init.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./init.o: ../../../../winix/winixd/core/mount.h
./init.o: ../../../../winix/winixd/core/mounts.h
./init.o: ../../../../winix/winixd/db/db.h
./init.o: ../../../../winix/winixd/db/dbbase.h
./init.o: ../../../../winix/winixd/db/dbconn.h
@ -87,18 +95,14 @@
./init.o: ../../../../winix/winixd/models/user.h
./init.o: ../../../../winix/winixd/models/group.h
./init.o: ../../../../winix/winixd/core/dircontainer.h
./init.o: ../../../../winix/winixd/core/winixbase.h
./init.o: ../../../../winix/winixd/core/ugcontainer.h
./init.o: ../../../../winix/winixd/core/cur.h
./init.o: ../../../../winix/winixd/core/request.h
./init.o: ../../../../winix/winixd/core/mountparser.h
./init.o: ../../../../winix/winixd/core/cur.h
./init.o: ../../../../winix/winixd/core/session.h
./init.o: ../../../../winix/winixd/core/plugindata.h
./init.o: ../../../../winix/winixd/core/rebus.h
./init.o: ../../../../winix/winixd/core/ipban.h
./init.o: ../../../../winix/winixd/core/mount.h bot.h stats.h
./init.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./init.o: ../../../../winix/winixd/core/plugin.h
./init.o: ../../../../winix/winixd/core/pluginmsg.h templates.h
./init.o: ../../../../winix/winixd/core/ipban.h bot.h stats.h
./init.o: ../../../../winix/winixd/core/winixmodeldeprecated.h templates.h
./init.o: ../../../../winix/winixd/core/plugin.h statssession.h
./init.o: ../../../../winix/winixd/core/plugindata.h
./stats.o: stats.h ../../../../winix/winixd/core/config.h
@ -121,7 +125,6 @@
./stats.o: ../../../../winix/winixd/core/log.h
./stats.o: ../../../../pikotools/src/log/filelog.h
./stats.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./stats.o: ../../../../winix/winixd/core/winixbase.h
./stats.o: ../../../../winix/winixd/core/log.h
./stats.o: ../../../../winix/winixd/core/logmanipulators.h
./stats.o: ../../../../pikotools/src/log/log.h ../../../../morm/src/morm.h
@ -151,14 +154,6 @@
./stats.o: ../../../../morm/src/postgresqlconnector.h
./stats.o: ../../../../morm/src/postgresqlqueryresult.h
./stats.o: ../../../../morm/src/transaction.h
./stats.o: ../../../../winix/winixd/core/synchro.h
./stats.o: ../../../../winix/winixd/core/filelog.h
./stats.o: ../../../../winix/winixd/core/lock.h
./stats.o: ../../../../winix/winixd/core/synchro.h
./stats.o: ../../../../winix/winixd/core/plugin.h
./stats.o: ../../../../winix/winixd/core/pluginmsg.h
./stats.o: ../../../../winix/winixd/core/plugindata.h
./stats.o: ../../../../winix/winixd/core/winixbase.h
./templates.o: templates.h ../../../../winix/winixd/core/plugin.h
./templates.o: ../../../../ezc/src/ezc.h ../../../../morm/src/version.h
./templates.o: ../../../../ezc/src/generator.h ../../../../ezc/src/blocks.h
@ -220,6 +215,9 @@
./templates.o: ../../../../pikotools/src/convert/baseparser.h
./templates.o: ../../../../winix/winixd/core/log.h
./templates.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./templates.o: ../../../../winix/winixd/templates/misc.h
./templates.o: ../../../../winix/winixd/templates/localefilter.h
./templates.o: ../../../../winix/winixd/templates/locale.h
./templates.o: ../../../../winix/winixd/core/winixbase.h
./templates.o: ../../../../winix/winixd/core/log.h
./templates.o: ../../../../winix/winixd/core/logmanipulators.h
@ -235,12 +233,5 @@
./templates.o: ../../../../winix/winixd/core/filelog.h
./templates.o: ../../../../winix/winixd/core/lock.h
./templates.o: ../../../../winix/winixd/core/synchro.h
./templates.o: ../../../../winix/winixd/core/plugin.h
./templates.o: ../../../../winix/winixd/core/pluginmsg.h
./templates.o: ../../../../winix/winixd/core/plugindata.h
./templates.o: ../../../../winix/winixd/core/winixbase.h
./templates.o: ../../../../winix/winixd/templates/misc.h
./templates.o: ../../../../winix/winixd/templates/localefilter.h
./templates.o: ../../../../winix/winixd/templates/locale.h
./templates.o: ../../../../pikotools/src/convert/patternreplacer.h
./templates.o: ../../../../winix/winixd/templates/htmltextstream.h

View File

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2010-2018, Tomasz Sowa
* Copyright (c) 2010-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -149,16 +149,19 @@ StatsSession * stats_session = 0;
void SessionCreated(PluginInfo & info)
void SessionCreated(PluginInfo & env)
{
StatsSession * d = new StatsSession();
info.session->plugin_data.Assign(info.plugin->current_plugin, d);
if( !info.cur->request->IsParam(nostat_param) )
if( env.cur->session )
{
info.log << log4 << "Stats: created stats plugin data"
<< ", plugin id: " << info.plugin_id
<< ", pointer: " << d << logend;
StatsSession * d = new StatsSession();
env.cur->session->plugin_data.Assign(env.plugin->current_plugin, d);
if( !env.cur->request->IsParam(nostat_param) )
{
env.log << log4 << "Stats: created stats plugin data"
<< ", plugin id: " << env.plugin_id
<< ", pointer: " << d << logend;
}
}
}
@ -170,7 +173,11 @@ void RemoveSession(PluginInfo & info)
{
// temporarily for debug
// sometimes the pointer is null here
info.log << log1 << "Stats: why the info.plugin_data_base is zero? !!!!, ses_id: " << info.session->id << logend;
if( info.cur->session )
{
info.log << log1 << "Stats: why the info.plugin_data_base is zero? !!!!, ses_id: " << info.cur->session->id << logend;
}
return;
}
@ -230,11 +237,12 @@ using namespace Stats;
info.plugin->Assign(WINIX_CONTENT_MAKE, ContentMake);
info.plugin->Assign(WINIX_SESSION_CREATED, SessionCreated);
info.plugin->Assign(WINIX_PLUGIN_SESSION_DATA_REMOVE, RemoveSession);
info.plugin->Assign(WINIX_PREPARE_TO_CLOSE, Close);
info.plugin->Assign(WINIX_PREPARE_TO_CLOSE, Close);
info.plugin->Assign(WINIX_FILE_REMOVED, RemoveFile);
info.plugin->Assign(WINIX_DIR_PREPARE_TO_REMOVE, RemoveDir);
info.set_dependency_for(stats);
stats.set_dependency((WinixModelDeprecated*)info.functions);
stats.ReadConfig(info.config);
stats.ReadStats();

View File

@ -103,32 +103,14 @@
./createthread.o: ../../../../winix/winixd/core/textstream.h
./createthread.o: ../../../../winix/winixd/models/winixmodel.h
./createthread.o: ../../../../winix/winixd/core/header.h
./createthread.o: ../../../../winix/winixd/core/system.h
./createthread.o: ../../../../winix/winixd/core/job.h
./createthread.o: ../../../../winix/winixd/core/basethread.h
./createthread.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./createthread.o: ../../../../winix/winixd/core/compress.h
./createthread.o: ../../../../winix/winixd/core/plugin.h pluginmsg.h
./createthread.o: ../../../../winix/winixd/core/plugindata.h
./createthread.o: ../../../../winix/winixd/core/dirs.h
./createthread.o: ../../../../winix/winixd/core/dircontainer.h
./createthread.o: ../../../../winix/winixd/core/request.h
./createthread.o: ../../../../winix/winixd/core/mounts.h
./createthread.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./createthread.o: ../../../../winix/winixd/core/mount.h
./createthread.o: ../../../../winix/winixd/core/mounts.h
./createthread.o: ../../../../winix/winixd/core/request.h
./createthread.o: ../../../../winix/winixd/core/mountparser.h
./createthread.o: ../../../../winix/winixd/core/crypt.h
./createthread.o: ../../../../winix/winixd/core/run.h
./createthread.o: ../../../../winix/winixd/core/users.h
./createthread.o: ../../../../winix/winixd/core/ugcontainer.h
./createthread.o: ../../../../winix/winixd/core/lastcontainer.h
./createthread.o: ../../../../winix/winixd/core/cur.h
./createthread.o: ../../../../winix/winixd/core/session.h
./createthread.o: ../../../../winix/winixd/core/rebus.h
./createthread.o: ../../../../winix/winixd/core/ipban.h
./createthread.o: ../../../../winix/winixd/core/groups.h
./createthread.o: ../../../../winix/winixd/core/loadavg.h
./createthread.o: ../../../../winix/winixd/core/image.h
./createthread.o: ../../../../winix/winixd/core/threadmanager.h
./createthread.o: ../../../../winix/winixd/models/winixmodelconnector.h
./createthread.o: ../../../../winix/winixd/notify/notify.h
./createthread.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./createthread.o: ../../../../winix/winixd/notify/notifypool.h
@ -138,15 +120,34 @@
./createthread.o: ../../../../winix/winixd/core/basethread.h
./createthread.o: ../../../../winix/winixd/notify/templatesnotify.h
./createthread.o: ../../../../winix/winixd/core/users.h
./createthread.o: ../../../../winix/winixd/core/timezones.h
./createthread.o: ../../../../winix/winixd/core/timezone.h
./createthread.o: ../../../../winix/winixd/core/ugcontainer.h
./createthread.o: ../../../../winix/winixd/core/lastcontainer.h
./createthread.o: ../../../../winix/winixd/core/cur.h
./createthread.o: ../../../../winix/winixd/core/session.h
./createthread.o: ../../../../winix/winixd/core/rebus.h
./createthread.o: ../../../../winix/winixd/core/ipban.h
./createthread.o: ../../../../winix/winixd/core/winixrequest.h
./createthread.o: ../../../../winix/winixd/core/winixsystem.h
./createthread.o: ../../../../winix/winixd/core/system.h
./createthread.o: ../../../../winix/winixd/core/job.h
./createthread.o: ../../../../winix/winixd/core/basethread.h
./createthread.o: ../../../../winix/winixd/core/jobtask.h
./createthread.o: ../../../../winix/winixd/core/loadavg.h
./createthread.o: ../../../../winix/winixd/core/dirs.h
./createthread.o: ../../../../winix/winixd/core/dircontainer.h
./createthread.o: ../../../../winix/winixd/core/crypt.h
./createthread.o: ../../../../winix/winixd/core/run.h
./createthread.o: ../../../../winix/winixd/core/users.h
./createthread.o: ../../../../winix/winixd/core/groups.h
./createthread.o: ../../../../winix/winixd/core/image.h
./createthread.o: ../../../../winix/winixd/core/threadmanager.h
./createthread.o: ../../../../winix/winixd/models/winixmodelconnector.h
./createthread.o: ../../../../winix/winixd/core/timezones.h
./createthread.o: ../../../../winix/winixd/core/timezone.h
./createthread.o: ../../../../winix/winixd/core/cur.h
./createthread.o: ../../../../winix/winixd/core/sessionmanager.h
./createthread.o: ../../../../winix/winixd/core/sessioncontainer.h
./createthread.o: ../../../../winix/winixd/core/ipbancontainer.h
./createthread.o: ../../../../winix/winixd/core/system.h
./createthread.o: ../../../../winix/winixd/core/sessionidmanager.h
./createthread.o: ../../../../tito/src/base64.h ../../../../tito/src/aes.h
./createthread.o: ../../../../winix/winixd/core/slog.h tdb.h thread.h
@ -154,6 +155,7 @@
./createthread.o: ../../../../winix/winixd/functions/functions.h
./createthread.o: ../../../../winix/winixd/functions/functionbase.h
./createthread.o: ../../../../winix/winixd/functions/functionparser.h
./createthread.o: ../../../../winix/winixd/core/dirs.h
./createthread.o: ../../../../winix/winixd/functions/account.h
./createthread.o: ../../../../winix/winixd/functions/adduser.h
./createthread.o: ../../../../winix/winixd/functions/cat.h
@ -299,32 +301,14 @@
./funthread.o: ../../../../winix/winixd/core/textstream.h
./funthread.o: ../../../../winix/winixd/models/winixmodel.h
./funthread.o: ../../../../winix/winixd/core/header.h
./funthread.o: ../../../../winix/winixd/core/system.h
./funthread.o: ../../../../winix/winixd/core/job.h
./funthread.o: ../../../../winix/winixd/core/basethread.h
./funthread.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./funthread.o: ../../../../winix/winixd/core/compress.h
./funthread.o: ../../../../winix/winixd/core/plugin.h pluginmsg.h
./funthread.o: ../../../../winix/winixd/core/plugindata.h
./funthread.o: ../../../../winix/winixd/core/dirs.h
./funthread.o: ../../../../winix/winixd/core/dircontainer.h
./funthread.o: ../../../../winix/winixd/core/request.h
./funthread.o: ../../../../winix/winixd/core/mounts.h
./funthread.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./funthread.o: ../../../../winix/winixd/core/mount.h
./funthread.o: ../../../../winix/winixd/core/mounts.h
./funthread.o: ../../../../winix/winixd/core/request.h
./funthread.o: ../../../../winix/winixd/core/mountparser.h
./funthread.o: ../../../../winix/winixd/core/crypt.h
./funthread.o: ../../../../winix/winixd/core/run.h
./funthread.o: ../../../../winix/winixd/core/users.h
./funthread.o: ../../../../winix/winixd/core/ugcontainer.h
./funthread.o: ../../../../winix/winixd/core/lastcontainer.h
./funthread.o: ../../../../winix/winixd/core/cur.h
./funthread.o: ../../../../winix/winixd/core/session.h
./funthread.o: ../../../../winix/winixd/core/rebus.h
./funthread.o: ../../../../winix/winixd/core/ipban.h
./funthread.o: ../../../../winix/winixd/core/groups.h
./funthread.o: ../../../../winix/winixd/core/loadavg.h
./funthread.o: ../../../../winix/winixd/core/image.h
./funthread.o: ../../../../winix/winixd/core/threadmanager.h
./funthread.o: ../../../../winix/winixd/models/winixmodelconnector.h
./funthread.o: ../../../../winix/winixd/notify/notify.h
./funthread.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./funthread.o: ../../../../winix/winixd/notify/notifypool.h
@ -334,15 +318,34 @@
./funthread.o: ../../../../winix/winixd/core/basethread.h
./funthread.o: ../../../../winix/winixd/notify/templatesnotify.h
./funthread.o: ../../../../winix/winixd/core/users.h
./funthread.o: ../../../../winix/winixd/core/timezones.h
./funthread.o: ../../../../winix/winixd/core/timezone.h
./funthread.o: ../../../../winix/winixd/core/ugcontainer.h
./funthread.o: ../../../../winix/winixd/core/lastcontainer.h
./funthread.o: ../../../../winix/winixd/core/cur.h
./funthread.o: ../../../../winix/winixd/core/session.h
./funthread.o: ../../../../winix/winixd/core/rebus.h
./funthread.o: ../../../../winix/winixd/core/ipban.h
./funthread.o: ../../../../winix/winixd/core/winixrequest.h
./funthread.o: ../../../../winix/winixd/core/winixsystem.h
./funthread.o: ../../../../winix/winixd/core/system.h
./funthread.o: ../../../../winix/winixd/core/job.h
./funthread.o: ../../../../winix/winixd/core/basethread.h
./funthread.o: ../../../../winix/winixd/core/jobtask.h
./funthread.o: ../../../../winix/winixd/core/loadavg.h
./funthread.o: ../../../../winix/winixd/core/dirs.h
./funthread.o: ../../../../winix/winixd/core/dircontainer.h
./funthread.o: ../../../../winix/winixd/core/crypt.h
./funthread.o: ../../../../winix/winixd/core/run.h
./funthread.o: ../../../../winix/winixd/core/users.h
./funthread.o: ../../../../winix/winixd/core/groups.h
./funthread.o: ../../../../winix/winixd/core/image.h
./funthread.o: ../../../../winix/winixd/core/threadmanager.h
./funthread.o: ../../../../winix/winixd/models/winixmodelconnector.h
./funthread.o: ../../../../winix/winixd/core/timezones.h
./funthread.o: ../../../../winix/winixd/core/timezone.h
./funthread.o: ../../../../winix/winixd/core/cur.h
./funthread.o: ../../../../winix/winixd/core/sessionmanager.h
./funthread.o: ../../../../winix/winixd/core/sessioncontainer.h
./funthread.o: ../../../../winix/winixd/core/ipbancontainer.h
./funthread.o: ../../../../winix/winixd/core/system.h
./funthread.o: ../../../../winix/winixd/core/sessionidmanager.h
./funthread.o: ../../../../tito/src/base64.h ../../../../tito/src/aes.h
./funthread.o: ../../../../winix/winixd/core/slog.h tdb.h thread.h
@ -446,32 +449,14 @@
./init.o: ../../../../winix/winixd/core/textstream.h
./init.o: ../../../../winix/winixd/models/winixmodel.h
./init.o: ../../../../winix/winixd/core/header.h
./init.o: ../../../../winix/winixd/core/system.h
./init.o: ../../../../winix/winixd/core/job.h
./init.o: ../../../../winix/winixd/core/basethread.h
./init.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./init.o: ../../../../winix/winixd/core/compress.h
./init.o: ../../../../winix/winixd/core/plugin.h pluginmsg.h
./init.o: ../../../../winix/winixd/core/plugindata.h
./init.o: ../../../../winix/winixd/core/dirs.h
./init.o: ../../../../winix/winixd/core/dircontainer.h
./init.o: ../../../../winix/winixd/core/request.h
./init.o: ../../../../winix/winixd/core/mounts.h
./init.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./init.o: ../../../../winix/winixd/core/mount.h
./init.o: ../../../../winix/winixd/core/mounts.h
./init.o: ../../../../winix/winixd/core/request.h
./init.o: ../../../../winix/winixd/core/mountparser.h
./init.o: ../../../../winix/winixd/core/crypt.h
./init.o: ../../../../winix/winixd/core/run.h
./init.o: ../../../../winix/winixd/core/users.h
./init.o: ../../../../winix/winixd/core/ugcontainer.h
./init.o: ../../../../winix/winixd/core/lastcontainer.h
./init.o: ../../../../winix/winixd/core/cur.h
./init.o: ../../../../winix/winixd/core/session.h
./init.o: ../../../../winix/winixd/core/rebus.h
./init.o: ../../../../winix/winixd/core/ipban.h
./init.o: ../../../../winix/winixd/core/groups.h
./init.o: ../../../../winix/winixd/core/loadavg.h
./init.o: ../../../../winix/winixd/core/image.h
./init.o: ../../../../winix/winixd/core/threadmanager.h
./init.o: ../../../../winix/winixd/models/winixmodelconnector.h
./init.o: ../../../../winix/winixd/notify/notify.h
./init.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./init.o: ../../../../winix/winixd/notify/notifypool.h
@ -481,15 +466,34 @@
./init.o: ../../../../winix/winixd/core/basethread.h
./init.o: ../../../../winix/winixd/notify/templatesnotify.h
./init.o: ../../../../winix/winixd/core/users.h
./init.o: ../../../../winix/winixd/core/timezones.h
./init.o: ../../../../winix/winixd/core/timezone.h
./init.o: ../../../../winix/winixd/core/ugcontainer.h
./init.o: ../../../../winix/winixd/core/lastcontainer.h
./init.o: ../../../../winix/winixd/core/cur.h
./init.o: ../../../../winix/winixd/core/session.h
./init.o: ../../../../winix/winixd/core/rebus.h
./init.o: ../../../../winix/winixd/core/ipban.h
./init.o: ../../../../winix/winixd/core/winixrequest.h
./init.o: ../../../../winix/winixd/core/winixsystem.h
./init.o: ../../../../winix/winixd/core/system.h
./init.o: ../../../../winix/winixd/core/job.h
./init.o: ../../../../winix/winixd/core/basethread.h
./init.o: ../../../../winix/winixd/core/jobtask.h
./init.o: ../../../../winix/winixd/core/loadavg.h
./init.o: ../../../../winix/winixd/core/dirs.h
./init.o: ../../../../winix/winixd/core/dircontainer.h
./init.o: ../../../../winix/winixd/core/crypt.h
./init.o: ../../../../winix/winixd/core/run.h
./init.o: ../../../../winix/winixd/core/users.h
./init.o: ../../../../winix/winixd/core/groups.h
./init.o: ../../../../winix/winixd/core/image.h
./init.o: ../../../../winix/winixd/core/threadmanager.h
./init.o: ../../../../winix/winixd/models/winixmodelconnector.h
./init.o: ../../../../winix/winixd/core/timezones.h
./init.o: ../../../../winix/winixd/core/timezone.h
./init.o: ../../../../winix/winixd/core/cur.h
./init.o: ../../../../winix/winixd/core/sessionmanager.h
./init.o: ../../../../winix/winixd/core/sessioncontainer.h
./init.o: ../../../../winix/winixd/core/ipbancontainer.h
./init.o: ../../../../winix/winixd/core/system.h
./init.o: ../../../../winix/winixd/core/sessionidmanager.h
./init.o: ../../../../tito/src/base64.h ../../../../tito/src/aes.h
./init.o: ../../../../winix/winixd/core/slog.h threadinfo.h funthread.h
@ -498,6 +502,7 @@
./init.o: ../../../../winix/winixd/functions/functions.h
./init.o: ../../../../winix/winixd/functions/functionbase.h
./init.o: ../../../../winix/winixd/functions/functionparser.h
./init.o: ../../../../winix/winixd/core/dirs.h
./init.o: ../../../../winix/winixd/functions/account.h
./init.o: ../../../../winix/winixd/functions/adduser.h
./init.o: ../../../../winix/winixd/functions/cat.h
@ -639,32 +644,14 @@
./reply.o: ../../../../winix/winixd/core/textstream.h
./reply.o: ../../../../winix/winixd/models/winixmodel.h
./reply.o: ../../../../winix/winixd/core/header.h
./reply.o: ../../../../winix/winixd/core/system.h
./reply.o: ../../../../winix/winixd/core/job.h
./reply.o: ../../../../winix/winixd/core/basethread.h
./reply.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./reply.o: ../../../../winix/winixd/core/compress.h
./reply.o: ../../../../winix/winixd/core/plugin.h pluginmsg.h
./reply.o: ../../../../winix/winixd/core/plugindata.h
./reply.o: ../../../../winix/winixd/core/dirs.h
./reply.o: ../../../../winix/winixd/core/dircontainer.h
./reply.o: ../../../../winix/winixd/core/request.h
./reply.o: ../../../../winix/winixd/core/mounts.h
./reply.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./reply.o: ../../../../winix/winixd/core/mount.h
./reply.o: ../../../../winix/winixd/core/mounts.h
./reply.o: ../../../../winix/winixd/core/request.h
./reply.o: ../../../../winix/winixd/core/mountparser.h
./reply.o: ../../../../winix/winixd/core/crypt.h
./reply.o: ../../../../winix/winixd/core/run.h
./reply.o: ../../../../winix/winixd/core/users.h
./reply.o: ../../../../winix/winixd/core/ugcontainer.h
./reply.o: ../../../../winix/winixd/core/lastcontainer.h
./reply.o: ../../../../winix/winixd/core/cur.h
./reply.o: ../../../../winix/winixd/core/session.h
./reply.o: ../../../../winix/winixd/core/rebus.h
./reply.o: ../../../../winix/winixd/core/ipban.h
./reply.o: ../../../../winix/winixd/core/groups.h
./reply.o: ../../../../winix/winixd/core/loadavg.h
./reply.o: ../../../../winix/winixd/core/image.h
./reply.o: ../../../../winix/winixd/core/threadmanager.h
./reply.o: ../../../../winix/winixd/models/winixmodelconnector.h
./reply.o: ../../../../winix/winixd/notify/notify.h
./reply.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./reply.o: ../../../../winix/winixd/notify/notifypool.h
@ -674,15 +661,34 @@
./reply.o: ../../../../winix/winixd/core/basethread.h
./reply.o: ../../../../winix/winixd/notify/templatesnotify.h
./reply.o: ../../../../winix/winixd/core/users.h
./reply.o: ../../../../winix/winixd/core/timezones.h
./reply.o: ../../../../winix/winixd/core/timezone.h
./reply.o: ../../../../winix/winixd/core/ugcontainer.h
./reply.o: ../../../../winix/winixd/core/lastcontainer.h
./reply.o: ../../../../winix/winixd/core/cur.h
./reply.o: ../../../../winix/winixd/core/session.h
./reply.o: ../../../../winix/winixd/core/rebus.h
./reply.o: ../../../../winix/winixd/core/ipban.h
./reply.o: ../../../../winix/winixd/core/winixrequest.h
./reply.o: ../../../../winix/winixd/core/winixsystem.h
./reply.o: ../../../../winix/winixd/core/system.h
./reply.o: ../../../../winix/winixd/core/job.h
./reply.o: ../../../../winix/winixd/core/basethread.h
./reply.o: ../../../../winix/winixd/core/jobtask.h
./reply.o: ../../../../winix/winixd/core/loadavg.h
./reply.o: ../../../../winix/winixd/core/dirs.h
./reply.o: ../../../../winix/winixd/core/dircontainer.h
./reply.o: ../../../../winix/winixd/core/crypt.h
./reply.o: ../../../../winix/winixd/core/run.h
./reply.o: ../../../../winix/winixd/core/users.h
./reply.o: ../../../../winix/winixd/core/groups.h
./reply.o: ../../../../winix/winixd/core/image.h
./reply.o: ../../../../winix/winixd/core/threadmanager.h
./reply.o: ../../../../winix/winixd/models/winixmodelconnector.h
./reply.o: ../../../../winix/winixd/core/timezones.h
./reply.o: ../../../../winix/winixd/core/timezone.h
./reply.o: ../../../../winix/winixd/core/cur.h
./reply.o: ../../../../winix/winixd/core/sessionmanager.h
./reply.o: ../../../../winix/winixd/core/sessioncontainer.h
./reply.o: ../../../../winix/winixd/core/ipbancontainer.h
./reply.o: ../../../../winix/winixd/core/system.h
./reply.o: ../../../../winix/winixd/core/sessionidmanager.h
./reply.o: ../../../../tito/src/base64.h ../../../../tito/src/aes.h
./reply.o: ../../../../winix/winixd/core/slog.h tdb.h thread.h
@ -690,6 +696,7 @@
./reply.o: ../../../../winix/winixd/functions/functions.h
./reply.o: ../../../../winix/winixd/functions/functionbase.h
./reply.o: ../../../../winix/winixd/functions/functionparser.h
./reply.o: ../../../../winix/winixd/core/dirs.h
./reply.o: ../../../../winix/winixd/functions/account.h
./reply.o: ../../../../winix/winixd/functions/adduser.h
./reply.o: ../../../../winix/winixd/functions/cat.h
@ -838,32 +845,14 @@
./showthreads.o: ../../../../winix/winixd/core/textstream.h
./showthreads.o: ../../../../winix/winixd/models/winixmodel.h
./showthreads.o: ../../../../winix/winixd/core/header.h
./showthreads.o: ../../../../winix/winixd/core/system.h
./showthreads.o: ../../../../winix/winixd/core/job.h
./showthreads.o: ../../../../winix/winixd/core/basethread.h
./showthreads.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./showthreads.o: ../../../../winix/winixd/core/compress.h
./showthreads.o: ../../../../winix/winixd/core/plugin.h pluginmsg.h
./showthreads.o: ../../../../winix/winixd/core/plugindata.h
./showthreads.o: ../../../../winix/winixd/core/dirs.h
./showthreads.o: ../../../../winix/winixd/core/dircontainer.h
./showthreads.o: ../../../../winix/winixd/core/request.h
./showthreads.o: ../../../../winix/winixd/core/mounts.h
./showthreads.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./showthreads.o: ../../../../winix/winixd/core/mount.h
./showthreads.o: ../../../../winix/winixd/core/mounts.h
./showthreads.o: ../../../../winix/winixd/core/request.h
./showthreads.o: ../../../../winix/winixd/core/mountparser.h
./showthreads.o: ../../../../winix/winixd/core/crypt.h
./showthreads.o: ../../../../winix/winixd/core/run.h
./showthreads.o: ../../../../winix/winixd/core/users.h
./showthreads.o: ../../../../winix/winixd/core/ugcontainer.h
./showthreads.o: ../../../../winix/winixd/core/lastcontainer.h
./showthreads.o: ../../../../winix/winixd/core/cur.h
./showthreads.o: ../../../../winix/winixd/core/session.h
./showthreads.o: ../../../../winix/winixd/core/rebus.h
./showthreads.o: ../../../../winix/winixd/core/ipban.h
./showthreads.o: ../../../../winix/winixd/core/groups.h
./showthreads.o: ../../../../winix/winixd/core/loadavg.h
./showthreads.o: ../../../../winix/winixd/core/image.h
./showthreads.o: ../../../../winix/winixd/core/threadmanager.h
./showthreads.o: ../../../../winix/winixd/models/winixmodelconnector.h
./showthreads.o: ../../../../winix/winixd/notify/notify.h
./showthreads.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./showthreads.o: ../../../../winix/winixd/notify/notifypool.h
@ -873,15 +862,34 @@
./showthreads.o: ../../../../winix/winixd/core/basethread.h
./showthreads.o: ../../../../winix/winixd/notify/templatesnotify.h
./showthreads.o: ../../../../winix/winixd/core/users.h
./showthreads.o: ../../../../winix/winixd/core/timezones.h
./showthreads.o: ../../../../winix/winixd/core/timezone.h
./showthreads.o: ../../../../winix/winixd/core/ugcontainer.h
./showthreads.o: ../../../../winix/winixd/core/lastcontainer.h
./showthreads.o: ../../../../winix/winixd/core/cur.h
./showthreads.o: ../../../../winix/winixd/core/session.h
./showthreads.o: ../../../../winix/winixd/core/rebus.h
./showthreads.o: ../../../../winix/winixd/core/ipban.h
./showthreads.o: ../../../../winix/winixd/core/winixrequest.h
./showthreads.o: ../../../../winix/winixd/core/winixsystem.h
./showthreads.o: ../../../../winix/winixd/core/system.h
./showthreads.o: ../../../../winix/winixd/core/job.h
./showthreads.o: ../../../../winix/winixd/core/basethread.h
./showthreads.o: ../../../../winix/winixd/core/jobtask.h
./showthreads.o: ../../../../winix/winixd/core/loadavg.h
./showthreads.o: ../../../../winix/winixd/core/dirs.h
./showthreads.o: ../../../../winix/winixd/core/dircontainer.h
./showthreads.o: ../../../../winix/winixd/core/crypt.h
./showthreads.o: ../../../../winix/winixd/core/run.h
./showthreads.o: ../../../../winix/winixd/core/users.h
./showthreads.o: ../../../../winix/winixd/core/groups.h
./showthreads.o: ../../../../winix/winixd/core/image.h
./showthreads.o: ../../../../winix/winixd/core/threadmanager.h
./showthreads.o: ../../../../winix/winixd/models/winixmodelconnector.h
./showthreads.o: ../../../../winix/winixd/core/timezones.h
./showthreads.o: ../../../../winix/winixd/core/timezone.h
./showthreads.o: ../../../../winix/winixd/core/cur.h
./showthreads.o: ../../../../winix/winixd/core/sessionmanager.h
./showthreads.o: ../../../../winix/winixd/core/sessioncontainer.h
./showthreads.o: ../../../../winix/winixd/core/ipbancontainer.h
./showthreads.o: ../../../../winix/winixd/core/system.h
./showthreads.o: ../../../../winix/winixd/core/sessionidmanager.h
./showthreads.o: ../../../../tito/src/base64.h ../../../../tito/src/aes.h
./showthreads.o: ../../../../winix/winixd/core/slog.h tdb.h thread.h
@ -959,15 +967,6 @@
./templates.o: threadinfo.h ../../../../winix/winixd/core/system.h
./templates.o: ../../../../winix/winixd/core/job.h
./templates.o: ../../../../winix/winixd/core/basethread.h
./templates.o: ../../../../winix/winixd/core/synchro.h
./templates.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./templates.o: ../../../../winix/winixd/core/winixbase.h
./templates.o: ../../../../winix/winixd/core/config.h
./templates.o: ../../../../pikotools/src/space/spaceparser.h
./templates.o: ../../../../pikotools/src/space/space.h
./templates.o: ../../../../pikotools/src/convert/baseparser.h
./templates.o: ../../../../pikotools/src/textstream/textstream.h
./templates.o: ../../../../pikotools/src/textstream/stream.h
./templates.o: ../../../../pikotools/src/space/space.h
./templates.o: ../../../../pikotools/src/textstream/types.h
./templates.o: ../../../../pikotools/src/convert/inttostr.h
@ -975,23 +974,28 @@
./templates.o: ../../../../pikotools/src/textstream/stream.h
./templates.o: ../../../../pikotools/src/utf8/utf8_templates.h
./templates.o: ../../../../pikotools/src/utf8/utf8_private.h
./templates.o: ../../../../winix/winixd/core/jobtask.h
./templates.o: ../../../../winix/winixd/core/request.h
./templates.o: ../../../../winix/winixd/core/requesttypes.h
./templates.o: ../../../../pikotools/src/textstream/textstream.h
./templates.o: ../../../../pikotools/src/textstream/stream.h
./templates.o: ../../../../pikotools/src/date/date.h
./templates.o: ../../../../pikotools/src/membuffer/membuffer.h
./templates.o: ../../../../pikotools/src/textstream/types.h
./templates.o: ../../../../pikotools/src/utf8/utf8_stream.h
./templates.o: ../../../../winix/winixd/core/log.h
./templates.o: ../../../../winix/winixd/core/logmanipulators.h
./templates.o: ../../../../pikotools/src/log/log.h
./templates.o: ../../../../pikotools/src/log/filelog.h
./templates.o: ../../../../morm/src/morm.h ../../../../morm/src/version.h
./templates.o: ../../../../morm/src/morm_types.h ../../../../morm/src/model.h
./templates.o: ../../../../winix/winixd/models/item.h
./templates.o: ../../../../winix/winixd/models/winixmodel.h
./templates.o: ../../../../morm/src/model.h
./templates.o: ../../../../morm/src/modelconnector.h
./templates.o: ../../../../morm/src/clearer.h ../../../../morm/src/ft.h
./templates.o: ../../../../morm/src/dbconnector.h
./templates.o: ../../../../pikotools/src/log/log.h
./templates.o: ../../../../pikotools/src/log/filelog.h
./templates.o: ../../../../morm/src/queryresult.h
./templates.o: ../../../../morm/src/flatconnector.h
./templates.o: ../../../../morm/src/dbexpression.h
./templates.o: ../../../../morm/src/baseexpression.h
./templates.o: ../../../../morm/src/morm_types.h
./templates.o: ../../../../morm/src/modelenv.h
./templates.o: ../../../../morm/src/modeldata.h
./templates.o: ../../../../morm/src/cursorhelper.h
@ -1005,6 +1009,21 @@
./templates.o: ../../../../ezc/src/item.h
./templates.o: ../../../../pikotools/src/convert/text.h
./templates.o: ../../../../morm/src/flatexpression.h
./templates.o: ../../../../winix/winixd/core/log.h
./templates.o: ../../../../winix/winixd/models/winixmodelconnector.h
./templates.o: ../../../../winix/winixd/models/itemcontent.h
./templates.o: ../../../../winix/winixd/templates/htmltextstream.h
./templates.o: ../../../../winix/winixd/templates/misc.h
./templates.o: ../../../../winix/winixd/templates/localefilter.h
./templates.o: ../../../../winix/winixd/templates/locale.h
./templates.o: ../../../../pikotools/src/space/spaceparser.h
./templates.o: ../../../../pikotools/src/space/space.h
./templates.o: ../../../../pikotools/src/convert/baseparser.h
./templates.o: ../../../../winix/winixd/core/winixbase.h
./templates.o: ../../../../winix/winixd/core/config.h
./templates.o: ../../../../winix/winixd/core/log.h
./templates.o: ../../../../winix/winixd/core/logmanipulators.h
./templates.o: ../../../../morm/src/morm.h ../../../../morm/src/version.h
./templates.o: ../../../../morm/src/finder.h ../../../../morm/src/cursor.h
./templates.o: ../../../../morm/src/jsonexpression.h
./templates.o: ../../../../morm/src/postgresqlexpression.h
@ -1012,34 +1031,10 @@
./templates.o: ../../../../morm/src/postgresqlconnector.h
./templates.o: ../../../../morm/src/postgresqlqueryresult.h
./templates.o: ../../../../morm/src/transaction.h
./templates.o: ../../../../winix/winixd/core/log.h
./templates.o: ../../../../winix/winixd/core/synchro.h
./templates.o: ../../../../winix/winixd/core/filelog.h
./templates.o: ../../../../winix/winixd/core/lock.h
./templates.o: ../../../../winix/winixd/core/plugin.h pluginmsg.h
./templates.o: ../../../../winix/winixd/core/plugindata.h
./templates.o: ../../../../winix/winixd/core/winixbase.h
./templates.o: ../../../../winix/winixd/core/dirs.h
./templates.o: ../../../../winix/winixd/core/dircontainer.h
./templates.o: ../../../../winix/winixd/db/db.h
./templates.o: ../../../../winix/winixd/db/dbbase.h
./templates.o: ../../../../winix/winixd/db/dbconn.h
./templates.o: ../../../../winix/winixd/db/dbtextstream.h
./templates.o: ../../../../winix/winixd/core/textstream.h
./templates.o: ../../../../winix/winixd/core/misc.h
./templates.o: ../../../../winix/winixd/core/requesttypes.h
./templates.o: ../../../../winix/winixd/core/winix_const.h
./templates.o: ../../../../pikotools/src/convert/convert.h
./templates.o: ../../../../pikotools/src/convert/inttostr.h
./templates.o: ../../../../pikotools/src/convert/patternreplacer.h
./templates.o: ../../../../pikotools/src/convert/strtoint.h
./templates.o: ../../../../pikotools/src/convert/text.h
./templates.o: ../../../../pikotools/src/convert/double.h
./templates.o: ../../../../winix/winixd/core/error.h
./templates.o: ../../../../winix/winixd/models/user.h
./templates.o: ../../../../winix/winixd/templates/misc.h
./templates.o: ../../../../winix/winixd/templates/localefilter.h
./templates.o: ../../../../winix/winixd/templates/locale.h
./templates.o: ../../../../winix/winixd/core/synchro.h
./templates.o: ../../../../pikotools/src/convert/patternreplacer.h
./templates.o: ../../../../ezc/src/ezc.h ../../../../ezc/src/generator.h
./templates.o: ../../../../ezc/src/blocks.h ../../../../ezc/src/cache.h
@ -1049,33 +1044,50 @@
./templates.o: ../../../../ezc/src/models.h
./templates.o: ../../../../ezc/src/patternparser.h
./templates.o: ../../../../winix/winixd/templates/htmltextstream.h
./templates.o: ../../../../winix/winixd/core/error.h
./templates.o: ../../../../winix/winixd/core/config.h
./templates.o: ../../../../winix/winixd/core/textstream.h
./templates.o: ../../../../winix/winixd/models/winixmodel.h
./templates.o: ../../../../winix/winixd/models/winixmodelconnector.h
./templates.o: ../../../../winix/winixd/core/header.h
./templates.o: ../../../../winix/winixd/core/compress.h
./templates.o: ../../../../winix/winixd/core/winixbase.h
./templates.o: ../../../../winix/winixd/core/plugin.h pluginmsg.h
./templates.o: ../../../../winix/winixd/core/plugindata.h
./templates.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./templates.o: ../../../../winix/winixd/core/mount.h
./templates.o: ../../../../winix/winixd/core/mounts.h
./templates.o: ../../../../winix/winixd/db/db.h
./templates.o: ../../../../winix/winixd/db/dbbase.h
./templates.o: ../../../../winix/winixd/db/dbconn.h
./templates.o: ../../../../winix/winixd/db/dbtextstream.h
./templates.o: ../../../../winix/winixd/core/textstream.h
./templates.o: ../../../../winix/winixd/core/misc.h
./templates.o: ../../../../winix/winixd/core/winix_const.h
./templates.o: ../../../../pikotools/src/convert/convert.h
./templates.o: ../../../../pikotools/src/convert/inttostr.h
./templates.o: ../../../../pikotools/src/convert/patternreplacer.h
./templates.o: ../../../../pikotools/src/convert/strtoint.h
./templates.o: ../../../../pikotools/src/convert/text.h
./templates.o: ../../../../pikotools/src/convert/double.h
./templates.o: ../../../../winix/winixd/core/error.h
./templates.o: ../../../../winix/winixd/models/user.h
./templates.o: ../../../../winix/winixd/models/group.h
./templates.o: ../../../../winix/winixd/core/dircontainer.h
./templates.o: ../../../../winix/winixd/models/item.h
./templates.o: ../../../../winix/winixd/models/itemcontent.h
./templates.o: ../../../../winix/winixd/templates/htmltextstream.h
./templates.o: ../../../../winix/winixd/core/ugcontainer.h
./templates.o: ../../../../winix/winixd/core/request.h
./templates.o: ../../../../winix/winixd/core/mounts.h
./templates.o: ../../../../winix/winixd/core/mount.h
./templates.o: ../../../../winix/winixd/core/error.h
./templates.o: ../../../../winix/winixd/core/mountparser.h
./templates.o: ../../../../winix/winixd/core/config.h
./templates.o: ../../../../winix/winixd/core/crypt.h
./templates.o: ../../../../winix/winixd/core/run.h
./templates.o: ../../../../winix/winixd/core/users.h
./templates.o: ../../../../winix/winixd/core/ugcontainer.h
./templates.o: ../../../../winix/winixd/core/lastcontainer.h
./templates.o: ../../../../winix/winixd/core/cur.h
./templates.o: ../../../../winix/winixd/core/session.h
./templates.o: ../../../../winix/winixd/core/rebus.h
./templates.o: ../../../../winix/winixd/core/textstream.h
./templates.o: ../../../../winix/winixd/core/ipban.h
./templates.o: ../../../../winix/winixd/models/winixmodel.h
./templates.o: ../../../../winix/winixd/core/groups.h
./templates.o: ../../../../winix/winixd/core/loadavg.h
./templates.o: ../../../../winix/winixd/core/dirs.h
./templates.o: ../../../../winix/winixd/core/dircontainer.h
./templates.o: ../../../../winix/winixd/core/crypt.h
./templates.o: ../../../../winix/winixd/core/run.h
./templates.o: ../../../../winix/winixd/core/users.h
./templates.o: ../../../../winix/winixd/core/groups.h
./templates.o: ../../../../winix/winixd/core/ugcontainer.h
./templates.o: ../../../../winix/winixd/core/image.h
./templates.o: ../../../../winix/winixd/core/threadmanager.h
./templates.o: ../../../../winix/winixd/models/winixmodelconnector.h
@ -1088,19 +1100,17 @@
./templates.o: ../../../../winix/winixd/core/basethread.h
./templates.o: ../../../../winix/winixd/notify/templatesnotify.h
./templates.o: ../../../../winix/winixd/core/users.h
./templates.o: ../../../../winix/winixd/core/lastcontainer.h
./templates.o: ../../../../winix/winixd/core/timezones.h
./templates.o: ../../../../winix/winixd/core/timezone.h thread.h tdb.h
./templates.o: ../../../../winix/winixd/db/dbbase.h reply.h
./templates.o: ../../../../winix/winixd/functions/functionbase.h
./templates.o: ../../../../winix/winixd/core/request.h
./templates.o: ../../../../winix/winixd/core/header.h
./templates.o: ../../../../winix/winixd/core/winixrequest.h
./templates.o: ../../../../winix/winixd/core/winixsystem.h
./templates.o: ../../../../winix/winixd/core/cur.h
./templates.o: ../../../../winix/winixd/core/sessionmanager.h
./templates.o: ../../../../winix/winixd/core/sessioncontainer.h
./templates.o: ../../../../winix/winixd/core/ipbancontainer.h
./templates.o: ../../../../winix/winixd/core/system.h
./templates.o: ../../../../winix/winixd/core/sessionidmanager.h
./templates.o: ../../../../tito/src/base64.h ../../../../tito/src/aes.h
./templates.o: ../../../../winix/winixd/core/slog.h funthread.h threadfiles.h
@ -1116,6 +1126,7 @@
./templates.o: ../../../../winix/winixd/functions/functions.h
./templates.o: ../../../../winix/winixd/functions/functionbase.h
./templates.o: ../../../../winix/winixd/functions/functionparser.h
./templates.o: ../../../../winix/winixd/core/dirs.h
./templates.o: ../../../../winix/winixd/functions/account.h
./templates.o: ../../../../winix/winixd/functions/adduser.h
./templates.o: ../../../../winix/winixd/functions/cat.h
@ -1271,15 +1282,6 @@
./threadinfo.o: threadinfo.h ../../../../winix/winixd/core/system.h
./threadinfo.o: ../../../../winix/winixd/core/job.h
./threadinfo.o: ../../../../winix/winixd/core/basethread.h
./threadinfo.o: ../../../../winix/winixd/core/synchro.h
./threadinfo.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./threadinfo.o: ../../../../winix/winixd/core/winixbase.h
./threadinfo.o: ../../../../winix/winixd/core/config.h
./threadinfo.o: ../../../../pikotools/src/space/spaceparser.h
./threadinfo.o: ../../../../pikotools/src/space/space.h
./threadinfo.o: ../../../../pikotools/src/convert/baseparser.h
./threadinfo.o: ../../../../pikotools/src/textstream/textstream.h
./threadinfo.o: ../../../../pikotools/src/textstream/stream.h
./threadinfo.o: ../../../../pikotools/src/space/space.h
./threadinfo.o: ../../../../pikotools/src/textstream/types.h
./threadinfo.o: ../../../../pikotools/src/convert/inttostr.h
@ -1287,24 +1289,28 @@
./threadinfo.o: ../../../../pikotools/src/textstream/stream.h
./threadinfo.o: ../../../../pikotools/src/utf8/utf8_templates.h
./threadinfo.o: ../../../../pikotools/src/utf8/utf8_private.h
./threadinfo.o: ../../../../winix/winixd/core/jobtask.h
./threadinfo.o: ../../../../winix/winixd/core/request.h
./threadinfo.o: ../../../../winix/winixd/core/requesttypes.h
./threadinfo.o: ../../../../pikotools/src/textstream/textstream.h
./threadinfo.o: ../../../../pikotools/src/textstream/stream.h
./threadinfo.o: ../../../../pikotools/src/date/date.h
./threadinfo.o: ../../../../pikotools/src/membuffer/membuffer.h
./threadinfo.o: ../../../../pikotools/src/textstream/types.h
./threadinfo.o: ../../../../pikotools/src/utf8/utf8_stream.h
./threadinfo.o: ../../../../winix/winixd/core/log.h
./threadinfo.o: ../../../../winix/winixd/core/logmanipulators.h
./threadinfo.o: ../../../../pikotools/src/log/log.h
./threadinfo.o: ../../../../pikotools/src/log/filelog.h
./threadinfo.o: ../../../../morm/src/morm.h ../../../../morm/src/version.h
./threadinfo.o: ../../../../morm/src/morm_types.h
./threadinfo.o: ../../../../winix/winixd/models/item.h
./threadinfo.o: ../../../../winix/winixd/models/winixmodel.h
./threadinfo.o: ../../../../morm/src/model.h
./threadinfo.o: ../../../../morm/src/modelconnector.h
./threadinfo.o: ../../../../morm/src/clearer.h ../../../../morm/src/ft.h
./threadinfo.o: ../../../../morm/src/dbconnector.h
./threadinfo.o: ../../../../pikotools/src/log/log.h
./threadinfo.o: ../../../../pikotools/src/log/filelog.h
./threadinfo.o: ../../../../morm/src/queryresult.h
./threadinfo.o: ../../../../morm/src/flatconnector.h
./threadinfo.o: ../../../../morm/src/dbexpression.h
./threadinfo.o: ../../../../morm/src/baseexpression.h
./threadinfo.o: ../../../../morm/src/morm_types.h
./threadinfo.o: ../../../../morm/src/modelenv.h
./threadinfo.o: ../../../../morm/src/modeldata.h
./threadinfo.o: ../../../../morm/src/cursorhelper.h
@ -1318,6 +1324,21 @@
./threadinfo.o: ../../../../ezc/src/item.h
./threadinfo.o: ../../../../pikotools/src/convert/text.h
./threadinfo.o: ../../../../morm/src/flatexpression.h
./threadinfo.o: ../../../../winix/winixd/core/log.h
./threadinfo.o: ../../../../winix/winixd/models/winixmodelconnector.h
./threadinfo.o: ../../../../winix/winixd/models/itemcontent.h
./threadinfo.o: ../../../../winix/winixd/templates/htmltextstream.h
./threadinfo.o: ../../../../winix/winixd/templates/misc.h
./threadinfo.o: ../../../../winix/winixd/templates/localefilter.h
./threadinfo.o: ../../../../winix/winixd/templates/locale.h
./threadinfo.o: ../../../../pikotools/src/space/spaceparser.h
./threadinfo.o: ../../../../pikotools/src/space/space.h
./threadinfo.o: ../../../../pikotools/src/convert/baseparser.h
./threadinfo.o: ../../../../winix/winixd/core/winixbase.h
./threadinfo.o: ../../../../winix/winixd/core/config.h
./threadinfo.o: ../../../../winix/winixd/core/log.h
./threadinfo.o: ../../../../winix/winixd/core/logmanipulators.h
./threadinfo.o: ../../../../morm/src/morm.h ../../../../morm/src/version.h
./threadinfo.o: ../../../../morm/src/finder.h ../../../../morm/src/cursor.h
./threadinfo.o: ../../../../morm/src/jsonexpression.h
./threadinfo.o: ../../../../morm/src/postgresqlexpression.h
@ -1325,34 +1346,10 @@
./threadinfo.o: ../../../../morm/src/postgresqlconnector.h
./threadinfo.o: ../../../../morm/src/postgresqlqueryresult.h
./threadinfo.o: ../../../../morm/src/transaction.h
./threadinfo.o: ../../../../winix/winixd/core/log.h
./threadinfo.o: ../../../../winix/winixd/core/synchro.h
./threadinfo.o: ../../../../winix/winixd/core/filelog.h
./threadinfo.o: ../../../../winix/winixd/core/lock.h
./threadinfo.o: ../../../../winix/winixd/core/plugin.h pluginmsg.h
./threadinfo.o: ../../../../winix/winixd/core/plugindata.h
./threadinfo.o: ../../../../winix/winixd/core/winixbase.h
./threadinfo.o: ../../../../winix/winixd/core/dirs.h
./threadinfo.o: ../../../../winix/winixd/core/dircontainer.h
./threadinfo.o: ../../../../winix/winixd/db/db.h
./threadinfo.o: ../../../../winix/winixd/db/dbbase.h
./threadinfo.o: ../../../../winix/winixd/db/dbconn.h
./threadinfo.o: ../../../../winix/winixd/db/dbtextstream.h
./threadinfo.o: ../../../../winix/winixd/core/textstream.h
./threadinfo.o: ../../../../winix/winixd/core/misc.h
./threadinfo.o: ../../../../winix/winixd/core/requesttypes.h
./threadinfo.o: ../../../../winix/winixd/core/winix_const.h
./threadinfo.o: ../../../../pikotools/src/convert/convert.h
./threadinfo.o: ../../../../pikotools/src/convert/inttostr.h
./threadinfo.o: ../../../../pikotools/src/convert/patternreplacer.h
./threadinfo.o: ../../../../pikotools/src/convert/strtoint.h
./threadinfo.o: ../../../../pikotools/src/convert/text.h
./threadinfo.o: ../../../../pikotools/src/convert/double.h
./threadinfo.o: ../../../../winix/winixd/core/error.h
./threadinfo.o: ../../../../winix/winixd/models/user.h
./threadinfo.o: ../../../../winix/winixd/templates/misc.h
./threadinfo.o: ../../../../winix/winixd/templates/localefilter.h
./threadinfo.o: ../../../../winix/winixd/templates/locale.h
./threadinfo.o: ../../../../winix/winixd/core/synchro.h
./threadinfo.o: ../../../../pikotools/src/convert/patternreplacer.h
./threadinfo.o: ../../../../ezc/src/ezc.h ../../../../ezc/src/generator.h
./threadinfo.o: ../../../../ezc/src/blocks.h ../../../../ezc/src/cache.h
@ -1363,33 +1360,50 @@
./threadinfo.o: ../../../../ezc/src/models.h
./threadinfo.o: ../../../../ezc/src/patternparser.h
./threadinfo.o: ../../../../winix/winixd/templates/htmltextstream.h
./threadinfo.o: ../../../../winix/winixd/core/error.h
./threadinfo.o: ../../../../winix/winixd/core/config.h
./threadinfo.o: ../../../../winix/winixd/core/textstream.h
./threadinfo.o: ../../../../winix/winixd/models/winixmodel.h
./threadinfo.o: ../../../../winix/winixd/models/winixmodelconnector.h
./threadinfo.o: ../../../../winix/winixd/core/header.h
./threadinfo.o: ../../../../winix/winixd/core/compress.h
./threadinfo.o: ../../../../winix/winixd/core/winixbase.h
./threadinfo.o: ../../../../winix/winixd/core/plugin.h pluginmsg.h
./threadinfo.o: ../../../../winix/winixd/core/plugindata.h
./threadinfo.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./threadinfo.o: ../../../../winix/winixd/core/mount.h
./threadinfo.o: ../../../../winix/winixd/core/mounts.h
./threadinfo.o: ../../../../winix/winixd/db/db.h
./threadinfo.o: ../../../../winix/winixd/db/dbbase.h
./threadinfo.o: ../../../../winix/winixd/db/dbconn.h
./threadinfo.o: ../../../../winix/winixd/db/dbtextstream.h
./threadinfo.o: ../../../../winix/winixd/core/textstream.h
./threadinfo.o: ../../../../winix/winixd/core/misc.h
./threadinfo.o: ../../../../winix/winixd/core/winix_const.h
./threadinfo.o: ../../../../pikotools/src/convert/convert.h
./threadinfo.o: ../../../../pikotools/src/convert/inttostr.h
./threadinfo.o: ../../../../pikotools/src/convert/patternreplacer.h
./threadinfo.o: ../../../../pikotools/src/convert/strtoint.h
./threadinfo.o: ../../../../pikotools/src/convert/text.h
./threadinfo.o: ../../../../pikotools/src/convert/double.h
./threadinfo.o: ../../../../winix/winixd/core/error.h
./threadinfo.o: ../../../../winix/winixd/models/user.h
./threadinfo.o: ../../../../winix/winixd/models/group.h
./threadinfo.o: ../../../../winix/winixd/core/dircontainer.h
./threadinfo.o: ../../../../winix/winixd/models/item.h
./threadinfo.o: ../../../../winix/winixd/models/itemcontent.h
./threadinfo.o: ../../../../winix/winixd/templates/htmltextstream.h
./threadinfo.o: ../../../../winix/winixd/core/ugcontainer.h
./threadinfo.o: ../../../../winix/winixd/core/request.h
./threadinfo.o: ../../../../winix/winixd/core/mounts.h
./threadinfo.o: ../../../../winix/winixd/core/mount.h
./threadinfo.o: ../../../../winix/winixd/core/error.h
./threadinfo.o: ../../../../winix/winixd/core/mountparser.h
./threadinfo.o: ../../../../winix/winixd/core/config.h
./threadinfo.o: ../../../../winix/winixd/core/crypt.h
./threadinfo.o: ../../../../winix/winixd/core/run.h
./threadinfo.o: ../../../../winix/winixd/core/users.h
./threadinfo.o: ../../../../winix/winixd/core/ugcontainer.h
./threadinfo.o: ../../../../winix/winixd/core/lastcontainer.h
./threadinfo.o: ../../../../winix/winixd/core/cur.h
./threadinfo.o: ../../../../winix/winixd/core/session.h
./threadinfo.o: ../../../../winix/winixd/core/rebus.h
./threadinfo.o: ../../../../winix/winixd/core/textstream.h
./threadinfo.o: ../../../../winix/winixd/core/ipban.h
./threadinfo.o: ../../../../winix/winixd/models/winixmodel.h
./threadinfo.o: ../../../../winix/winixd/core/groups.h
./threadinfo.o: ../../../../winix/winixd/core/loadavg.h
./threadinfo.o: ../../../../winix/winixd/core/dirs.h
./threadinfo.o: ../../../../winix/winixd/core/dircontainer.h
./threadinfo.o: ../../../../winix/winixd/core/crypt.h
./threadinfo.o: ../../../../winix/winixd/core/run.h
./threadinfo.o: ../../../../winix/winixd/core/users.h
./threadinfo.o: ../../../../winix/winixd/core/groups.h
./threadinfo.o: ../../../../winix/winixd/core/ugcontainer.h
./threadinfo.o: ../../../../winix/winixd/core/image.h
./threadinfo.o: ../../../../winix/winixd/core/threadmanager.h
./threadinfo.o: ../../../../winix/winixd/models/winixmodelconnector.h
@ -1402,6 +1416,7 @@
./threadinfo.o: ../../../../winix/winixd/core/basethread.h
./threadinfo.o: ../../../../winix/winixd/notify/templatesnotify.h
./threadinfo.o: ../../../../winix/winixd/core/users.h
./threadinfo.o: ../../../../winix/winixd/core/lastcontainer.h
./threadinfo.o: ../../../../winix/winixd/core/timezones.h
./threadinfo.o: ../../../../winix/winixd/core/timezone.h thread.h tdb.h
./threadinfo.o: ../../../../winix/winixd/db/dbbase.h

View File

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2010-2018, Tomasz Sowa
* Copyright (c) 2010-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -214,7 +214,7 @@ using namespace Thread;
tdb.LogQueries(info.config->log_db_query);
// thread_info and fun_show_threads are used in 'ticket' plugins too
info.set_dependency_for(thread_info);
thread_info.set_dependency((WinixModelDeprecated*)info.functions);
thread_info.SetDb(info.db);
thread_info.SetTDb(&tdb);

View File

@ -104,32 +104,14 @@
./createticket.o: ../../../../winix/winixd/core/textstream.h
./createticket.o: ../../../../winix/winixd/models/winixmodel.h
./createticket.o: ../../../../winix/winixd/core/header.h
./createticket.o: ../../../../winix/winixd/core/system.h
./createticket.o: ../../../../winix/winixd/core/job.h
./createticket.o: ../../../../winix/winixd/core/basethread.h
./createticket.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./createticket.o: ../../../../winix/winixd/core/compress.h
./createticket.o: ../../../../winix/winixd/core/plugin.h pluginmsg.h
./createticket.o: ../../../../winix/winixd/core/plugindata.h
./createticket.o: ../../../../winix/winixd/core/dirs.h
./createticket.o: ../../../../winix/winixd/core/dircontainer.h
./createticket.o: ../../../../winix/winixd/core/request.h
./createticket.o: ../../../../winix/winixd/core/mounts.h
./createticket.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./createticket.o: ../../../../winix/winixd/core/mount.h
./createticket.o: ../../../../winix/winixd/core/mounts.h
./createticket.o: ../../../../winix/winixd/core/request.h
./createticket.o: ../../../../winix/winixd/core/mountparser.h
./createticket.o: ../../../../winix/winixd/core/crypt.h
./createticket.o: ../../../../winix/winixd/core/run.h
./createticket.o: ../../../../winix/winixd/core/users.h
./createticket.o: ../../../../winix/winixd/core/ugcontainer.h
./createticket.o: ../../../../winix/winixd/core/lastcontainer.h
./createticket.o: ../../../../winix/winixd/core/cur.h
./createticket.o: ../../../../winix/winixd/core/session.h
./createticket.o: ../../../../winix/winixd/core/rebus.h
./createticket.o: ../../../../winix/winixd/core/ipban.h
./createticket.o: ../../../../winix/winixd/core/groups.h
./createticket.o: ../../../../winix/winixd/core/loadavg.h
./createticket.o: ../../../../winix/winixd/core/image.h
./createticket.o: ../../../../winix/winixd/core/threadmanager.h
./createticket.o: ../../../../winix/winixd/models/winixmodelconnector.h
./createticket.o: ../../../../winix/winixd/notify/notify.h
./createticket.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./createticket.o: ../../../../winix/winixd/notify/notifypool.h
@ -139,21 +121,41 @@
./createticket.o: ../../../../winix/winixd/core/basethread.h
./createticket.o: ../../../../winix/winixd/notify/templatesnotify.h
./createticket.o: ../../../../winix/winixd/core/users.h
./createticket.o: ../../../../winix/winixd/core/timezones.h
./createticket.o: ../../../../winix/winixd/core/timezone.h
./createticket.o: ../../../../winix/winixd/core/ugcontainer.h
./createticket.o: ../../../../winix/winixd/core/lastcontainer.h
./createticket.o: ../../../../winix/winixd/core/cur.h
./createticket.o: ../../../../winix/winixd/core/session.h
./createticket.o: ../../../../winix/winixd/core/rebus.h
./createticket.o: ../../../../winix/winixd/core/ipban.h
./createticket.o: ../../../../winix/winixd/core/winixrequest.h
./createticket.o: ../../../../winix/winixd/core/winixsystem.h
./createticket.o: ../../../../winix/winixd/core/system.h
./createticket.o: ../../../../winix/winixd/core/job.h
./createticket.o: ../../../../winix/winixd/core/basethread.h
./createticket.o: ../../../../winix/winixd/core/jobtask.h
./createticket.o: ../../../../winix/winixd/core/loadavg.h
./createticket.o: ../../../../winix/winixd/core/dirs.h
./createticket.o: ../../../../winix/winixd/core/dircontainer.h
./createticket.o: ../../../../winix/winixd/core/crypt.h
./createticket.o: ../../../../winix/winixd/core/run.h
./createticket.o: ../../../../winix/winixd/core/users.h
./createticket.o: ../../../../winix/winixd/core/groups.h
./createticket.o: ../../../../winix/winixd/core/image.h
./createticket.o: ../../../../winix/winixd/core/threadmanager.h
./createticket.o: ../../../../winix/winixd/models/winixmodelconnector.h
./createticket.o: ../../../../winix/winixd/core/timezones.h
./createticket.o: ../../../../winix/winixd/core/timezone.h
./createticket.o: ../../../../winix/winixd/core/cur.h
./createticket.o: ../../../../winix/winixd/core/sessionmanager.h
./createticket.o: ../../../../winix/winixd/core/sessioncontainer.h
./createticket.o: ../../../../winix/winixd/core/ipbancontainer.h
./createticket.o: ../../../../winix/winixd/core/system.h
./createticket.o: ../../../../winix/winixd/core/sessionidmanager.h
./createticket.o: ../../../../tito/src/base64.h ../../../../tito/src/aes.h
./createticket.o: ../../../../winix/winixd/core/slog.h ticketinfo.h
./createticket.o: ../../../../winix/winixd/functions/functions.h
./createticket.o: ../../../../winix/winixd/functions/functionbase.h
./createticket.o: ../../../../winix/winixd/functions/functionparser.h
./createticket.o: ../../../../winix/winixd/core/dirs.h
./createticket.o: ../../../../winix/winixd/functions/account.h
./createticket.o: ../../../../winix/winixd/functions/adduser.h
./createticket.o: ../../../../winix/winixd/functions/cat.h
@ -275,15 +277,13 @@
./editticket.o: ../../../../winix/winixd/core/system.h
./editticket.o: ../../../../winix/winixd/core/job.h
./editticket.o: ../../../../winix/winixd/core/basethread.h
./editticket.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./editticket.o: ../../../../winix/winixd/core/plugin.h pluginmsg.h
./editticket.o: ../../../../winix/winixd/core/plugindata.h
./editticket.o: ../../../../winix/winixd/core/winixbase.h
./editticket.o: ../../../../winix/winixd/core/dirs.h
./editticket.o: ../../../../winix/winixd/core/dircontainer.h
./editticket.o: ../../../../winix/winixd/db/db.h
./editticket.o: ../../../../winix/winixd/db/dbbase.h
./editticket.o: ../../../../winix/winixd/models/user.h
./editticket.o: ../../../../winix/winixd/core/jobtask.h
./editticket.o: ../../../../winix/winixd/core/request.h
./editticket.o: ../../../../winix/winixd/models/item.h
./editticket.o: ../../../../winix/winixd/models/winixmodel.h
./editticket.o: ../../../../winix/winixd/models/winixmodelconnector.h
./editticket.o: ../../../../winix/winixd/models/itemcontent.h
./editticket.o: ../../../../winix/winixd/templates/htmltextstream.h
./editticket.o: ../../../../winix/winixd/templates/misc.h
./editticket.o: ../../../../winix/winixd/templates/localefilter.h
./editticket.o: ../../../../winix/winixd/templates/locale.h
@ -297,33 +297,38 @@
./editticket.o: ../../../../ezc/src/models.h
./editticket.o: ../../../../ezc/src/patternparser.h
./editticket.o: ../../../../winix/winixd/templates/htmltextstream.h
./editticket.o: ../../../../winix/winixd/core/error.h
./editticket.o: ../../../../winix/winixd/core/config.h
./editticket.o: ../../../../winix/winixd/core/textstream.h
./editticket.o: ../../../../winix/winixd/models/winixmodel.h
./editticket.o: ../../../../winix/winixd/models/winixmodelconnector.h
./editticket.o: ../../../../winix/winixd/core/header.h
./editticket.o: ../../../../winix/winixd/core/compress.h
./editticket.o: ../../../../winix/winixd/core/winixbase.h
./editticket.o: ../../../../winix/winixd/core/plugin.h pluginmsg.h
./editticket.o: ../../../../winix/winixd/core/plugindata.h
./editticket.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./editticket.o: ../../../../winix/winixd/core/mount.h
./editticket.o: ../../../../winix/winixd/core/mounts.h
./editticket.o: ../../../../winix/winixd/db/db.h
./editticket.o: ../../../../winix/winixd/db/dbbase.h
./editticket.o: ../../../../winix/winixd/models/user.h
./editticket.o: ../../../../winix/winixd/models/group.h
./editticket.o: ../../../../winix/winixd/core/dircontainer.h
./editticket.o: ../../../../winix/winixd/models/item.h
./editticket.o: ../../../../winix/winixd/models/itemcontent.h
./editticket.o: ../../../../winix/winixd/templates/htmltextstream.h
./editticket.o: ../../../../winix/winixd/core/ugcontainer.h
./editticket.o: ../../../../winix/winixd/core/request.h
./editticket.o: ../../../../winix/winixd/core/mounts.h
./editticket.o: ../../../../winix/winixd/core/mount.h
./editticket.o: ../../../../winix/winixd/core/error.h
./editticket.o: ../../../../winix/winixd/core/mountparser.h
./editticket.o: ../../../../winix/winixd/core/config.h
./editticket.o: ../../../../winix/winixd/core/crypt.h
./editticket.o: ../../../../winix/winixd/core/run.h
./editticket.o: ../../../../winix/winixd/core/users.h
./editticket.o: ../../../../winix/winixd/core/ugcontainer.h
./editticket.o: ../../../../winix/winixd/core/lastcontainer.h
./editticket.o: ../../../../winix/winixd/core/cur.h
./editticket.o: ../../../../winix/winixd/core/session.h
./editticket.o: ../../../../winix/winixd/core/rebus.h
./editticket.o: ../../../../winix/winixd/core/textstream.h
./editticket.o: ../../../../winix/winixd/core/ipban.h
./editticket.o: ../../../../winix/winixd/models/winixmodel.h
./editticket.o: ../../../../winix/winixd/core/groups.h
./editticket.o: ../../../../winix/winixd/core/loadavg.h
./editticket.o: ../../../../winix/winixd/core/dirs.h
./editticket.o: ../../../../winix/winixd/core/dircontainer.h
./editticket.o: ../../../../winix/winixd/core/crypt.h
./editticket.o: ../../../../winix/winixd/core/run.h
./editticket.o: ../../../../winix/winixd/core/users.h
./editticket.o: ../../../../winix/winixd/core/groups.h
./editticket.o: ../../../../winix/winixd/core/ugcontainer.h
./editticket.o: ../../../../winix/winixd/core/image.h
./editticket.o: ../../../../winix/winixd/core/threadmanager.h
./editticket.o: ../../../../winix/winixd/models/winixmodelconnector.h
@ -336,19 +341,19 @@
./editticket.o: ../../../../winix/winixd/core/basethread.h
./editticket.o: ../../../../winix/winixd/notify/templatesnotify.h
./editticket.o: ../../../../winix/winixd/core/users.h
./editticket.o: ../../../../winix/winixd/core/lastcontainer.h
./editticket.o: ../../../../winix/winixd/core/timezones.h
./editticket.o: ../../../../winix/winixd/core/timezone.h
./editticket.o: ../../../../winix/winixd/functions/functions.h
./editticket.o: ../../../../winix/winixd/functions/functionbase.h
./editticket.o: ../../../../winix/winixd/functions/functionparser.h
./editticket.o: ../../../../winix/winixd/core/cur.h
./editticket.o: ../../../../winix/winixd/core/dirs.h
./editticket.o: ../../../../winix/winixd/functions/account.h
./editticket.o: ../../../../winix/winixd/functions/adduser.h
./editticket.o: ../../../../winix/winixd/functions/cat.h
./editticket.o: ../../../../winix/winixd/functions/chmod.h
./editticket.o: ../../../../winix/winixd/functions/privchanger.h
./editticket.o: ../../../../winix/winixd/core/request.h
./editticket.o: ../../../../winix/winixd/core/header.h
./editticket.o: ../../../../winix/winixd/functions/chown.h
./editticket.o: ../../../../winix/winixd/functions/ckeditor.h
./editticket.o: ../../../../winix/winixd/functions/cp.h
@ -393,7 +398,6 @@
./editticket.o: ../../../../winix/winixd/core/sessionmanager.h
./editticket.o: ../../../../winix/winixd/core/sessioncontainer.h
./editticket.o: ../../../../winix/winixd/core/ipbancontainer.h
./editticket.o: ../../../../winix/winixd/core/system.h
./editticket.o: ../../../../winix/winixd/core/sessionidmanager.h
./editticket.o: ../../../../tito/src/base64.h ../../../../tito/src/aes.h
./editticket.o: ../../../../winix/winixd/core/slog.h
@ -474,15 +478,13 @@
./funticket.o: ../../../../winix/winixd/core/system.h
./funticket.o: ../../../../winix/winixd/core/job.h
./funticket.o: ../../../../winix/winixd/core/basethread.h
./funticket.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./funticket.o: ../../../../winix/winixd/core/plugin.h pluginmsg.h
./funticket.o: ../../../../winix/winixd/core/plugindata.h
./funticket.o: ../../../../winix/winixd/core/winixbase.h
./funticket.o: ../../../../winix/winixd/core/dirs.h
./funticket.o: ../../../../winix/winixd/core/dircontainer.h
./funticket.o: ../../../../winix/winixd/db/db.h
./funticket.o: ../../../../winix/winixd/db/dbbase.h
./funticket.o: ../../../../winix/winixd/models/user.h
./funticket.o: ../../../../winix/winixd/core/jobtask.h
./funticket.o: ../../../../winix/winixd/core/request.h
./funticket.o: ../../../../winix/winixd/models/item.h
./funticket.o: ../../../../winix/winixd/models/winixmodel.h
./funticket.o: ../../../../winix/winixd/models/winixmodelconnector.h
./funticket.o: ../../../../winix/winixd/models/itemcontent.h
./funticket.o: ../../../../winix/winixd/templates/htmltextstream.h
./funticket.o: ../../../../winix/winixd/templates/misc.h
./funticket.o: ../../../../winix/winixd/templates/localefilter.h
./funticket.o: ../../../../winix/winixd/templates/locale.h
@ -495,33 +497,38 @@
./funticket.o: ../../../../ezc/src/models.h
./funticket.o: ../../../../ezc/src/patternparser.h
./funticket.o: ../../../../winix/winixd/templates/htmltextstream.h
./funticket.o: ../../../../winix/winixd/core/error.h
./funticket.o: ../../../../winix/winixd/core/config.h
./funticket.o: ../../../../winix/winixd/core/textstream.h
./funticket.o: ../../../../winix/winixd/models/winixmodel.h
./funticket.o: ../../../../winix/winixd/models/winixmodelconnector.h
./funticket.o: ../../../../winix/winixd/core/header.h
./funticket.o: ../../../../winix/winixd/core/compress.h
./funticket.o: ../../../../winix/winixd/core/winixbase.h
./funticket.o: ../../../../winix/winixd/core/plugin.h pluginmsg.h
./funticket.o: ../../../../winix/winixd/core/plugindata.h
./funticket.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./funticket.o: ../../../../winix/winixd/core/mount.h
./funticket.o: ../../../../winix/winixd/core/mounts.h
./funticket.o: ../../../../winix/winixd/db/db.h
./funticket.o: ../../../../winix/winixd/db/dbbase.h
./funticket.o: ../../../../winix/winixd/models/user.h
./funticket.o: ../../../../winix/winixd/models/group.h
./funticket.o: ../../../../winix/winixd/core/dircontainer.h
./funticket.o: ../../../../winix/winixd/models/item.h
./funticket.o: ../../../../winix/winixd/models/itemcontent.h
./funticket.o: ../../../../winix/winixd/templates/htmltextstream.h
./funticket.o: ../../../../winix/winixd/core/ugcontainer.h
./funticket.o: ../../../../winix/winixd/core/request.h
./funticket.o: ../../../../winix/winixd/core/mounts.h
./funticket.o: ../../../../winix/winixd/core/mount.h
./funticket.o: ../../../../winix/winixd/core/error.h
./funticket.o: ../../../../winix/winixd/core/mountparser.h
./funticket.o: ../../../../winix/winixd/core/config.h
./funticket.o: ../../../../winix/winixd/core/crypt.h
./funticket.o: ../../../../winix/winixd/core/run.h
./funticket.o: ../../../../winix/winixd/core/users.h
./funticket.o: ../../../../winix/winixd/core/ugcontainer.h
./funticket.o: ../../../../winix/winixd/core/lastcontainer.h
./funticket.o: ../../../../winix/winixd/core/cur.h
./funticket.o: ../../../../winix/winixd/core/session.h
./funticket.o: ../../../../winix/winixd/core/rebus.h
./funticket.o: ../../../../winix/winixd/core/textstream.h
./funticket.o: ../../../../winix/winixd/core/ipban.h
./funticket.o: ../../../../winix/winixd/models/winixmodel.h
./funticket.o: ../../../../winix/winixd/core/groups.h
./funticket.o: ../../../../winix/winixd/core/loadavg.h
./funticket.o: ../../../../winix/winixd/core/dirs.h
./funticket.o: ../../../../winix/winixd/core/dircontainer.h
./funticket.o: ../../../../winix/winixd/core/crypt.h
./funticket.o: ../../../../winix/winixd/core/run.h
./funticket.o: ../../../../winix/winixd/core/users.h
./funticket.o: ../../../../winix/winixd/core/groups.h
./funticket.o: ../../../../winix/winixd/core/ugcontainer.h
./funticket.o: ../../../../winix/winixd/core/image.h
./funticket.o: ../../../../winix/winixd/core/threadmanager.h
./funticket.o: ../../../../winix/winixd/models/winixmodelconnector.h
@ -534,19 +541,19 @@
./funticket.o: ../../../../winix/winixd/core/basethread.h
./funticket.o: ../../../../winix/winixd/notify/templatesnotify.h
./funticket.o: ../../../../winix/winixd/core/users.h
./funticket.o: ../../../../winix/winixd/core/lastcontainer.h
./funticket.o: ../../../../winix/winixd/core/timezones.h
./funticket.o: ../../../../winix/winixd/core/timezone.h
./funticket.o: ../../../../winix/winixd/functions/functions.h
./funticket.o: ../../../../winix/winixd/functions/functionbase.h
./funticket.o: ../../../../winix/winixd/functions/functionparser.h
./funticket.o: ../../../../winix/winixd/core/cur.h
./funticket.o: ../../../../winix/winixd/core/dirs.h
./funticket.o: ../../../../winix/winixd/functions/account.h
./funticket.o: ../../../../winix/winixd/functions/adduser.h
./funticket.o: ../../../../winix/winixd/functions/cat.h
./funticket.o: ../../../../winix/winixd/functions/chmod.h
./funticket.o: ../../../../winix/winixd/functions/privchanger.h
./funticket.o: ../../../../winix/winixd/core/request.h
./funticket.o: ../../../../winix/winixd/core/header.h
./funticket.o: ../../../../winix/winixd/functions/chown.h
./funticket.o: ../../../../winix/winixd/functions/ckeditor.h
./funticket.o: ../../../../winix/winixd/functions/cp.h
@ -591,7 +598,6 @@
./funticket.o: ../../../../winix/winixd/core/sessionmanager.h
./funticket.o: ../../../../winix/winixd/core/sessioncontainer.h
./funticket.o: ../../../../winix/winixd/core/ipbancontainer.h
./funticket.o: ../../../../winix/winixd/core/system.h
./funticket.o: ../../../../winix/winixd/core/sessionidmanager.h
./funticket.o: ../../../../tito/src/base64.h ../../../../tito/src/aes.h
./funticket.o: ../../../../winix/winixd/core/slog.h
@ -665,15 +671,13 @@
./init.o: ../../../../winix/winixd/core/system.h
./init.o: ../../../../winix/winixd/core/job.h
./init.o: ../../../../winix/winixd/core/basethread.h
./init.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./init.o: ../../../../winix/winixd/core/plugin.h pluginmsg.h
./init.o: ../../../../winix/winixd/core/plugindata.h
./init.o: ../../../../winix/winixd/core/winixbase.h
./init.o: ../../../../winix/winixd/core/dirs.h
./init.o: ../../../../winix/winixd/core/dircontainer.h
./init.o: ../../../../winix/winixd/db/db.h
./init.o: ../../../../winix/winixd/db/dbbase.h
./init.o: ../../../../winix/winixd/models/user.h
./init.o: ../../../../winix/winixd/core/jobtask.h
./init.o: ../../../../winix/winixd/core/request.h
./init.o: ../../../../winix/winixd/models/item.h
./init.o: ../../../../winix/winixd/models/winixmodel.h
./init.o: ../../../../winix/winixd/models/winixmodelconnector.h
./init.o: ../../../../winix/winixd/models/itemcontent.h
./init.o: ../../../../winix/winixd/templates/htmltextstream.h
./init.o: ../../../../winix/winixd/templates/misc.h
./init.o: ../../../../winix/winixd/templates/localefilter.h
./init.o: ../../../../winix/winixd/templates/locale.h
@ -685,33 +689,38 @@
./init.o: ../../../../ezc/src/expressionparser.h ../../../../ezc/src/models.h
./init.o: ../../../../ezc/src/patternparser.h
./init.o: ../../../../winix/winixd/templates/htmltextstream.h
./init.o: ../../../../winix/winixd/core/error.h
./init.o: ../../../../winix/winixd/core/config.h
./init.o: ../../../../winix/winixd/core/textstream.h
./init.o: ../../../../winix/winixd/models/winixmodel.h
./init.o: ../../../../winix/winixd/models/winixmodelconnector.h
./init.o: ../../../../winix/winixd/core/header.h
./init.o: ../../../../winix/winixd/core/compress.h
./init.o: ../../../../winix/winixd/core/winixbase.h
./init.o: ../../../../winix/winixd/core/plugin.h pluginmsg.h
./init.o: ../../../../winix/winixd/core/plugindata.h
./init.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./init.o: ../../../../winix/winixd/core/mount.h
./init.o: ../../../../winix/winixd/core/mounts.h
./init.o: ../../../../winix/winixd/db/db.h
./init.o: ../../../../winix/winixd/db/dbbase.h
./init.o: ../../../../winix/winixd/models/user.h
./init.o: ../../../../winix/winixd/models/group.h
./init.o: ../../../../winix/winixd/core/dircontainer.h
./init.o: ../../../../winix/winixd/models/item.h
./init.o: ../../../../winix/winixd/models/itemcontent.h
./init.o: ../../../../winix/winixd/templates/htmltextstream.h
./init.o: ../../../../winix/winixd/core/ugcontainer.h
./init.o: ../../../../winix/winixd/core/request.h
./init.o: ../../../../winix/winixd/core/mounts.h
./init.o: ../../../../winix/winixd/core/mount.h
./init.o: ../../../../winix/winixd/core/error.h
./init.o: ../../../../winix/winixd/core/mountparser.h
./init.o: ../../../../winix/winixd/core/config.h
./init.o: ../../../../winix/winixd/core/crypt.h
./init.o: ../../../../winix/winixd/core/run.h
./init.o: ../../../../winix/winixd/core/users.h
./init.o: ../../../../winix/winixd/core/ugcontainer.h
./init.o: ../../../../winix/winixd/core/lastcontainer.h
./init.o: ../../../../winix/winixd/core/cur.h
./init.o: ../../../../winix/winixd/core/session.h
./init.o: ../../../../winix/winixd/core/rebus.h
./init.o: ../../../../winix/winixd/core/textstream.h
./init.o: ../../../../winix/winixd/core/ipban.h
./init.o: ../../../../winix/winixd/models/winixmodel.h
./init.o: ../../../../winix/winixd/core/groups.h
./init.o: ../../../../winix/winixd/core/loadavg.h
./init.o: ../../../../winix/winixd/core/dirs.h
./init.o: ../../../../winix/winixd/core/dircontainer.h
./init.o: ../../../../winix/winixd/core/crypt.h
./init.o: ../../../../winix/winixd/core/run.h
./init.o: ../../../../winix/winixd/core/users.h
./init.o: ../../../../winix/winixd/core/groups.h
./init.o: ../../../../winix/winixd/core/ugcontainer.h
./init.o: ../../../../winix/winixd/core/image.h
./init.o: ../../../../winix/winixd/core/threadmanager.h
./init.o: ../../../../winix/winixd/models/winixmodelconnector.h
@ -724,19 +733,19 @@
./init.o: ../../../../winix/winixd/core/basethread.h
./init.o: ../../../../winix/winixd/notify/templatesnotify.h
./init.o: ../../../../winix/winixd/core/users.h
./init.o: ../../../../winix/winixd/core/lastcontainer.h
./init.o: ../../../../winix/winixd/core/timezones.h
./init.o: ../../../../winix/winixd/core/timezone.h
./init.o: ../../../../winix/winixd/functions/functions.h
./init.o: ../../../../winix/winixd/functions/functionbase.h
./init.o: ../../../../winix/winixd/functions/functionparser.h
./init.o: ../../../../winix/winixd/core/cur.h
./init.o: ../../../../winix/winixd/core/dirs.h
./init.o: ../../../../winix/winixd/functions/account.h
./init.o: ../../../../winix/winixd/functions/adduser.h
./init.o: ../../../../winix/winixd/functions/cat.h
./init.o: ../../../../winix/winixd/functions/chmod.h
./init.o: ../../../../winix/winixd/functions/privchanger.h
./init.o: ../../../../winix/winixd/core/request.h
./init.o: ../../../../winix/winixd/core/header.h
./init.o: ../../../../winix/winixd/functions/chown.h
./init.o: ../../../../winix/winixd/functions/ckeditor.h
./init.o: ../../../../winix/winixd/functions/cp.h
@ -781,7 +790,6 @@
./init.o: ../../../../winix/winixd/core/sessionmanager.h
./init.o: ../../../../winix/winixd/core/sessioncontainer.h
./init.o: ../../../../winix/winixd/core/ipbancontainer.h
./init.o: ../../../../winix/winixd/core/system.h
./init.o: ../../../../winix/winixd/core/sessionidmanager.h
./init.o: ../../../../tito/src/base64.h ../../../../tito/src/aes.h
./init.o: ../../../../winix/winixd/core/slog.h
@ -877,15 +885,13 @@
./showtickets.o: ../../../../winix/winixd/core/system.h
./showtickets.o: ../../../../winix/winixd/core/job.h
./showtickets.o: ../../../../winix/winixd/core/basethread.h
./showtickets.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./showtickets.o: ../../../../winix/winixd/core/plugin.h pluginmsg.h
./showtickets.o: ../../../../winix/winixd/core/plugindata.h
./showtickets.o: ../../../../winix/winixd/core/winixbase.h
./showtickets.o: ../../../../winix/winixd/core/dirs.h
./showtickets.o: ../../../../winix/winixd/core/dircontainer.h
./showtickets.o: ../../../../winix/winixd/db/db.h
./showtickets.o: ../../../../winix/winixd/db/dbbase.h
./showtickets.o: ../../../../winix/winixd/models/user.h
./showtickets.o: ../../../../winix/winixd/core/jobtask.h
./showtickets.o: ../../../../winix/winixd/core/request.h
./showtickets.o: ../../../../winix/winixd/models/item.h
./showtickets.o: ../../../../winix/winixd/models/winixmodel.h
./showtickets.o: ../../../../winix/winixd/models/winixmodelconnector.h
./showtickets.o: ../../../../winix/winixd/models/itemcontent.h
./showtickets.o: ../../../../winix/winixd/templates/htmltextstream.h
./showtickets.o: ../../../../winix/winixd/templates/misc.h
./showtickets.o: ../../../../winix/winixd/templates/localefilter.h
./showtickets.o: ../../../../winix/winixd/templates/locale.h
@ -899,33 +905,38 @@
./showtickets.o: ../../../../ezc/src/models.h
./showtickets.o: ../../../../ezc/src/patternparser.h
./showtickets.o: ../../../../winix/winixd/templates/htmltextstream.h
./showtickets.o: ../../../../winix/winixd/core/error.h
./showtickets.o: ../../../../winix/winixd/core/config.h
./showtickets.o: ../../../../winix/winixd/core/textstream.h
./showtickets.o: ../../../../winix/winixd/models/winixmodel.h
./showtickets.o: ../../../../winix/winixd/models/winixmodelconnector.h
./showtickets.o: ../../../../winix/winixd/core/header.h
./showtickets.o: ../../../../winix/winixd/core/compress.h
./showtickets.o: ../../../../winix/winixd/core/winixbase.h
./showtickets.o: ../../../../winix/winixd/core/plugin.h pluginmsg.h
./showtickets.o: ../../../../winix/winixd/core/plugindata.h
./showtickets.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./showtickets.o: ../../../../winix/winixd/core/mount.h
./showtickets.o: ../../../../winix/winixd/core/mounts.h
./showtickets.o: ../../../../winix/winixd/db/db.h
./showtickets.o: ../../../../winix/winixd/db/dbbase.h
./showtickets.o: ../../../../winix/winixd/models/user.h
./showtickets.o: ../../../../winix/winixd/models/group.h
./showtickets.o: ../../../../winix/winixd/core/dircontainer.h
./showtickets.o: ../../../../winix/winixd/models/item.h
./showtickets.o: ../../../../winix/winixd/models/itemcontent.h
./showtickets.o: ../../../../winix/winixd/templates/htmltextstream.h
./showtickets.o: ../../../../winix/winixd/core/ugcontainer.h
./showtickets.o: ../../../../winix/winixd/core/request.h
./showtickets.o: ../../../../winix/winixd/core/mounts.h
./showtickets.o: ../../../../winix/winixd/core/mount.h
./showtickets.o: ../../../../winix/winixd/core/error.h
./showtickets.o: ../../../../winix/winixd/core/mountparser.h
./showtickets.o: ../../../../winix/winixd/core/config.h
./showtickets.o: ../../../../winix/winixd/core/crypt.h
./showtickets.o: ../../../../winix/winixd/core/run.h
./showtickets.o: ../../../../winix/winixd/core/users.h
./showtickets.o: ../../../../winix/winixd/core/ugcontainer.h
./showtickets.o: ../../../../winix/winixd/core/lastcontainer.h
./showtickets.o: ../../../../winix/winixd/core/cur.h
./showtickets.o: ../../../../winix/winixd/core/session.h
./showtickets.o: ../../../../winix/winixd/core/rebus.h
./showtickets.o: ../../../../winix/winixd/core/textstream.h
./showtickets.o: ../../../../winix/winixd/core/ipban.h
./showtickets.o: ../../../../winix/winixd/models/winixmodel.h
./showtickets.o: ../../../../winix/winixd/core/groups.h
./showtickets.o: ../../../../winix/winixd/core/loadavg.h
./showtickets.o: ../../../../winix/winixd/core/dirs.h
./showtickets.o: ../../../../winix/winixd/core/dircontainer.h
./showtickets.o: ../../../../winix/winixd/core/crypt.h
./showtickets.o: ../../../../winix/winixd/core/run.h
./showtickets.o: ../../../../winix/winixd/core/users.h
./showtickets.o: ../../../../winix/winixd/core/groups.h
./showtickets.o: ../../../../winix/winixd/core/ugcontainer.h
./showtickets.o: ../../../../winix/winixd/core/image.h
./showtickets.o: ../../../../winix/winixd/core/threadmanager.h
./showtickets.o: ../../../../winix/winixd/models/winixmodelconnector.h
@ -938,19 +949,19 @@
./showtickets.o: ../../../../winix/winixd/core/basethread.h
./showtickets.o: ../../../../winix/winixd/notify/templatesnotify.h
./showtickets.o: ../../../../winix/winixd/core/users.h
./showtickets.o: ../../../../winix/winixd/core/lastcontainer.h
./showtickets.o: ../../../../winix/winixd/core/timezones.h
./showtickets.o: ../../../../winix/winixd/core/timezone.h
./showtickets.o: ../../../../winix/winixd/functions/functions.h
./showtickets.o: ../../../../winix/winixd/functions/functionbase.h
./showtickets.o: ../../../../winix/winixd/functions/functionparser.h
./showtickets.o: ../../../../winix/winixd/core/cur.h
./showtickets.o: ../../../../winix/winixd/core/dirs.h
./showtickets.o: ../../../../winix/winixd/functions/account.h
./showtickets.o: ../../../../winix/winixd/functions/adduser.h
./showtickets.o: ../../../../winix/winixd/functions/cat.h
./showtickets.o: ../../../../winix/winixd/functions/chmod.h
./showtickets.o: ../../../../winix/winixd/functions/privchanger.h
./showtickets.o: ../../../../winix/winixd/core/request.h
./showtickets.o: ../../../../winix/winixd/core/header.h
./showtickets.o: ../../../../winix/winixd/functions/chown.h
./showtickets.o: ../../../../winix/winixd/functions/ckeditor.h
./showtickets.o: ../../../../winix/winixd/functions/cp.h
@ -995,7 +1006,6 @@
./showtickets.o: ../../../../winix/winixd/core/sessionmanager.h
./showtickets.o: ../../../../winix/winixd/core/sessioncontainer.h
./showtickets.o: ../../../../winix/winixd/core/ipbancontainer.h
./showtickets.o: ../../../../winix/winixd/core/system.h
./showtickets.o: ../../../../winix/winixd/core/sessionidmanager.h
./showtickets.o: ../../../../tito/src/base64.h ../../../../tito/src/aes.h
./showtickets.o: ../../../../winix/winixd/core/slog.h
@ -1113,13 +1123,23 @@
./templates.o: ../../../../winix/winixd/core/system.h
./templates.o: ../../../../winix/winixd/core/job.h
./templates.o: ../../../../winix/winixd/core/basethread.h
./templates.o: ../../../../winix/winixd/core/synchro.h
./templates.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./templates.o: ../../../../winix/winixd/core/winixbase.h
./templates.o: ../../../../winix/winixd/core/config.h
./templates.o: ../../../../winix/winixd/core/jobtask.h
./templates.o: ../../../../winix/winixd/core/request.h
./templates.o: ../../../../winix/winixd/core/requesttypes.h
./templates.o: ../../../../winix/winixd/models/item.h
./templates.o: ../../../../winix/winixd/models/winixmodel.h
./templates.o: ../../../../winix/winixd/core/log.h
./templates.o: ../../../../winix/winixd/models/winixmodelconnector.h
./templates.o: ../../../../winix/winixd/models/itemcontent.h
./templates.o: ../../../../winix/winixd/templates/htmltextstream.h
./templates.o: ../../../../winix/winixd/templates/misc.h
./templates.o: ../../../../winix/winixd/templates/localefilter.h
./templates.o: ../../../../winix/winixd/templates/locale.h
./templates.o: ../../../../pikotools/src/space/spaceparser.h
./templates.o: ../../../../pikotools/src/space/space.h
./templates.o: ../../../../pikotools/src/convert/baseparser.h
./templates.o: ../../../../winix/winixd/core/winixbase.h
./templates.o: ../../../../winix/winixd/core/config.h
./templates.o: ../../../../winix/winixd/core/log.h
./templates.o: ../../../../winix/winixd/core/logmanipulators.h
./templates.o: ../../../../morm/src/morm.h ../../../../morm/src/finder.h
@ -1130,50 +1150,44 @@
./templates.o: ../../../../morm/src/postgresqlconnector.h
./templates.o: ../../../../morm/src/postgresqlqueryresult.h
./templates.o: ../../../../morm/src/transaction.h
./templates.o: ../../../../winix/winixd/core/log.h
./templates.o: ../../../../winix/winixd/core/synchro.h
./templates.o: ../../../../winix/winixd/core/filelog.h
./templates.o: ../../../../winix/winixd/core/lock.h
./templates.o: ../../../../winix/winixd/core/synchro.h
./templates.o: ../../../../pikotools/src/convert/patternreplacer.h
./templates.o: ../../../../winix/winixd/templates/htmltextstream.h
./templates.o: ../../../../winix/winixd/core/error.h
./templates.o: ../../../../winix/winixd/core/config.h
./templates.o: ../../../../winix/winixd/core/textstream.h
./templates.o: ../../../../winix/winixd/models/winixmodel.h
./templates.o: ../../../../winix/winixd/core/header.h
./templates.o: ../../../../winix/winixd/core/compress.h
./templates.o: ../../../../winix/winixd/core/winixbase.h
./templates.o: ../../../../winix/winixd/core/plugin.h pluginmsg.h
./templates.o: ../../../../winix/winixd/core/plugindata.h
./templates.o: ../../../../winix/winixd/core/winixbase.h
./templates.o: ../../../../winix/winixd/core/dirs.h
./templates.o: ../../../../winix/winixd/core/dircontainer.h
./templates.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./templates.o: ../../../../winix/winixd/core/mount.h
./templates.o: ../../../../winix/winixd/core/mounts.h
./templates.o: ../../../../winix/winixd/db/db.h
./templates.o: ../../../../winix/winixd/db/dbbase.h
./templates.o: ../../../../winix/winixd/models/user.h
./templates.o: ../../../../winix/winixd/templates/misc.h
./templates.o: ../../../../winix/winixd/templates/localefilter.h
./templates.o: ../../../../winix/winixd/templates/locale.h
./templates.o: ../../../../pikotools/src/convert/patternreplacer.h
./templates.o: ../../../../winix/winixd/templates/htmltextstream.h
./templates.o: ../../../../winix/winixd/models/winixmodel.h
./templates.o: ../../../../winix/winixd/models/winixmodelconnector.h
./templates.o: ../../../../winix/winixd/models/group.h
./templates.o: ../../../../winix/winixd/core/dircontainer.h
./templates.o: ../../../../winix/winixd/models/item.h
./templates.o: ../../../../winix/winixd/models/itemcontent.h
./templates.o: ../../../../winix/winixd/templates/htmltextstream.h
./templates.o: ../../../../winix/winixd/core/ugcontainer.h
./templates.o: ../../../../winix/winixd/core/request.h
./templates.o: ../../../../winix/winixd/core/mounts.h
./templates.o: ../../../../winix/winixd/core/mount.h
./templates.o: ../../../../winix/winixd/core/error.h
./templates.o: ../../../../winix/winixd/core/mountparser.h
./templates.o: ../../../../winix/winixd/core/config.h
./templates.o: ../../../../winix/winixd/core/crypt.h
./templates.o: ../../../../winix/winixd/core/run.h
./templates.o: ../../../../winix/winixd/core/users.h
./templates.o: ../../../../winix/winixd/core/ugcontainer.h
./templates.o: ../../../../winix/winixd/core/lastcontainer.h
./templates.o: ../../../../winix/winixd/core/cur.h
./templates.o: ../../../../winix/winixd/core/session.h
./templates.o: ../../../../winix/winixd/core/rebus.h
./templates.o: ../../../../winix/winixd/core/textstream.h
./templates.o: ../../../../winix/winixd/core/ipban.h
./templates.o: ../../../../winix/winixd/models/winixmodel.h
./templates.o: ../../../../winix/winixd/core/groups.h
./templates.o: ../../../../winix/winixd/core/loadavg.h
./templates.o: ../../../../winix/winixd/core/dirs.h
./templates.o: ../../../../winix/winixd/core/dircontainer.h
./templates.o: ../../../../winix/winixd/core/crypt.h
./templates.o: ../../../../winix/winixd/core/run.h
./templates.o: ../../../../winix/winixd/core/users.h
./templates.o: ../../../../winix/winixd/core/groups.h
./templates.o: ../../../../winix/winixd/core/ugcontainer.h
./templates.o: ../../../../winix/winixd/core/image.h
./templates.o: ../../../../winix/winixd/core/threadmanager.h
./templates.o: ../../../../winix/winixd/models/winixmodelconnector.h
@ -1183,7 +1197,6 @@
./templates.o: ../../../../winix/winixd/templates/locale.h
./templates.o: ../../../../winix/winixd/templates/patterns.h
./templates.o: ../../../../winix/winixd/core/misc.h
./templates.o: ../../../../winix/winixd/core/requesttypes.h
./templates.o: ../../../../winix/winixd/core/winix_const.h
./templates.o: ../../../../pikotools/src/convert/convert.h
./templates.o: ../../../../pikotools/src/convert/inttostr.h
@ -1196,19 +1209,19 @@
./templates.o: ../../../../winix/winixd/notify/templatesnotify.h
./templates.o: ../../../../winix/winixd/core/textstream.h
./templates.o: ../../../../winix/winixd/core/users.h
./templates.o: ../../../../winix/winixd/core/lastcontainer.h
./templates.o: ../../../../winix/winixd/core/timezones.h
./templates.o: ../../../../winix/winixd/core/timezone.h
./templates.o: ../../../../winix/winixd/functions/functions.h
./templates.o: ../../../../winix/winixd/functions/functionbase.h
./templates.o: ../../../../winix/winixd/functions/functionparser.h
./templates.o: ../../../../winix/winixd/core/cur.h
./templates.o: ../../../../winix/winixd/core/dirs.h
./templates.o: ../../../../winix/winixd/functions/account.h
./templates.o: ../../../../winix/winixd/functions/adduser.h
./templates.o: ../../../../winix/winixd/functions/cat.h
./templates.o: ../../../../winix/winixd/functions/chmod.h
./templates.o: ../../../../winix/winixd/functions/privchanger.h
./templates.o: ../../../../winix/winixd/core/request.h
./templates.o: ../../../../winix/winixd/core/header.h
./templates.o: ../../../../winix/winixd/functions/chown.h
./templates.o: ../../../../winix/winixd/functions/ckeditor.h
./templates.o: ../../../../winix/winixd/functions/cp.h
@ -1253,7 +1266,6 @@
./templates.o: ../../../../winix/winixd/core/sessionmanager.h
./templates.o: ../../../../winix/winixd/core/sessioncontainer.h
./templates.o: ../../../../winix/winixd/core/ipbancontainer.h
./templates.o: ../../../../winix/winixd/core/system.h
./templates.o: ../../../../winix/winixd/core/sessionidmanager.h
./templates.o: ../../../../tito/src/base64.h ../../../../tito/src/aes.h
./templates.o: ../../../../winix/winixd/core/slog.h tdb.h
@ -1275,15 +1287,6 @@
./ticketinfo.o: ticketinfo.h ticket.h ../../../../winix/winixd/core/system.h
./ticketinfo.o: ../../../../winix/winixd/core/job.h
./ticketinfo.o: ../../../../winix/winixd/core/basethread.h
./ticketinfo.o: ../../../../winix/winixd/core/synchro.h
./ticketinfo.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./ticketinfo.o: ../../../../winix/winixd/core/winixbase.h
./ticketinfo.o: ../../../../winix/winixd/core/config.h
./ticketinfo.o: ../../../../pikotools/src/space/spaceparser.h
./ticketinfo.o: ../../../../pikotools/src/space/space.h
./ticketinfo.o: ../../../../pikotools/src/convert/baseparser.h
./ticketinfo.o: ../../../../pikotools/src/textstream/textstream.h
./ticketinfo.o: ../../../../pikotools/src/textstream/stream.h
./ticketinfo.o: ../../../../pikotools/src/space/space.h
./ticketinfo.o: ../../../../pikotools/src/textstream/types.h
./ticketinfo.o: ../../../../pikotools/src/convert/inttostr.h
@ -1291,24 +1294,28 @@
./ticketinfo.o: ../../../../pikotools/src/textstream/stream.h
./ticketinfo.o: ../../../../pikotools/src/utf8/utf8_templates.h
./ticketinfo.o: ../../../../pikotools/src/utf8/utf8_private.h
./ticketinfo.o: ../../../../winix/winixd/core/jobtask.h
./ticketinfo.o: ../../../../winix/winixd/core/request.h
./ticketinfo.o: ../../../../winix/winixd/core/requesttypes.h
./ticketinfo.o: ../../../../pikotools/src/textstream/textstream.h
./ticketinfo.o: ../../../../pikotools/src/textstream/stream.h
./ticketinfo.o: ../../../../pikotools/src/date/date.h
./ticketinfo.o: ../../../../pikotools/src/membuffer/membuffer.h
./ticketinfo.o: ../../../../pikotools/src/textstream/types.h
./ticketinfo.o: ../../../../pikotools/src/utf8/utf8_stream.h
./ticketinfo.o: ../../../../winix/winixd/core/log.h
./ticketinfo.o: ../../../../winix/winixd/core/logmanipulators.h
./ticketinfo.o: ../../../../pikotools/src/log/log.h
./ticketinfo.o: ../../../../pikotools/src/log/filelog.h
./ticketinfo.o: ../../../../morm/src/morm.h ../../../../morm/src/version.h
./ticketinfo.o: ../../../../morm/src/morm_types.h
./ticketinfo.o: ../../../../winix/winixd/models/item.h
./ticketinfo.o: ../../../../winix/winixd/models/winixmodel.h
./ticketinfo.o: ../../../../morm/src/model.h
./ticketinfo.o: ../../../../morm/src/modelconnector.h
./ticketinfo.o: ../../../../morm/src/clearer.h ../../../../morm/src/ft.h
./ticketinfo.o: ../../../../morm/src/dbconnector.h
./ticketinfo.o: ../../../../pikotools/src/log/log.h
./ticketinfo.o: ../../../../pikotools/src/log/filelog.h
./ticketinfo.o: ../../../../morm/src/queryresult.h
./ticketinfo.o: ../../../../morm/src/flatconnector.h
./ticketinfo.o: ../../../../morm/src/dbexpression.h
./ticketinfo.o: ../../../../morm/src/baseexpression.h
./ticketinfo.o: ../../../../morm/src/morm_types.h
./ticketinfo.o: ../../../../morm/src/modelenv.h
./ticketinfo.o: ../../../../morm/src/modeldata.h
./ticketinfo.o: ../../../../morm/src/cursorhelper.h
@ -1322,6 +1329,21 @@
./ticketinfo.o: ../../../../ezc/src/item.h
./ticketinfo.o: ../../../../pikotools/src/convert/text.h
./ticketinfo.o: ../../../../morm/src/flatexpression.h
./ticketinfo.o: ../../../../winix/winixd/core/log.h
./ticketinfo.o: ../../../../winix/winixd/models/winixmodelconnector.h
./ticketinfo.o: ../../../../winix/winixd/models/itemcontent.h
./ticketinfo.o: ../../../../winix/winixd/templates/htmltextstream.h
./ticketinfo.o: ../../../../winix/winixd/templates/misc.h
./ticketinfo.o: ../../../../winix/winixd/templates/localefilter.h
./ticketinfo.o: ../../../../winix/winixd/templates/locale.h
./ticketinfo.o: ../../../../pikotools/src/space/spaceparser.h
./ticketinfo.o: ../../../../pikotools/src/space/space.h
./ticketinfo.o: ../../../../pikotools/src/convert/baseparser.h
./ticketinfo.o: ../../../../winix/winixd/core/winixbase.h
./ticketinfo.o: ../../../../winix/winixd/core/config.h
./ticketinfo.o: ../../../../winix/winixd/core/log.h
./ticketinfo.o: ../../../../winix/winixd/core/logmanipulators.h
./ticketinfo.o: ../../../../morm/src/morm.h ../../../../morm/src/version.h
./ticketinfo.o: ../../../../morm/src/finder.h ../../../../morm/src/cursor.h
./ticketinfo.o: ../../../../morm/src/jsonexpression.h
./ticketinfo.o: ../../../../morm/src/postgresqlexpression.h
@ -1329,21 +1351,10 @@
./ticketinfo.o: ../../../../morm/src/postgresqlconnector.h
./ticketinfo.o: ../../../../morm/src/postgresqlqueryresult.h
./ticketinfo.o: ../../../../morm/src/transaction.h
./ticketinfo.o: ../../../../winix/winixd/core/log.h
./ticketinfo.o: ../../../../winix/winixd/core/synchro.h
./ticketinfo.o: ../../../../winix/winixd/core/filelog.h
./ticketinfo.o: ../../../../winix/winixd/core/lock.h
./ticketinfo.o: ../../../../winix/winixd/core/plugin.h pluginmsg.h
./ticketinfo.o: ../../../../winix/winixd/core/plugindata.h
./ticketinfo.o: ../../../../winix/winixd/core/winixbase.h
./ticketinfo.o: ../../../../winix/winixd/core/dirs.h
./ticketinfo.o: ../../../../winix/winixd/core/dircontainer.h
./ticketinfo.o: ../../../../winix/winixd/db/db.h
./ticketinfo.o: ../../../../winix/winixd/db/dbbase.h
./ticketinfo.o: ../../../../winix/winixd/models/user.h
./ticketinfo.o: ../../../../winix/winixd/templates/misc.h
./ticketinfo.o: ../../../../winix/winixd/templates/localefilter.h
./ticketinfo.o: ../../../../winix/winixd/templates/locale.h
./ticketinfo.o: ../../../../winix/winixd/core/synchro.h
./ticketinfo.o: ../../../../pikotools/src/convert/patternreplacer.h
./ticketinfo.o: ../../../../ezc/src/ezc.h ../../../../ezc/src/generator.h
./ticketinfo.o: ../../../../ezc/src/blocks.h ../../../../ezc/src/cache.h
@ -1354,33 +1365,38 @@
./ticketinfo.o: ../../../../ezc/src/models.h
./ticketinfo.o: ../../../../ezc/src/patternparser.h
./ticketinfo.o: ../../../../winix/winixd/templates/htmltextstream.h
./ticketinfo.o: ../../../../winix/winixd/core/error.h
./ticketinfo.o: ../../../../winix/winixd/core/config.h
./ticketinfo.o: ../../../../winix/winixd/core/textstream.h
./ticketinfo.o: ../../../../winix/winixd/models/winixmodel.h
./ticketinfo.o: ../../../../winix/winixd/models/winixmodelconnector.h
./ticketinfo.o: ../../../../winix/winixd/core/header.h
./ticketinfo.o: ../../../../winix/winixd/core/compress.h
./ticketinfo.o: ../../../../winix/winixd/core/winixbase.h
./ticketinfo.o: ../../../../winix/winixd/core/plugin.h pluginmsg.h
./ticketinfo.o: ../../../../winix/winixd/core/plugindata.h
./ticketinfo.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./ticketinfo.o: ../../../../winix/winixd/core/mount.h
./ticketinfo.o: ../../../../winix/winixd/core/mounts.h
./ticketinfo.o: ../../../../winix/winixd/db/db.h
./ticketinfo.o: ../../../../winix/winixd/db/dbbase.h
./ticketinfo.o: ../../../../winix/winixd/models/user.h
./ticketinfo.o: ../../../../winix/winixd/models/group.h
./ticketinfo.o: ../../../../winix/winixd/core/dircontainer.h
./ticketinfo.o: ../../../../winix/winixd/models/item.h
./ticketinfo.o: ../../../../winix/winixd/models/itemcontent.h
./ticketinfo.o: ../../../../winix/winixd/templates/htmltextstream.h
./ticketinfo.o: ../../../../winix/winixd/core/ugcontainer.h
./ticketinfo.o: ../../../../winix/winixd/core/request.h
./ticketinfo.o: ../../../../winix/winixd/core/mounts.h
./ticketinfo.o: ../../../../winix/winixd/core/mount.h
./ticketinfo.o: ../../../../winix/winixd/core/error.h
./ticketinfo.o: ../../../../winix/winixd/core/mountparser.h
./ticketinfo.o: ../../../../winix/winixd/core/config.h
./ticketinfo.o: ../../../../winix/winixd/core/crypt.h
./ticketinfo.o: ../../../../winix/winixd/core/run.h
./ticketinfo.o: ../../../../winix/winixd/core/users.h
./ticketinfo.o: ../../../../winix/winixd/core/ugcontainer.h
./ticketinfo.o: ../../../../winix/winixd/core/lastcontainer.h
./ticketinfo.o: ../../../../winix/winixd/core/cur.h
./ticketinfo.o: ../../../../winix/winixd/core/session.h
./ticketinfo.o: ../../../../winix/winixd/core/rebus.h
./ticketinfo.o: ../../../../winix/winixd/core/textstream.h
./ticketinfo.o: ../../../../winix/winixd/core/ipban.h
./ticketinfo.o: ../../../../winix/winixd/models/winixmodel.h
./ticketinfo.o: ../../../../winix/winixd/core/groups.h
./ticketinfo.o: ../../../../winix/winixd/core/loadavg.h
./ticketinfo.o: ../../../../winix/winixd/core/dirs.h
./ticketinfo.o: ../../../../winix/winixd/core/dircontainer.h
./ticketinfo.o: ../../../../winix/winixd/core/crypt.h
./ticketinfo.o: ../../../../winix/winixd/core/run.h
./ticketinfo.o: ../../../../winix/winixd/core/users.h
./ticketinfo.o: ../../../../winix/winixd/core/groups.h
./ticketinfo.o: ../../../../winix/winixd/core/ugcontainer.h
./ticketinfo.o: ../../../../winix/winixd/core/image.h
./ticketinfo.o: ../../../../winix/winixd/core/threadmanager.h
./ticketinfo.o: ../../../../winix/winixd/models/winixmodelconnector.h
@ -1390,7 +1406,6 @@
./ticketinfo.o: ../../../../winix/winixd/templates/locale.h
./ticketinfo.o: ../../../../winix/winixd/templates/patterns.h
./ticketinfo.o: ../../../../winix/winixd/core/misc.h
./ticketinfo.o: ../../../../winix/winixd/core/requesttypes.h
./ticketinfo.o: ../../../../winix/winixd/core/winix_const.h
./ticketinfo.o: ../../../../pikotools/src/convert/convert.h
./ticketinfo.o: ../../../../pikotools/src/convert/inttostr.h
@ -1403,19 +1418,19 @@
./ticketinfo.o: ../../../../winix/winixd/notify/templatesnotify.h
./ticketinfo.o: ../../../../winix/winixd/core/textstream.h
./ticketinfo.o: ../../../../winix/winixd/core/users.h
./ticketinfo.o: ../../../../winix/winixd/core/lastcontainer.h
./ticketinfo.o: ../../../../winix/winixd/core/timezones.h
./ticketinfo.o: ../../../../winix/winixd/core/timezone.h
./ticketinfo.o: ../../../../winix/winixd/functions/functions.h
./ticketinfo.o: ../../../../winix/winixd/functions/functionbase.h
./ticketinfo.o: ../../../../winix/winixd/functions/functionparser.h
./ticketinfo.o: ../../../../winix/winixd/core/cur.h
./ticketinfo.o: ../../../../winix/winixd/core/dirs.h
./ticketinfo.o: ../../../../winix/winixd/functions/account.h
./ticketinfo.o: ../../../../winix/winixd/functions/adduser.h
./ticketinfo.o: ../../../../winix/winixd/functions/cat.h
./ticketinfo.o: ../../../../winix/winixd/functions/chmod.h
./ticketinfo.o: ../../../../winix/winixd/functions/privchanger.h
./ticketinfo.o: ../../../../winix/winixd/core/request.h
./ticketinfo.o: ../../../../winix/winixd/core/header.h
./ticketinfo.o: ../../../../winix/winixd/functions/chown.h
./ticketinfo.o: ../../../../winix/winixd/functions/ckeditor.h
./ticketinfo.o: ../../../../winix/winixd/functions/cp.h
@ -1460,7 +1475,6 @@
./ticketinfo.o: ../../../../winix/winixd/core/sessionmanager.h
./ticketinfo.o: ../../../../winix/winixd/core/sessioncontainer.h
./ticketinfo.o: ../../../../winix/winixd/core/ipbancontainer.h
./ticketinfo.o: ../../../../winix/winixd/core/system.h
./ticketinfo.o: ../../../../winix/winixd/core/sessionidmanager.h
./ticketinfo.o: ../../../../tito/src/base64.h ../../../../tito/src/aes.h
./ticketinfo.o: ../../../../winix/winixd/core/slog.h tdb.h

View File

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2010-2018, Tomasz Sowa
* Copyright (c) 2010-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -142,11 +142,14 @@ void AddNotifyTemplate(PluginInfo & info)
void CreateSession(PluginInfo & info)
{
SessionData * p = new SessionData();
if( info.cur->session )
{
SessionData * p = new SessionData();
p->fun_rm = &info.functions->fun_rm;
info.session->plugin_data.Assign(info.plugin->current_plugin, p);
info.log << log4 << "Ticket: created ticket plugin data: " << (void*)p << logend;
p->fun_rm = &info.functions->fun_rm;
info.cur->session->plugin_data.Assign(info.plugin->current_plugin, p);
info.log << log4 << "Ticket: created ticket plugin data: " << (void*)p << logend;
}
}
@ -205,7 +208,7 @@ using namespace Ticket;
tdb.SetConn(info.db->GetConn());
tdb.LogQueries(info.config->log_db_query);
info.set_dependency_for(ticket_info);
ticket_info.set_dependency((WinixRequest*)info.functions);
ticket_info.SetDb(info.db);
ticket_info.SetTDb(&tdb);
//ticket_info.SetConfig(info.config);

View File

@ -646,7 +646,7 @@ void Templates::CreateFunctions()
ezc_functions.Insert("content", content);
plugin->Call((Session*)0, WINIX_TEMPLATES_CREATEFUNCTIONS, &ezc_functions, &ezc_objects);
plugin->Call(WINIX_TEMPLATES_CREATEFUNCTIONS, &ezc_functions, &ezc_objects);
Ezc::Objects<HtmlTextStream>::Iterator i = ezc_objects.Begin();
@ -840,7 +840,7 @@ using namespace TemplatesFunctions;
ReadIndexTemplates();
ReadChangeTemplates();
plugin->Call((Session*)0, WINIX_ADD_TEMPLATE);
plugin->Call(WINIX_ADD_TEMPLATE);
patterns.RebuildCache();
ezc_blocks.CacheObjects(ezc_objects);

581
winixd/utils/http.cpp Normal file
View File

@ -0,0 +1,581 @@
/*
* This file is a part of Winix
* and is distributed under the 2-Clause BSD licence.
* Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2010-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
#include "http.h"
#include "core/lock.h"
#include "core/log.h"
#include "utf8/utf8.h"
#include "core/header.h"
namespace Winix
{
Http::Http()
{
curl = nullptr;
synchro = nullptr;
browser_name = "Winix";
conn_timeout = 30;
http_headers = nullptr;
read_function_input = nullptr;
read_function_index = 0;
additional_headers_to_send = nullptr;
bearer_token = nullptr;
output_headers_space = nullptr;
change_header_names_to_lower = true;
output_content_type = nullptr;
}
Http::~Http()
{
uninitialize_curl();
}
Http & Http::add_input_headers(pt::Space * headers)
{
additional_headers_to_send = headers;
return *this;
}
Http & Http::get_output_headers_to(pt::Space * out_headers, bool change_names_to_lower)
{
this->output_headers_space = out_headers;
this->change_header_names_to_lower = change_names_to_lower;
return *this;
}
Http & Http::get_output_content_type_to(std::wstring * out_content_type)
{
this->output_content_type = out_content_type;
return *this;
}
Http & Http::add_bearer_token(const wchar_t * token)
{
this->bearer_token = token;
return *this;
}
Http & Http::add_bearer_token(const std::wstring & token)
{
this->bearer_token = token.c_str();
return *this;
}
bool Http::get(const wchar_t * url, std::wstring & out, bool clear_str)
{
std::string url_ascii;
pt::TextStream out_stream;
pt::wide_to_utf8(url, url_ascii);
reset_headers();
bool status = fetch_internal(url_ascii.c_str(), nullptr, out_stream);
// IMPROVE pikotools, add: pt::UTF8ToInt(out_stream, out);
std::string temp;
out_stream.to_str(temp);
pt::utf8_to_wide(temp, out, clear_str);
return status;
}
bool Http::get(const std::wstring & url, std::wstring & out, bool clear_str)
{
return get(url.c_str(), out, clear_str);
}
bool Http::get(const pt::WTextStream & url, std::wstring & out, bool clear_str)
{
std::wstring url_str;
url.to_str(url_str);
return get(url_str, out, clear_str);
}
bool Http::get(const wchar_t * url, pt::WTextStream & out, bool clear_stream)
{
std::string url_ascii;
pt::TextStream out_stream;
pt::wide_to_utf8(url, url_ascii);
reset_headers();
bool status = fetch_internal(url_ascii.c_str(), nullptr, out_stream);
// IMPROVE pikotools, add: pt::UTF8ToInt(out_stream, out);
std::string temp;
out_stream.to_str(temp);
// similar, improve pikotools
std::wstring temp_wide;
pt::utf8_to_wide(temp, temp_wide);
if( clear_stream )
{
out.clear();
}
out << temp_wide;
return status;
}
bool Http::get(const std::wstring & url, pt::WTextStream & out, bool clear_stream)
{
return get(url.c_str(), out, clear_stream);
}
bool Http::get(const pt::WTextStream & url, pt::WTextStream & out, bool clear_stream)
{
std::wstring url_str;
url.to_str(url_str);
return get(url_str, out, clear_stream);
}
bool Http::put(const wchar_t * url, const std::string & in, pt::WTextStream & out, bool clear_stream)
{
std::string url_ascii;
pt::TextStream out_stream;
if( clear_stream )
{
out.clear();
}
pt::wide_to_utf8(url, url_ascii);
reset_headers();
bool status = fetch_internal(url_ascii.c_str(), &in, out_stream);
out << out_stream;
return status;
}
bool Http::put(const std::wstring & url, const std::string & in, pt::WTextStream & out, bool clear_stream)
{
return put(url.c_str(), in, out, clear_stream);
}
bool Http::put(const wchar_t * url, pt::WTextStream & in, pt::WTextStream & out, bool clear_stream)
{
std::string in_ascii;
in.to_str(in_ascii);
return put(url, in_ascii, out, clear_stream);
}
long Http::get_status()
{
long status = -1;
if( curl )
{
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &status);
}
return status;
}
void Http::reset_headers()
{
if( http_headers )
{
curl_slist_free_all(http_headers);
http_headers = nullptr;
}
}
void Http::add_additional_headers()
{
if( additional_headers_to_send && additional_headers_to_send->is_object() )
{
pt::WTextStream header;
pt::Space::ObjectType::iterator i = additional_headers_to_send->value.value_object.begin();
while( i != additional_headers_to_send->value.value_object.end() )
{
header.clear();
header << i->first << ": ";
header << i->second->to_wstr();
add_header(header);
++i;
}
}
}
void Http::add_bearer_token()
{
if( bearer_token && bearer_token[0] != 0 )
{
pt::WTextStream header;
header << L"Authorization: Bearer " << bearer_token;
add_header(header);
}
}
void Http::add_header(const pt::WTextStream & header)
{
header.to_str(temp_header);
add_header(temp_header);
temp_header.clear();
}
void Http::add_header(const std::wstring & header)
{
pt::wide_to_utf8(header, temp_header_ascii);
http_headers = curl_slist_append(http_headers, temp_header_ascii.c_str());
}
void Http::initialize_curl_if_needed()
{
if( !curl )
{
/*
* curl_easy_init() is not thread safe before curl 7.84.0 version
*
* from https://curl.se/libcurl/c/curl_easy_init.html
* If you did not already call curl_global_init, curl_easy_init does it automatically.
* This may be lethal in multi-threaded cases, since curl_global_init is not thread-safe,
* and it may result in resource problems because there is no corresponding cleanup.
*
* but we have called curl_global_init() in main.cpp (InitCurlLibrary() method)
*
*/
curl = curl_easy_init();
}
}
void Http::uninitialize_curl()
{
reset_headers();
if( curl )
{
curl_easy_cleanup(curl);
curl = nullptr;
}
}
// in can be pointer to const char *
bool Http::fetch_internal(const char * url, const std::string * in, pt::TextStream & out)
{
initialize_curl_if_needed();
if( output_headers_space )
output_headers_space->clear();
if( output_content_type )
output_content_type->clear();
if( !curl )
{
log << log1 << "Http: I can't initialize curl easy session" << logend;
return false;
}
error_buf[0] = 0;
read_function_input = in; // can be null
read_function_index = 0;
if( read_function_input )
{
curl_easy_setopt(curl, CURLOPT_READFUNCTION, fetch_read_function);
curl_easy_setopt(curl, CURLOPT_READDATA, this);
curl_easy_setopt(curl, CURLOPT_POST, 1);
/*
* do not set content-leght header here
* curl uses "Expect: 100-continue" and it collides if content-length is set
* https://daniel.haxx.se/blog/2020/02/27/expect-tweaks-in-curl/
*
*/
}
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, fetch_write_function);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &out);
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_USERAGENT, browser_name.c_str());
curl_easy_setopt(curl, CURLOPT_TIMEOUT, conn_timeout);
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, conn_timeout);
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, error_buf);
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
curl_easy_setopt(curl, CURLOPT_MAXREDIRS, 20);
curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
if( output_headers_space || output_content_type )
{
out_headers_stream.clear();
curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, fetch_header_function);
curl_easy_setopt(curl, CURLOPT_HEADERDATA, &out_headers_stream);
}
add_additional_headers();
add_bearer_token();
if( http_headers )
{
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, http_headers);
}
CURLcode res = curl_easy_perform(curl);
reset_headers();
if( res == CURLE_OK )
{
parse_headers();
out_headers_stream.clear();
}
else
{
log << log1 << "Http: fetching failed: " << error_buf << ", code: "
<< static_cast<int>(res) << logend;
return false;
}
return true;
}
size_t Http::fetch_read_function(char * ptr, size_t size, size_t nmemb, void * userdata)
{
size_t len = 0;
if( userdata )
{
Http * http = reinterpret_cast<Http*>(userdata);
if( http->read_function_index < http->read_function_input->size() )
{
len = size * nmemb;
if( http->read_function_index + len > http->read_function_input->size() )
{
len = http->read_function_input->size() - http->read_function_index;
}
for(size_t i=0 ; i < len ; ++i)
{
ptr[i] = (*http->read_function_input)[http->read_function_index + i];
}
http->read_function_index += len;
}
}
return len;
}
size_t Http::fetch_write_function(char * ptr, size_t size, size_t nmemb, void * userdata)
{
size_t len = size * nmemb;
if( userdata )
{
pt::TextStream * out = reinterpret_cast<pt::TextStream*>(userdata);
if( len > 0 )
out->write(ptr, len);
}
return len;
}
size_t Http::fetch_header_function(char * ptr, size_t size, size_t nmemb, void * userdata)
{
size_t len = size * nmemb;
if( userdata )
{
pt::TextStream * out = reinterpret_cast<pt::TextStream*>(userdata);
if( len > 0 )
out->write(ptr, len);
}
return len;
}
void Http::skip_white(pt::TextStream::iterator & i)
{
for( ; i != out_headers_stream.end() ; ++i )
{
if( !pt::is_white(*i, false, false) )
{
break;
}
}
}
void Http::parse_header_name(pt::TextStream::iterator & i, std::string & name)
{
name.clear();
for( ; i != out_headers_stream.end() ; ++i )
{
char c = *i;
if( c == '\r' )
{
// just skip
}
else
if( c == '\n' )
{
break;
}
else
if( c == ':' )
{
++i;
break;
}
else
{
if( change_header_names_to_lower )
{
c = pt::to_lower(c);
}
name += c;
}
}
}
void Http::parse_header_value(pt::TextStream::iterator & i, std::string & value)
{
value.clear();
for( ; i != out_headers_stream.end() ; ++i )
{
char c = *i;
if( c == '\r' )
{
// just skip
}
else
if( c == '\n' )
{
++i;
break;
}
else
{
value += c;
}
}
}
void Http::parse_headers()
{
if( output_headers_space || output_content_type )
{
pt::TextStream::iterator i = out_headers_stream.begin();
while( i != out_headers_stream.end() )
{
parse_header_name(i, temp_header_ascii);
skip_white(i);
parse_header_value(i, temp_header_value_ascii);
pt::utf8_to_wide(temp_header_ascii, temp_header);
pt::utf8_to_wide(temp_header_value_ascii, temp_header_value);
// both temp_header and temp_header_value will be empty
// after the first header 'HTTP/1.1 100 Continue' (if exists)
// (there is an empty line in such a case)
if( !temp_header.empty() || !temp_header_value.empty() )
{
if( output_headers_space )
output_headers_space->add(temp_header, temp_header_value);
if( output_content_type && pt::is_equal_nc(temp_header, Header::content_type) )
*output_content_type = temp_header_value;
}
}
temp_header.clear();
temp_header_ascii.clear();
temp_header_value.clear();
temp_header_value_ascii.clear();
}
}
}

160
winixd/utils/http.h Normal file
View File

@ -0,0 +1,160 @@
/*
* This file is a part of Winix
* and is distributed under the 2-Clause BSD licence.
* Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2010-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
#ifndef headerfile_winix_utils_http
#define headerfile_winix_utils_http
#include <string>
#include <curl/curl.h>
#include "core/synchro.h"
#include "textstream/textstream.h"
#include "core/winixbase.h"
namespace Winix
{
class Http : public WinixBase
{
public:
static const long HTTP_STATUS_200_OK = 200;
Http();
~Http();
Http(const Http &) = delete;
Http(Http &&) = delete;
/*
* we do not copy the space structure but only get a pointer to it
* so you have to preserve the structure until get()/put() is called
*/
Http & add_input_headers(pt::Space * headers);
/*
* output headers will be provided in a Space structure as key/value pairs (object)
*
* the first line (http status) will be inserted too (the value part will be empty), e.g.
* key="http/1.1 200 ok"
* value=""
*
*/
Http & get_output_headers_to(pt::Space * out_headers, bool change_names_to_lower = true);
/*
* if we don't need all headers but just content-type
*/
Http & get_output_content_type_to(std::wstring * out_content_type);
/*
* you don't have to call these methods
* if the curl is not initialized it will be initialized automatically from get/put methods
*/
void initialize_curl_if_needed();
void uninitialize_curl();
/*
* we do not copy the string but only get a pointer to its c_str()
* so you have to preserve the string until get()/put() is called
*/
Http & add_bearer_token(const wchar_t * token);
Http & add_bearer_token(const std::wstring & token);
bool get(const wchar_t * url, std::wstring & out, bool clear_str = true);
bool get(const std::wstring & url, std::wstring & out, bool clear_str = true);
bool get(const pt::WTextStream & url, std::wstring & out, bool clear_str = true);
bool get(const wchar_t * url, pt::WTextStream & out, bool clear_stream = true);
bool get(const std::wstring & url, pt::WTextStream & out, bool clear_stream = true);
bool get(const pt::WTextStream & url, pt::WTextStream & out, bool clear_stream = true);
bool put(const wchar_t * url, const std::string & in, pt::WTextStream & out, bool clear_stream = true);
bool put(const std::wstring & url, const std::string & in, pt::WTextStream & out, bool clear_stream = true);
bool put(const wchar_t * url, pt::WTextStream & in, pt::WTextStream & out, bool clear_stream = true);
/*
* return the last http status
*/
long get_status();
private:
CURL * curl;
char error_buf[CURL_ERROR_SIZE];
std::string browser_name;
int conn_timeout; // timeout in seconds
size_t read_function_index;
const std::string * read_function_input;
curl_slist * http_headers;
pt::Space * additional_headers_to_send;
pt::Space * output_headers_space;
const wchar_t * bearer_token = nullptr;
pt::TextStream out_headers_stream;
bool change_header_names_to_lower;
std::wstring * output_content_type;
std::wstring temp_header;
std::string temp_header_ascii;
std::wstring temp_header_value;
std::string temp_header_value_ascii;
bool fetch_internal(const char * url, const std::string * in, pt::TextStream & out);
static size_t fetch_read_function(char * ptr, size_t size, size_t nmemb, void * userdata);
static size_t fetch_write_function(char * ptr, size_t size, size_t nmemb, void * userdata);
static size_t fetch_header_function(char * ptr, size_t size, size_t nmemb, void * userdata);
void reset_headers();
void add_additional_headers();
void add_bearer_token();
void add_header(const pt::WTextStream & header);
void add_header(const std::wstring & header);
void skip_white(pt::TextStream::iterator & i);
void parse_header_name(pt::TextStream::iterator & i, std::string & name);
void parse_header_value(pt::TextStream::iterator & i, std::string & value);
void parse_headers();
};
}
#endif