some path in winix can be redirected to a specified static directory
git-svn-id: svn://ttmath.org/publicrep/winix/trunk@738 e52654a7-88a9-db11-a3e9-0013d4bc506e
pointing to /dev/null
added: DbBase::AssertValueBin(PGresult * r, int row, int col, std::string & result)
it reads binary (bytea) data
added: DbTextStream can handle 'bool' types now
(is puts 'true' of 'false' to the stream)
changed: now passwords can be stored either as plain text, a hash or can be encrypted
with RSA
currently we have following hashes:
md4, md5, sha1, sha224, sha256, sha384, sha512
we are using openssl to manage them
(look at config options for more info)
changed: winix version to 0.4.7
added: class Run - you can run any program from os and send a buffer to its standard input
and read what the program put on its standard output
added: class Crypt (in System) - calculating hashes, and crypting/decrypting
git-svn-id: svn://ttmath.org/publicrep/winix/trunk@734 e52654a7-88a9-db11-a3e9-0013d4bc506e
added: config option 'html_filter_wrap_line'
this wraps the whole line (line calculated with html tags as well)
changed: orphans (for html filter) are read from locale files now
('language_orphans' value )
git-svn-id: svn://ttmath.org/publicrep/winix/trunk@728 e52654a7-88a9-db11-a3e9-0013d4bc506e
new config option: compression_encoding (integer)
1 - use deflate if available (or raw deflate for Internet Explorer) or don't compress
2 - use gzip if available or don't compress
10 - prefer deflate -- use deflate (or raw deflate for IE) if both deflate and gzip are available
20 - prefer gzip -- use gzip if both deflate and gzip are available
default: 20
git-svn-id: svn://ttmath.org/publicrep/winix/trunk@727 e52654a7-88a9-db11-a3e9-0013d4bc506e
now we set the languages in the config file: option locale_files, sample:
locale_files = ( en, pl )
it represents the name of locale files (those from locale_dir directory)
renamed config option: locale to locale_default
git-svn-id: svn://ttmath.org/publicrep/winix/trunk@722 e52654a7-88a9-db11-a3e9-0013d4bc506e
size of a generated thumbnail (size in pixels)
added: plugin gallery: mount option gallery_type
it can be:
"lightbox"
"galleria"
"galleriathumb"
git-svn-id: svn://ttmath.org/publicrep/winix/trunk@717 e52654a7-88a9-db11-a3e9-0013d4bc506e
should find the first item (can be more than one item with the same 'param')
fixed: added sorting tickets params in ReadTicketParams() (in plugins/ticket/ticketinfo.cpp)
fixed: plugin should have its own 'PluginInfo info' struct
a plugin's function can call another plugin's functions
added: removing tickets files/images
added: removing threads
changed: rm function will call WINIX_FILE_REMOVED now when deleting directories
git-svn-id: svn://ttmath.org/publicrep/winix/trunk@710 e52654a7-88a9-db11-a3e9-0013d4bc506e
we have there two pointers:
Request * request;
Session * session;
these are the current request and the current session
the session GC was moved to SessionManager (was in SessionContainer)
git-svn-id: svn://ttmath.org/publicrep/winix/trunk@708 e52654a7-88a9-db11-a3e9-0013d4bc506e
added winix functions: ln
winix function 'default' can be used without redirecting now
added new tickets types: TypeProgress, TypeString, TypeMultistring, TypeImages, TypeFiles
now tickets are combined with files
added winix functions: showtickets
fixed mountpoints:
when the default root mount was created its parameter table was empty
and it caused accessing to a non-existing objects
fixed logger:
modifiers (log1, log2, log3) were incorrectly treated
added modifier: log4 (debug info)
now we are moving threads to a new plugin 'thread'
created directory: plugins/thread
(not finished yet)
git-svn-id: svn://ttmath.org/publicrep/winix/trunk@704 e52654a7-88a9-db11-a3e9-0013d4bc506e
removed: item.auth item.auth_path
added: item.file_path, item.file_fs, item.file_type
now the path to a static file is a relative path
added: thumbnails (not finished yet)
fixed: db didn't correctly return the number of deleted items /DelItem() method/
git-svn-id: svn://ttmath.org/publicrep/winix/trunk@696 e52654a7-88a9-db11-a3e9-0013d4bc506e
changed: ezc function user_is_in_group (we can provide more than one group now)
git-svn-id: svn://ttmath.org/publicrep/winix/trunk@691 e52654a7-88a9-db11-a3e9-0013d4bc506e
- we have a class BaseThread -- this is a base class -- we can inherit from it when
creating a new thread
- others treads are correctly stopped (when signal comes) -- pthread_join
- we have a special thread only for signals
git-svn-id: svn://ttmath.org/publicrep/winix/trunk@685 e52654a7-88a9-db11-a3e9-0013d4bc506e
changed: sessions are deleted at the end of a request (and only a few sessions)
other sessions will be deleted after a next request
git-svn-id: svn://ttmath.org/publicrep/winix/trunk@684 e52654a7-88a9-db11-a3e9-0013d4bc506e
changed: functions for text/numbers conversions
int Toi(const std::string & str, int base = 10);
int Toi(const std::wstring & str, int base = 10);
int Toi(const char * str, int base = 10);
int Toi(const wchar_t * str, int base = 10);
long Tol(const std::string & str, int base = 10);
long Tol(const std::wstring & str, int base = 10);
long Tol(const char * str, int base = 10);
long Tol(const wchar_t * str, int base = 10);
template<class CharType>
bool Toa(unsigned long value, CharType * buffer, size_t buf_len, int base = 10);
template<class CharType>
bool Toa(long value, CharType * buffer, size_t buf_len, int base = 10);
template<class CharType>
bool Toa(unsigned int value, CharType * buffer, size_t buf_len, int base = 10);
template<class CharType>
bool Toa(int value, CharType * buffer, size_t buf_len, int base = 10);
const wchar_t * Toa(unsigned int value, int base = 10);
const wchar_t * Toa(unsigned long value, int base = 10);
const wchar_t * Toa(int value, int base = 10);
const wchar_t * Toa(long value, int base = 10);
void Toa(int value, std::string & res, int base = 10, bool clear = true);
void Toa(long value, std::string & res, int base = 10, bool clear = true);
void Toa(int value, std::wstring & res, int base = 10, bool clear = true);
void Toa(long value, std::wstring & res, int base = 10, bool clear = true);
added: HtmlTextStream class (files htmltextstream.cpp htmltextstream.h in templates)
this is a special stream for automatically escaping html tags
git-svn-id: svn://ttmath.org/publicrep/winix/trunk@682 e52654a7-88a9-db11-a3e9-0013d4bc506e
fixed: when winix exits the session data were not properly destroyed (memory leak)
we should set request.session pointer to each session when deleting sessions
from session_container
the session data were not properly destroyed when winix checked for
outdated sessions (and when it was removing them)
fixed: performance (memcpy used too often)
in some places there were reserve method used (on std::wstring/std::string objects)
especially in AssignString() method and TextStream<> object
if we add a new string we should check the new size
and only call reserve() if the new size will be greater than existing one
(plus some constant)
changed: fcgi objects moved to App class (from Request)
now we use thread safe methods (e.g. FCGX_Accept_r)
added: log_plugin_call option to the config
default: false
when true winix log when a plugin function is called
added: winix parameter 'nostat' for not calculating statistics
(useful when making performance tests)
git-svn-id: svn://ttmath.org/publicrep/winix/trunk@680 e52654a7-88a9-db11-a3e9-0013d4bc506e
added parameters to the config:
user (string)
group (string)
additional_groups (bool)
git-svn-id: svn://ttmath.org/publicrep/winix/trunk@668 e52654a7-88a9-db11-a3e9-0013d4bc506e
so sometimes the time of the dir was changed
now for converting tm into time_t use:
time_t Time(const tm & par);
time_t Time(const tm * par);
tm Time(time_t par);
from core/misc.h
now winix internally use GMT time
only when printing it is converted to local user time
temporarily all users use the same local time (config: time_zone_offset)
(only logs are genereted with local system time)
added to system:
time_t LocalTime(time_t gmt_time);
tm LocalTime(const tm * ptm);
tm LocalTime(const tm & ptm);
they convert GMT time to local user time
git-svn-id: svn://ttmath.org/publicrep/winix/trunk@666 e52654a7-88a9-db11-a3e9-0013d4bc506e
columns: dir_id, param, value
we are able to build complicated tickets
git-svn-id: svn://ttmath.org/publicrep/winix/trunk@664 e52654a7-88a9-db11-a3e9-0013d4bc506e
(it uses a static buffer)
now DbTextStream can get tm struct so you don't have to use ConvertTime
git-svn-id: svn://ttmath.org/publicrep/winix/trunk@662 e52654a7-88a9-db11-a3e9-0013d4bc506e
fixed: reading a new url and subject in Functions::ReadItem()
added: tickets are sorted now (by date)
git-svn-id: svn://ttmath.org/publicrep/winix/trunk@659 e52654a7-88a9-db11-a3e9-0013d4bc506e
but with a Clear() method
the dynamic allocated buffer can be easily reused
added: DbTextStream a special version of a stream
used to create a database string query
everything is escaped by default
added: DbBase a base class with some basic methods for communicating
with the database
added: DbConn a class for managing connection to the database
changed: some refactoring in Db class
git-svn-id: svn://ttmath.org/publicrep/winix/trunk@655 e52654a7-88a9-db11-a3e9-0013d4bc506e
mount type and mount fs are of type 'int' now
they can be added by plugins
git-svn-id: svn://ttmath.org/publicrep/winix/trunk@652 e52654a7-88a9-db11-a3e9-0013d4bc506e
(now we have O(1) time for selecting the right html template)
added: winix function: template
for selecting a template for an item (file or dir)
git-svn-id: svn://ttmath.org/publicrep/winix/trunk@636 e52654a7-88a9-db11-a3e9-0013d4bc506e
they are in FunThread and FunTicket classes now
added funtion FunUptime (I forgot about it)
git-svn-id: svn://ttmath.org/publicrep/winix/trunk@631 e52654a7-88a9-db11-a3e9-0013d4bc506e
now we have app object and singletons are only: log logn plugin and app
git-svn-id: svn://ttmath.org/publicrep/winix/trunk@628 e52654a7-88a9-db11-a3e9-0013d4bc506e
all your plugin functions can have signature either:
void my_function(PluginInfo & info); or
void my_function();
only the main Init should have:
extern "C" void Init(PluginFunction & info);
added: directory 'plugins' for plugins
added: 'stats' plugin
git-svn-id: svn://ttmath.org/publicrep/winix/trunk@624 e52654a7-88a9-db11-a3e9-0013d4bc506e
this is the id of a user who has modified the item recently
this is only for information, persmissions don't use it
git-svn-id: svn://ttmath.org/publicrep/winix/trunk@614 e52654a7-88a9-db11-a3e9-0013d4bc506e
files: indexpatterns.h indexpatterns.cpp
removed: templates/index_root.html
its content was moved to index.html
git-svn-id: svn://ttmath.org/publicrep/winix/trunk@611 e52654a7-88a9-db11-a3e9-0013d4bc506e
added: html filter can check orphans: "i", "a", "o" ... in a text
git-svn-id: svn://ttmath.org/publicrep/winix/trunk@607 e52654a7-88a9-db11-a3e9-0013d4bc506e
we have two file systems now:
- simplefs - the files stored on the hard drive have the same structure as in the database (dir1/dir2/file)
- hashfs - files are stored in special directories
extented: the mountparser can read file system
added: function download
this is a default function for items which have static content
git-svn-id: svn://ttmath.org/publicrep/winix/trunk@588 e52654a7-88a9-db11-a3e9-0013d4bc506e
added: 'static' directory with *.css and images
we have a default layout
moved: locale from data to templates
notification templates have its own locale object
added: reload function reloades locale now too
added: 'nice' form of item_info in templates
git-svn-id: svn://ttmath.org/publicrep/winix/trunk@582 e52654a7-88a9-db11-a3e9-0013d4bc506e
select file type by the extension
param: multi
fixed: uptime function
it showed incorrect uptime time (minuts were badly calculated)
git-svn-id: svn://ttmath.org/publicrep/winix/trunk@575 e52654a7-88a9-db11-a3e9-0013d4bc506e
with a path to directory for tmp files (for upload functino)
git-svn-id: svn://ttmath.org/publicrep/winix/trunk@572 e52654a7-88a9-db11-a3e9-0013d4bc506e
added: for function: login - a html pattern for GET request
git-svn-id: svn://ttmath.org/publicrep/winix/trunk@567 e52654a7-88a9-db11-a3e9-0013d4bc506e
changed: html templates are a part of winix now
and the user can provide special html templates for its site
added: locales
added: html templates are using HtmlFilter now (locales)
changed: now we have html templates for each language
git-svn-id: svn://ttmath.org/publicrep/winix/trunk@560 e52654a7-88a9-db11-a3e9-0013d4bc506e
added functions: ticket, createticket, editticket
(there is no 'rm' function working for tickets yet)
changed: mount parser and mount points
now we have more parameters (arguments in parameters)
some refactoring in functions 'emacs' and 'mkdir'
git-svn-id: svn://ttmath.org/publicrep/cmslu/trunk@554 e52654a7-88a9-db11-a3e9-0013d4bc506e
added: cmslu can act as an authorizer (fast cgi authorize role)
added: Item::static_auth we can have additional static content on the file system
this content is authorized through cmslu (fastcgi authorizer mode)
changed: some changes in config
changed: the way how the www server is using cmslu
added new virtuals: static static_auth
changed: cmslu returns correct http headers (200, 404, 403)
changed: in cookie parser: we get the last cookie (if the server has more than one cookie with the same name)
git-svn-id: svn://ttmath.org/publicrep/cmslu/trunk@540 e52654a7-88a9-db11-a3e9-0013d4bc506e
files: htmlfilter.h htmlfilter.cpp
this is an html filter used to make the html output looking better
this is a very lightweight filter
(without using any dynamic memory - some memory is allocated only at the beginning - in ctors)
this filter has O(n) complexity over the whole html string
* added: antyspamming method
if the POST request is sent too fast after the GET
it is treated as a spam
only for no logged users and only in 'emacs' and 'createthread' functions
git-svn-id: svn://ttmath.org/publicrep/cmslu/trunk@534 e52654a7-88a9-db11-a3e9-0013d4bc506e
added: the session file
sessions can still be available between starting and stopping the cmslu system
git-svn-id: svn://ttmath.org/publicrep/cmslu/trunk@529 e52654a7-88a9-db11-a3e9-0013d4bc506e
(when no logged user wants to send a message then he is asked a question)
git-svn-id: svn://ttmath.org/publicrep/cmslu/trunk@521 e52654a7-88a9-db11-a3e9-0013d4bc506e
changed: mount points parser allows empty lines (with some white characters)
git-svn-id: svn://ttmath.org/publicrep/cmslu/trunk@518 e52654a7-88a9-db11-a3e9-0013d4bc506e
files: core/plugin.h core/plugin.cpp core/pluginmsg.h
added: directory 'main' with main.cpp (moved from 'core' directory)
changed: the way of building
nearly everything is in cmslu.so
only main() is in cmslu and is dynamically linked with cmslu.so
git-svn-id: svn://ttmath.org/publicrep/cmslu/trunk@516 e52654a7-88a9-db11-a3e9-0013d4bc506e
class AcceptBaseParser for parsing http accept* headers
added: acceptencodingparser.h
class AcceptEncodingParser for parsing HTTP_ACCEPT_ENCODING header
added: compresion only when HTTP_ACCEPT_ENCODING has 'deflate'
and the browser is not the Internet Explorer
git-svn-id: svn://ttmath.org/publicrep/cmslu/trunk@515 e52654a7-88a9-db11-a3e9-0013d4bc506e
(core/notify.h core/notify.cpp)
templatesnotify directory
all notifications are managed by a second thread
git-svn-id: svn://ttmath.org/publicrep/cmslu/trunk@512 e52654a7-88a9-db11-a3e9-0013d4bc506e
used when user_id is -1
added: mount parameters: thread_with_info, thread_with_header
added: function rm can remove threads
git-svn-id: svn://ttmath.org/publicrep/cmslu/trunk@506 e52654a7-88a9-db11-a3e9-0013d4bc506e
added: mount params can have arguments (in parentheses)
added: mount params: withheader, withinfo, restrictcreatethread, only_root_can_remove,
can_use_emacs_on(level), can_use_mkdir_on(level),
added: table Item has 'subject' column now
removed: column 'subject' from table Content
git-svn-id: svn://ttmath.org/publicrep/cmslu/trunk@505 e52654a7-88a9-db11-a3e9-0013d4bc506e
core.a content.a templates.a confparser.a have gone away
there is only: cmslu.a now (in the global directory 'cmslu')
changed: the way of building
in Makefile(s) we dont longer use explicitly a variable 'o = file1.o file2.o...'
it was put into Makefile.o.dep and is generated automatically
when 'make depend' is invoked
changed: some #include "..." directives were put from *.h to *.cpp files
fewer dependences
git-svn-id: svn://ttmath.org/publicrep/cmslu/trunk@501 e52654a7-88a9-db11-a3e9-0013d4bc506e
fixed: 'default' funtion can take a directory now (there was an error early)
git-svn-id: svn://ttmath.org/publicrep/cmslu/trunk@497 e52654a7-88a9-db11-a3e9-0013d4bc506e
(reading /etc/fstab from db not working yet)
core/mount.h
core/mountparser.h
core/mountparser.cpp
core/mounts.h
core/mounts.cpp
content/thread.cpp
content/createthread.cpp
templates/thread.cpp
git-svn-id: svn://ttmath.org/publicrep/cmslu/trunk@495 e52654a7-88a9-db11-a3e9-0013d4bc506e
changed: function 'run' is using a template: fun_run.html
there is: [item_run] called from this template
git-svn-id: svn://ttmath.org/publicrep/cmslu/trunk@489 e52654a7-88a9-db11-a3e9-0013d4bc506e
we do not have to rebuild indexes after deleting some items
added: DirContainer::DelById(long id)
changed: Dirs::CheckRootDir() addes the root dir if there is no one
added: Dirs::DeleteDir(long id) - deletes specified directory (and its contents)
(from the cache and the database)
added: Db::DelDirById(long id) - deletes a dir from the database
and its first children
added: standard function rm can delete directories
git-svn-id: svn://ttmath.org/publicrep/cmslu/trunk@487 e52654a7-88a9-db11-a3e9-0013d4bc506e
sessions are indexed by id and time (last used time)
changed: old sessions are deleted
parameter: session_max_iddle in the config file
added: function 'who'
git-svn-id: svn://ttmath.org/publicrep/cmslu/trunk@483 e52654a7-88a9-db11-a3e9-0013d4bc506e
main Makefile is in an application directory
in cmslu/ there are only libraries:
core.a content.a confparser.a templates.a
added: macros APPTEMPLATES APPFUNCTIONS
defined in the application's Makefile
added: PatternCacher
added: cmslu function 'run'
files which have exec permissions
can be run (run is a default function)
after read from the database the content is parsed
into Ezc::Pattern object, this object is then cached
in PatternCacher
added: FunctionCodeParser - will be used to parse the code
from standard functions (ls/cat/...)
git-svn-id: svn://ttmath.org/publicrep/cmslu/trunk@475 e52654a7-88a9-db11-a3e9-0013d4bc506e
Makefile from cmslu/ builds only: confparser.a content.a core.a templates.a
the proper *.fcgi file is created from an application
changed: all cmslu functions have english names (ls, emacs, etc)
fixed: function: login/logout are placed where there are permissions
git-svn-id: svn://ttmath.org/publicrep/cmslu/trunk@474 e52654a7-88a9-db11-a3e9-0013d4bc506e
added: created directory 'templates' which has Templates:: and TemplatesFunctions:: files
changed: content.cpp split into many files (directory 'content')
changed: templates.cpp split into many files (directory 'templates')
added: full permissions
changed: building of the program (GNU make is used now)
Makefile and Makefile.dep added into directories
added: a parser 'FunctionParser'
is used to parse the GET string
it recognizes directories, items, functions, functions parameters
added: other classes: Function, Functions
added: function: ls, privileges
changed: function 'id' to 'node'
changed: version: to 0.2.0
added/changed: a lot of work have been done
git-svn-id: svn://ttmath.org/publicrep/cmslu/trunk@469 e52654a7-88a9-db11-a3e9-0013d4bc506e
(we have an owner, group, privileges etc of the root dir)
the root.id of course is not -1
git-svn-id: svn://ttmath.org/publicrep/cmslu/trunk@468 e52654a7-88a9-db11-a3e9-0013d4bc506e
changed: item.url_subject into item.url
changed: a new table: content
with: id, subject, content, content_type
(those from the item table)
it helps to create hard links
git-svn-id: svn://ttmath.org/publicrep/cmslu/trunk@466 e52654a7-88a9-db11-a3e9-0013d4bc506e
when true the server checks whether HTTP_HOST environment variable
is the same as base_url from the config (of course without the 'http://' part
and the last slash) - if it's not the same then the server
redirects you into a new location base_url+REQUEST_URI
changed: variables env_* from Request are never null (after Request::Read())
if the server didn't set such a variable it will be pointing into an empty string "\0"
git-svn-id: svn://ttmath.org/publicrep/cmslu/trunk@465 e52654a7-88a9-db11-a3e9-0013d4bc506e
added: confparser directory and confparser.h and confparser.cpp
class ConfParser used to parse a config file
this is a generic parser, can be used by another project
added: config.h, config.cpp
class Config used for assigning values from
a config file into the data object
added: function for signals: SIGINT, SIGHUP
after receiving SIGHUP the program will read
its config file again
git-svn-id: svn://ttmath.org/publicrep/cmslu/trunk@463 e52654a7-88a9-db11-a3e9-0013d4bc506e