Commit Graph

  • 8d9a021eab changed: when there is reqtype:json parameter and there is not set request.ajax_serializer then we are using a generic json serializer changed: we are sending the application/json header when returning an json string added: to config: log_server_answer (default false) when true we put the whole string (server's answer) to the log file added: to Request: use_200_status_for_not_found_and_permission_denied if this is true then if the server http code would be 403 or 404 then we return 200 OK (useful when using ajax) changed: System::RedirectTo() methods take as the last parameter: use_reqtype if this is true (default) then reqtype:type parameter is automatically added to the redirecting path 0.5.3 Tomasz Sowa 2013-03-26 00:04:01 +00:00
  • be6e09c5af added: some ezc functions (item_tab_meta*) added: some ezc functions (gallery_tab_meta*) to gallery plugin added: to gallery plugin: a new gallery: Gallery version 1.2.9 Tomasz Sowa 2013-02-26 11:49:22 +00:00
  • 293e426ed4 fixed: plugin 'group' Groups::ReindexGroups incorrectly read a field from a PT::Space (it used 'table' object directly) but the value was in 'table_single' now we are using GetValue method Tomasz Sowa 2013-02-01 21:14:56 +00:00
  • 60f2337b73 updated: paths in Makefile (prog subdirectory) Tomasz Sowa 2013-01-19 16:31:15 +00:00
  • ce8152de2f changed: added 'logsave' when we are waiting for the database to be ready Tomasz Sowa 2013-01-19 10:10:17 +00:00
  • 496a1979d2 fixed: in ticket plugin: editticket incorrectly used ticket_info->Clear() method it was called after some objects were set consequently we were not allowed to edit a ticket Tomasz Sowa 2012-12-30 15:33:08 +00:00
  • fd698ca7b9 added: put the rebus answer into the log (when user has entered an incorrect answer) Tomasz Sowa 2012-12-26 23:08:57 +00:00
  • b4b368d324 changed: Makefile dep Tomasz Sowa 2012-11-17 01:10:00 +00:00
  • 825694c880 changed: in editticket: closing ticket is better to do via POST request added: a new message sent by editticket when closing a ticket: #define WINIX_PL_TICKET_CLOSED 4105 // a ticket has been closed (closed button pressed) // in p1 you have a pointer to the Item struct // in p2 you have a pointer to the Ticket struct Tomasz Sowa 2012-11-05 23:13:52 +00:00
  • 32750a7d50 changed: ticket plugin: redirect type in editticket winix function (when there is 'close' parameter) fixed: prototype doesn't work with jquery (in ticket winix function) (prototype was loaded for lightbox) Tomasz Sowa 2012-11-04 22:39:02 +00:00
  • 0045c6c72c added: to Item struct: ameta (PT::Space) admin meta information added: option "a" to meta winix function editing admin meta information changed: now if you don't have write access to an item you can't see the meta information previous if you had read access you could have seen them added: in plugin ticket and thread support for 'closing' (ticket, thread) (this is only logic, we need some html yet) added: some ezc function for getting meta/admin meta information (for the current item and the last directory) 0.5.2 Tomasz Sowa 2012-11-04 21:01:02 +00:00
  • 4809016b78 changed: html (slog.html) Tomasz Sowa 2012-11-01 17:56:00 +00:00
  • 6e2ba65524 changed: added 'check_abuse' parameter to Login::LoginUser bool Login::LoginUser(const std::wstring & login, const std::wstring & password, bool remember_me, bool use_ses_log, bool check_abuse) default 'false' -- it test the time between GET and POST and the rebus (if exists) Tomasz Sowa 2012-10-27 11:17:52 +00:00
  • 8033ac66c4 added: locales to fun_ipban.html changed: cosmetic changes in IPBanContainer Tomasz Sowa 2012-10-27 10:14:07 +00:00
  • 9ef3736989 added: to 'ipban' winix function: possibility to remove a ban (or all bans) added: to SessionManager: sorting of the ban list (in the second thread) Tomasz Sowa 2012-10-27 09:03:49 +00:00
  • 099dd55d0c added: IP ban mechanism (not finished yet -- we need a winix function to remove a ban) now after some incorrent login attempts your IP can be banned or blocked (see new config variables) 0.5.1 Tomasz Sowa 2012-10-27 07:44:26 +00:00
  • 53b4175d00 added: plugin message: WINIX_CHECK_PLUGIN_ACCESS this message is sent before calling MakePost() or MakeGet() if you return false (which is default) you can prevent the access to the resource Tomasz Sowa 2012-10-17 19:52:55 +00:00
  • 8aa6f08e08 updated: html (login and passwd) Tomasz Sowa 2012-10-17 06:48:48 +00:00
  • c5024598cb updated: html/css (added div.winix to templates) now we have winix.css in common/winix directory it is automatically loaded by index_head_functions_add.html Tomasz Sowa 2012-10-17 06:00:00 +00:00
  • dfcf6b29c0 added: to misc: bool IsWhite(const wchar_t * str, bool treat_new_line_as_white) bool IsWhite(const std::wstring & str, bool treat_new_line_as_white) return true if the whole string is white (or an empty string) added: global variable in admin environment for an user: "display_name" if defined it is used to display an user's name instead of its login it is used in: void print_user_name(Info & i, User & user); (tickets, threads, cat function etc) Tomasz Sowa 2012-09-26 07:18:32 +00:00
  • 7f48d1eb2e fixed: the way we check whether we need make the redirect from SSL to non SSL (or vice versa) beforehand we didn't take into accout default winix functions Tomasz Sowa 2012-09-24 20:31:01 +00:00
  • eaa97995d2 fixed: we should check cur.request->function is not null (in5D app when testing ssl/nossl redirect) Tomasz Sowa 2012-09-24 18:59:08 +00:00
  • 14f997b844 added: need_ssl flag to FunctionBase // try to use SSL // if in the config 'use_ssl' is true and 'use_ssl_only_for_logged_users' is true // then ssl is used only for logged users but sometimes there is a need to use // SSL even if noone is logged (for example for such functions like 'login' or 'adduser') // default: false // (this option is ignored if 'use_ssl' in the config is false) bool need_ssl; Tomasz Sowa 2012-09-24 18:38:35 +00:00
  • 26e87b20b1 changed: in Crypt: renamed Hash() -> HashBin() HashBin() is using a binary output from OpenSSL now previously we are using the hex output and with the new OpenSSL version the text has additional characters and causes some problems added: HashHex() - it is using the HashBin() and then converts the output to hex format itself Tomasz Sowa 2012-09-19 23:17:10 +00:00
  • 5cdf6eff36 added: to ticket plugin: some messges: // #define WINIX_PL_TICKET_PREPARE_TO_ADD_TICKET 4103 Tomasz Sowa 2012-09-15 23:34:25 +00:00
  • 4ed535a3b7 added: to plugin ticket: message WINIX_PL_TICKET_LOAD_TICKETS someone can send this message with a directory id and tickets will be loaded from the directory (and to display them you can use ezc functions) Tomasz Sowa 2012-09-14 23:48:39 +00:00
  • da15323c2f added: to plugin thread: message WINIX_PL_THREAD_CAN_MAKE_REDIRECT (similar as for ticket) Tomasz Sowa 2012-09-14 07:14:54 +00:00
  • bd1f717b4c added: some methods in Dystem::Dirs (takes wchar_t * as an argument, now only std::wstring were) changed: in plugin ticket: added message: WINIX_PL_TICKET_CAN_MAKE_REDIRECT it is sent at the end of POST request (editticket, createticket) if we can make a redirect (useful with AJAX) Tomasz Sowa 2012-09-13 23:12:48 +00:00
  • 72013046fc added: Lock class -- locking resources by using Synchro object the destructor automatically calls Unlock() Tomasz Sowa 2012-09-11 23:46:00 +00:00
  • 14ae19143f added: new ezc filter: fil_new_line_to_br added: PutChar() methods to HtmlTextFilter and TexTextFilter Tomasz Sowa 2012-09-11 21:41:10 +00:00
  • d8260d8383 added: a new way: HEX format to saving/reading from PostgreSQL bytea columns added: to Request: // binary page BinaryPage binary_page; 0.5.0 Tomasz Sowa 2012-09-11 05:19:45 +00:00
  • 9174555ff8 added: to config: log_time_zone_id (size_t) identifier this is the time zone identifier used in log messages Tomasz Sowa 2012-09-06 17:50:14 +00:00
  • 0c6ddc2218 added: 'subject' winix function is using WINIX_FILE_CHANGED message now (when changing a file's subject) added: 'postredirect' global parameter (it can be a param or post value) you can use this parameter in a html POST form after processing the POST request winix will make a redirect to the value Tomasz Sowa 2012-09-04 20:24:42 +00:00
  • 43b4075b16 added: ezc functions: void dir_tab_subject(Info & i); void dir_tab_is_root(Info & i); changed: in dir_tab_link: now it doesn't print the proto and base address - you should use [doc_base_url] Tomasz Sowa 2012-09-02 01:27:41 +00:00
  • 8f8e44fee5 added: ezc functions: void dir_is_no(Info & i) void dir_level_is(Info & i) void dir_last_url_is_no(Info & i) void item_no_is(Info & i) void item_url_is_no(Info & i) Tomasz Sowa 2012-08-26 22:30:25 +00:00
  • 260c12894d added: to Request options used by ezc generators: bool gen_trim_white; bool gen_skip_new_line; bool gen_use_special_chars; added: new ezc filter: fil_csv_escape for escaping csv fields Tomasz Sowa 2012-08-26 19:53:47 +00:00
  • adf273479a fixed: WINIX_RAW_POST_STRING should have a different id Tomasz Sowa 2012-08-19 14:25:43 +00:00
  • 54480da405 added: WINIX_RAW_POST_STRING plugin message this is the raw string sent in POST method (in p1 pointer there is a pointer to std::string object) Tomasz Sowa 2012-08-19 14:24:24 +00:00
  • 90261b2005 added: a new plugin message: WINIX_POST_PARAMS raw POST parameters in p1 there is a pointer to std::string meaning a parameter's name in p2 there is a pointer to std::string value this is sent only from PostParser PostMultiParser (multipart/form-data html forms) doesn't send this messsage there is no a session set (session pointer is null) Tomasz Sowa 2012-08-19 13:50:58 +00:00
  • cc71c225a3 added: to DbBase: bool EndTrans(bool everything_ok); Tomasz Sowa 2012-08-15 19:33:20 +00:00
  • e739f30088 fixed: when using Request::ajax_serializer then we should not use html filter (the filter can be used before we make the json answer -- not implemented yet) Tomasz Sowa 2012-08-12 18:23:48 +00:00
  • 51d95b49a0 added: to Request: // used as a JSON output (when ajax_serializer is defined) // it will be serialized and have at least: // 'content' string - the whole html content // 'http_status' integer - http status code (e.g. 200) PT::Space ajax; Tomasz Sowa 2012-08-08 16:04:48 +00:00
  • b5c155b927 added: export plugin the possibility to export only non static files in a directory Tomasz Sowa 2012-08-03 10:55:14 +00:00
  • 5a5fe1b0cc fixed: export plugin I forgotten to add exporting a directory Tomasz Sowa 2012-08-03 10:24:24 +00:00
  • 1c4e010fc1 I have forgotten to add: html/fun_export.html Tomasz Sowa 2012-08-03 09:39:25 +00:00
  • d8d523d983 added: 'export' winix function (export plugin) exporting an item or the whole directory Tomasz Sowa 2012-08-03 09:25:17 +00:00
  • 1c2589a2f2 added: to Log: void LogBinary(const char * blob, size_t blob_len); void LogBinary(const std::string & blob); int LogLevel(); Tomasz Sowa 2012-07-31 03:29:16 +00:00
  • 1ec61ffa11 added: to Log: operator<<(const PT::TextStreamBase<>()) Tomasz Sowa 2012-07-25 10:28:41 +00:00
  • ca0a5c9cbe changed: upload html Tomasz Sowa 2012-07-15 18:20:22 +00:00
  • 8dd31e737f changed: css Tomasz Sowa 2012-07-15 15:57:45 +00:00
  • e98cca7fbc updated: jquery upload plugin (upload winix function) Tomasz Sowa 2012-07-15 15:49:48 +00:00
  • 9830b0a50f added: to misc: UrlEncode which takes PT::TextStreamBase as an argument added: to misc: QEncode which takes PT::TextStreamBase as an argument added: to Locale: methods: IsKey, Get which takes PT::TextStreamBase as an argument Tomasz Sowa 2012-07-10 16:50:59 +00:00
  • f76a0ca3e9 added: some ezc functions in menu plugin Tomasz Sowa 2012-07-02 19:15:50 +00:00
  • 5a6d1991ac changed: config.space is available public now Tomasz Sowa 2012-06-30 23:20:18 +00:00
  • 329e2d8001 fixed: when there is no option "locale_files" in the config the "en" should be loaded by default added: LDFLAGS option to Makefiles added: compilation with CLANG (some const objects should have been created with default cctor) Tomasz Sowa 2012-06-30 18:37:52 +00:00
  • 403cca5aad rewritten: public interface in TemplatesFunctions::Locale added a default parameter bool try_default_too = true to some methods: Get(), IsKey() added more methods for accessing by an internal index Tomasz Sowa 2012-06-27 23:21:43 +00:00
  • b8ff5d4cfc added: winix functions: locale, timezone changed: time zones -- now we have the daylight saving time different for each year (start, end) added: config option: time_zone_id (size_t) time zone identifier for not logged users or for newly created accounts those identifiers you can see in etc/time_zones.conf file or by using timezone winix function with 'a' parameter (timezone/a) (!!IMPROVE ME NOT IMPLEMENTED YET) default: 34 (Coordinated Universal Time UTC+00:00) added: config option: locale_default_id (size_t) locale for not logged users or for newly created accounts added: config option: locale_max_id (size_t) a maximum value of a locale identifier default: 100 (maximum: 1000) each locale files should have its own identifier (in "winix_locale_id" field) from zero to this value added: config option: time_zone_max_id (size_t) maximum value of a time zone identifier time zones with an id greater than this will be skipped default: 130 (maximum: 1000) removed: config option: locale_default Tomasz Sowa 2012-06-26 23:19:19 +00:00
  • 54e6c07efc added: etc directory to Makefile install Tomasz Sowa 2012-06-22 23:41:12 +00:00
  • d11cda3577 added: a new directory "etc" there'll be some generic config files for winix added: a new file in etc directory: time_zones_file list of time zones (not finished yet -- daylight saving time is needed) added: option to config: etc_dir a directory in which there are some config files used mainly when winix starts default: empty (means not for using) added: option to config: time_zones_file a file in etc_dir with time zones info default: time_zones.conf this is a Space structure with all time zones added: to system: TimeZones struct list of time zones read from etc/time_zones.conf Tomasz Sowa 2012-06-22 23:34:33 +00:00
  • abafb80caf added: time zone's names to locales Tomasz Sowa 2012-06-22 19:18:03 +00:00
  • e0dd85ca99 changed: making a redirect from SSL connection to non SSL if either use_ssl in the config if false or if use_ssl_only_for_logged_users is true and a user is not logged added: base url redirect HTTP codes to the config // if current connection is without SSL and should be made through SSL // or if is via SSL and should be done in plain text // then we make a redirect // default: 303 int use_ssl_redirect_code; Tomasz Sowa 2012-06-07 00:26:37 +00:00
  • 2c38fe180e added: new function for ezc templating: void space_value_noescape(Info & i, PT::Space & space) Tomasz Sowa 2012-06-05 21:31:12 +00:00
  • 0d0f12b394 added: to Requst: std::wstring * PostVarp(const std::wstring & var); added: to misc: template<class CharType> bool Toa(unsigned/signed long/int value, CharType * buffer); some Toa methods which don't get the buffer len (the buffer has to be sufficient big) Tomasz Sowa 2012-06-04 17:51:43 +00:00
  • 86d6c96aeb fixed: winix_subdomain ezc function didn't print the subdomain added: to rm winix function: bool Rm::RemoveItemByPath(const std::wstring & path, bool check_access) fixed: in Upload winix function when uploading an image we have to get a mount point where the image is placed (parent dir) (it was cur->mount beforehand) Tomasz Sowa 2012-06-03 02:14:33 +00:00
  • b605fb0a77 added: some ezc functions for subdomains: void winix_subdomain(Info & i); void winix_subdomain_is_empty(Info & i); void winix_subdomain_is_not_empty(Info & i); void winix_subdomain_is(Info & i); Tomasz Sowa 2012-05-30 21:14:03 +00:00
  • ec773e5f29 added: TimeZone struct (core) this class has information about a time zone (utf offset, daylight saving time) and methods for converting between UTC and local time structs User and Config has a TimeZone object System::ToLocal() and System::ToUTC() uses it for converting (depending whether a user is logged or not) Tomasz Sowa 2012-05-30 19:04:18 +00:00
  • 9d5d088b4a removed: in some places a dependencies to tm struct has left removed: operator<<(tm&) from streams: textstream, log, dbtextstream, htmltextstream Tomasz Sowa 2012-05-27 18:11:34 +00:00
  • 1b858f5782 removed: dependencies to 'tz' system structure now we are using PT::Date from pikotools Tomasz Sowa 2012-05-26 23:04:49 +00:00
  • 5b845f1d03 changed: in Request: removed start_tm added start_date (PT::Date) changed: in Session: removed: tm_time added: start_date (PT::Date) renamed: time -> start_time the same is for last_time now we have (last_time and last_date) Tomasz Sowa 2012-05-24 21:09:37 +00:00
  • db9d381a43 added: to thread manager: names of the threads the names are shown in the log file Tomasz Sowa 2012-05-19 17:04:33 +00:00
  • 0df088e1e2 fixed: when demonizing there were some logs info put twice in the log file now we first demonize (fork) and then open the log file added: start adding support for PT::Date we are using instead of tz system structure Tomasz Sowa 2012-05-19 15:14:35 +00:00
  • 67099d5d06 changed: misc::OnlyDigit() a comma is changed to a dot Tomasz Sowa 2012-05-12 20:30:34 +00:00
  • 07e8e0c63c updated: to the new Space API (pikotools) changed: in locale txt files: the '(' and ')' characters should be escaped '\(' and '\)' or the whole string should be quoted added: when parsing locale files we print the line number where there was a syntax error Tomasz Sowa 2012-05-12 16:37:44 +00:00
  • ecc89d8596 added: two plugin's messages // a session is going to be removed // it is called from session manager's thread (with lock/unlock) #define WINIX_PREPARE_SESSION_TO_REMOVE 30027 Tomasz Sowa 2012-05-01 17:58:42 +00:00
  • c94b0311b6 updated: to the new Pikotools API ConfParser is now SpaceParser added: to SessionManager Session * SessionManager::FindSession(long id) Tomasz Sowa 2012-04-30 22:53:54 +00:00
  • fc33b4f882 added: a deadlock counter to Synchro class now we can use Lock() more than one in the same thread and next Unlock() will recognize it sample: Lock(); // first lock -- resources locked Lock(); // second lock -- skipped (counter incremented) ... Unlock(); // first unlock -- skipped (because counter greater than zero) Unlock(); // second unlock -- actually unlocking Tomasz Sowa 2012-04-28 20:57:57 +00:00
  • 1da1eef768 fixed: ThreadMenager should use Lock/Unlock in StartAll() method added: Job class (system->job object) a general mechanism for jobs (by using PT::Space as a job structure) WINIX_JOB plugin message will be sent with a pointer to PT::Space Tomasz Sowa 2012-04-25 22:24:37 +00:00
  • baf10a9ba9 added: std::wstring Request::subdomain support for subdomains Tomasz Sowa 2012-04-22 18:23:44 +00:00
  • bcea4f9464 fixed: base_url_redirect config option was not read from the config file and was not used when checking for base url redirect fixed: return values from plugins should be given in a special structure they were remembered in plugin object (ret_false, ret_true) and consequently were not thread safe now all plugin.Call() methods return PluginRes structure in which there are ret_false and ret_true variables changed: small refactoring in AddUser winix function Tomasz Sowa 2012-04-22 13:30:07 +00:00
  • 920290e9dc changed: permission to winix function 'who' and 'last' (only logged users can use these functions) Tomasz Sowa 2012-04-06 08:11:25 +00:00
  • 1d83cf42a1 fixed: passwd winix funtion always changed a password for current user (even if it was an administrator and has selected other people) Tomasz Sowa 2012-03-30 06:44:38 +00:00
  • 09bfdf9e77 added: two ezc functions: void winix_postvar_value_is(Info & i); void winix_postvar_value_is_not(Info & i); Tomasz Sowa 2012-03-28 00:09:27 +00:00
  • e83fd91423 rewritten: sessions management (Session, SessionContainer, SessionManager) now a Session object don't copy all fields in its copy constructor (only id) the rest fields are set after the object is inserted in SessionContainer added: after successfully login a session id is changed added: plugin.Call() methods with a first argument a pointer to a Session object Tomasz Sowa 2012-03-17 05:11:23 +00:00
  • 70421b7bd1 reverted last commit (secure flag to cookie) with some info Tomasz Sowa 2012-03-15 17:50:19 +00:00
  • 71ae70f670 added: to cookies: flag "; secure" if a connection is through SSL Tomasz Sowa 2012-03-15 10:43:29 +00:00
  • b1b3cea64e added: new plugin message: WINIX_PREPARE_USER_TO_LOGIN a user will be logged in set PluginInfo::res to false (it is by default) to prevent logging the user directly after this message (if you do not return false) a WINIX_USER_LOGGED is sent in p1 you have a pointer to User struct (if at least one plugin returns false then the user will not be logged) Tomasz Sowa 2012-03-14 20:25:30 +00:00
  • 2712c57f15 changed: Makefile dep (dependencies from pikotools and tito were missing) Tomasz Sowa 2012-03-12 20:30:36 +00:00
  • 0b528c7225 added: to misc: void OnlyDigit(StringType & s, bool allow_comma = true) removes all non-digit characters from a string Tomasz Sowa 2012-03-11 16:21:52 +00:00
  • b7007da5a9 fixed: misc: ValidateEmail() buffer overflow added: notifications for resetting a user's password (there is no a winix function for this yet) Tomasz Sowa 2012-03-09 22:56:54 +00:00
  • 489310ba1c added: winix function: rmuser changed: UGContainer<> now uses std::list as a storage (previously it was using std::vector with pointers) removed: now we don't have the operator[] for UGContainer<> Tomasz Sowa 2012-03-09 02:36:25 +00:00
  • 6c2c12fe5e added: html/fun_pw.html default view for pw winix function Tomasz Sowa 2012-03-03 21:00:48 +00:00
  • e61f0db57e changed: export plugin: password is stored as a string (in database) Tomasz Sowa 2012-03-01 15:39:13 +00:00
  • 3e3546a2fd fixed: plugin 'menu' incorrectly read directory items when the directory was en empty string (the current directory should be used) Tomasz Sowa 2012-03-01 15:14:46 +00:00
  • d2fa3b7171 corrected: in some places declarations of classes where mixed with struct (class/struct) Tomasz Sowa 2012-02-29 22:52:55 +00:00
  • 0e9f587591 added: to IsWhite (core/misc) other unicode white characters 25 characters -- without a new line character (10) added: config option: account_need_email_verification if true then when creating an account a user has to provide his email address and a message with an activation link will be sent back to him added: 'pw' winix function (not finished yet) at the moment only one parameter 'activate' Tomasz Sowa 2012-02-28 21:09:44 +00:00
  • 9208b15167 fixed: in winix function 'mv': a recurrence loop - incorrect function was called (typo) updated: to the new EZC api: templates from plugin menu templates from 'man' winix function Tomasz Sowa 2012-02-27 17:43:59 +00:00
  • a45fb30e0a rewritten: plugin 'menu' now we have a cache for the plugin (this limits the number of database requests) added: to plugin 'menu' menu_dir_tab can have a 'current' parameter (first argument) (it uses the last path from the previous menu_dir_tab) changed: updated to the new EZC api added: new message to plugins: WINIX_DIR_ADDED Tomasz Sowa 2012-02-24 12:09:38 +00:00
  • 97c7edafd6 added: to misc: UrlEncode() for char->wstring UrlEncode() for wstring->wstring removed: Request::redirect_url_encoded flag the Request::redirect_to string should always be url-encoded changed: in UrnEncode() now characters like '#' and '/' are not allowed in an url (will be url-encoded) Tomasz Sowa 2012-02-19 00:59:08 +00:00
  • 1a51b1adc7 added: to config: parameter: ezc_max_elements maximum number for elements through the whole template (ezc) default: 50000 parameter: ezc_max_loop_elements maximum number of each [for] loop default: 5000 (from ezc generator) added: to Request class: time_t start_time; tm start_tm; they are set when a request starts Tomasz Sowa 2012-02-17 05:19:24 +00:00
  • 9d2be5c50d added: to misc: void MaxSize(StringType & str, size_t max_size) if a string is larger than max_size then it is truncated to max_size characters Tomasz Sowa 2012-02-14 20:35:35 +00:00