Commit Graph
100 Commits
Author SHA1 Message Date
tomasz.sowa 9f64692ede set Access-Control-Allow-Credentials if available 2022-09-07 14:46:29 +02:00
tomasz.sowa 8b9ad5d079 make depend 2022-09-01 07:34:39 +02:00
tomasz.sowa bff435db9a add WINIX_SAVE_FILELOG plugin message 2022-09-01 07:34:10 +02:00
tomasz.sowa e09a93bd72 update uikit to 3.15.6 2022-09-01 03:39:02 +02:00
tomasz.sowa e378fcfe3b remove not used variables from Request 2022-08-31 21:33:54 +02:00
tomasz.sowa a7a338f28e fix(Request): allow to prepare integer headers 2022-08-31 21:25:14 +02:00
tomasz.sowa a19158cb62 add config options for testing the Origin header in cors requests
- allow_all_cors_origins - whether or not to allow all origins
- allowed_cors_origins - a list of allowed origins (used if allow_all_cors_origins is false)
2022-08-31 20:42:42 +02:00
tomasz.sowa 778ed01a55 make depend 2022-08-30 01:52:20 +02:00
tomasz.sowa 217f42b7c6 add support for preflight requ (cors) 2022-08-30 01:52:02 +02:00
tomasz.sowa a34db6505d move some methods from App to Request
methods moved: SetEnv(), ReadEnvVariables(), ReadEnvRemoteIP(), CheckSSL(), SetSubdomain()

while here:
- add the rest of http methods: put, connect, trace, patch
2022-08-29 19:20:41 +02:00
tomasz.sowa 7dc117da5e update UIkit to 3.15.5 2022-08-28 16:09:43 +02:00
tomasz.sowa b1441366f4 add Http::verify_ssl(bool verify) method 2022-08-25 05:16:23 +02:00
tomasz.sowa c730b85629 make depend 2022-08-22 16:04:10 +02:00
tomasz.sowa d3a440fa0a add Request::AddPostVar(pt::Space & space, const wchar_t * name) 2022-08-22 16:03:07 +02:00
tomasz.sowa 5f77ce619e make depend 2022-08-20 00:31:30 +02:00
tomasz.sowa 5dd34c802e add Request::job_second_id 2022-08-20 00:31:10 +02:00
tomasz.sowa 3609d94c09 update uikit to 3.15.3 2022-08-15 12:36:54 +02:00
tomasz.sowa 5dc00e95e7 make depend 2022-08-14 12:55:03 +02:00
tomasz.sowa e88615226b add Http::allow_redirects(bool allow_redirects) method 2022-08-13 20:00:15 +02:00
tomasz.sowa ca1a854fd1 fix: use CURLOPT_POSTFIELDSIZE_LARGE to tell libcurl of the post content size 2022-08-13 17:15:48 +02:00
tomasz.sowa ceb5336ca1 add support for OPTIONS http method 2022-08-11 08:04:40 +02:00
tomasz.sowa f651df6e1f update htmx to 1.8.0 2022-08-10 12:42:24 +02:00
tomasz.sowa 6266eac729 use std::wstring_view in SessionIdManager::DecodeToken(...) method 2022-08-10 12:42:16 +02:00
tomasz.sowa de972de948 fix: remove sourcedialog plugin from ckeditor 2022-08-06 04:21:53 +02:00
tomasz.sowa 55f48e4f3a update jquery to 3.6.0
while here do a check: [if not winix_has_jquery]...[end]
2022-07-31 02:03:39 +02:00
tomasz.sowa 39ab07508f update translations 2022-07-30 18:41:59 +02:00
tomasz.sowa 968660e8ca fix: set correctly request->session
The session cookie was not created because request->session pointed at
a temporary session.

While here:
- do some cleaning in App
- set request->mount too
- add fcgi_cannot_create_request_delay to the config
- fix: in mailregister plugin get model_connector from env (and not from the request)
2022-07-30 18:37:50 +02:00
tomasz.sowa 4b46ba1fe3 update uikit to 3.15.1 2022-07-30 15:37:52 +02:00
tomasz.sowa a164e6e21e fix: remove not needed Http::clear() 2022-07-30 04:14:04 +02:00
tomasz.sowa 82281b4363 add a debug mode - fill a Space structure with some info from CURLOPT_DEBUGFUNCTION
while here:
- allow to set headers from a string
- add a seek function (CURLOPT_SEEKFUNCTION)
2022-07-30 04:00:35 +02:00
tomasz.sowa 9d8d35b64f save logs after a job has finished 2022-07-30 03:35:00 +02:00
tomasz.sowa 33f6a9a213 make depend 2022-07-30 03:33:45 +02:00
tomasz.sowa e5ed1d6ae8 fix: do not use cur if login winix function if config.use_internal_loggin_mechanism is false
In the login winix function cur pointer will be null if config.use_internal_loggin_mechanism
is false, in such a case those objects are not registered as winix functions
but we have a public api
(the public api should be moved somewhere e.g. make a service layer)
2022-07-27 01:25:49 +02:00
tomasz.sowa 9e6a5b2d37 add use_internal_session_mechanism and use_internal_loggin_mechanism config options 2022-07-26 21:54:33 +02:00
tomasz.sowa c85a724fec fix(SessionIdManager): take a correct algorithm when decoding a token 2022-07-26 21:09:44 +02:00
tomasz.sowa 2e8f4d1a26 allow the SessionIdManager to use only two keys 2022-07-26 05:18:42 +02:00
tomasz.sowa 522b57ade4 fix(Jobs): change request state to prepare_to_finish in case of an error 2022-07-25 18:37:39 +02:00
tomasz.sowa d4da6aa518 let System::PutUrlProto takes a stream by a reference to pt::Stream 2022-07-25 18:36:28 +02:00
tomasz.sowa 979ef907fe 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)
2022-07-25 14:21:21 +02:00
tomasz.sowa b2d92b85a0 make depend 2022-07-11 17:52:05 +02:00
tomasz.sowa 8d6d0ddbf8 update to the new morm::Finder interface 2022-07-11 17:51:50 +02:00
tomasz.sowa 8da76134ce make depend 2022-07-05 19:52:40 +02:00
tomasz.sowa 179daf743e make depend 2022-07-03 14:25:53 +02:00
tomasz.sowa bcb009b606 print version information if running with -v parameter 2022-07-03 14:25:23 +02:00
tomasz.sowa 327c215e5d add LICENSE file 2022-07-03 12:17:26 +02:00
tomasz.sowa b484071818 print components versions in uname winix function 2022-07-03 12:17:14 +02:00
tomasz.sowa 31e826d893 put a log message before opening the FastCGI connection socket
FCGX_OpenSocket will call exit() if there was a problem with creating the socket.
2022-06-27 20:52:09 +02:00
tomasz.sowa e29f912358 add core/postparser.cpp with implementation from core/postparser.h
now we can remove -lfcgi from winix in winixd/Makefile
2022-06-26 06:45:53 +02:00
tomasz.sowa 26226de865 global winixd/Makefile uses now 'find' for looking for *.cpp files
and we don't need Makefiles in subdirectories anymore (except plugins)
2022-06-26 06:22:27 +02:00
tomasz.sowa 56d87c4410 update uikit to 3.14.3 2022-06-19 16:06:16 +02:00
tomasz.sowa ebfa5f7405 do not try to load sessions if session_file config parameter is empty 2022-05-31 07:49:51 +02:00
tomasz.sowa ba16cf41fe move the javascript for autodeleting to a separate winix.js file 2022-05-30 05:35:49 +02:00
tomasz.sowa 01c10bad0e add use_antispam_mechanism_for_not_logged_users config option 2022-05-30 05:35:05 +02:00
tomasz.sowa 7d1fb3c04e remove Request::post_tab and add Request::http_status
Instead of Reqest::post_tab we use now Request::post_in (pt::Space).

Request::http_status will be used instead Request::status,
but at the moment is not changed in all places.
Request::status has been marked as depracated.

While here:
- Check for root dir in App and not in FunctionParser,
let FunctionParser only log the root dir.
- Read post variables after parsing url parameters,
this allows winix functions to set limits
for post input.
- Set limits when parsing input json format, new
options added to config: post_max_object_items, post_max_table_items,
post_max_all_items, post_max_nested_objects.
There are similar options in each winix function (they are in
FunctionBase).
- Some refactoring in App.
- Add config option: log_whole_http_post if true
then the whole parsed post input is logged.
- Add config option: post_json_max - max length of input stream
for parsing json.
- Add config option: templates_request_status, default request_status.html
this is an ezc template used as [content] when the request status
is not 200_ok.
- Fix: Sort winix function didn't show items to sort (fix and do some
refactoring as well)
- Properly sort items in: ImgCrop, Ls, Sort, Upload
- Remove ezc templates: err_404.html, err_per_denied.html - now
request_status.html is used.
2022-05-30 01:29:18 +02:00
tomasz.sowa 9e222f5b80 do not print white characters in log for the first migration 2022-05-28 06:10:39 +02:00
tomasz.sowa 3b5658ff8f fix: correctly sort post variables when they have the same name
In PostParser we add some prefix with a number if the name of a variable is the same,
we should use zero padding for the number to be correctly sorted.
2022-05-28 06:07:38 +02:00
tomasz.sowa 5e89c4004a make depend 2022-05-26 00:35:24 +02:00
tomasz.sowa 9602c28d96 allow lang ezc function get more than one parameter 2022-05-11 14:22:46 +02:00
tomasz.sowa 0fd680b496 update uikit to 3.14.1 2022-05-08 17:00:26 +02:00
tomasz.sowa 37d3a44b24 update uikit to 3.14.0 2022-04-30 20:23:37 +02:00
tomasz.sowa da2dec447b allow to specify how many times we can try to connect to the database at startup
add config options:
db_startup_connection_max_attempts - default 0 (infinite)
db_startup_connection_attempt_delay - delay in seconds between attempts (default 5)

BREAKING CHANGE: WINIX_PLUGIN_INIT plugin message requires to set result status,
you have to set the result status to true (env.res) if your
plugin was initialized correctly, otherwise winix will not start
2022-04-29 06:17:16 +02:00
tomasz.sowa c6c50a5d23 allow to use host database connection parameter
Add config option:
db_host (default empty) - name of host to connect to
2022-04-28 06:12:44 +02:00
tomasz.sowa 98c1e8daad allow to not change fast cgi socket permissions
New config options:
fcgi_set_socket_chmod (bool) - default true
fcgi_set_socket_owner (bool) - default true
2022-04-27 23:31:50 +02:00
tomasz.sowa f99191aa6f make depend 2022-04-26 23:46:57 +02:00
tomasz.sowa df04075f1c add methods to Request for adding and removing parameters
Added methods:
void AddParam(const std::wstring & param_name, const std::wstring & param_value);
void AddParam(const wchar_t * param_name, const wchar_t * param_value);
void RemoveParam(const wchar_t * param_name);
void RemoveParam(const std::wstring & param_name);

This is only temporarily, we will be using the pt::Space structure in the future.
2022-04-26 23:41:56 +02:00
tomasz.sowa 3d2a635e34 fix: use TextStreamBase::to_str() instead of to_string() 2022-04-25 22:05:34 +02:00
tomasz.sowa aad5db9a6a let Functions::Add() returns info whether the functions/controller has been added 2022-04-25 16:35:14 +02:00
tomasz.sowa 43ebbdaa33 add WINIX_PLUGIN_QUIT and WINIX_QUIT plugins messages
While here:
- rename WINIX_CLOSE to WINIX_PREPARE_TO_CLOSE
2022-04-25 16:34:26 +02:00
tomasz.sowa 92c7f90b95 fix: correctly propagate a migration status when the migration failed 2022-04-25 15:19:02 +02:00
tomasz.sowa aae93d018b allow to use db_hostaddr, db_port or db_conn_string config parameters to connect to PostgreSQL 2022-04-20 18:37:52 +02:00
tomasz.sowa 7a115a3970 fix(Log): treat pt::Log::Manipulators as enum and not as int 2022-04-16 21:52:53 +02:00
tomasz.sowa 64e5114947 allow to read environment variables as config parameters
Environment variables must be prefixed with winix_ to be loaded by winix.
The winix_ prefix is then removed and the key value converted to lowercase.

Sample:
evn WINIX_MY_OPTION=TEST123test winix -c config_file

This will add my_option to the config with value TEST123test.
Environment variables are read last so they will overwrite the values
from the configuration files.
2022-04-16 21:50:23 +02:00
tomasz.sowa 4f8b5e649a recognize startup parameters
Usage: winix [options]
  -c             : a path to the config file
  --config       : a path to the config file
  -h             : print usage information
  --help         : print usage information
  -?             : print usage information

While here:
- let it be possible to parse multiple configs,
- fix: some error messages were not printed at startup.
2022-04-16 18:38:30 +02:00
tomasz.sowa e0d9989d74 fix(Item): id should be of type serial 2022-04-11 23:27:49 +02:00
tomasz.sowa 0fe680ef4a fix: migration to version 2 in User model 2022-04-11 23:19:30 +02:00
tomasz.sowa e182c0a21b fix: create core schema before making a first select request
Migration uses Finder to get the current table version.
2022-04-11 23:11:00 +02:00
tomasz.sowa c8edd241d5 create core schema as a first migration 2022-04-11 20:57:49 +02:00
tomasz.sowa a544ccd1a7 fix: User model initial column name: aenv 2022-04-11 20:44:58 +02:00
tomasz.sowa 7df2205b40 update flatpickr to 4.6.11 2022-04-05 17:37:24 +02:00
tomasz.sowa 265e843d02 update uikit to 3.13.7 2022-04-05 16:59:57 +02:00
tomasz.sowa 22a8a97389 update htmx to 1.7.0 2022-04-05 16:53:46 +02:00
tomasz.sowa bb74f2a423 update uikit to 3.11.1 2022-02-08 14:13:33 +01:00
tomasz.sowa 2033168db2 Merge branch 'cli' into ajax 2022-02-08 14:01:50 +01:00
tomasz.sowa e377f144fd fix: do not send headers again after binary content 2022-02-04 18:46:46 +01:00
tomasz.sowa 234ebf8ce8 change HtmlTextStream iterators type to pt::WTextStream::iterator 2022-02-03 20:57:38 +01:00
tomasz.sowa 09cf3c9fa9 add some comments in AcceptBaseParser 2022-02-02 18:34:56 +01:00
tomasz.sowa df32899581 move AcceptEncodingParser to utils 2022-02-02 18:34:22 +01:00
tomasz.sowa 33e8df11c5 parse Accept-Language header to Request::accept_languages table 2022-02-02 18:20:32 +01:00
tomasz.sowa 75daf37bbd improve AcceptBaseParser parsing algorithm
remove AcceptParser - not needed now, AcceptBaseParser can prepare a table now
2022-02-02 17:58:27 +01:00
tomasz.sowa d0d2cfb22c move AcceptBaseParser to utils directory 2022-02-02 17:11:46 +01:00
tomasz.sowa f7b5ac0dc8 change the way how winix answer is created
Now we can return ezc content and models serialized in the same json structure,
Xml and Csv are not implemented yet.
Ezc frames are returned in 'ezc_frames' field.
Main ezc stream is returned in 'main_stream' field.
Frame url parameter can take more than one frame (names separated by commas).
Honor Accept http header (AcceptParser).

Samples:
--------
http://domain.tld/dir/controller
returns html answer from the main ezc stream

http://domain.tld/dir/controller/container:raw
returns html answer from the main ezc stream (the same as above)

http://domain.tld/dir/controller/frame:abc
returns "abc" frame as html

http://domain.tld/dir/controller/container:json
returns all serialized models to json and no ezc streams

http://domain.tld/dir/controller/container:xml
returns all serialized models to xml and no ezc streams (not implemented yet)

http://domain.tld/dir/controller/container:json/frame:abc,xyz
returns all serialized models to json and two frames in 'ezc_frames' object

http://domain.tld/dir/controller/container:json/all_frames
returns all serialized models to json and all frames in 'ezc_frames' object

http://domain.tld/dir/controller/container:json/main_stream
returns all serialized models and the main ezc stream in 'main_stream' field

http://domain.tld/dir/controller/container:json/main_stream/all_frames
returns all serialized models to json, all frames and the main stream
2022-02-01 18:44:23 +01:00
tomasz.sowa 227dd923d6 fix: correctly escape ezc stream to json/xml/csv 2022-01-28 15:54:11 +01:00
tomasz.sowa f6cb9a8aed set correct timetable dst for 'Sarajevo, Skopje, Warsaw, Zagreb'
year: 2022 and 2023
2022-01-26 22:34:13 +01:00
tomasz.sowa b615dc7e6e add cmp ezc function 2022-01-22 04:35:42 +01:00
tomasz.sowa 944560dd2b update uikit to 3.10.1 2022-01-19 15:47:11 +01:00
tomasz.sowa 1d6d29e24d add winixcli/src/winix to .gitignore 2022-01-18 19:46:12 +01:00
tomasz.sowa ff8e9e6b32 start working on winixcli
winixcli can now read a PGModeler file
and is able to generate a template through ezc

winixcli parameters:
--input-mode pgmodeler (only one parameter at the moment)
--input-file file (pgmodeler file)
--templates-dir dir_path (a path to templates directory)
--template file (template file)
2022-01-18 19:40:57 +01:00
tomasz.sowa 557555c4b3 htmx updated to 1.6.1 2021-12-08 15:19:35 +01:00
tomasz.sowa f8e1037476 uikit updated to 3.9.4 2021-11-26 21:51:01 +01:00
tomasz.sowa 35cb54324f added a new item content type: markdown
- emacs editor has an option to select markdown, now it has two planes: one for content editing and the other to show preview
- CodeMirror editor updated to 5.64.0
- to convert markdown to html we use showdown https://github.com/showdownjs/showdown (conversion is done on the client side)
2021-11-26 21:49:21 +01:00