diff --git a/winixd/Makefile b/winixd/Makefile
index 4d20d8e..b615ac1 100644
--- a/winixd/Makefile
+++ b/winixd/Makefile
@@ -87,6 +87,7 @@ plugins: FORCE
@cd plugins/menu ; $(MAKE) -e
@cd plugins/export ; $(MAKE) -e
@cd plugins/mailregister ; $(MAKE) -e
+ @cd plugins/seo ; $(MAKE) -e
FORCE:
@@ -106,6 +107,7 @@ clean:
@cd plugins/menu ; $(MAKE) -e clean
@cd plugins/export ; $(MAKE) -e clean
@cd plugins/mailregister ; $(MAKE) -e clean
+ @cd plugins/seo ; $(MAKE) -e clean
@cd $(GLOBAL_WORKING_DIR)/ezc/src ; $(MAKE) -e clean
@cd $(GLOBAL_WORKING_DIR)/tito/src ; $(MAKE) -e clean
@cd $(GLOBAL_WORKING_DIR)/pikotools ; $(MAKE) -e clean
@@ -132,6 +134,7 @@ depend:
@cd plugins/menu ; $(MAKE) -e depend
@cd plugins/export ; $(MAKE) -e depend
@cd plugins/mailregister ; $(MAKE) -e depend
+ @cd plugins/seo ; $(MAKE) -e depend
@cd $(GLOBAL_WORKING_DIR)/ezc/src ; $(MAKE) -e depend
@cd $(GLOBAL_WORKING_DIR)/tito/src ; $(MAKE) -e depend
@cd $(GLOBAL_WORKING_DIR)/pikotools ; $(MAKE) -e depend
diff --git a/winixd/Makefile.dep b/winixd/Makefile.dep
index 769f71b..8ae0c4c 100644
--- a/winixd/Makefile.dep
+++ b/winixd/Makefile.dep
@@ -1 +1 @@
-winix.src.files = ./core/synchro.h ./core/sessioncontainer.h ./core/cookieparser.h ./core/misc.cpp ./core/item.cpp ./core/error.h ./core/timezone.h ./core/compress.h ./core/crypt.cpp ./core/dirs.cpp ./core/slog.cpp ./core/config.cpp ./core/lastcontainer.cpp ./core/users.h ./core/httpsimpleparser.cpp ./core/threadmanager.h ./core/postparser.h ./core/pluginmsg.h ./core/acceptbaseparser.h ./core/loadavg.cpp ./core/job.h ./core/mountparser.cpp ./core/timezones.h ./core/sessionmanager.h ./core/groups.h ./core/system.cpp ./core/rebus.h ./core/synchro.cpp ./core/lock.cpp ./core/acceptencodingparser.h ./core/version.h ./core/compress.cpp ./core/ipbancontainer.cpp ./core/request.h ./core/plugindata.h ./core/plugin.cpp ./core/sessionparser.cpp ./core/bbcodeparser.h ./core/users.cpp ./core/mount.cpp ./core/item.h ./core/slog.h ./core/threadmanager.cpp ./core/acceptbaseparser.cpp ./core/lastcontainer.h ./core/httpsimpleparser.h ./core/timezones.cpp ./core/groups.cpp ./core/requesttypes.h ./core/system.h ./core/bbcodeparser.cpp ./core/lock.h ./core/ipbancontainer.h ./core/group.h ./core/plugin.h ./core/run.cpp ./core/textstream.h ./core/sessionparser.h ./core/basethread.h ./core/mount.h ./core/htmlfilter.cpp ./core/user.cpp ./core/app.cpp ./core/image.cpp ./core/ugcontainer.h ./core/postmultiparser.h ./core/logmanipulators.h ./core/sessioncontainer.cpp ./core/dircontainer.h ./core/log.h ./core/session.h ./core/timezone.cpp ./core/mounts.h ./core/ipban.h ./core/cur.h ./core/misc.h ./core/dirs.h ./core/crypt.h ./core/run.h ./core/config.h ./core/job.cpp ./core/postmultiparser.cpp ./core/sessionmanager.cpp ./core/htmlfilter.h ./core/rebus.cpp ./core/dircontainer.cpp ./core/log.cpp ./core/user.h ./core/loadavg.h ./core/session.cpp ./core/mountparser.h ./core/mounts.cpp ./core/image.h ./core/plugindata.cpp ./core/request.cpp ./core/basethread.cpp ./core/sessionidmanager.h ./core/winix_const.h ./core/sessionidmanager.cpp ./core/winixbase.cpp ./core/winixbase.h ./core/winixmodel.cpp ./core/winixmodel.h ./core/winixrequest.cpp ./core/winixrequest.h ./core/winixsystem.cpp ./core/winixsystem.h ./core/filelog.cpp ./core/filelog.h ./core/app.h ./db/dbconn.cpp ./db/db.cpp ./db/dbbase.h ./db/dbitemcolumns.cpp ./db/dbtextstream.cpp ./db/dbconn.h ./db/db.h ./db/dbitemcolumns.h ./db/dbitemquery.cpp ./db/dbtextstream.h ./db/dbitemquery.h ./db/dbbase.cpp ./functions/upload.cpp ./functions/priv.h ./functions/env.cpp ./functions/default.h ./functions/node.h ./functions/specialdefault.h ./functions/timezone.cpp ./functions/pw.h ./functions/adduser.h ./functions/chmod.h ./functions/imgcrop.cpp ./functions/vim.h ./functions/account.h ./functions/mount.cpp ./functions/uptime.cpp ./functions/ckeditor.cpp ./functions/mkdir.cpp ./functions/reload.cpp ./functions/functionparser.h ./functions/logout.cpp ./functions/rmuser.cpp ./functions/rm.cpp ./functions/chown.h ./functions/nicedit.h ./functions/mv.h ./functions/node.cpp ./functions/specialdefault.cpp ./functions/adduser.cpp ./functions/upload.h ./functions/vim.cpp ./functions/env.h ./functions/timezone.h ./functions/who.h ./functions/cp.cpp ./functions/run.cpp ./functions/locale.h ./functions/imgcrop.h ./functions/passwd.h ./functions/mount.h ./functions/privchanger.cpp ./functions/functions.cpp ./functions/last.h ./functions/ckeditor.h ./functions/mkdir.h ./functions/reload.h ./functions/cat.h ./functions/download.h ./functions/ln.h ./functions/nicedit.cpp ./functions/functionbase.cpp ./functions/man.h ./functions/rm.h ./functions/meta.cpp ./functions/emacs.cpp ./functions/sort.h ./functions/who.cpp ./functions/ipban.h ./functions/locale.cpp ./functions/passwd.cpp ./functions/last.cpp ./functions/subject.h ./functions/download.cpp ./functions/cp.h ./functions/cat.cpp ./functions/login.cpp ./functions/tinymce.cpp ./functions/ln.cpp ./functions/run.h ./functions/uname.h ./functions/man.cpp ./functions/functions.h ./functions/privchanger.h ./functions/ls.cpp ./functions/template.h ./functions/stat.h ./functions/priv.cpp ./functions/default.cpp ./functions/functionbase.h ./functions/pw.cpp ./functions/sort.cpp ./functions/ipban.cpp ./functions/chmod.cpp ./functions/meta.h ./functions/account.cpp ./functions/emacs.h ./functions/subject.cpp ./functions/functionparser.cpp ./functions/uname.cpp ./functions/uptime.h ./functions/template.cpp ./functions/stat.cpp ./functions/tinymce.h ./functions/login.h ./functions/chown.cpp ./functions/logout.h ./functions/mv.cpp ./functions/rmuser.h ./functions/ls.h ./main/main.cpp ./notify/notifypool.h ./notify/templatesnotify.cpp ./notify/notify.cpp ./notify/templatesnotify.h ./notify/notify.h ./notify/notifythread.cpp ./notify/notifypool.cpp ./notify/notifythread.h ./plugins/group/init.cpp ./plugins/group/groups.h ./plugins/group/groupinfo.cpp ./plugins/group/groupinfo.h ./plugins/group/templates.cpp ./plugins/group/groups.cpp ./plugins/stats/statssession.h ./plugins/stats/bot.h ./plugins/stats/stats.cpp ./plugins/stats/templates.cpp ./plugins/stats/init.cpp ./plugins/stats/stats.h ./plugins/stats/templates.h ./plugins/stats/bot.cpp ./plugins/gallery/galleryinfo.cpp ./plugins/gallery/templates.cpp ./plugins/gallery/gallery.cpp ./plugins/gallery/galleryinfo.h ./plugins/gallery/init.cpp ./plugins/gallery/gallery.h ./plugins/export/init.cpp ./plugins/export/export.h ./plugins/export/exportthread.cpp ./plugins/export/message.h ./plugins/export/edb.cpp ./plugins/export/funexport.cpp ./plugins/export/exportinfo.cpp ./plugins/export/exportthread.h ./plugins/export/edb.h ./plugins/export/funexport.h ./plugins/export/exportinfo.h ./plugins/ticket/funticket.h ./plugins/ticket/init.cpp ./plugins/ticket/ticketinfo.h ./plugins/ticket/showtickets.cpp ./plugins/ticket/createticket.cpp ./plugins/ticket/tdb.cpp ./plugins/ticket/pluginmsg.h ./plugins/ticket/createticket.h ./plugins/ticket/showtickets.h ./plugins/ticket/sessiondata.cpp ./plugins/ticket/tdb.h ./plugins/ticket/sessiondata.h ./plugins/ticket/ticket.h ./plugins/ticket/editticket.cpp ./plugins/ticket/funticket.cpp ./plugins/ticket/templates.cpp ./plugins/ticket/editticket.h ./plugins/ticket/ticketinfo.cpp ./plugins/menu/cache.cpp ./plugins/menu/init.cpp ./plugins/menu/cache.h ./plugins/menu/templates.cpp ./plugins/thread/funthread.cpp ./plugins/thread/threadinfo.cpp ./plugins/thread/funthread.h ./plugins/thread/threadinfo.h ./plugins/thread/createthread.cpp ./plugins/thread/reply.cpp ./plugins/thread/showthreads.cpp ./plugins/thread/templates.cpp ./plugins/thread/createthread.h ./plugins/thread/reply.h ./plugins/thread/showthreads.h ./plugins/thread/init.cpp ./plugins/thread/templates.h ./plugins/thread/tdb.cpp ./plugins/thread/pluginmsg.h ./plugins/thread/thread.h ./plugins/thread/tdb.h ./plugins/mailregister/funregistermail.h ./plugins/mailregister/mdb.h ./plugins/mailregister/funregistermail.cpp ./plugins/mailregister/mdb.cpp ./plugins/mailregister/init.cpp ./plugins/mailregister/templates.cpp ./plugins/mailregister/registermail_info.h ./plugins/mailregister/funregistermail_showusers.h ./plugins/mailregister/funregistermail_showusers.cpp ./plugins/mailregister/registermail_info.cpp ./templates/who.cpp ./templates/item.cpp ./templates/mount.cpp ./templates/templates.h ./templates/locale.h ./templates/slog.cpp ./templates/doc.cpp ./templates/localefilter.cpp ./templates/config.cpp ./templates/patterns.h ./templates/miscspace.cpp ./templates/filters.cpp ./templates/login.cpp ./templates/man.cpp ./templates/changepatterns.h ./templates/stat.cpp ./templates/template.cpp ./templates/dir.cpp ./templates/user.cpp ./templates/rebus.cpp ./templates/patterncacher.cpp ./templates/upload.cpp ./templates/textextstream.h ./templates/adduser.cpp ./templates/ipban.cpp ./templates/htmltextstream.h ./templates/indexpatterns.h ./templates/templates.cpp ./templates/winix.cpp ./templates/locale.cpp ./templates/misc.h ./templates/patterns.cpp ./templates/passwd.cpp ./templates/last.cpp ./templates/uptime.cpp ./templates/insert.cpp ./templates/changepatterns.cpp ./templates/localefilter.h ./templates/miscspace.h ./templates/ls.cpp ./templates/sys.cpp ./templates/priv.cpp ./templates/textextstream.cpp ./templates/htmltextstream.cpp ./templates/env.cpp ./templates/indexpatterns.cpp ./templates/patterncacher.h ./templates/misc.cpp ./templates/generic.cpp ./templates/currentdate.cpp ./templates/server.cpp ./templates/antispam.cpp ../../ezc/src/blocks.cpp ../../ezc/src/blocks.h ../../ezc/src/cache.cpp ../../ezc/src/cache.h ../../ezc/src/ezc.h ../../ezc/src/functions.h ../../ezc/src/funinfo.h ../../ezc/src/generator.h ../../ezc/src/item.cpp ../../ezc/src/item.h ../../ezc/src/objects.h ../../ezc/src/outstreams.h ../../ezc/src/pattern.cpp ../../ezc/src/pattern.h ../../ezc/src/patternparser.cpp ../../ezc/src/patternparser.h ../../ezc/src/expressionparser.h ../../tito/src/crypto.cpp ../../tito/src/misc.h ../../tito/src/base64.cpp ../../tito/src/crypto.h ../../tito/src/aes.cpp ../../tito/src/base64.h ../../tito/src/misc.cpp ../../tito/src/aes.h ../../tito/src/base32.cpp ../../tito/src/base32.h ../../pikotools/convert/convert.h ../../pikotools/convert/inttostr.h ../../pikotools/convert/text.h ../../pikotools/convert/text.cpp ../../pikotools/convert/strtoint.h ../../pikotools/convert/misc.h ../../pikotools/convert/misc.cpp ../../pikotools/convert/patternreplacer.h ../../pikotools/date/date.cpp ../../pikotools/date/date.h ../../pikotools/mainparser/sample/sample.cpp ../../pikotools/mainparser/mainparser.cpp ../../pikotools/mainparser/mainparser.h ../../pikotools/mainspaceparser/mainspaceparser.cpp ../../pikotools/mainspaceparser/mainspaceparser.h ../../pikotools/membuffer/membuffer.h ../../pikotools/space/jsontospaceparser.cpp ../../pikotools/space/jsontospaceparser.h ../../pikotools/space/space.cpp ../../pikotools/space/space.h ../../pikotools/space/spaceparser.cpp ../../pikotools/space/spaceparser.h ../../pikotools/space/spacetojson.cpp ../../pikotools/space/spacetojson.h ../../pikotools/textstream/textstream.h ../../pikotools/textstream/types.h ../../pikotools/utf8/utf8.cpp ../../pikotools/utf8/utf8.h ../../pikotools/log/filelog.cpp ../../pikotools/log/log.cpp ../../pikotools/log/log.h ../../pikotools/log/filelog.h ../../morm/src/finder.h ../../morm/src/model.cpp ../../morm/src/model.h ../../morm/src/modelconnector.cpp ../../morm/src/modelconnector.h ../../morm/src/morm.h ../../morm/src/morm_types.h ../../morm/src/outstream.h ../../morm/src/flatconnector.h ../../morm/src/cursor.h ../../morm/src/flatconnector.cpp ../../morm/src/dbconnector.cpp ../../morm/src/jsonconnector.h ../../morm/src/jsonconnector.cpp ../../morm/src/dbconnector.h ../../morm/src/postgresqlconnector.h ../../morm/src/postgresqlconnector.cpp ../../morm/src/baseexpression.cpp ../../morm/src/baseexpression.h ../../morm/src/flatexpression.cpp ../../morm/src/postgresqlexpression.h ../../morm/src/dbexpression.h ../../morm/src/dbexpression.cpp ../../morm/src/flatexpression.h ../../morm/src/postgresqlexpression.cpp ../../morm/src/modeldata.h ../../morm/src/clearer.cpp ../../morm/src/jsonexpression.h ../../morm/src/jsonexpression.cpp ../../morm/src/queryresult.h ../../morm/src/clearer.h ../../morm/src/dochtmlconnector.cpp ../../morm/src/dochtmlconnector.h ../../morm/src/dochtmlexpression.cpp ../../morm/src/dochtmlexpression.h ../../morm/src/postgresqlqueryresult.cpp ../../morm/src/postgresqlqueryresult.h ../../morm/src/queryresult.cpp
\ No newline at end of file
+winix.src.files = ./core/synchro.h ./core/sessioncontainer.h ./core/cookieparser.h ./core/misc.cpp ./core/item.cpp ./core/error.h ./core/timezone.h ./core/compress.h ./core/crypt.cpp ./core/dirs.cpp ./core/slog.cpp ./core/config.cpp ./core/lastcontainer.cpp ./core/users.h ./core/httpsimpleparser.cpp ./core/threadmanager.h ./core/postparser.h ./core/pluginmsg.h ./core/acceptbaseparser.h ./core/loadavg.cpp ./core/job.h ./core/mountparser.cpp ./core/timezones.h ./core/sessionmanager.h ./core/groups.h ./core/system.cpp ./core/rebus.h ./core/synchro.cpp ./core/lock.cpp ./core/acceptencodingparser.h ./core/version.h ./core/compress.cpp ./core/ipbancontainer.cpp ./core/request.h ./core/plugindata.h ./core/plugin.cpp ./core/sessionparser.cpp ./core/bbcodeparser.h ./core/users.cpp ./core/mount.cpp ./core/item.h ./core/slog.h ./core/threadmanager.cpp ./core/acceptbaseparser.cpp ./core/lastcontainer.h ./core/httpsimpleparser.h ./core/timezones.cpp ./core/groups.cpp ./core/requesttypes.h ./core/system.h ./core/bbcodeparser.cpp ./core/lock.h ./core/ipbancontainer.h ./core/group.h ./core/plugin.h ./core/run.cpp ./core/textstream.h ./core/sessionparser.h ./core/basethread.h ./core/mount.h ./core/htmlfilter.cpp ./core/user.cpp ./core/app.cpp ./core/image.cpp ./core/ugcontainer.h ./core/postmultiparser.h ./core/logmanipulators.h ./core/sessioncontainer.cpp ./core/dircontainer.h ./core/log.h ./core/session.h ./core/timezone.cpp ./core/mounts.h ./core/ipban.h ./core/cur.h ./core/misc.h ./core/dirs.h ./core/crypt.h ./core/run.h ./core/config.h ./core/job.cpp ./core/postmultiparser.cpp ./core/sessionmanager.cpp ./core/htmlfilter.h ./core/rebus.cpp ./core/dircontainer.cpp ./core/log.cpp ./core/user.h ./core/loadavg.h ./core/session.cpp ./core/mountparser.h ./core/mounts.cpp ./core/image.h ./core/plugindata.cpp ./core/request.cpp ./core/basethread.cpp ./core/sessionidmanager.h ./core/winix_const.h ./core/sessionidmanager.cpp ./core/winixbase.cpp ./core/winixbase.h ./core/winixmodel.cpp ./core/winixmodel.h ./core/winixrequest.cpp ./core/winixrequest.h ./core/winixsystem.cpp ./core/winixsystem.h ./core/filelog.cpp ./core/filelog.h ./core/app.h ./db/dbconn.cpp ./db/db.cpp ./db/dbbase.h ./db/dbitemcolumns.cpp ./db/dbtextstream.cpp ./db/dbconn.h ./db/db.h ./db/dbitemcolumns.h ./db/dbitemquery.cpp ./db/dbtextstream.h ./db/dbitemquery.h ./db/dbbase.cpp ./functions/upload.cpp ./functions/priv.h ./functions/env.cpp ./functions/default.h ./functions/node.h ./functions/specialdefault.h ./functions/timezone.cpp ./functions/pw.h ./functions/adduser.h ./functions/chmod.h ./functions/imgcrop.cpp ./functions/vim.h ./functions/account.h ./functions/mount.cpp ./functions/uptime.cpp ./functions/ckeditor.cpp ./functions/mkdir.cpp ./functions/reload.cpp ./functions/functionparser.h ./functions/logout.cpp ./functions/rmuser.cpp ./functions/rm.cpp ./functions/chown.h ./functions/nicedit.h ./functions/mv.h ./functions/node.cpp ./functions/specialdefault.cpp ./functions/adduser.cpp ./functions/upload.h ./functions/vim.cpp ./functions/env.h ./functions/timezone.h ./functions/who.h ./functions/cp.cpp ./functions/run.cpp ./functions/locale.h ./functions/imgcrop.h ./functions/passwd.h ./functions/mount.h ./functions/privchanger.cpp ./functions/functions.cpp ./functions/last.h ./functions/ckeditor.h ./functions/mkdir.h ./functions/reload.h ./functions/cat.h ./functions/download.h ./functions/ln.h ./functions/nicedit.cpp ./functions/functionbase.cpp ./functions/man.h ./functions/rm.h ./functions/meta.cpp ./functions/emacs.cpp ./functions/sort.h ./functions/who.cpp ./functions/ipban.h ./functions/locale.cpp ./functions/passwd.cpp ./functions/last.cpp ./functions/subject.h ./functions/download.cpp ./functions/cp.h ./functions/cat.cpp ./functions/login.cpp ./functions/tinymce.cpp ./functions/ln.cpp ./functions/run.h ./functions/uname.h ./functions/man.cpp ./functions/functions.h ./functions/privchanger.h ./functions/ls.cpp ./functions/template.h ./functions/stat.h ./functions/priv.cpp ./functions/default.cpp ./functions/functionbase.h ./functions/pw.cpp ./functions/sort.cpp ./functions/ipban.cpp ./functions/chmod.cpp ./functions/meta.h ./functions/account.cpp ./functions/emacs.h ./functions/subject.cpp ./functions/functionparser.cpp ./functions/uname.cpp ./functions/uptime.h ./functions/template.cpp ./functions/stat.cpp ./functions/tinymce.h ./functions/login.h ./functions/chown.cpp ./functions/logout.h ./functions/mv.cpp ./functions/rmuser.h ./functions/ls.h ./main/main.cpp ./notify/notifypool.h ./notify/templatesnotify.cpp ./notify/notify.cpp ./notify/templatesnotify.h ./notify/notify.h ./notify/notifythread.cpp ./notify/notifypool.cpp ./notify/notifythread.h ./plugins/group/init.cpp ./plugins/group/groups.h ./plugins/group/groupinfo.cpp ./plugins/group/groupinfo.h ./plugins/group/templates.cpp ./plugins/group/groups.cpp ./plugins/stats/statssession.h ./plugins/stats/bot.h ./plugins/stats/stats.cpp ./plugins/stats/templates.cpp ./plugins/stats/init.cpp ./plugins/stats/stats.h ./plugins/stats/templates.h ./plugins/stats/bot.cpp ./plugins/gallery/galleryinfo.cpp ./plugins/gallery/templates.cpp ./plugins/gallery/gallery.cpp ./plugins/gallery/galleryinfo.h ./plugins/gallery/init.cpp ./plugins/gallery/gallery.h ./plugins/export/init.cpp ./plugins/export/export.h ./plugins/export/exportthread.cpp ./plugins/export/message.h ./plugins/export/edb.cpp ./plugins/export/funexport.cpp ./plugins/export/exportinfo.cpp ./plugins/export/exportthread.h ./plugins/export/edb.h ./plugins/export/funexport.h ./plugins/export/exportinfo.h ./plugins/ticket/funticket.h ./plugins/ticket/init.cpp ./plugins/ticket/ticketinfo.h ./plugins/ticket/showtickets.cpp ./plugins/ticket/createticket.cpp ./plugins/ticket/tdb.cpp ./plugins/ticket/pluginmsg.h ./plugins/ticket/createticket.h ./plugins/ticket/showtickets.h ./plugins/ticket/sessiondata.cpp ./plugins/ticket/tdb.h ./plugins/ticket/sessiondata.h ./plugins/ticket/ticket.h ./plugins/ticket/editticket.cpp ./plugins/ticket/funticket.cpp ./plugins/ticket/templates.cpp ./plugins/ticket/editticket.h ./plugins/ticket/ticketinfo.cpp ./plugins/menu/cache.cpp ./plugins/menu/init.cpp ./plugins/menu/cache.h ./plugins/menu/templates.cpp ./plugins/thread/funthread.cpp ./plugins/thread/threadinfo.cpp ./plugins/thread/funthread.h ./plugins/thread/threadinfo.h ./plugins/thread/createthread.cpp ./plugins/thread/reply.cpp ./plugins/thread/showthreads.cpp ./plugins/thread/templates.cpp ./plugins/thread/createthread.h ./plugins/thread/reply.h ./plugins/thread/showthreads.h ./plugins/thread/init.cpp ./plugins/thread/templates.h ./plugins/thread/tdb.cpp ./plugins/thread/pluginmsg.h ./plugins/thread/thread.h ./plugins/thread/tdb.h ./plugins/mailregister/funregistermail.h ./plugins/mailregister/mdb.h ./plugins/mailregister/funregistermail.cpp ./plugins/mailregister/mdb.cpp ./plugins/mailregister/init.cpp ./plugins/mailregister/templates.cpp ./plugins/mailregister/registermail_info.h ./plugins/mailregister/funregistermail_showusers.h ./plugins/mailregister/funregistermail_showusers.cpp ./plugins/mailregister/registermail_info.cpp ./plugins/seo/seo.h ./plugins/seo/seo.cpp ./plugins/seo/init.cpp ./templates/who.cpp ./templates/item.cpp ./templates/mount.cpp ./templates/templates.h ./templates/locale.h ./templates/slog.cpp ./templates/doc.cpp ./templates/localefilter.cpp ./templates/config.cpp ./templates/patterns.h ./templates/miscspace.cpp ./templates/filters.cpp ./templates/login.cpp ./templates/man.cpp ./templates/changepatterns.h ./templates/stat.cpp ./templates/template.cpp ./templates/dir.cpp ./templates/user.cpp ./templates/rebus.cpp ./templates/patterncacher.cpp ./templates/upload.cpp ./templates/textextstream.h ./templates/adduser.cpp ./templates/ipban.cpp ./templates/htmltextstream.h ./templates/indexpatterns.h ./templates/templates.cpp ./templates/winix.cpp ./templates/locale.cpp ./templates/misc.h ./templates/patterns.cpp ./templates/passwd.cpp ./templates/last.cpp ./templates/uptime.cpp ./templates/insert.cpp ./templates/changepatterns.cpp ./templates/localefilter.h ./templates/miscspace.h ./templates/ls.cpp ./templates/sys.cpp ./templates/priv.cpp ./templates/textextstream.cpp ./templates/htmltextstream.cpp ./templates/env.cpp ./templates/indexpatterns.cpp ./templates/patterncacher.h ./templates/misc.cpp ./templates/generic.cpp ./templates/currentdate.cpp ./templates/server.cpp ./templates/antispam.cpp ../../ezc/src/blocks.cpp ../../ezc/src/blocks.h ../../ezc/src/cache.cpp ../../ezc/src/cache.h ../../ezc/src/ezc.h ../../ezc/src/functions.h ../../ezc/src/funinfo.h ../../ezc/src/generator.h ../../ezc/src/item.cpp ../../ezc/src/item.h ../../ezc/src/objects.h ../../ezc/src/outstreams.h ../../ezc/src/pattern.cpp ../../ezc/src/pattern.h ../../ezc/src/patternparser.cpp ../../ezc/src/patternparser.h ../../ezc/src/expressionparser.h ../../tito/src/crypto.cpp ../../tito/src/misc.h ../../tito/src/base64.cpp ../../tito/src/crypto.h ../../tito/src/aes.cpp ../../tito/src/base64.h ../../tito/src/misc.cpp ../../tito/src/aes.h ../../tito/src/base32.cpp ../../tito/src/base32.h ../../pikotools/convert/convert.h ../../pikotools/convert/inttostr.h ../../pikotools/convert/text.h ../../pikotools/convert/text.cpp ../../pikotools/convert/strtoint.h ../../pikotools/convert/misc.h ../../pikotools/convert/misc.cpp ../../pikotools/convert/patternreplacer.h ../../pikotools/date/date.cpp ../../pikotools/date/date.h ../../pikotools/mainparser/sample/sample.cpp ../../pikotools/mainparser/mainparser.cpp ../../pikotools/mainparser/mainparser.h ../../pikotools/mainspaceparser/mainspaceparser.cpp ../../pikotools/mainspaceparser/mainspaceparser.h ../../pikotools/membuffer/membuffer.h ../../pikotools/space/jsontospaceparser.cpp ../../pikotools/space/jsontospaceparser.h ../../pikotools/space/space.cpp ../../pikotools/space/space.h ../../pikotools/space/spaceparser.cpp ../../pikotools/space/spaceparser.h ../../pikotools/space/spacetojson.cpp ../../pikotools/space/spacetojson.h ../../pikotools/textstream/textstream.h ../../pikotools/textstream/types.h ../../pikotools/utf8/utf8.cpp ../../pikotools/utf8/utf8.h ../../pikotools/log/filelog.cpp ../../pikotools/log/log.cpp ../../pikotools/log/log.h ../../pikotools/log/filelog.h ../../morm/src/finder.h ../../morm/src/model.cpp ../../morm/src/model.h ../../morm/src/modelconnector.cpp ../../morm/src/modelconnector.h ../../morm/src/morm.h ../../morm/src/morm_types.h ../../morm/src/outstream.h ../../morm/src/flatconnector.h ../../morm/src/cursor.h ../../morm/src/flatconnector.cpp ../../morm/src/dbconnector.cpp ../../morm/src/jsonconnector.h ../../morm/src/jsonconnector.cpp ../../morm/src/dbconnector.h ../../morm/src/postgresqlconnector.h ../../morm/src/postgresqlconnector.cpp ../../morm/src/baseexpression.cpp ../../morm/src/baseexpression.h ../../morm/src/flatexpression.cpp ../../morm/src/postgresqlexpression.h ../../morm/src/dbexpression.h ../../morm/src/dbexpression.cpp ../../morm/src/flatexpression.h ../../morm/src/postgresqlexpression.cpp ../../morm/src/modeldata.h ../../morm/src/clearer.cpp ../../morm/src/jsonexpression.h ../../morm/src/jsonexpression.cpp ../../morm/src/queryresult.h ../../morm/src/clearer.h ../../morm/src/dochtmlconnector.cpp ../../morm/src/dochtmlconnector.h ../../morm/src/dochtmlexpression.cpp ../../morm/src/dochtmlexpression.h ../../morm/src/postgresqlqueryresult.cpp ../../morm/src/postgresqlqueryresult.h ../../morm/src/queryresult.cpp
\ No newline at end of file
diff --git a/winixd/html/fun_seo.html b/winixd/html/fun_seo.html
new file mode 100644
index 0000000..d5aea04
--- /dev/null
+++ b/winixd/html/fun_seo.html
@@ -0,0 +1,32 @@
+
+
+
{seo_title}
+
+
+
+
+
+
diff --git a/winixd/html/index_head_functions_add.html b/winixd/html/index_head_functions_add.html
index cb25761..29e38b2 100644
--- a/winixd/html/index_head_functions_add.html
+++ b/winixd/html/index_head_functions_add.html
@@ -30,6 +30,7 @@
[winix_function_is "reload"]
[winix_function_is "rm"]
[winix_function_is "rmuser"]
+ [winix_function_is "seo"]
[winix_function_is "sort"]
[winix_function_is "stat"]
[winix_function_is "subject"]
diff --git a/winixd/locale/en b/winixd/locale/en
index caebf29..22007de 100644
--- a/winixd/locale/en
+++ b/winixd/locale/en
@@ -617,6 +617,10 @@ tz_+13:00 = Nuku'alofa
tz_+13:00b = Samoa
+seo_title = Seo
+seo_description = Description
+seo_keywords = Keywords
+
diff --git a/winixd/locale/pl b/winixd/locale/pl
index 51abd3c..72a46fd 100644
--- a/winixd/locale/pl
+++ b/winixd/locale/pl
@@ -635,6 +635,11 @@ tz_+13:00 = Nuku'alofa
tz_+13:00b = Samoa
+seo_title = Seo
+seo_description = "Opis (tag meta description)"
+seo_keywords = "SÅ‚owa kluczowe (tag meta keywords)"
+
+
diff --git a/winixd/plugins/seo/Makefile b/winixd/plugins/seo/Makefile
new file mode 100644
index 0000000..5fe1a46
--- /dev/null
+++ b/winixd/plugins/seo/Makefile
@@ -0,0 +1,33 @@
+include Makefile.o.dep
+
+current_path := $(shell pwd)
+global_relative_working_dir := $(shell relative_path $(current_path) $(GLOBAL_WORKING_DIR))
+
+winix_include_paths = -I$(global_relative_working_dir)/winix/winixd -I$(global_relative_working_dir)/ezc/src -I$(global_relative_working_dir)/tito/src -I$(global_relative_working_dir)/morm/src -I$(global_relative_working_dir)/pikotools
+
+name = seo.so
+
+
+all: $(name)
+
+$(name): $(o)
+ $(CXX) -shared -Wl,-soname,$(name) -o $(name) $(CXXFLAGS) $(winix_include_paths) $(LDFLAGS) *.o
+
+
+
+%.o: %.cpp
+ $(CXX) -c $(CXXFLAGS) $(winix_include_paths) $<
+
+
+
+depend:
+ makedepend -Y. $(winix_include_paths) -f- *.cpp > Makefile.dep
+ echo -n "o = " > Makefile.o.dep
+ ls -1 *.cpp | xargs -I foo echo -n foo " " | sed -E "s/([^\.]*)\.cpp[ ]/\1\.o/g" >> Makefile.o.dep
+
+clean:
+ rm -f *.o
+ rm -f *.so
+ rm -f $(name)
+
+include Makefile.dep
diff --git a/winixd/plugins/seo/Makefile.dep b/winixd/plugins/seo/Makefile.dep
new file mode 100644
index 0000000..8004b0e
--- /dev/null
+++ b/winixd/plugins/seo/Makefile.dep
@@ -0,0 +1,339 @@
+# DO NOT DELETE
+
+init.o: seo.h ../../../../winix/winixd/functions/functionbase.h
+init.o: ../../../../winix/winixd/core/item.h
+init.o: ../../../../pikotools/space/space.h
+init.o: ../../../../pikotools/textstream/types.h
+init.o: ../../../../pikotools/date/date.h
+init.o: ../../../../pikotools/convert/inttostr.h
+init.o: ../../../../winix/winixd/db/db.h ../../../../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/item.h
+init.o: ../../../../winix/winixd/core/requesttypes.h
+init.o: ../../../../pikotools/textstream/textstream.h
+init.o: ../../../../pikotools/membuffer/membuffer.h
+init.o: ../../../../pikotools/textstream/types.h
+init.o: ../../../../pikotools/utf8/utf8.h
+init.o: ../../../../winix/winixd/core/winix_const.h
+init.o: ../../../../pikotools/convert/convert.h
+init.o: ../../../../pikotools/convert/inttostr.h
+init.o: ../../../../pikotools/convert/patternreplacer.h
+init.o: ../../../../pikotools/convert/strtoint.h
+init.o: ../../../../pikotools/convert/text.h
+init.o: ../../../../winix/winixd/core/winixbase.h
+init.o: ../../../../winix/winixd/core/config.h
+init.o: ../../../../pikotools/space/spaceparser.h
+init.o: ../../../../pikotools/space/space.h
+init.o: ../../../../winix/winixd/core/log.h
+init.o: ../../../../winix/winixd/core/logmanipulators.h
+init.o: ../../../../pikotools/log/log.h ../../../../pikotools/log/filelog.h
+init.o: ../../../../winix/winixd/core/log.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
+init.o: ../../../../winix/winixd/core/error.h
+init.o: ../../../../winix/winixd/db/dbitemquery.h
+init.o: ../../../../winix/winixd/db/dbitemcolumns.h
+init.o: ../../../../winix/winixd/core/user.h
+init.o: ../../../../winix/winixd/core/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/request.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/templates/htmltextstream.h
+init.o: ../../../../pikotools/space/spacetojson.h
+init.o: ../../../../ezc/src/outstreams.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/winixmodel.h
+init.o: ../../../../winix/winixd/core/plugin.h
+init.o: ../../../../winix/winixd/core/pluginmsg.h
+init.o: ../../../../winix/winixd/core/plugindata.h
+init.o: ../../../../morm/src/morm.h ../../../../morm/src/morm_types.h
+init.o: ../../../../morm/src/model.h ../../../../morm/src/modelconnector.h
+init.o: ../../../../morm/src/clearer.h ../../../../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/flatexpression.h
+init.o: ../../../../morm/src/modeldata.h ../../../../morm/src/finder.h
+init.o: ../../../../morm/src/cursor.h ../../../../morm/src/jsonexpression.h
+init.o: ../../../../morm/src/postgresqlexpression.h
+init.o: ../../../../morm/src/dochtmlexpression.h
+init.o: ../../../../morm/src/jsonconnector.h
+init.o: ../../../../morm/src/postgresqlconnector.h
+init.o: ../../../../morm/src/postgresqlqueryresult.h
+init.o: ../../../../morm/src/dochtmlconnector.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/mountparser.h
+init.o: ../../../../winix/winixd/core/crypt.h
+init.o: ../../../../winix/winixd/core/run.h
+init.o: ../../../../winix/winixd/core/user.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/group.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/notify/notify.h
+init.o: ../../../../winix/winixd/notify/notifypool.h
+init.o: ../../../../winix/winixd/templates/locale.h
+init.o: ../../../../pikotools/convert/patternreplacer.h
+init.o: ../../../../winix/winixd/templates/patterns.h
+init.o: ../../../../winix/winixd/templates/locale.h
+init.o: ../../../../winix/winixd/templates/localefilter.h
+init.o: ../../../../ezc/src/ezc.h ../../../../ezc/src/generator.h
+init.o: ../../../../ezc/src/blocks.h ../../../../ezc/src/cache.h
+init.o: ../../../../ezc/src/functions.h ../../../../ezc/src/funinfo.h
+init.o: ../../../../ezc/src/objects.h ../../../../ezc/src/pattern.h
+init.o: ../../../../ezc/src/expressionparser.h
+init.o: ../../../../ezc/src/patternparser.h
+init.o: ../../../../winix/winixd/notify/notifythread.h
+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/winixmodel.h
+init.o: ../../../../winix/winixd/core/timezones.h
+init.o: ../../../../winix/winixd/core/timezone.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
+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/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/functions/chown.h
+init.o: ../../../../winix/winixd/functions/ckeditor.h
+init.o: ../../../../winix/winixd/functions/cp.h
+init.o: ../../../../winix/winixd/functions/default.h
+init.o: ../../../../winix/winixd/functions/download.h
+init.o: ../../../../winix/winixd/functions/emacs.h
+init.o: ../../../../winix/winixd/functions/env.h
+init.o: ../../../../winix/winixd/functions/imgcrop.h
+init.o: ../../../../winix/winixd/functions/last.h
+init.o: ../../../../winix/winixd/functions/login.h
+init.o: ../../../../winix/winixd/functions/logout.h
+init.o: ../../../../winix/winixd/functions/ln.h
+init.o: ../../../../winix/winixd/functions/ls.h
+init.o: ../../../../winix/winixd/functions/man.h
+init.o: ../../../../winix/winixd/functions/meta.h
+init.o: ../../../../winix/winixd/functions/mkdir.h
+init.o: ../../../../winix/winixd/functions/mv.h
+init.o: ../../../../winix/winixd/functions/nicedit.h
+init.o: ../../../../winix/winixd/functions/node.h
+init.o: ../../../../winix/winixd/functions/passwd.h
+init.o: ../../../../winix/winixd/functions/priv.h
+init.o: ../../../../winix/winixd/functions/pw.h
+init.o: ../../../../winix/winixd/functions/reload.h
+init.o: ../../../../winix/winixd/functions/rm.h
+init.o: ../../../../winix/winixd/functions/rmuser.h
+init.o: ../../../../winix/winixd/functions/sort.h
+init.o: ../../../../winix/winixd/functions/specialdefault.h
+init.o: ../../../../winix/winixd/functions/stat.h
+init.o: ../../../../winix/winixd/functions/subject.h
+init.o: ../../../../winix/winixd/functions/template.h
+init.o: ../../../../winix/winixd/functions/tinymce.h
+init.o: ../../../../winix/winixd/functions/uname.h
+init.o: ../../../../winix/winixd/functions/upload.h
+init.o: ../../../../winix/winixd/functions/uptime.h
+init.o: ../../../../winix/winixd/functions/who.h
+init.o: ../../../../winix/winixd/functions/vim.h
+init.o: ../../../../winix/winixd/core/htmlfilter.h
+seo.o: seo.h ../../../../winix/winixd/functions/functionbase.h
+seo.o: ../../../../winix/winixd/core/item.h
+seo.o: ../../../../pikotools/space/space.h
+seo.o: ../../../../pikotools/textstream/types.h
+seo.o: ../../../../pikotools/date/date.h
+seo.o: ../../../../pikotools/convert/inttostr.h
+seo.o: ../../../../winix/winixd/db/db.h ../../../../winix/winixd/db/dbbase.h
+seo.o: ../../../../winix/winixd/db/dbconn.h
+seo.o: ../../../../winix/winixd/db/dbtextstream.h
+seo.o: ../../../../winix/winixd/core/textstream.h
+seo.o: ../../../../winix/winixd/core/misc.h
+seo.o: ../../../../winix/winixd/core/item.h
+seo.o: ../../../../winix/winixd/core/requesttypes.h
+seo.o: ../../../../pikotools/textstream/textstream.h
+seo.o: ../../../../pikotools/membuffer/membuffer.h
+seo.o: ../../../../pikotools/textstream/types.h
+seo.o: ../../../../pikotools/utf8/utf8.h
+seo.o: ../../../../winix/winixd/core/winix_const.h
+seo.o: ../../../../pikotools/convert/convert.h
+seo.o: ../../../../pikotools/convert/inttostr.h
+seo.o: ../../../../pikotools/convert/patternreplacer.h
+seo.o: ../../../../pikotools/convert/strtoint.h
+seo.o: ../../../../pikotools/convert/text.h
+seo.o: ../../../../winix/winixd/core/winixbase.h
+seo.o: ../../../../winix/winixd/core/config.h
+seo.o: ../../../../pikotools/space/spaceparser.h
+seo.o: ../../../../pikotools/space/space.h
+seo.o: ../../../../winix/winixd/core/log.h
+seo.o: ../../../../winix/winixd/core/logmanipulators.h
+seo.o: ../../../../pikotools/log/log.h ../../../../pikotools/log/filelog.h
+seo.o: ../../../../winix/winixd/core/log.h
+seo.o: ../../../../winix/winixd/core/synchro.h
+seo.o: ../../../../winix/winixd/core/filelog.h
+seo.o: ../../../../winix/winixd/core/lock.h
+seo.o: ../../../../winix/winixd/core/synchro.h
+seo.o: ../../../../winix/winixd/core/error.h
+seo.o: ../../../../winix/winixd/db/dbitemquery.h
+seo.o: ../../../../winix/winixd/db/dbitemcolumns.h
+seo.o: ../../../../winix/winixd/core/user.h
+seo.o: ../../../../winix/winixd/core/group.h
+seo.o: ../../../../winix/winixd/core/dircontainer.h
+seo.o: ../../../../winix/winixd/core/winixbase.h
+seo.o: ../../../../winix/winixd/core/ugcontainer.h
+seo.o: ../../../../winix/winixd/core/request.h
+seo.o: ../../../../winix/winixd/core/error.h
+seo.o: ../../../../winix/winixd/core/config.h
+seo.o: ../../../../winix/winixd/core/textstream.h
+seo.o: ../../../../winix/winixd/templates/htmltextstream.h
+seo.o: ../../../../pikotools/space/spacetojson.h
+seo.o: ../../../../ezc/src/outstreams.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/winixmodel.h
+seo.o: ../../../../winix/winixd/core/plugin.h
+seo.o: ../../../../winix/winixd/core/pluginmsg.h
+seo.o: ../../../../winix/winixd/core/plugindata.h ../../../../morm/src/morm.h
+seo.o: ../../../../morm/src/morm_types.h ../../../../morm/src/model.h
+seo.o: ../../../../morm/src/modelconnector.h ../../../../morm/src/clearer.h
+seo.o: ../../../../morm/src/dbconnector.h ../../../../morm/src/queryresult.h
+seo.o: ../../../../morm/src/flatconnector.h
+seo.o: ../../../../morm/src/dbexpression.h
+seo.o: ../../../../morm/src/baseexpression.h
+seo.o: ../../../../morm/src/flatexpression.h ../../../../morm/src/modeldata.h
+seo.o: ../../../../morm/src/finder.h ../../../../morm/src/cursor.h
+seo.o: ../../../../morm/src/jsonexpression.h
+seo.o: ../../../../morm/src/postgresqlexpression.h
+seo.o: ../../../../morm/src/dochtmlexpression.h
+seo.o: ../../../../morm/src/jsonconnector.h
+seo.o: ../../../../morm/src/postgresqlconnector.h
+seo.o: ../../../../morm/src/postgresqlqueryresult.h
+seo.o: ../../../../morm/src/dochtmlconnector.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/mount.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/user.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/group.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/notify/notify.h
+seo.o: ../../../../winix/winixd/notify/notifypool.h
+seo.o: ../../../../winix/winixd/templates/locale.h
+seo.o: ../../../../pikotools/convert/patternreplacer.h
+seo.o: ../../../../winix/winixd/templates/patterns.h
+seo.o: ../../../../winix/winixd/templates/locale.h
+seo.o: ../../../../winix/winixd/templates/localefilter.h
+seo.o: ../../../../ezc/src/ezc.h ../../../../ezc/src/generator.h
+seo.o: ../../../../ezc/src/blocks.h ../../../../ezc/src/cache.h
+seo.o: ../../../../ezc/src/functions.h ../../../../ezc/src/funinfo.h
+seo.o: ../../../../ezc/src/objects.h ../../../../ezc/src/pattern.h
+seo.o: ../../../../ezc/src/expressionparser.h
+seo.o: ../../../../ezc/src/patternparser.h
+seo.o: ../../../../winix/winixd/notify/notifythread.h
+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/winixmodel.h
+seo.o: ../../../../winix/winixd/core/timezones.h
+seo.o: ../../../../winix/winixd/core/timezone.h
+seo.o: ../../../../winix/winixd/core/winixrequest.h
+seo.o: ../../../../winix/winixd/core/winixsystem.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/functions/account.h
+seo.o: ../../../../winix/winixd/functions/adduser.h
+seo.o: ../../../../winix/winixd/functions/cat.h
+seo.o: ../../../../winix/winixd/functions/chmod.h
+seo.o: ../../../../winix/winixd/functions/privchanger.h
+seo.o: ../../../../winix/winixd/functions/chown.h
+seo.o: ../../../../winix/winixd/functions/ckeditor.h
+seo.o: ../../../../winix/winixd/functions/cp.h
+seo.o: ../../../../winix/winixd/functions/default.h
+seo.o: ../../../../winix/winixd/functions/download.h
+seo.o: ../../../../winix/winixd/functions/emacs.h
+seo.o: ../../../../winix/winixd/functions/env.h
+seo.o: ../../../../winix/winixd/functions/imgcrop.h
+seo.o: ../../../../winix/winixd/functions/last.h
+seo.o: ../../../../winix/winixd/functions/login.h
+seo.o: ../../../../winix/winixd/functions/logout.h
+seo.o: ../../../../winix/winixd/functions/ln.h
+seo.o: ../../../../winix/winixd/functions/ls.h
+seo.o: ../../../../winix/winixd/functions/man.h
+seo.o: ../../../../winix/winixd/functions/meta.h
+seo.o: ../../../../winix/winixd/functions/mkdir.h
+seo.o: ../../../../winix/winixd/functions/mv.h
+seo.o: ../../../../winix/winixd/functions/nicedit.h
+seo.o: ../../../../winix/winixd/functions/node.h
+seo.o: ../../../../winix/winixd/functions/passwd.h
+seo.o: ../../../../winix/winixd/functions/priv.h
+seo.o: ../../../../winix/winixd/functions/pw.h
+seo.o: ../../../../winix/winixd/functions/reload.h
+seo.o: ../../../../winix/winixd/functions/rm.h
+seo.o: ../../../../winix/winixd/functions/rmuser.h
+seo.o: ../../../../winix/winixd/functions/sort.h
+seo.o: ../../../../winix/winixd/functions/specialdefault.h
+seo.o: ../../../../winix/winixd/functions/stat.h
+seo.o: ../../../../winix/winixd/functions/subject.h
+seo.o: ../../../../winix/winixd/functions/template.h
+seo.o: ../../../../winix/winixd/functions/tinymce.h
+seo.o: ../../../../winix/winixd/functions/uname.h
+seo.o: ../../../../winix/winixd/functions/upload.h
+seo.o: ../../../../winix/winixd/functions/uptime.h
+seo.o: ../../../../winix/winixd/functions/who.h
+seo.o: ../../../../winix/winixd/functions/vim.h
+seo.o: ../../../../winix/winixd/core/htmlfilter.h
diff --git a/winixd/plugins/seo/Makefile.o.dep b/winixd/plugins/seo/Makefile.o.dep
new file mode 100644
index 0000000..df0d2fc
--- /dev/null
+++ b/winixd/plugins/seo/Makefile.o.dep
@@ -0,0 +1 @@
+o = init.o seo.o
\ No newline at end of file
diff --git a/winixd/plugins/seo/init.cpp b/winixd/plugins/seo/init.cpp
new file mode 100644
index 0000000..fca219b
--- /dev/null
+++ b/winixd/plugins/seo/init.cpp
@@ -0,0 +1,76 @@
+/*
+ * This file is a part of Winix
+ * and is distributed under the 2-Clause BSD licence.
+ * Author: Tomasz Sowa
+ */
+
+/*
+ * Copyright (c) 2019, 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 "seo.h"
+#include "functions/functions.h"
+
+
+namespace Winix
+{
+
+
+
+extern "C" void Init(PluginInfo &);
+
+
+namespace Seo
+{
+const wchar_t plugin_name[] = L"seo";
+
+Seo fun_seo;
+
+
+void AddFunctions(PluginInfo & info)
+{
+ info.functions->Add(fun_seo);
+}
+
+
+} // namespace Ticket
+
+
+
+void Init(PluginInfo & info)
+{
+using namespace Seo;
+
+ info.plugin->Assign(WINIX_CREATE_FUNCTIONS, AddFunctions);
+
+ info.p1 = (void*)(plugin_name);
+}
+
+
+
+} // namespace Winix
+
diff --git a/winixd/plugins/seo/seo.cpp b/winixd/plugins/seo/seo.cpp
new file mode 100644
index 0000000..0b30939
--- /dev/null
+++ b/winixd/plugins/seo/seo.cpp
@@ -0,0 +1,94 @@
+/*
+ * This file is a part of Winix
+ * and is distributed under the 2-Clause BSD licence.
+ * Author: Tomasz Sowa
+ */
+
+/*
+ * Copyright (c) 2019, 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 "seo.h"
+#include "functions/functions.h"
+
+
+
+namespace Winix
+{
+
+
+
+namespace Seo
+{
+
+
+
+Seo::Seo()
+{
+ fun.url = L"seo";
+}
+
+
+bool Seo::HasAccess()
+{
+ if( cur->session->puser && cur->session->puser->super_user )
+ return true;
+
+ return system->HasWriteAccess(*cur->request->last_item);
+}
+
+
+void Seo::MakeGet()
+{
+}
+
+
+void Seo::MakePost()
+{
+ Item & item = *cur->request->last_item;
+
+ const std::wstring & subject = cur->request->PostVar(L"subject");
+ const std::wstring & description = cur->request->PostVar(L"description");
+ const std::wstring & keywords = cur->request->PostVar(L"keywords");
+
+ item.subject = subject;
+
+ PT::Space & seo = item.meta.FindAddSpace(L"seo");
+ seo.Add(L"description", description);
+ seo.Add(L"keywords", keywords);
+
+ db->EditSubjectById(item, item.id);
+ db->EditMetaById(item.meta, item.id);
+}
+
+
+
+
+} // namespace
+
+} // namespace Winix
+
diff --git a/winixd/plugins/seo/seo.h b/winixd/plugins/seo/seo.h
new file mode 100644
index 0000000..1e4bd70
--- /dev/null
+++ b/winixd/plugins/seo/seo.h
@@ -0,0 +1,70 @@
+/*
+ * This file is a part of Winix
+ * and is distributed under the 2-Clause BSD licence.
+ * Author: Tomasz Sowa
+ */
+
+/*
+ * Copyright (c) 2019, 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_plugins_seo_seo
+#define headerfile_winix_plugins_seo_seo
+
+#include "functions/functionbase.h"
+
+
+
+namespace Winix
+{
+
+
+namespace Seo
+{
+
+
+class Seo : public FunctionBase
+{
+public:
+
+ Seo();
+
+ bool HasAccess();
+ void MakePost();
+ void MakeGet();
+
+private:
+
+
+};
+
+
+} // namespace
+
+} // namespace Winix
+
+#endif