diff --git a/README.txt b/README.txt new file mode 100644 --- /dev/null +++ b/README.txt @@ -0,0 +1,240 @@ +.. -*- coding: utf-8 -*- +.. \||<-snip->|| start +.. Copyright (C) 2012, Wolfgang Scherer, +.. Sponsored by WIEDENMANN SEILE GMBH, http://www.wiedenmannseile.de +.. +.. This file is part of Wiedenmann Vacation. +.. +.. Permission is granted to copy, distribute and/or modify this +.. document under the terms of the GNU Free Documentation License, +.. Version 1.3 or any later version published by the Free Software +.. Foundation; with no Invariant Sections, no Front-Cover Texts, and +.. no Back-Cover Texts. A copy of the license is included in the main +.. documentation of Wiedenmann Vacation. + +.. (progn (forward-line 1)(snip-insert-mode "rst_t.inline-comments" t)) +.. inline comments (with ws_docutils) +.. role:: rem(span) + :format: '' +.. role:: html(span) + :format: html + :raw: + +.. role:: ihtml(span) + :format: html +.. role:: nhtml(span) + :format: !html + +################################################## +:rem:`|||:sec:|||`\ Wiedenmann Vacation +################################################## +Web Front-End to Manage vacation(1) Settings +################################################## +.. \||<-snap->|| skip + +:Author: `Wolfgang Scherer`_ + +.. contents:: +.. \||<-snap->|| skip +.. \||<-snap->|| include ^index-header.snip$ + +================================================== +:rem:`|||:sec:|||`\ Installation +================================================== + +#. Copy the program anywhere on your harddrive. + +#. Change alias `/vacation` in `lib/ws-vacation.conf.in`, if desired. + +#. Execute the following commands (as user) to create the run-time files: + + >>> make clean + >>> make + + This substitutes the installation directory in the necessary places. + +#. Copy `lib/ws-vacation.conf` to `/etc/apache2/conf.d/`. + +#. Reload the Apache server: + + >>> rcapache2 reload. + +#. The sudo(1) setup allows the apache server to execute vacation(1) + as any user (except root) without a password. This is activated by + copying the file `lib/ws-vacation-sudo` into the directory + `/etc/sudoers.d` (ubuntu): + + >>> cp lib/ws-vacation-sudo /etc/sudoers.d/ws-vacation-sudo + >>> chmod 0440 /etc/sudoers.d/ws-vacation-sudo + + or by appending it to the file `/etc/sudoers` (older SuSE): + + >>> cat lib/ws-vacation-sudo >>/etc/sudoers + +================================================== +:rem:`|||:sec:|||`\ User Management +================================================== + +The file `lib/.htpasswd` can be created by the regular means. + +An automated script is available that creates the password database +from the system shadow(8) database. Just change into directory `lib` +and execute (as `root`): + +>>> php gen_htpasswd.php + +.. note:: If new users are created in the system, this step must be + repeated to update the `.htpasswd` file. + +:rem:`abstand` + +================================================== +:rem:`|||:sec:|||`\ Configuration +================================================== + +The file `lib/config.php` contains the basic configuration data. + +It is possible to fine-tune the standard user selection with: + +* $ALLOWED_USERS: users who are always accepted (if present in `/etc/passwd`). +* $INVALID_USERS: invalid users, which are always ignored. +* $ADMIN_USERS: administrators. + +The file `lib/language.php` contains language specific translation and +also the default vacation(1) message text. + +The HTML header and footer can be modified in `lib/templates.php`. + +.. ================================================== +.. :rem:`|||:sec:|||`\ Footnotes +.. ================================================== + +:html:`
` + +.. \[#] + +.. ================================================== +.. :rem:`|||:sec:|||`\ References +.. ================================================== + +.. \||<-snap->|| include ^index-footer.snip$ + +:rem:`|||:sec:|||`\ **Copyright** + +Copyright (C) 2012, Wolfgang Scherer, . +Sponsored by `Wiedenmann-Seile GmbH`_. + +.. div:: + :format: html + + See section |GFDL| for license conditions for the documentation. + + See section |GPL| for license conditions for the program. + +.. div:: + :format: !html + + See *GNU Free Documentation License* in file `GFDL.txt` for license + conditions for the documentation. + + See *GNU General Public License* in file `COPYING` for license + conditions for the program. + +.. |GFDL| replace:: `GNU Free Documentation License`_ +.. |GPL| replace:: `GNU General Public License`_ + +.. _`GNU Free Documentation License`: README-GFDL.html +.. _`GNU General Public License`: README-COPYING.html +.. _`Wiedenmann-Seile GmbH`: http://www.wiedenmannseile.de +.. _`Wolfgang Scherer`: sw@wiedenmann-seile.de + +.. \||<-snip->|| stop + +.. ================================================== +.. :rem:`|||:sec:|||`\ END +.. ================================================== +.. +.. :ide-menu: Emacs IDE Main Menu - Buffer @BUFFER@ +.. . M-x `eIDE-menu' ()(eIDE-menu "z") + +.. :ide: DELIM: SNIPPETS (ABOUT) |q|<- SYM ->||, ||<- SYM ->||, @| SYM @ +.. . (let nil (symbol-tag-normalize-delimiter (cons (cons nil "||<-") (cons "->||" nil)) t) (symbol-tag-switch-delimiter-sets) (symbol-tag-normalize-delimiter (cons (cons nil "||<-") (cons "->||" nil)) t) (setq symbol-tag-match-rx "sn[i]p") (setq symbol-tag-enclose-delimiter-set (symbol-tag-normalize-delimiter (cons (cons nil "@|") (cons "@" nil))))) + +.. :ide: DELIM: SNIPPETS (DOC) ||<- SYM ->||, |: SYM :|, ` SYM ` +.. . (let nil (symbol-tag-normalize-delimiter (cons (cons nil "|:") (cons ":|" nil)) t) (symbol-tag-switch-delimiter-sets) (symbol-tag-normalize-delimiter (cons (cons nil "||<-") (cons "->||" nil)) t) (setq symbol-tag-match-rx "sn[i]p") (setq symbol-tag-enclose-delimiter-set (symbol-tag-normalize-delimiter (cons (cons "\\(\\`\\|[^\\]\\)" "`") (cons "`" nil))))) + +.. :ide: DELIM: SNIPPETS (SNIP DOC) ||<- SYM ->||, |: SYM :|, @ SYM @ +.. . (let nil (symbol-tag-normalize-delimiter (cons (cons nil "|:") (cons ":|" nil)) t) (symbol-tag-switch-delimiter-sets) (symbol-tag-normalize-delimiter (cons (cons nil "||<-") (cons "->||" nil)) t) (setq symbol-tag-match-rx "sn[i]p") (setq symbol-tag-enclose-delimiter-set (symbol-tag-normalize-delimiter (cons (cons nil "@") (cons "@" nil))))) + +.. :ide: DELIM: SNIPPETS (FILLME) ||<- SYM ->||, :: SYM ::, @ SYM @ +.. . (let nil (symbol-tag-normalize-delimiter (cons (cons nil "::") (cons "::" nil)) t) (symbol-tag-switch-delimiter-sets) (symbol-tag-normalize-delimiter (cons (cons nil "||<-") (cons "->||" nil)) t) (setq symbol-tag-match-rx "sn[i]p") (setq symbol-tag-enclose-delimiter-set (symbol-tag-normalize-delimiter (cons (cons nil "@") (cons "@" nil))))) + +.. :ide: DELIM: SNIPPETS (SUBST) ||<- SYM ->||, @ SYM @, @ SYM @ +.. . (let nil (symbol-tag-normalize-delimiter (cons (cons nil "@") (cons "@" nil)) t) (symbol-tag-switch-delimiter-sets) (symbol-tag-normalize-delimiter (cons (cons nil "||<-") (cons "->||" nil)) t) (setq symbol-tag-match-rx "sn[i]p") (setq symbol-tag-enclose-delimiter-set (symbol-tag-normalize-delimiter (cons (cons "[^\\]" "`") (cons "`" nil))))) + +.. :ide: +#- +.. . Snippet Delimiter Sets () + +.. :ide: DELIM: ReST (links) ` SYM `_, .. _` SYM `, ` SYM ` +.. . (let nil (symbol-tag-normalize-delimiter (cons (cons "[^\\]" "`") (cons "`_" nil)) t) (symbol-tag-switch-delimiter-sets) (symbol-tag-normalize-delimiter (cons (cons nil ".. _`") (cons "`:" nil)) t) (setq symbol-tag-enclose-delimiter-set (symbol-tag-normalize-delimiter (cons (cons "\\(\\`\\|[^\\]\\)" "`") (cons "`" nil))))) + +.. :ide: DELIM: STANDARD (GNU quoting) |: SYM :|, :: SYM ::, ` SYM ' +.. . (let nil (symbol-tag-normalize-delimiter (cons (cons nil "::") (cons "::" nil)) t) (symbol-tag-switch-delimiter-sets) (symbol-tag-normalize-delimiter (cons (cons nil "|:") (cons ":|" nil)) t) (setq symbol-tag-enclose-delimiter-set (symbol-tag-normalize-delimiter (cons (cons nil "`") (cons "'" nil))))) + +.. :ide: DELIM: STANDARD (ReST quoting) |: SYM :|, :: SYM ::, ` SYM ` +.. . (let nil (symbol-tag-normalize-delimiter (cons (cons nil "::") (cons "::" nil)) t) (symbol-tag-switch-delimiter-sets) (symbol-tag-normalize-delimiter (cons (cons nil "|:") (cons ":|" nil)) t) (setq symbol-tag-enclose-delimiter-set (symbol-tag-normalize-delimiter (cons (cons "[^\\]" "`") (cons "`" nil))))) + +.. :ide: +#- +.. . Delimiter Sets () + +.. :ide: COMPILE: render reST as LaTeX +.. . (let* ((fp (buffer-file-name)) (fn (file-name-nondirectory fp))) (save-match-data (if (string-match-t "[.][^.]*$" fn) (setq fn (replace-match "" nil t fn)))) (let ((args (concat " " fp " | ws_rst2latex.py --traceback | tee " fn ".tex"))) (save-buffer) (compile (concat "PATH=\".:$PATH\"; cat " args)))) + +.. :ide: COMPILE: render reST as MAN +.. . (let* ((fp (buffer-file-name)) (fn (file-name-nondirectory fp))) (save-match-data (if (string-match-t "[.][^.]*$" fn) (setq fn (replace-match "" nil t fn)))) (let ((args (concat " " fp " | ws_rst2man.py --traceback "))) (save-buffer) (compile (concat "PATH=\".:$PATH\"; cat " args)))) + +.. :ide: COMPILE: render reST as TXT (via MAN) +.. . (let* ((fp (buffer-file-name)) (fn (file-name-nondirectory fp))) (save-match-data (if (string-match-t "[.][^.]*$" fn) (setq fn (replace-match "" nil t fn)))) (let ((args (concat " " fp " | ws_rst2man.py --traceback | man -l -"))) (save-buffer) (compile (concat "PATH=\".:$PATH\"; cat " args)))) + +.. :ide: COMPILE: render reST as ODT --strip-comments +.. . (let* ((fp (buffer-file-name)) (fn (file-name-nondirectory fp))) (save-match-data (if (string-match-t "[.][^.]*$" fn) (setq fn (replace-match "" nil t fn)))) (let ((args (concat " " fp " | ws_rst2odt.py --traceback --strip-comments | cat >" fn ".odt "))) (save-buffer) (compile (concat "PATH=\".:$PATH\"; cat " args)))) + +.. :ide: COMPILE: render reST as LaTeX, compile PDF and view with gv +.. . (let* ((fp (buffer-file-name)) (fn (file-name-nondirectory fp))) (save-match-data (if (string-match-t "[.][^.]*$" fn) (setq fn (replace-match "" nil t fn)))) (let ((args (concat " " fp " | ws_rst2latex.py --traceback | tee " fn ".tex && pdflatex '\\nonstopmode\\input " fn ".tex' && gv " fn ".pdf"))) (save-buffer) (compile (concat "PATH=\".:$PATH\"; cat " args)))) + +.. :ide: COMPILE: render reST as PDF +.. . (let* ((fp (buffer-file-name)) (fn (file-name-nondirectory fp))) (save-match-data (if (string-match-t "[.][^.]*$" fn) (setq fn (replace-match "" nil t fn)))) (let ((args (concat " " fp " | ws_rst2pdf -e ws_docutils.raw_role >" fn ".pdf"))) (save-buffer) (compile (concat "PATH=\".:$PATH\"; cat " args)))) + +.. :ide: COMPILE: render reST as HTML +.. . (let* ((fp (buffer-file-name)) (fn (file-name-nondirectory fp))) (save-match-data (if (string-match-t "[.][^.]*$" fn) (setq fn (replace-match "" nil t fn)))) (let ((args (concat " " fp " | ws_rst2html.py --traceback --cloak-email-addresses | tee " fn ".html "))) (save-buffer) (compile (concat "PATH=\".:$PATH\"; cat " args)))) + +.. :ide: COMPILE: render reST as pseudoXML +.. . (let* ((fp (buffer-file-name)) (fn (file-name-nondirectory fp))) (save-match-data (if (string-match-t "[.][^.]*$" fn) (setq fn (replace-match "" nil t fn)))) (let ((args (concat " --traceback " fp " 2>&1 #| tee " fn ".pxml"))) (save-buffer) (compile (concat "PATH=\".:$PATH\"; ws_rst2pseudoxml.py " args)))) + +.. :ide: +#- +.. . Process () + +.. :ide: QUO: ~~ Subsubsection ~~ +.. . (insert "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\:rem\:`|\:sec\:|`\\ ::fillme\::\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" ) + +.. :ide: QUO: -- Subsection -- +.. . (insert "--------------------------------------------------\n\:rem\:`||\:sec\:||`\\ ::fillme\::\n--------------------------------------------------\n" ) + +.. :ide: QUO: == Section == +.. . (insert "==================================================\n\:rem\:`|||\:sec\:|||`\\ ::fillme\::\n==================================================\n" ) + +.. :ide: +#- +.. . Sections () + +.. :ide: MENU-OUTLINE: `|||:section:|||' (default) +.. . (x-eIDE-menu-outline "sec" '("|:" ":|") (cons (cons "^" ".. ") (cons nil nil)) "\\(_`[^`\n]+`\\|\\[[^]\n]+\\]\\|[|][^|\n]+[|]\\|[^:\n]+::\\)") + +.. +.. Local Variables: +.. mode: rst +.. snip-mode: rst +.. truncate-lines: t +.. symbol-tag-symbol-regexp: "[-0-9A-Za-z_#]\\([-0-9A-Za-z_. ]*[-0-9A-Za-z_]\\|\\)" +.. symbol-tag-auto-comment-mode: nil +.. symbol-tag-srx-is-safe-with-nil-delimiters: nil +.. End: