Initial revision

SVN revision: 2
This commit is contained in:
Stefan Ritt 2001-12-21 15:14:04 +00:00
parent b9412ad0eb
commit 867b0ed78f
38 changed files with 11699 additions and 0 deletions

339
COPYING Executable file
View File

@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
675 Mass Ave, Cambridge, MA 02139, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) 19yy <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19yy name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

10
README.txt Executable file
View File

@ -0,0 +1,10 @@
Welcome to the ELOG package
===========================
For general documentation, see the file "index.html" in the "doc" subdirectory,
for installation instructions, see "adminguide.html" in the same directory.
Stefan Ritt
Dec. 2001
<stefan.ritt@psi.ch>

13
build.bat Executable file
View File

@ -0,0 +1,13 @@
@echo on
rem Usage: build_elog <version> like "build 100"
rem Build ELOG distribution
set version=%1
rem map network drive
net use m: /d > nul
net use m: \\pc2075\midas mi_das /user:midas
"\program files\NSIS\makensis" /DVERSION=%version% elog.nsi
copy elog%version%.exe m:\html\elog\download\

238
doc/CHANGELOG.TXT Executable file
View File

@ -0,0 +1,238 @@
Version 1.3.2, released December xxth, 2001
===========================================
- Added spaces around message number in find result page to make
link wider
- Added "preset <attribute> = %03d" for automatic index generation
Version 1.3.1, released December 14th, 2001
===========================================
- Display URL links in search result page
- Fixed a few missing string translations
- Left-align text about attachments on edit page
- Fixed concatenation of lines in password file on password change,
thanks to Michael Buselli
- Added support for crypt() function
- Made "Required Attributes" working with "MOptions"
- Make relative paths work for "Data dir" and "Password file"
Version 1.3.0, released December 13th, 2001
===========================================
- Changed global "Welcome page" to "Selection page"
- Removed most compiler warnings with "-Wall"
- Removed DWORD (needed for True64 Unix)
- Added localization support, use "language =" in [global]
- Added French and German files
- Added Per-Session cookies (when expiration = 0)
- Fixed major bug with memcpy(rem_addr,...)
- Fixed memory leak with ss_file_find
- "Entry date" is now formatted according to "Date format"
- Added "MOptions" for multi-valued attributes
- Added "HTML default" option
Version 1.2.6, released December 4th, 2001
==========================================
- Fixed bug with "resubmit as new entry" and deleted attachments
- Fixed bug where "submit as HTML" got deleted on resubmit
- Display locked attributes as text only (no input field)
- Added FAQ about "Last 10" page as default logbook page
- Added -h flag for multi-homed hosts; thanks to Scott Erickson
- Fixed problem with "Date format" in short listings
Version 1.2.5, released November 21st, 2001
===========================================
- Removed "Revision date:" from edit form (should better be done via an
attribute, preset to $date)
- Fixed bug with "Welcome page"
- Added "resubmit as new entry" checkbox
Version 1.2.4, released November 20th, 2001
===========================================
- Added "date format" option
- Put "copy to" and "move to" under administrative password
- String "<mailto:user@host>" now gets correctly converted into a hot link
- Use "comment =" string instead of logbook in page title
- Logout takes you back to logbook selection page
- Made http://<host>/<logbook>/?cmd=Last&<attribute>=<value> working
- Added submit button also at bottom of page
- Added "Enable browsing" flag
- Implemeted default options in [global] section of elogd.cfg
- Fixed a bug that $logbook substitution did not work in email subject
- Added "Use Email from = <string>"
- Made "bottom text" work with query page
- Added option "find menu commands"
- Added command "last x" to "find menu commands"
- Last x gets now multiplied by 2 each time instead of added one
- Added more spaces in attachment display of find result page
Version 1.2.3, released November 15th, 2001
===========================================
- Implemented quotation marks for "email <attribute> <value>" in case
attribute or value contains blanks
- Produce error if submitted attachment is too large
- Fixed crash when nonexisting logbook in URL
- Changed "options <attribute> = <string>" into
"Preset <attribute> = <string>"
- Added "Preset text = <string> | <file>"
- Added "Locked attributes"
- Added "ftp://" and "mailto:" as clickable links
- Added FAQs in documentation
Version 1.2.2, released November 14th, 2001
===========================================
- Added User level access control with login/logout and password file
- Added "Remove on reply"
- Added "options <attribute> = $short_name etc."
- Fixed wrong numbering when searching in several logbooks
- Display "no entries found" in search page
- Added "subst <attribute>" option
- Cookies are now stored in parameter list
- Email notification for logbooks with blanks now use %20 for blanks to
make link working in email
- Search result page puts links on number instead of dates
- Commands wich are not in the menu list cannot be executed now
- Added "Reverse sort" flag
- Added "Page title" in [global]
- Added "Show text" flag for attribute-only logbooks
- Made elogd.c compile under Cygwin
- Fixed bug that "p<attribute>" was not working any more
- Changed "Email <value> =" to "Email <attribute> <value> ="
- Added "main tab" in [global]
- Added "bottom text" option
- Added $logbook variable
- Added "number attachments" option
Version 1.2.1, released November 6th, 2001
==========================================
- Fixed problem with long configuration files (use POST instead GET)
- Fixed bug with delete command and admin. password
- Fixed bug with reply/edit/delete commands which always used last message
- Change "use for title" into "page title", introduced attribute substitution
- Added attribute substitution to "use email subject"
- Changed elog program to deal with arbitrary attributes
Version 1.2.0, released October 19th, 2001
==========================================
- added arbitrary attributes instead of fixed "author", "type", "category" and
"subject"
- logbook entries can now be moved or copied between logbooks, if configured in
elogd.cfg
- Added "Hosts allow" and "Hosts deny" for access control
- Any attribute or several attributes can be used for the "subject" field in
email notifications
- Any attribute can be used as a title for the web page
- A comment can be displayed above the text entry box
- A site-specifig URL can be defined for the Help button, can also point
directly to a file in the configuration directory, which gets served
by elogd
- On the search page, the result can be sorted in reverse order
- On full-text searches, the pattern is highlighted in the result
- If a "types" entry is present in elogd.cfg, a help page is displayed for
upgrading the configuration file
- Added "boolean" attributes which are represented by a checkbox
- Added "Filtered browsing = 0/1" flag
- Added "Display search" list
- Added "HELO" statement in SMTP communication, thanks to David Monk.
- Added "Welcome title" for logbook selection page
- Moved "SMTP host" to [global] section
- Added "Display email recipients = 0/1"
- Added "Suppress default = 2" for no checkbox at all
- Added "Show attachments" flag
- Added global and logbook "Welcome page"
- Added "Submit page"
- Added "Email message body" flag
- Added "config" menu to edit elogd.cfg over the web
- Changed "delete password" into "admin password" which is now used
both to delete messages and to config elogd.cfg
Version 1.1.3, released October 12th, 2001
==========================================
- Various problems fixed with read passwords:
o First page of single logbook was always displayed even with read password
o Without "-k" flag, some browsers were hanging on password page
- Fixed CRLF problem with some SMTP hosts (courtesy of Michael Jones)
- Fixed a bug in the elog submission program which added a wrong line
at the end of a message
- Fixed bug which caused the "find" function to display only one entry if
a file xyx.log is present in the data directory
Version 1.1.2, released October 9th, 2001
=========================================
- Implemented keep-alive of connection. This speeds up considerably especially
when browsing through a logbook. It could be that with the Opera browser
there are some problems. In this case, start elogd with the "-k" flag to
turn keep-alive off.
Version 1.1.1, released August 31th, 2001
=========================================
- Fixed various bugs to make Elog work with the Opera browser
Version 1.1.0, released August 28th, 2001
=========================================
- Added "themes"
- Added tabs for logbook selection
- Added graphical browse buttons
- Added "first" browse button
- Menu can be switched from buttons to links
- Replaced "query" by more appropriate "find"
- Search can span multiple logbooks
- Search can produce "printable output", which is optimized for printing
- Search has no default start date, which means that the whole logbook is
searched by default
- Configuration and themes file get re-read at each access
Version 1.0.5, released August 8th, 2001
========================================
- Added separate password for message deletion
- Added expiration time for passwords
- Added "suppress Email notification" for message entry
Version 1.0.4, released August 7th, 2001
========================================
- Fixed bug where Email notification only got sent to "Email All"
- Fixed bug with wrong display of logbook list if no logbook is
specified
- Categories and Types were mixed if several logbooks are used. Fixed.
Version 1.0.3, released August 2nd, 2001
========================================
- Added email facility, please refer to the documentation
- Added "Authors =" option in configuration file
- Added "Summary lines =" option in configuration file
- Fields in "New" page can be pre-populated by using pauthor=xxx etc. in the URL
- Added "back" button on certain pages
Version 1.0.2, released July 26, 2001
=====================================
- Added URL = flag in elgod.cfg file and update documentation accourdingly
to support secure connections over STUNNEL and SSH
Version 1.0.1, released July 24, 2001
=====================================
- Use subject as page title, useful when bookmarking pages
- Display text with "http://xxx" in logbook pages as active links
- Increase password expiration from 1h to 1d for computers with daylight
savings time incorrectly set
Version 1.0.0, released June 20, 2001
=====================================
Initial revision

253
doc/adminguide.html Executable file
View File

@ -0,0 +1,253 @@
<HTML>
<HEAD>
<TITLE>ELOG Administrator's Guide</TITLE>
<LINK REV="made" HREF="mailto:fredp@mygale.org">
<META NAME="generator" CONTENT="NoteTab Light 4.86c">
<META NAME="author" CONTENT="Fred Pacquier">
<META NAME="description" CONTENT="Home of the Electronic Logbook (ELOG) package">
<META NAME="keywords" CONTENT="ELOG MIDAS PSI RITT">
<LINK REL="stylesheet" TYPE="text/css" HREF="elog.css">
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
<div class=title>&nbsp; ELOG Administrator's Guide &nbsp;</div>
<p>
<div class=menu>&nbsp; Site map :&nbsp;
&nbsp;[<a class=nav href="index.html">Home</a>]&nbsp;
&nbsp;[<a class=nav href="userguide.html">User's Guide</a>]&nbsp;
&nbsp;[Administrator's Guide]&nbsp;
&nbsp;[<a class=nav href="faq.html">FAQ</a>]&nbsp;
&nbsp;[<a class=nav href="http://midas.psi.ch:8000">DEMO</a>]&nbsp;
&nbsp;[<a class=nav href="download.html">Download</a>]&nbsp;
</div>
<p>
<div class=menu>&nbsp;* this section :&nbsp;
&nbsp;[<a class=nav href="#unix">UNIX</a>]&nbsp;
&nbsp;[<a class=nav href="#windows">Windows</a>]&nbsp;
&nbsp;[<a class=nav href="#config">Configuration</a>]&nbsp;
&nbsp;[<a class=nav href="#secure">Secure Connections</a>]&nbsp;
&nbsp;[<a class=nav href="#tech">How It Works</a>]&nbsp;
*&nbsp;</div>
<p>
<div class=Sub><i>How to set up and run your very own ELOG server</i></div>
<hr><a name="unix">
<div class=section>&nbsp; Installing and running on UNIX &nbsp;</div>
<p>
<b>ELOG</b> is being developed and tested under Linux, and is being used on (Sparc) Solaris
workstations. It should also compile and run on other UNIX flavours.
<p>
<a href="http://midas.psi.ch/elog/download/">Download</a> the latest <code><b>elog-x.x.x.tar.gz</code></b> package.
<p>
Expand the compressed TAR file with <code><b>tar -xzvf elog-x.x.x.tar.gz</code></b>.
This creates a subdirectory <code><b>elog-x.x.x</b></code> where x.x.x is the
version number. In that directory execute <code><b>make</b></code>, which
creates the executables <code><b>elogd</b></code> and <code><b>elog</b>
</code>. These executables can then be copied to a convenient place like
<code><b>/usr/local/bin</b></code> or <code><b>~/bin</b></code>.
The <code><b>elogd</b></code> executable can be started manually for testing with :
<p>
<ul><code>elogd -p 8080</code></ul>
<p>
where the <b>-p</b> flag specifies the port. Without the <b>-p</b> flag,
the server uses the standard WWW port 80. Note that ports below 1024 can
only be used if <code><b>elogd</b></code> is started a root, or the "<I>sticky bit</I>" is set on
the executable.
<p>
If the program complains with something like "<I>cannot bind to port</I>...", it
could be that the network is not started on the Linux box. This can be
checked with the <code><b>/sbin/ifconfig</b></code> program, which must
show that <code><b>eth0</b></code> is up and running.
<p>
The distribution contains a sample configuration file <code><b>elogd</b></code> and
a demo logbook in the <i>demo</i> subdirectory. If the <code><b>elogd</b></code> server is
started in the <i>elogd-x.x.x</i> directory, the demo logbook can be directly
accessed with a browser by specifying the URL <b>http://localhost:8080</b>
(or whatever port you started the elog daemon on). If the <code><b>elogd</b></code> server is
started in some other directory, you must specify the full path of
the <code><b>elogd</b></code> file with the <b>"-c"</b> flag and change the
<b>Data dir = </b> option in the configuration file to a full path like
<b>/usr/local/elogdata</b>.
<p>
Once testing is complete, <code><b>elogd</b></code> will typically be started with the <b><code>-D</code></b> flag
to run as a <I>daemon</I> in the background, like this :
<p>
<ul><code>elogd -p 8080 -c /usr/local/elog/elogd.cfg -D</code></ul>
<p>
<I>Note that it is mandatory to specify the full path for the <code><b>elogd</b></code> file when started as a daemon.</I>
<p>
To test the daemon, connect to your host via :
<P>
<ul><code>http://your.host:8080/</code></ul>
<p>
If port 80 is used, the port can be omitted in the URL. If several logbooks
are defined on a host, they can be specified in the URL :
<p>
<ul><code>http://your.host/&lt;logbook&gt;</code></ul>
<p>
where <code>&lt;logbook&gt;</code> is the name of the logbook.
<p>
The contents of the all-important configuration file <b><code>elogd.cfg</code></b> are
described <a href="#config">below</a>.
<p>
To start the daemon automatically, it can be run from the <code><b>/etc/rc.d/init.d</code></b>
system. Please consult your distribution to find out how to do that.
<br>
Under RedHat 6.x. I use a <a href="elogd">script</a> which I put under <code><b>/etc/rc.d/init.d</code></b>. Then I call :
<ul><code>chkconfig --add elogd</code></ul>
<p>
<h3><hr><i>Notes for the Solaris platform</i>:</h3>
<p><a href="mailto:huber@secaron.de">Martin Huber</a> reports that
under Solaris 7 the following command line is needed to compile elog:
<P>
<ul><code>gcc -L/usr/lib/ -ldl -lresolv -lm -ldl -lnsl -lsocket elogd.c -o elogd</code></ul>
<p>
With some combinations of Solaris servers and client-side browsers there have also
been problems with <b>ELOG</b>'s <I>keep-alive</I> feature. In such a case you need to add
the "<B>-k</B>" flag to the <code><b>elogd</b></code> command line to turn keep-alives off.
<p>
<hr><a name="windows">
<div class=section>&nbsp; Installing and running in Windows &nbsp;</div>
<p>
<b>ELOG</b> is distributed in binary (executable) form for Windows platforms. It will run happily in <I>console mode</I> (or "<I>DOS box</I>") under Windows 9x and ME. Under Windows NT and 2000 it is also possible to run it as a <I>service</I> (the Windows equivalent of a UNIX <I>daemon</I>).
<p>
<a href="http://midas.psi.ch/elog/download/">Download</a> the latest <code><b>elogxxx.exe</b></code> file and execute it. The installer puts the <b>ELOG</b> system into a directory you specify and adds some menu
shortcuts. With these shortcuts, the daemon <code>elogd.exe</code> can be started directly and the demo logbook can be accessed with the browser. Under Windows, the ports below 1024 can be used without restriction. So if no web server is running on the same PC the <b>ELOG</b> daemon listens under the standard
Web port 80.
<p>
The "<B>-D</B>" (<I>daemon</I>) command line option only works under UNIX. To start
<code><b>elogd</b></code> as a service under Windows NT/2000, you can do one of the following :
<p>
<ul>
<li>use the <code><b>srvany.exe</b></code> and <code><b>instsrv.exe</b></code> from the Windows
Resource Kit. If you don't have the Resource Kit, these programs can probably
be downloaded from various places like <a href="http://www.pyeung.com/userdefinedservice.html">this one</a>. Then follow these steps:
<p>
<OL>
<LI>Copy SRVANY.EXE to %window%\system32\.
<LI>Use INSTSRV to install SRVANY.EXE as a service named "<I>elogd</I>":<P>
<pre>INSTSRV ELogd %windir%\system32\srvany.exe</pre>
<LI>Run REGEDIT and find "My Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\elogd".
<LI>Under the <i>Elogd</i> registry key, create a new key called <i>Parameters</i> via <i>Edit/New/Key</i>.
<LI>Under the new key <i>Parameters</i>, create the following three STRING values:
<UL>
<LI><i>Application</i> set to "c:\elog\elogd.exe" (or wherever you installed the elogd program)
<LI><i>AppDirectory</i> set to "c:\elog" (or wherever you installed the <code><b>elogd</b></code> file)
<LI><i>AppParameters</i> set to "-p 8080" (or any other port which you would like to use,
put an empty string for port 80)
</UL>
<LI>Under NT4, open the <i>Services</i> entry in the control panel, under Windows 2000 right-click
on "My Computer", click to "Manage", select "Services and Applications", expand it and select
"Services". On the right panel, double-click "ELogd". Then start the service manually and
change the startup type to "Automatic". This way the <code><b>elogd</b></code> program gets started automatically
on every reboot.
</OL>
<p>
<li>better still, use the free <a href="http://www.firedaemon.com">FireDaemon</a> utility. Make sure <code><b>elogd</b></code> is not running, then start the FireDaemonUI application, and enter the following fields:
<P>
<pre>
Service name: ELogd
Service description: "Electronic Logbook Daemon"
Startup type: Automatic
Interact with desktop: off
Start immediately: on
Auto restart application: off
Application working directory: c:\program files\elog\ (or wherever you installed elog)
Application executable: c:\program files\elog\elogd.exe (or wherever you installed elogd.exe)
</pre>
and keep the other options as they are. After pressing "OK" the daemon should be started immediately.
</ul>
<p>
<hr><a name="config">
<div class=section>&nbsp; Server Configuration &nbsp;</div>
<p>
The appearance, functionality and behaviour of the various logbooks on an <b>ELOG</b> server are determined by the single <b><code>elogd.cfg</code></b> file in the <b>ELOG</b> installation directory.
<p>
This file may be edited directly from the file system, or from a form in the <b>ELOG</b> Web interface (when the <i>Config</i> menu item is available). In this case, changes are applied dynamically without having to restart the server.
<p>
The many options of this unique but very important file are documented on the separate <b><a href="config.html">elogd.cfg syntax page</a></b>.
<p>
To better control appearance and layout of the logbooks, <b><code>elogd.cfg</code></b> may optionally specify the use of additional files containing HTML code, and/or custom "<I>themes</I>" configurations. These need to be edited directly from the file system right now.
<p>
<hr><a name="secure">
<div class=section>&nbsp; Secure Connections HOWTO &nbsp;</div>
<p>
Although the <code><b>elogd</b></code> program does not support secure
connections over SSL directly, it is possible to use it together with
<a href="http://stunnel.mirt.net/">stunnel</a> to do so. Three steps are
necessary:
<OL>
<LI>Start <code><b>elogd</b></code>. If another Web server is running
on port 80, use a different port.
<P>
<LI>Install the <b><code>stunnel</code></b> program if not already done
and start it with:
<P>
<pre>stunnel -d 443 -r your.host.name:80</pre>
Substitute the port 80 if you started <code><b>elogd</b></code> on another port. This
causes <b><code>stunnel</code></b> to receive requests on the https port 443 and forward them to the <code><b>elogd</b></code> port.
<P>
<LI>Connect to your logbook with a browser which supports SSL via:
<P>
<pre>https://your.host.name/</pre>
</OL>
<p>
Alternatively, <code><b>elogd</b></code> can be accessed through a SSH tunnel.
To do so, open an SSH tunnel like:
<P>
<ul><pre>ssh -L 1234:your.server.name:8080 your.server.name</pre></ul>
<p>
This opens a secure tunnel from your local host, port 1234, to the server host
where the <code><b>elogd</b></code> daemon is running on port 8080. Now you can
access <b> <code>http://localhost:1234</code></b> from your browser and reach
<code><b>elogd</b></code> in a secure way.
<p>
<hr><a name="tech">
<div class=section>&nbsp; How It All Works &nbsp;</div>
<p>
For the technically curious :
<p>
The concept of <b>ELOG</b> is very simple. The logbook functionality is implemented by a single daemon program, <code><b>elogd</b></code>, which is written in C. It contains an integrated
Web server, which does not serve files like standard Web servers, but
reads logbook entries from its database and formats them into HTML. Since
only forms and tables are used, no Java or Javascript is necessary, which makes the logbook display very fast. The system does not use any images on purpose to reduce the amount of data to be transferred. Since the <b>ELOG</b> daemon contains its own <i>http</i> server, no additional server like Apache is required.
<p>
The "<I>database</I>" in which <b>ELOG</b> saves its entries is in plain ASCII format. One file is
created for each day in the form <b><code>YYMMDD.log</b></code> (where
YY is the year, MM the month and DD the day). The only non-ASCII character
is a form-feed at the end of each message. If a log file is sent directly
to a printer, each message is therefore printed on a separate page. Note
that the log files should not be edited manually, since this could invalidate
the internal database structure (each header contains the message length
in bytes, which would then become incorrect).
<p>
If attachments are submitted, they are saved as separate files named
<b><code>YYMMDD_HHMMSS_name</code></b> - where in addition to the date the
time is specified and <b><code>name</code></b> is the original file name of
the attachment. To copy the database to another computer, only the *.log
files and the attachment files need to be copied. To copy for example all
files from March 2001, just select them with <b><code>0103??.log</code>
</b> and <b><code>0103??_*</code></b>.
<p>
<HR>
<div class=footer>&nbsp;
Content by <a class=nav href="mailto:Stefan.Ritt@psi.ch">Stefan Ritt</a>,
Web pages by <a class=nav href="mailto:fredp@mygale.org">Fred Pacquier</a>
- last modified on 19/12/2001
&nbsp;</div>
</body>
</html>

682
doc/config.html Executable file
View File

@ -0,0 +1,682 @@
<HTML>
<HEAD>
<TITLE>ELOG - Syntax of elogd.cfg</TITLE>
<LINK REV="made" HREF="mailto:fredp@mygale.org">
<META NAME="generator" CONTENT="NoteTab Light 4.86c">
<META NAME="author" CONTENT="Fred Pacquier">
<META NAME="description" CONTENT="Home of the Electronic Logbook (ELOG) package">
<META NAME="keywords" CONTENT="ELOG MIDAS PSI RITT">
<LINK REL="stylesheet" TYPE="text/css" HREF="elog.css">
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
<div class=title>&nbsp; ELOG - Syntax of elogd.cfg &nbsp;</div>
<p>
<div class=menu>
&nbsp;[<a class=nav href="adminguide.html">back to Administrator's Guide</a>]&nbsp;
</div>
<p>
<div class=menu>&nbsp;* Server :&nbsp;
&nbsp;[<a class=nav href="#global">Global</a>]&nbsp;
- Logbooks :&nbsp;
&nbsp;[<a class=nav href="#general">General</a>]&nbsp;
&nbsp;[<a class=nav href="#attrib">Attributes</a>]&nbsp;
&nbsp;[<a class=nav href="#email">E-mail</a>]&nbsp;
&nbsp;[<a class=nav href="#access">Access</a>]&nbsp;
&nbsp;[<a class=nav href="#flags">Flags</a>]&nbsp;
&nbsp;[<a class=nav href="#themes">Themes</a>]&nbsp;
*&nbsp;</div>
<p>
<div class=Sub><i>Global and individual logbook options for an ELOG server</i></div>
<hr>
<p>
The configuration file <b><code>elogd.cfg</code></b> contains entries which define
the structure of logbooks and the behaviour of <code><b>elogd</b></code>. The file has a simple ASCII
format. Each logbook is defined by a <b><code>[&lt;name&gt;]</code></b> section
where &lt;name&gt; is the name of the logbook. The <b><code>[global]</code></b>
section is used for settings common to all logbooks. Each line contains a setting
name, followed by an equal sign and the value for this setting. Lines starting with
";" are treated as comments.
<p>
Here is a simple example, which define two logbooks, "<I>Linux</I>" and "<I>PC</I>":
<p>
<ul><pre>
[global]
Logbook tabs = 1
Tab cellpadding = 2
SMTP host = mailsend.your.domain
[Linux]
Theme = default
Comment = General linux tips and tricks
Data dir = /usr/local/elog/linux
Attributes = Author, Type, Category, Subject
Options Type = Routine, Software Installation, Problem Fixed, Configuration, Other
Options Category = General, Hardware, Software, Network, Account, Other
Options Author = Stefan, Linus, unknown
Required Attributes = Author
[PC]
Comment = Database PC installations
Data dir = /usr/local/elog/pc
Attributes = Location, OS, Owner
Options Location = Building1, Building2
Options OS = Linux, Windows ME, Windows 2000
Required Attributes = Location, Owner
Email All = name@address, othername@otheraddress
Mail Subject = Location
</pre></ul>
<p>
<a name="global"><hr>
<div class=title>&nbsp; Global options &nbsp;</div>
<p>
The following options are specific to the <b><code>[global]</code></b> section:
<p>
<UL>
<LI><b><code>Language = &lt;name&gt;</code></b>
<br>
The language setting determines the language of the <code><b>elogd</b></code> output. Not affected by this
setting are the configuration file options (they are always in English) and the
<b>attribute</b> names as well as the optional <b>Menu commands</b>. These have to be
translated manually in the configuration file.
<p>
If a language name is given (currently only "<I>german</I>" and "<I>french</I>" are supported out-of-the-box),
the system searches for a file named <b>eloglang.&lt;name&gt;</b> containing
string translations from English into that language. <i>If you create a new translation file, please send it back to the author to be included in future distributions</i>.
<p>
The online help for <code><b>elogd</b></code> is contained in the file <b>eloghelp_<i>xx</i>.html</b> where
<i>xx</i> are the first two letters of the language (like "<I>en</I>", "<I>ge</I>" and "<I>fr</I>"). For new languages, a new file of that type must be created as well.
<p>
<LI><b><code>Tab cellpadding</code></b>
<br>
Specifies the empty space between the name in the logbook tab and its frame, in pixels.
<p>
<LI><b><code>Logbook Tabs = 0/1</code></b>
<br>
This flag controls the display of "<I>tabs</I>" on top of the logbook page which
allow to quickly switch between logbooks.
<p>
<LI><b><code>Main Tab = &lt;string&gt;</code></b>
<br>
If this option is present, an additional first tab is displayed which takes you back
to the main logbook selection page. The <b><code>string</b></code> is used for the
contents of the tab.
<p>
<LI><b><code>Welcome Title</code></b>
<br>
This optional HTML code gets displayed in the title of the logbook selection
page. It can contain images via <b><code>&lt;img src="welcome.gif"&gt;</code></b>.
These images must be in the same directory as the elodg.cfg file.
The following line is an example Welcome Title:
<p>
<pre>Welcome title = &lt;img src="welcome.jpg"&gt;&lt;p&gt;&lt;font size=5 color=white&gt;Welcome to our Elog&lt;/font&gt;</pre>
<p>
This displays an image and a text below.
<p>
<LI><b><code>Page title = &lt;string&gt;</code></b>
<br>
The string specified here is used for the title of the logbook selection page. It is also
used by most browsers for bookmark names.
<p>
<LI><b><code>Selection page = &lt;file&gt;</code></b>
<br>
When this option is present, a user defined file is displayed instead of the logbook
selection page. This file must be in the same directory as the <code><b>elogd</b></code>
file. It can be completely customized in order to contain logos etc. As a template,
the standard selection page produced by <code><b>elogd</b></code> can be used.
<p>
<LI><b><code>SMTP host</code></b>
<br>
This defines the SMTP host needed to send automatic email notifications. The host
name you can get from your email program or your local system administrator.
<p>
</UL>
<hr>
<div class=title>&nbsp; Individual logbook options &nbsp;</div>
<p>
For each logbook, there is a section with the logbook name in square brackets, so that each
logbook can have different options. If an option is not present in a logbook section, then the
system tries to locate that option in the <code><b>[global]</b></code> section. Thus if the
following options are placed in the <code><b>[global]</b></code> section, they are defaults for
all logbooks. If they are present in the <code><b>[global]</b></code> and in the logbook
section, the logbook option is used.<p >
Here are the available options, by broad categories:<p>
<a name="general"><hr>
<div class=section>&nbsp; General options &nbsp;</div>
<UL>
<LI><b><code>Data dir</code></b>
<br>
Each logbook has a separate directory where the logbook entries are stored, which
is controlled by this statement. Note that the directories must exist and must
be writable by the <code><b>elogd</b></code> program.
<p>
<LI><b><code>Number Attachments</code></b>
<br>
The number of attachments which can be submitted in one entry. May be zero if no
attachments are needed. Maximum is defined by MAX_ATTACHMENTS in elogd.c
(10 by default).
<p>
<LI><b><code>Comment</code></b>
<br>
The comment is displayed on the logbook selection list. The selection list is
displayed if more than one logbook is defined on a host and no logbook is
explicitly specified in the URL.
<p>
<LI><b><code>Theme</code></b>
<br>
A theme determines which layout and colors are used for a logbook, similar to
<i>skins</i> in other programs. The <i>theme</i> option points to a subdirectory
under the directory of the configuration file, which contains all files for
that theme. The format of these files is described under the <i>Themes</i>
section.
<p>
<LI><b><code>Date format = &lt;string&gt;</code></b>
<br>
This option determines how the date of a logbook entry is displayed. The format
of the string is the same as the C function
<a href="http://www.gnu.org/manual/glibc-2.2.3/html_node/libc_427.html#IDX2636">
strftime</a>, so a string of <b>%A, %B %d, %Y</b> yields in a display of
<b>Thursday, November 15, 2001</b> for example.
<p>
<LI><b><code>Welcome Page = &lt;file&gt;</code></b>
<br>
By default, the last entry of a logbook is displayed when the logbook is selected.
This can be overridden with this option, which causes a HTML file to be shown
instead of the last message. This file can contain further links for new logbook
messages of for logbook queries. Here is a simple example of such a file:
<p>
<pre>
&lt;h1&gt;Welcome to the test logbook&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="?cmd=new"&gt;Enter&lt;/a&gt; a new message
&lt;li&gt;&lt;a href="?cmd=find"&gt;Search&lt;/a&gt; the logbook
&lt;/ul&gt;
</pre>
The file must be present in the same directory as the <code><b>elogd</b></code> file.
<p>
<LI><b><code>Submit Page = &lt;file&gt;</code></b>
<br>
This optional page can be displayed when a new message was submitted in a logbook.
Here is an example:
<p>
<pre>
&lt;h1&gt;You successfully submitted a message&lt;/h1&gt;
&lt;a href="linux"&gt;Back&lt;/a&gt; to the logbook&lt;p&gt;
&lt;a href="linux?cmd=new"&gt;Enter&lt;/a&gt; another message
</pre>
The reference "<I>linux</I>" in this case corresponds to the logbook name.
The file must be present in the same directory as the <code><b>elogd</b></code> file.
<p>
<li><b><code>Message comment</code></b>
</br>
This optional comment is displayed on top of the text entry field when submitting
a new message. It can contain a sentence like "<I>Please enter your message here</I>:".
<p>
<li><b><code>Menu commands = &lt;list&gt;</code></b>
</br>
This option specifies the menu commands displayed on top of the logbook page. For
certain installations, it can be useful to disable some commands. Following
commands are possible:
<p>
<ul>
<li><b>New</b> - Enter new logbook entry
<li><b>Edit</b> - Edit current logbook entry
<li><b>Delete</b> - Delete current logbook entry
<li><b>Reply</b> - Submit a reply to current entry
<li><b>Find</b> - Search entries in logbooks
<li><b>Last day</b> - Display entries from last day
<li><b>Last 10</b> - Display last 10 entries
<li><b>Move to</b> - Move entry to other logbook
<li><b>Copy to</b> - Copy entry to other logbook
<li><b>Config</b> - Edit elogd.cfg
<li><b>Change password</b> - Change password for current user (if "<I>Password file</I>" is given)
<li><b>Logout</b> - Logout current user (if "<I>Password file</I>" is given)
<li><b>Help</b> - General help
</ul>
<p>
If this option is not present, following default is used:
<p>
<pre>Menu commands = New, Edit, Delete, Reply, Find, Last day, Last 10, Config, Help</pre>
<p>
<li><b><code>Find Menu commands = &lt;list&gt;</code></b>
</br>
This option specifies the menu commands displayed on top of the listing page
resulting from a "<I>find</I>" command. Although all commands from a above are possible,
only the commands <code><b>New, Find, Back, Last, Last day, Last 10, config, Change
password, Logout</b></code> and <code><b>Help</b></code> make sense. There is one
special command in addition to the above commands: The command <b><code>Last x</b>
</code> gets expanded to "<I>Last 2 days</I>", "<I>Last 4 days</I>" or "<I>Last 20 entries</I>", "<I>Last 40 entries</I>" and so on, similar to the standard behaviour without the "<I>Find Menu commands</I>" option.
<p>
<li><b><code>Bottom text = &lt;file&gt;</code></b>
</br>
If this option is present, the HTML contents of <b><code>file</code></b> is displayed at
the bottom of an Elog page instead of the little Elog home page link. It can contain for
example a link back to the main logbook selection page like:
<pre>
&lt;center&gt;&lt;a href="/"&gt;Main page&lt;/a&gt;&lt;/center&gt;
</pre>
Or it can contain other useful links. The file must be present in the same directory
as the <code><b>elogd</b></code> file.
<p>
<li><b><code>Help URL</code></b>
<br>
This URL is used for the Help button. By default, the file <b>eloghelp_xx.html</b> is
returned with the contents of the help page. Edit this file directly to add site-specific help for all logbooks. Alternatively, use the <b><code>Help URL</code></b> option to specify different help pages for different logbooks.
It can point to a site-specific help page via <b><code>http://...</code></b> or to a local file like
<b><code>file://c:/tmp/config.html</code></b>, or to the name of an HTML file which must be present in the same directory as the <code><b>elogd</b></code> file.
<p>
</UL>
<a name="attrib"><hr>
<div class=section>&nbsp; Attributes &nbsp;</div>
<UL>
<LI><b><code>Attributes = &lt;list&gt;</code></b>
<br>
Define a number of attributes for the logbook. A maximum of 20 attributes can be
defined. Typical values are "<I>Author</I>", "<I>Subject</I>" or "<I>Type</I>".
<p>
<LI><b><code>Options &lt;attribute&gt; = &lt;list&gt;</code></b>
<br>
Usually, an text field is used for an attribute, where the user can fill in
text of up to 100 characters. If instead a drop-down box with preset items is
better for a given attribute, these items can be defined with this statement.
Up to 100 items can be defined, separated by commas.
<p>
<LI><b><code>MOptions &lt;attribute&gt; = &lt;list&gt;</code></b>
<br>
This list allows for "<I>Multiple Options</I>", meaning that an attribute can have
several values simultaneously. When entering an entry with MOptions, each value
from the list is represented by a checkbox. Unlike with normal options, multiple
checkboxes can be checked for an entry. The attribue value then becomes
<p>
<pre>
&lt;value1&gt; | &lt;value2&gt; | ...
</pre>
In the "<I>find</I>" page only one of these values can be specified, which is then
treated as a substring in the search filter.
<p>
<LI><b><code>Options &lt;attribute&gt; = boolean</code></b>
<br>
If an attribute is marked "<I>boolean</I>" this way, a checkbox is displayed for
this attribute.
<p>
<LI><b><code>Preset &lt;attribute&gt; = &lt;string&gt;</code></b>
<br>
This option uses a preset string for an attribute. The string can contain
subsitutions like the ones described under the "<I>Subst &lt;attribute&gt;</I>"
command. One possible application is to use the login name for the author
field like:
<p>
<pre>
Preset Author = $long_name
</pre>
If the attribute should be locked at the Web submission, use the
"<I>Locked Attributes = ...</I>" option. If a preset value is given for an
attribute which has an options list, the preset value is selected in the drop
down box by default.
<p>
<LI><b><code>Preset text = &lt;string&gt; or &lt;file&gt;</code></b>
<br>
This preset value is used for the main body text. It can be a string or a file,
which must be present in the same directory as the <code><b>elogd</b></code> file.
<p>
<LI><b><code>Locked Attributes = &lt;list&gt;</code></b>
<br>
The attributes specified here cannot be modified when a new entry is submitted.
This makes only sense for preset attributes.
<p>
<LI><b><code>Required Attributes = &lt;list&gt;</code></b>
<br>
The attributes specified here are required when a new entry is submitted. The
attribute names are marked with <font color=red>*</font> on the entry form.
<p>
<LI><b><code>Page title = &lt;string&gt;</code></b>
<br>
The string specified here is used for the title of the web page. It is also
used by most browsers for bookmark names. The string can contain substitutions
as described unter the "<I>Subst &lt;attribute&gt;</I>" option.
<p>
<LI><b><code>Display search = &lt;list&gt;</code></b>
<br>
The display of attributes in a search result table can be restricted only to
certain attributes listed here. This can be helpful is many attributes are defined
in a logbook, which usually makes the table too big to fit in the browser.
<p>
<LI><b><code>Subst &lt;attribute&gt; = &lt;string&gt;</code></b>
<br>
When submitting logbook entries, attribute values can be substituted by some
text. This text can contain arbitrary fixed text and following values:
<p>
<UL>
<LI><b>$&lt;attribute&gt;</b>: The entered value of the attribute itself
<LI><b>$host</b>: The host name where <code><b>elogd</b></code> is running
<LI><b>$remote_host</b>: The host name of the host from with the entry was submitted
<LI><b>$short_name</b>: The login name (if password file is present)
<LI><b>$long_name</b>: The full name (if password file is present)
<LI><b>$logbook</b>: The name of the current logbook
<LI><b>$date</b>: The current date, formatted via "<I>Date format</I>"
</UL>
<p>
Following example use this feature to add the remote host name to the author:
<p>
Subst Author = $author from $remote_host
<p>
<LI><b><code>Remove on reply = &lt;list&gt;</code></b>
<br>
This option clears one or more (separated by commata) attribute values from a logbook
entry when creating a reply to that entry. This can make sense for example for
the author, since the author of a reply can be different from the original author.
<p>
</UL>
<a name="access"><hr>
<div class=section>&nbsp; Access control &nbsp;</div>
<p>
Reading and writing into logbooks can be constrained using two different access methods,
either with global passwords for read, write and admin (config, delete), or with user-
level passwords. For these two schemes to work properly, <b>cookies have to be turned
on in your browser</b>. Please consult your browser documentation about how to do that.
<p>
<UL>
<LI><b><code>Read password</code></b>
<LI><b><code>Write password</code></b>
<LI><b><code>Admin password</code></b>
<LI><b><code>Write password expiration = &lt;hours&gt;</code></b>
<LI><b><code>Admin password expiration = &lt;hours&gt;</code></b>
</ul>
<p>
These optional password statements define passwords for reading and writing to the
logbook, to delete entries in the logbook and to configure a logbook via the <I>Config</I>
menu. The passwords are stored in an encoded form. To change them, use <code><b>elogd</b></code>
directly with the <b><code>-r </code></b>, <b><code>-w</code></b> and <b><code>-a
</code></b> flags. To set the write password of logbook "<I>linux</I>" to "<I>test</I>", enter:
<p>
<ul><code>elogd -w test -l linux</code></ul>
<p>
The read password is queried by the browser with a pop-up window and usually stays
active for the entire browser session. The write and admin passwords are stored in
cookies on the browser side and have an expiration time of 24h. After that time, the
passwords have to be re-submitted. This time can be changed with the statement <b>
<code>Write Password Expiration = x</code></b> or <b><code>Admin Password Expiration
= x</code></b>, where <i>x</i> is the expiration time in hours. It should be noted
that on some systems the daylight savings time is calculated incorrectly, which can
cause time offsets of one hour between a server PC and a client PC. In this case one
hour must be added to the expiration time. If the expiration is set to "0", the
passwords are kept for the current browser session only. When the browser is restarted,
the password must be re-entered.
<P>
<ul>
<LI><b><code>Password file = &lt;file&gt;</code></b>
<LI><b><code>Login expiration = &lt;hours&gt;</code></b>
</ul>
<p>
An alternative to the read/write/admin passwords is the user level access with a
password file. This file contains user names and passwords in following format:
<p>
<ul><code><pre>&lt;login name1&gt;:&lt;password1&gt;:&lt;full name1&gt;
&lt;login name2&gt;:&lt;password2&gt;:&lt;full name2&gt;
&lt;login name3&gt;:&lt;password3&gt;:&lt;full name3&gt;
...</pre></code></ul>
<p>
The passwords are encoded. To create or change them, use the "<I>Change
Password</I>" menu point. To create a new user, edit the password file
manually and use an empty password (like "<code>&lt;login name&gt;::&lt;full name&gt;</code>"), which can then be changed via the "<I>Change password</I>" menu point.
<p>
The presence of a password file requires all users to "<I>log in</I>" using their name and
password. An additional advantage of this method is that the user name can be used as
an attribute value for creating logbook entries. For example, the following line could be
added to the configuration file to fill in the <i>Author</i> attribute with the user name:
<p>
<ul><code>Options Author = $long_name from $remote_host</code></ul>
<p>
Thus the author name is not user-input anymore, ensuring the entry always contains the
actual user name. For a full listing of substitutions, see the "<I>Subst &lt;attrib></I>" option.
<p>
The user name and password are stored as cookies on the user side. They expire after 24
hours by default, which can be changed with the <code><b>Login expiration</b></code >
options. If the expiration is set to "0", the passwords are kept for the current browser
session only. When the browser is restarted, the password must be re-entered.
<p>
<ul>
<LI><b><code>Allow &lt;command&gt; = &lt;user list&gt;</code></b>
</ul>
<p>
Commands can be restricted to certain login names (separated by commas). For
each command in the list defined with the "<I>Menu commands</I>" option, a list of
user names can be specified, which are allowed to execute that command. If the
allow option is not present, all users may execute that command by default.
<p>
<ul>
<LI><b><code>Hosts allow = &lt;list&gt;</code></b>
<LI><b><code>Hosts deny = &lt;list&gt;</code></b>
</ul>
<p>
These two settings can be used to restrict the access to the logbook to certain
computers. It is similar to the UNIX <i>hosts.allow</i> and <i>hosts.deny</i> files.
The list can consist of individual host names or IP numbers, subnet masks like
<b><code>123.213.</b></code> (note the trailing '.') or <b><code>.mit.edu</b></code>,
or the word <b><code>All</code></b>. The following rules are applied:
<ul>
<li>Access will be granted when a host matches a pattern in "<I>hosts allow</I>".
<li>Otherwise, access will be denied when a host matches a pattern in "<I>hosts deny</I>".
<li>Otherwise, access will be granted.
</ul>
<p>
These rules are applied <i>before</i> any password is checked. To debug problems,
start <code><b>elogd</b></code> with the "-v" flag, in which case the rule checking is printed
on the screen.
<p>
<a name="email"><hr>
<div class=section>&nbsp; EMail notification &nbsp;</div>
<ul>
<LI><b><code>Email &lt;attribute&gt; &lt;value&gt; = &lt;list&gt;</code></b>
<LI><b><code>Use Email Subject = &lt;string&gt;</code></b>
<LI><b><code>Use Email From = &lt;string&gt;</code></b>
</ul>
<p>
To send email automatically when new entries are created in a logbook, a <b><code>SMTP host =
</b></code> entry must be present in the <b><code>[global]</code></b> section
of the configuration file. To submit an email based on an attribute value, use the statement <b><code>Email &lt;attribute&gt; &lt;value&gt; =
&lt;list&gt;</b></code>. Whenever an entry is submitted where <b><code>
attribute</code></b> is equal to <b><code>value</code></b>, an email
notification is sent to the email addresses in <b><code>list</code></b>.
Several mail addresses may be supplied, separated by commas. Multiple <b>
<code>Email xxx</code></b > statements may occur in a configuration
file. If either the attribute or the value contains one or more blanks the string
must be enclosed with quotation marks, as in:
<p>
<ul><code>Email type "Normal routine" = ...</code></ul>
<p>
The statement <b><code>Email All = &lt;list&gt;</code></b> sends an
email notification independent of the type and category. The <b><code>Use
Email Subject = &lt;string&gt;</b></code> statement specifies which text is
used as the email subject. The text can contain <b><code>$&lt;attribute&gt;
</code></b>statements which are substituted with the current value of that
attribute. For a full list of possible substitutions, see the
"<I>Subst &lt;attribute&gt;</I>" option. The option <b><code>Use Email From = &lt;string&gt;
</code></b> is used for the "<I>from</I>" field in the email.
<p>
<a name="flags"><hr>
<div class=section>&nbsp; Flags &nbsp;</div>
<ul>
<li><b><code>Show text = 0/1</code></b>
</br>
This flag controls if logbook entries contain a body text. If an installation
only requires attributes, this flag can be set to <b>0</b>. Default is
<b>1</b>.
<p>
<li><b><code>Show attachments = 0/1</code></b>
</br>
This flag controls the display of attachments such as images on normal
logbook pages. For logbooks with large images, this flag can be turned off,
so that attachments are only displayed when they are clicked on. Default
is <b>1</b>.
<p>
<li><b><code>Summary on default = 0/1</code></b>
</br>
If this flag is <b>1</b>, the buttons <i>"Last day"</i> and <i>"Last 10"</i>
produce summary listings instead of displaying full messages. In the <i>"Find"</i>
page, the <i>"Summary only"</i> check box is checked by default.
<p>
<li><b><code>Summary lines = x</code></b>
</br>
This specifies the number of text lines displayed in a summary page. Zero displays
no text at all. The default is 3.
<p>
<li><b><code>Reverse sort = 0/1</code></b>
</br>
If this flag is <b>1</b>, the result of the <i>"Last day"</i> and <i>"Last 10"</i> queries
is sorted in reverse order (newest entry down to oldest). Default is <b>0</b>.<p>
<li><b><code>Enable browsing = 0/1</code></b>
</br>
If this flag is <b>1</b>, browsing (hitting the next/previous button) is enabled.
For some rare occasions it might be necessary to disable browsing. Default is
<b>1</b>.
<p>
<li><b><code>Filtered browsing = 0/1</code></b>
</br>
If this flag is <b>1</b>, browsing (hitting the next/previous button) can be
filtered by individual attributes. If the checkbox next to an attribute is checked,
only messages with the same attribute value are displayed. Default is <b>1</b>.
<p>
<li><b><code>HTML default = 0/1/2</code></b>
</br>
This specifies the default state of the "<I>Submit as HTML text</I>" button on the
new message entry from. For installations where entries are normally submitted
as HTML, the default can be set to <b>1</b>. If this value is set to <b>2
</b>, the check box is not displayed at all, so that only text submissions
are possible. The default is <b>0</b>.
<p>
<li><b><code>Suppress default = 0/1/2</code></b>
</br>
This specifies the default state of the "<I>Suppress Email notification</I>" button on the
new message entry form. For installations where normally an email notification is
not necessary, the default can be set to <b>1</b>. If an important entry is
entered, users can then uncheck the suppress box. If this value is set to <b>2
</b>, the suppress box is not displayed at all, so that an email notification is
always produced. The default is <b>0</b>.
<p>
<li><b><code>Resubmit default = 0/1/2</code></b>
</br>
This specifies the default state of the "<I>Resubmit as new entry</I>" button on the
edit message entry from. If this button is checked, the current message is removed
from its current position in the database and submitted as a new message. This
can for example be useful for applications where users want to see which records
have been updated recently. If this value is set to <b>2</b>, the resubmit box
is not displayed at all. The default is <b>0</b>.
<p>
<li><b><code>Display Email recipients = 0/1</code></b>
</br>
If this flag is <b>1</b>, the email recipients are displayed when a logbook
entry is entered which produces an email notification. Setting this flag to 0
suppresses this display, in case users need not see that email is being sent and to whom.
The default is <b>1</b>.
<p>
<li><b><code>Email message body = 0/1</code></b>
</br>
If this flag is <b>1</b>, the email notification send by elog contains the
full message body in addition to the attributes. The default is <b>0</b>.
<p>
<li><b><code>Back to main = 0/1</code></b>
</br>
If this flag is <b>1</b>, the "<I>Back</I>" button takes you back to the logbook
selection page instead to the last entry of the current logbook.
The default is <b>0</b>.
<p>
</ul><p>
<a name="themes"><hr>
<div class=section>&nbsp; Themes &nbsp;</div>
<p>
Themes are layout and color schemes which determine the look and feel of a logbook.
Each theme resides in a separate subdirectory and is specified with the
<b><code>theme = &lt;dir&gt;</code></b> option in the configuration file. The directory
contains the file <b><code>theme.cfg</code></b> and a few images, which are used
for the title banner and the browse buttons. A default theme is contained in the
distribution. If new themes are developed by users, they can be sent back to the author,
to be included in future releases.
<p>
Most of the options in the <b><code>theme.cfg</b></code> are self-explanatory. The colors
are coded as #RRGGBB, where RR is a 8-bit hexadecimal value for the red part, GG for the
green and BB for the blue part, repectively. Since theme configuration files are re-read
at each access, the <B>elogd </B>daemon does not have to be restarted after a change in the
theme configuration file.
<p>
These two images display the same logbook entry using different themes:
<p>
<img src=theme1.jpg>&nbsp;&nbsp;<img src=theme2.jpg>
<p>
<HR>
<div class=footer>&nbsp;
Content by <a class=nav href="mailto:Stefan.Ritt@psi.ch">Stefan Ritt</a>,
Web pages by <a class=nav href="mailto:fredp@mygale.org">Fred Pacquier</a>
- last modified on 19/12/2001
&nbsp;</div>
</BODY>
</HTML>

13
doc/dl-menu.html Executable file
View File

@ -0,0 +1,13 @@
<LINK REL="stylesheet" TYPE="text/css" HREF="elog.css">
<div class=title>&nbsp; ELOG download page &nbsp;</div>
<p>
<div class=menu>&nbsp;Site map :&nbsp;
&nbsp;[<a target=_top class=nav href="index.html">Home</a>]&nbsp;
&nbsp;[<a target=_top class=nav href="userguide.html">User's Guide</a>]&nbsp;
&nbsp;[<a target=_top class=nav href="adminguide.html">Administrator's Guide</a>]&nbsp;
&nbsp;[<a target=_top class=nav href="faq.html">FAQ</a>]&nbsp;
&nbsp;[<a target=_top class=nav href="http://midas.psi.ch:8000">DEMO</a>]&nbsp;
&nbsp;[Download]&nbsp;
</div>
<p>
<div class=Sub><i>ELOG source code and Windows binaries</i></div>

6
doc/dl-sig.html Executable file
View File

@ -0,0 +1,6 @@
<LINK REL="stylesheet" TYPE="text/css" HREF="elog.css">
<div class=footer>&nbsp;
Content by <a class=nav href="mailto:Stefan.Ritt@psi.ch">Stefan Ritt</a>,
Web pages by <a class=nav href="mailto:fredp@mygale.org">Fred Pacquier</a>
- last modified on 19/12/2001
&nbsp;</div>

16
doc/download.html Executable file
View File

@ -0,0 +1,16 @@
<HTML>
<HEAD>
<TITLE>ELOG download page</TITLE>
<LINK REV="made" HREF="mailto:fredp@mygale.org">
<META NAME="generator" CONTENT="NoteTab Light 4.86c">
<META NAME="author" CONTENT="Fred Pacquier">
<META NAME="description" CONTENT="Home of the Electronic Logbook (ELOG) package">
<META NAME="keywords" CONTENT="ELOG MIDAS PSI RITT">
<LINK REL="stylesheet" TYPE="text/css" HREF="elog.css">
</HEAD>
<frameset rows="20%,*,10%">
<frame src="dl-menu.html">
<frame src="http://midas.psi.ch/elog/download/">
<frame src="dl-sig.html">
</frameset>
</HTML>

23
doc/elog.css Executable file
View File

@ -0,0 +1,23 @@
<STYLE TYPE="text/css">
<!--
.dummy {}
.title {background-color: #486090;font-family: Verdana, Arial, Helvetica, Sans-Serif;font-size: x-large;color: white;text-align: center;padding: 5px 10px 5px 10px;}
.version {color: #486090;font-family: Verdana, Arial, Helvetica, Sans-Serif;text-align: center;padding: 5px 10px 5px 10px;font-weight: bold;}
.menu {background-color: #486090;font-family: Verdana, Arial, Helvetica, Sans-Serif;font-size: medium;color: white;text-align: center;padding: 5px 10px 5px 10px; }
.Sub {font-family: Verdana, Arial, Helvetica, Sans-Serif;font-size: medium;text-align:
center;}
.nav {text-decoration: none; color: yellow;}
.section {background-color: #486090;font-family: Verdana, Arial, Helvetica, Sans-Serif;font-size: large;color: white;text-align: left;padding: 5px 10px 5px 10px;}
.footer {background-color: #486090;font-family: Verdana, Arial, Helvetica, Sans-Serif;font-size: small;color: white;text-align: left;padding: 5px 10px 5px 10px;}
P {margin-left: 10px; margin-right: 10px;}
-->
</STYLE>

BIN
doc/elog.gif Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

BIN
doc/elog_thumb.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

155
doc/faq.html Executable file
View File

@ -0,0 +1,155 @@
<HTML>
<HEAD>
<TITLE>ELOG FAQ</TITLE>
<LINK REV="made" HREF="mailto:fredp@mygale.org">
<META NAME="generator" CONTENT="NoteTab Light 4.86c">
<META NAME="author" CONTENT="Fred Pacquier">
<META NAME="description" CONTENT="Home of the Electronic Logbook (ELOG) package">
<META NAME="keywords" CONTENT="ELOG MIDAS PSI RITT">
<LINK REL="stylesheet" TYPE="text/css" HREF="elog.css">
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
<div class=title>&nbsp; ELOG FAQ &nbsp;</div>
<p>
<div class=menu>&nbsp;Site map :&nbsp;
&nbsp;[<a class=nav href="index.html">Home</a>]&nbsp;
&nbsp;[<a class=nav href="userguide.html">User's Guide</a>]&nbsp;
&nbsp;[<a class=nav href="adminguide.html">Administrator's Guide</a>]&nbsp;
&nbsp;[FAQ]&nbsp;
&nbsp;[<a class=nav href="http://midas.psi.ch:8000">DEMO</a>]&nbsp;
&nbsp;[<a class=nav href="download.html">Download</a>]&nbsp;
</div>
<p>
<div class=Sub><i>Frequently Asked Questions about usage and administration</i></div>
<hr>
<UL>
<LI><b>Are there any plans to implement a MySQL back end?</b>
<p>
No. The idea behind <b>ELOG</b> is that it is a <I>simple to use, simple to install</I> application. Many people use <b>ELOG</b> under Windows, and they even don't know what MySQL means. Other people like the flat file database format, because it's simple, easily accessible from other programs, and it's easy to backup certain days or months of the database (since the filenames contain the date). Since <b>ELOG</b> should be independent of any other package, some "switchable" backend between native <b>ELOG</b> format and MySQL would be needed, which is lots of work and not planned right now.
<p>
<LI><b>Can I run the ELOG daemon from inside Apache or any other Web server?</b>
<p>
No. The <b>ELOG</b> daemon was designed as a standalone server and it will stay like that in the future. The reason for that is that <code><b>elogd</b></code> should not rely on any other software. This is for example important for many people running <code><b>elogd</b></code> under Windows, and they have no clue how to install Apache for Windows. The installation and maintenance for <code><b>elogd</b></code> therefore becomes much simpler. The disadvantage of this solution is that <code><b>elogd</b></code> needs to run on a different port than 80 in case it runs in parallel with a Web server.
<p>
<LI><b>I can access my logbook without any password, isn't that a security problem?</b>
<p>
By default, no password is used in <b>ELOG</b>. This can be useful for public directories etc. that anybody should be able to read. To add password security, read the documentation under <a href="config.html#access">Access control</a>.
<p>
Note that passwords are transferred over the network in plain text and therefore not secure. If this is a problem, a <a href="adminguide.html#secure">secure</a> network connection should be used.
<p>
<LI><b>I want a bookmark pointing to the last page where an attribute has a certain value</b>
<p>
Use the URL:
<p>
<code>http://&lt;your.host&gt;/&lt;logbook&gt;/?cmd=Last&&lt;attribute&gt;=&lt;value&gt;</code>
<p>
This executes the "<I>Last</I>" command using a filter with &lt;attribute&gt;=&lt;value&gt;. The following command displays the same page, but also locks the attribute (checks the box next to &lt;attribute&gt;) so that browsing (next, previous, first, last) only shows pages with that attribute value.
<p>
<code>http://&lt;your.host&gt;/&lt;logbook&gt;/?cmd=Last&&lt;attribute&gt;=&lt;value&gt;&l&lt;attribute&gt;=1</code>
<p>
Note the "l" before the second attribute, as in "<I>lAuthor=1</I>".
<p>
<LI><b>I want a logbook with public read access (no password), but restricted write access</b>
<p>
There is a trick for that: Define two logbooks, but with the same data directory. The first one has no passwords, but a restricted set of menu commands. The second logbook has a read and/or write password or user level access and a full menu (including edit, delete, etc.). So the public uses the first logbook, while the adminitrator uses the second logbook. Here is an example configuration file:
<p>
<pre>
[global]
logbook tabs = 0
[Public]
data dir = c:\elog
Comment = Public access
Attributes = Author, Type, Category, Subject
Options Type = Routine, Software Installation, Problem Fixed, Configuration, Other
Options Category = General, Hardware, Software, Network, Other
Menu commands = Find, Last day, Last 10, Help
[Restricted]
Data dir = c:\elog
Comment = Access only for administrator
Password file = passwd.txt
Attributes = Author, Type, Category, Subject
Options Type = Routine, Software Installation, Problem Fixed, Configuration, Other
Options Category = General, Hardware, Software, Network, Other
Menu commands = New, Edit, Delete, Reply, Find, Last day, Last 10, Config, Change Password, Logout, Help
</pre>
Note the "<I>logbook tabs = 0</I>" which "<I>hides</I>" the restricted logbook so that public users don't get confused.
<p>
<LI><b>I have many loogbooks with password files, so if I add a user or want to change
a password I have to do this for all logbooks which is painful.</b>
<p>
You can have several logbooks point to the same password file. So if you change a user or
password in that file, it becomes automatically available in all logbooks which use that file.
<p>
<LI><b>By default, ELOG displays the last entry from a logbook. How can I configure it to
display the last 10 messages instead?</b>
<p>
There is a simple trick. You use the <b>"<I>Welcome page</I>"</b> option in the <code><b>elogd</b></code> file
to redirect the start page to the <b>last 10</b> command. Put the statement:
<p>
<pre>
Welcome page = redir.html
</pre>
into <code><b>elogd</b></code> and create that file with following contents:
<p>
<pre>
&lt;head&gt;
&lt;meta http-equiv="refresh" content="0; URL=/logbook/last10"&gt;
&lt;/head&gt;
</pre>
This causes the welcome page being redirected to <b>/logbook/last10</b>, where <b>logbook</b> must be replaced by the current logbook name. Following other redirections are possible:
<p>
<pre>
/logbook/last20 for the last 20 messages and so on
/logbook/past1 for the last day
/logbook/past2 for the last two days and so on
/logbook?cmd=New for the new message entry form
/logbook?cmd=Find for the "find" page
/logbook?cmd=Search&amp;&lt;attrib&gt;=&lt;value&gt; for a search with &lt;attrib&gt;=&lt;value&gt;
</pre>
<LI><b>What new features are planned for future releases ?</b>
<p>
Here are some "<I>wishlist</I>" items requested by users. I will work down the list as time permits. If you find
a feature you find useful on the list, there is a good chance that it will appear in a future release. You can vote for a feature, or suggest one, by sending me an email.
<p>
<center>
<table border=1>
<tr><th>Feature<th>Votes</tr>
<tr><td>Get message from standard input in elog submission program<td>1</tr>
<tr><td>Users can only edit their own entries<td>1</tr>
<tr><td>Make user file editable through web interface<td>1</tr>
<tr><td>Implement groups of users<td>1</tr>
<tr><td>Add email address field to user file, so that user name can be
specified for "Email &lt;attribute&gt; &lt;value&gt; =" option
which gets automatically substituted by email address<td>1</tr>
<tr><td>Change internal database format from offset oriented to
index oriented (lots of work, need also conversion program)<td>2</tr>
<tr><td>Implement new listing mode in between "summary only" and "full listing"
where a few text lines are displayed below the attribute fields<td>1</tr>
</table></center><p>
</UL>
<HR>
<div class=footer>&nbsp;
Content by <a class=nav href="mailto:Stefan.Ritt@psi.ch">Stefan Ritt</a>,
Web pages by <a class=nav href="mailto:fredp@mygale.org">Fred Pacquier</a>
- last modified on 19/12/2001
&nbsp;</div>
</BODY>
</HTML>

163
doc/index.html Executable file
View File

@ -0,0 +1,163 @@
<HTML>
<HEAD>
<TITLE>The ELOG Home Page</TITLE>
<LINK REV="made" HREF="mailto:fredp@mygale.org">
<META NAME="generator" CONTENT="NoteTab Light 4.86c">
<META NAME="author" CONTENT="Fred Pacquier">
<META NAME="description" CONTENT="Home of the Electronic Logbook (ELOG) package">
<META NAME="keywords" CONTENT="ELOG MIDAS PSI RITT">
<LINK REL="stylesheet" TYPE="text/css" HREF="elog.css">
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
<div class=title>&nbsp; The ELOG Home Page &nbsp;</div>
<p>
<div class=menu>&nbsp;Site map :&nbsp;
&nbsp;[Home]&nbsp;
&nbsp;[<a class=nav href="userguide.html">User's Guide</a>]&nbsp;
&nbsp;[<a class=nav href="adminguide.html">Administrator's Guide</a>]&nbsp;
&nbsp;[<a class=nav href="faq.html">FAQ</a>]&nbsp;
&nbsp;[<a class=nav href="http://midas.psi.ch:8000">DEMO</a>]&nbsp;
&nbsp;[<a class=nav href="download.html">Download</a>]&nbsp;
</div>
<p>
<div class=menu>&nbsp;* this section :&nbsp;
&nbsp;[<a class=nav href="#whatis">What is ELOG ?</a>]&nbsp;
&nbsp;[<a class=nav href="#screenshots">Screen shots</a>]&nbsp;
&nbsp;[<a class=nav href="#usecases">Use cases</a>]&nbsp;
&nbsp;[<a class=nav href="#license">License</a>]&nbsp;
&nbsp;[<a class=nav href="#links">Links</a>]&nbsp;
*&nbsp;</div>
<P class=Sub>Home of the <i>Electronic Logbook</i> package by <a href="mailto:Stefan.Ritt@psi.ch">Stefan Ritt</a></P>
<div class=version>&nbsp; Current version is : 1.3.2 &nbsp;</div>
<hr><a name="whatis">
<div class=section>&nbsp; What is ELOG ? &nbsp;</div>
<p>
<b>ELOG</b> is part of a family of applications known as <i><i>weblog</i>s</i>. Their general purpose is :
<p>
<ol>
<li>to make it easy for people to put information online in a chronological fashion, in the form of short, time-stamped text messages ("entries") with optional HTML markup for presentation, and optional file attachments (images, archives, etc.)
<p>
<li>to make it easy for other people to access this information through a Web interface, browse entries, search, download files, and optionally add, update, delete or comment on entries.
</ol>
<p>
<b>ELOG</b> is a remarkable implementation of a <i>weblog</i> in at least two respects :
<p>
<ul>
<li>its simplicity of use : you don't need to be a seasoned server operator and/or an experimented database administrator to run <b>ELOG</b> ; one executable file (under Unix or Windows), a simple configuration text file, and it works. No Web server or relational database required. It is also easy to translate the interface to the appropriate language for your users.
<p>
<li>its versatility : through its single configuration file, <b>ELOG</b> can be made to display an infinity of variants of the <i>weblog</i> concept. There are options for what to display, how to display it, what commands are available and to whom, access control, etc. Moreover, a single server can host several <i><i>weblog</i>s</i>, and each <i>weblog</i> can be totally different from the rest.
</ul>
<p>
<hr><a name="screenshots">
<div class=section>&nbsp; Screen shots &nbsp;</div>
<p>
<table border=0 cellpadding=5><tr>
<td>
<a href=elog.gif><image border=0 align=top src=elog_thumb.jpg alt=elog.gif></a>
</td>
<td valign=top>
On the left upper panel is a typical logbook page displayed by Netscape Navigator. Each logbook page can contain attachments in a similar way to emails. This makes it possible to store images or text files and retrieve them easily. You could for example attach a sample configuration file which can later be copied to the local machine with the "<I>Save As...</I>" function of the Web browser.
<p>
Several logbooks can be served though a single <b>ELOG</b> server. Each
logbook can use different attributes for its entries. The logbook can then be searched using these attributes. The right pane on the left image shows a search for all
entries with attribute "<I>Type</I>" equal to "<I>Configuration</I>", and the lower pane
shows the search result. It is also possible to use full-text search in
attributes and the entry body.
<p>
While logbook entries are usually displayed one entry per page, they can
also be listed consecutively which makes it easy to produce a paper printout of a logbook.
<p>
Logbook pages can be edited or deleted. This feature can be turned off in
the configuration file so that a logbook entries cannot be changed
after being submitted.
<p>
An additional feature is the automatic generation of a notification email
messages based on a certain type or category of a logbook entry.
<p>
Also try out the <b><a href="http://midas.psi.ch:8000">online demo</a></b> !
</td></tr></table>
<p>
<hr><a name="usecases">
<div class=section>&nbsp; Use cases &nbsp;</div>
<p>
The features of <b>ELOG</b> make it useful for several applications:
<ul>
<li><b>Personal Logbooks</b>. Personal notes can be written into <b>ELOG</b> and
can then be retrieved from anywhere with a Web browser. This makes it
handy for PC supporters who have to go around in companies or laboratories
and don't want to carry their paper logbook with them. The same holds true
for people traveling around a lot. The logbook database consists of plain
ASCII files which can copied easily between different computers to have
local access, for example on a notebook with no network connection.
<p>
<li><b>Shared Logbooks</b>. Logbooks can be shared by several people, for
reading and optionally for writing. This way workgroups can share
and exchange information like in a (simplified) news group. This is supported
by the <i>Reply</i> command in <b>ELOG</b> which creates "<I>threads</I>"
of entries. Users can be notified by email when new entries are added
to the logbook. Compared to that of a news server, the installation of <b>ELOG</b> is
much simpler.
<p>
<li><b>Small Databases</b>. Since arbitrary attributes can be defined
for a logbook, it can be used as a small database with search facilities.
<p>
<li><b>Problem collections</b>. A system can consist of two logbooks, in one
of which users enter bugs or problems. If someone adds a problem, an email is
automatically sent to the administrator, who can then copy the entry to the
second logbook and add the solution to the problem. Users can then look up all
fixed problems.
<p>
<li><b>Shift Logbooks</b>. If the <i>Allow delete</i> and <i>Allow edit</i>
flags are off, an entry cannot be modified once it's been entered. This
can be useful for shift logbooks for example in accelerator control rooms
where each entry becomes a "<I>document</I>" with a time and author stamp. <b>ELOG</b>
was originally developed as a shift logbook for the
<a href="http://pibeta.psi.ch">PiBeta</a> and
<a href="http://meg.psi.ch">Muegamma</a> particle experiments at
<a href="http://www.psi.ch">PSI</a>.
<p>
<li><b>File collections</b>. Since files can be attached to <b>ELOG</b> entries,
the system can be used to store and retrieve files. This can be used to
store configuration files, which need to be accessible by several
people over the web, or to store images. Since <b>ELOG</b> features an elaborate
query facility, entries can be searched for by specifying several
categories.
</ul><p>
<hr><a name="license">
<div class=section>&nbsp; License &nbsp;</div>
<p>
<b>ELOG</b> is released under the <a href="http://www.gnu.org/copyleft/gpl.html">
GNU Public License</a>.
<p>
<hr><a name="links">
<div class=section>&nbsp; Links &nbsp;</div>
<p>
See also the <b>ELOG</b> project pages on
<a href="http://sourceforge.net/projects/elog">
<img align=middle src="http://sourceforge.net/sflogo.php?group_id=40505&type=1"
width="88" height="31" border="0" alt="SourceForge"></a>
and
<a href="http://freshmeat.net/projects/elog">
<img align=middle border=0 src="http://freshmeat.net/img/fmII-logo.gif" alt="Freshmeat"></a>
-
<i>
Visits to this page since 23 May 2001:&nbsp;&nbsp;
<a href="http://cgi3.fxweb.com/v2-openstat.cgi?userid=R17501&password2=public">
<IMG align=absmiddle src="http://cgi3.fxweb.com/v2-trackrun.cgi?userid=R17501" height="31" width="88" border=none></a>
</i><p>
<HR>
<div class=footer>&nbsp;
Content by <a class=nav href="mailto:Stefan.Ritt@psi.ch">Stefan Ritt</a>,
Web pages by <a class=nav href="mailto:fredp@mygale.org">Fred Pacquier</a>
- last modified on 19/12/2001
&nbsp;</div>
</BODY>
</HTML>

BIN
doc/theme1.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
doc/theme2.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

269
doc/userguide.html Executable file
View File

@ -0,0 +1,269 @@
<HTML>
<HEAD>
<TITLE>ELOG User's Guide</TITLE>
<LINK REV="made" HREF="mailto:fredp@mygale.org">
<META NAME="generator" CONTENT="NoteTab Light 4.86c">
<META NAME="author" CONTENT="Fred Pacquier">
<META NAME="description" CONTENT="Home of the Electronic Logbook (ELOG) package">
<META NAME="keywords" CONTENT="ELOG MIDAS PSI RITT">
<LINK REL="stylesheet" TYPE="text/css" HREF="elog.css">
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
<div class=title>&nbsp; ELOG User's Guide &nbsp;</div>
<p>
<div class=menu>&nbsp; Site map :&nbsp;
&nbsp;[<a class=nav href="index.html">Home</a>]&nbsp;
&nbsp;[User's Guide]&nbsp;
&nbsp;[<a class=nav href="adminguide.html">Administrator's Guide</a>]&nbsp;
&nbsp;[<a class=nav href="faq.html">FAQ</a>]&nbsp;
&nbsp;[<a class=nav href="http://midas.psi.ch:8000">DEMO</a>]&nbsp;
&nbsp;[<a class=nav href="download.html">Download</a>]&nbsp;
</div>
<p>
<div class=menu>&nbsp;* this section :&nbsp;
&nbsp;[<a class=nav href="#intro">Introduction</a>]&nbsp;
&nbsp;[<a class=nav href="#terms">Terminology</a>]&nbsp;
&nbsp;[<a class=nav href="#access">Accessing</a>]&nbsp;
&nbsp;[<a class=nav href="#view">Viewing</a>]&nbsp;
&nbsp;[<a class=nav href="#browse">Browsing</a>]&nbsp;
&nbsp;[<a class=nav href="#add">Adding</a>]&nbsp;
&nbsp;[<a class=nav href="#misc">Misc.</a>]&nbsp;
*&nbsp;</div>
<p>
<div class=Sub><i>How to get the most from your ELOG server</i></div>
<hr><a name="intro">
<div class=section>&nbsp;A Quick Intro&nbsp;</div>
<p>
<b>ELOG</b> is part of a family of applications known as <i><i>weblog</i>s</i>. Their general purpose is :
<p>
<ol>
<li>to make it easy for people to put information online in a chronological fashion, in the form of short, time-stamped text messages ("<I>entries</I>") with optional HTML markup for presentation, and optional file attachments (images, archives, etc.)
<p>
<li>to make it easy for other people to access this information through a Web interface, browse entries, search, download files, and optionally add, update, delete or comment on entries.
</ol>
<p>
<b>ELOG</b> is a remarkable implementation of a <i>weblog</i> in at least two respects :
<p>
<ul>
<li>its simplicity of use : you don't need to be a seasoned server operator and/or an experimented database administrator to run <b>ELOG</b> ; one executable file (under Unix or Windows), a simple configuration text file, and it works. No Web server or relational database required. It is also easy to translate the interface to the appropriate language for your users.
<p>
<li>its versatility : through its single configuration file, <b>ELOG</b> can be made to display an infinity of variants of the <i>weblog</i> concept. There are options for what to display, how to display it, what commands are available and to whom, access control, etc. Moreover, a single server can host several <i><i>weblog</i>s</i>, and each <i>weblog</i> can be totally different from the rest.
<p>
This is actually a problem when writing a User's Guide, because <b>ELOG</b> servers, and individual <i><i>weblog</i>s</i> on one server, can vary wildly in appearance and functionality... This guide only attempts to cover the main concepts of importance for <b>ELOG</b> users, describing the default "<I>out-of-the-box</I>" setup and how that behaviour may have been modified by the server administrator.
</ul>
<p>
<hr><a name="terms">
<div class=section>&nbsp;What Words Mean Here&nbsp;</div>
<p>
Just to be clear, some definitions of terms that will be used throughout the guide :
<p>
<ul>
<li><b>ELOG server</b> : the machine on which the <b>ELOG</b> server is run. Its operating system (Windows/Unix/Linux) and status (server/desktop) are not important, and of course it will probably do many other things besides.
<p>
<li><b>ELOG administrator</b> : the person who has the authority to modify the <b>ELOG</b> configuration file on the server. May be an actual system administrator, a normal user of a server, or just the owner of a Windows PC.
<p>
<li><b>logbook</b> : a <i>weblog</i> made available by the <b>ELOG</b> server. There may be many distinct such logbooks on one server.
<p>
<li><b>entry</b> : the individual piece of information in a logbook. Can be as basic as a text message with a time-stamp, or carry much more information : attributes (see below), HTML markup, links, attached files...
</ul>
<p>
<hr><a name="access">
<div class=section>&nbsp;Accessing an ELOG server and its logbook(s)&nbsp;</div>
<p>
Usually you will be given a URL (through mail, a Web page etc.) to access the <b>ELOG</b> server.
<p>
If several logbooks are defined on the server, the entry page may be a list of all logbooks, with their descriptions and links to enter the logbook you want to use (<i>this may be disabled</i>).
<p>
Alternatively, you may be taken directly to a specific logbook. By default you will see the latest entry, but the administrator may have defined a different "<I>default view</I>" for the logbook, like the list of the day's entries, or the last 10 entries, etc. (depending on what is most convenient for that logbook's purpose).
<p>
<i>Note : it is generally not recommended to link directly to a specific entry in a logbook by its URL, because under certain circumstances such addresses might change. It is possible to achieve the same result with a "<I>search</I>" URL (see below).</i>
<p>
There are four ways through which access to a logbook may be controlled : it may be open for all to read ; it may require a common "<I>read</I>" password for all users ; it may require each user to have an individual user account (login name) and password ; finally, access may be granted or not depending on the address of the workstation you are using.
<p>
<hr><a name="view">
<div class=section>&nbsp;Viewing information in ELOG&nbsp;</div>
<p>
There are two main viewing modes in a logbook :
<p>
<ul>
<li>the "<b>entry</b>" view : this is when only one entry is displayed on screen (like the latest entry when you first enter a logbook, or if you click on one in a list). Here are the various parts of the display :
<p>
<ul>
<li>if there are several logbooks on the <b>ELOG</b> server you will see a row of "<I>tabs</I>" at the top with the names of all the logbooks. These are link that allow to switch quickly between logbooks (<i>this may be disabled</i>).
<p>
<li>below is a title bar with the name of the current logbook at the left, and the <b>ELOG</b> logo at the right. If you are logged in, there will be a "<code>Logged in as &lt;username></code>" reminder in between.
<p>
<li>next is the "<I>menu bar</I>" : on the left is a series of links or buttons for <b>ELOG</b> commands available to you. These are explored in the sections below (<i>Note: different users may see different menus</i>). On the right is a "<I>VCR-like</I>" set of buttons for browsing, also explained later (<i>this may be disabled</i>).
<p>
<li>after these comes the actual entry information. It always starts with the entry time-stamp, and may be followed by up to twenty "<I>attributes</I>". These are like fields in a database and have been defined specifically for the current logbook. Each attribute has a checkbox besides it, explained below (<i>this may be disabled</i>).
<p>
<li>the full-width box below holds the textual content (message) of the entry. This can be plain-text or HTML code. Note that for some special applications (say, a photo album or an event log) the attributes and/or the attached files may be enough information, so this field may not always be present.
<p>
<li>last and optionally, one or more attached files (that were uploaded to the server when the entry was created) are offered as clickable links for download or viewing, along with the file name and size. If these are images they may be displayed directly on the page.
<p>
At the bottom of every page is a common "<I>footer</I>" for the logbook. By default this is just a link to the <b>ELOG</b> home page in Switzerland, but may be customized locally (typically to provide a navigation bar and links for integration with other Web sites).
</ul>
<p>
<li>the "<b>search result</b>" views : these are basically lists of entries, resulting either from a "<I>Search</I>" command or from shortcuts such as "<I>Last X days</I>" and "<I>Last X entries</I>" commands (more on this below). This mode has many options, including :
<p>
<ul>
<li>a "<I>summary</I>" view : one entry per row in a table. Some attributes may not be displayed. If the entry text is displayed (or its first few lines), it goes into the rightmost column. Attachments are not displayed.
<p>
<li>a "<i>classical weblog</i>" view : entries appear beneath one another, with attributes on one line and the text (and attachments, if present) below. Images may be displayed or just linked to.
<p>
<li>entries may appear most recent first, or in reverse.
<p>
<li>menus on list views are different from the entry view menu. By default they only have two or three commands, but they may have been customized by the administrator to add more.
<p>
All these lists have a number to the left of each listed entry, that is a link to the corresponding entry view.
</ul>
</ul>
<p>
<hr><a name="browse">
<div class=section>&nbsp;Browsing around and finding things&nbsp;</div>
<p>
There are several interesting ways to peruse the information in a logbook :
<p>
<ul>
<li><i><i>weblog</i>s</i> are often used for applications where chronology (time) is relevant, so a very common approach is to see "<I>what happened last</I>". In <b>ELOG</b> there are two commands for this. They are actually shortcuts for searches, to display the last day's (24 hrs) entries, or the last 10 entries (regardless of age). Note that the menus on the "<I>search result</I>" views of these commands are a bit special : they have the same command that created them, but with the search "<I>interval</I>" doubled. From the "<I>last day</I>" list you can get the "<I>last 2 days</I>" list, from that one the "<I>last 4 days</I>", etc., and similarly for "<I>last 10</I>", "<I>last 20</I>", etc., making it easy to quickly go back in time.
<p>
<li>another useful method, very specific to <b>ELOG</b>, is "<I>filtered browsing</I>" - again, shortcuts for specific searches. On the entry view, the "<I>VCR</I>" buttons normally let you see the previous, next, first or last entry in the logbook. However, if on the current entry you check one (or more) of the checkboxes in front of the attributes, only entries having the same value for the checked attribute(s) will be displayed by the browse buttons. Thus you can quickly flip through all the entries you submitted yourself, or of a certain type/category, depending on what attributes have been defined.
<p>
<li>for custom searches there is the query form given by the "<I>Find</I>" command. This lets you look for entries between two dates, with particular values for any attribute, or containing specific text. If you fill in several fields, only entries that meet <b>ALL</b> criteria will be selected. Possible options include sort order and summary view for results, printer-friendly formatting, displaying attachments or not, and searching through all logbooks on the <b>ELOG</b> server (if applicable).
</ul>
<p>
<hr><a name="add">
<div class=section>&nbsp;Adding stuff to a logbook&nbsp;</div>
<p>
If you have "<I>write access</I>" to a logbook (by one of the same four methods as for read access), then you may use the "<I>New</I>", "<I>Edit</I>", "<I>Reply</I>" and "<I>Delete</I>" commands.
<p>
For the quality of the information committed to the logbook, you need understand and use these as well as possible. Here are some of the important features for each commmand :
<p>
<ul>
<li><b>New</b> :
<ul>
<li>you will not be able to save your entry if all attributes marked with a red star (<font color="red">*</font>) are not filled in.
<p>
<li>some attributes may be pre-filled from system variables (like your user name). Pre-filled attributes may be still editable or read-only (like the entry creation date).
<p>
<li>attributes may be text fields (limited to 100 characters), list-boxes (max. 100 values), or check-boxes. There is also a special type of attribute where several values are listed on a line with check-boxes, and you can check as many values as needed.
<p>
<li>a nice touch : URLs in attributes (http://..., ftp://..., mailto:...) are automatically converted to links.
<p>
<li>the Text multi-line field, if present, may be pre-filled with a template if entries need to have a common, consistent format across the logbook (especially for HTML). There may also be a comment inserted before it to explain local rules and conventions, upload rules, etc.
<p>
<li>check the "<I>Submit as HTML</I>" box if the entry contains HTML markup.
<p>
<li>a logbook may be configured to send a notification e-mail to various recipients each time an entry is submitted. This may be the default behaviour, and you should check "<I>Suppress notification</I>" if it is not wanted. Or it may be checked by default, and you need to explicitely uncheck it to send the mail. Then again, you may not have a choice... (note that notifiation recipients may or may not be disclosed).
<p>
<li>if the logbook allows attachments, there will be a number of fields with "<I>Browse</I>" buttons at the bottom of the form. Use these to pick one or more files on your local computer, they will be uploaded to the <b>ELOG</b> server as you submit the form. IMPORTANT : there is an upper limit on the size of individual attached files. By default it is about 1 MB but can be changed by the administrator.
<p>
</ul>
<li><b>Edit</b> :
<ul>
<li>normally the Edit form will have all the values of the existing entry in its fields for modification. However, sometimes you may see fields that have been blanked if this makes sense for a particular logbook application (e.g. a "<I>Last modified by</I>" field).
<p>
<li>the "<I>Submit as new entry</I>" checkbox only appears on Edit forms. If it is unchecked, the modified entry keeps its original creation time-stamp. If it is checked, the modified entry becomes the latest in the logbook, as if it had just been created. Again, it is possible that this is checked by default, or disabled altogether on some logbooks.
<p>
<li>managing attachments through this form is easy. If all you want to change is the attributes or text, don't touch the fields at the bottom and the original attachments will be preserved. If you want to add an additional attachment, use an empty field. If you want to update an existing file, use the "<I>Browse</I>" button below that file's name to specify the new one. Lastly, if you want to delete an attachment without upoading a new one in its place, you must type the magic word "<code>&lt;delete></code>" in the field below its name.
</ul>
<p>
<li><b>Reply</b> :
<ul>
<li>this command creates a new entry, but with the current entry's text "<I>quoted</I>" (with '>') in the compose form, much like when replying to e-mail.
<p>
<li>the new entry has a special "<I>In reply to</I>" attribute with a link to the original entry ; the latter also acquires a "<I>Reply</I>" attribute with a link to the new entry. Unfortunately these links cannot be trusted in the present <b>ELOG</b> storage system, and the whole scheme gets somewhat confusing when there are several replies.
</ul>
<p>
<li><b>Delete</b> :
<ul>
<li>nothing much to say about this one, except that there is no "<I>Recycle bin</I>" or whatever : once you have confirmed the deletion of an entry, it's gone for good, so be careful ! (same holds for the replacement or deletion of an attached file).
</ul>
</ul>
<p>
<hr><a name="misc">
<div class=section>&nbsp;Misc. tips & tricks, things to be aware of...&nbsp;</div>
<p>
<ul>
<li>as mentioned above, it is not recommended to link directly to a specific entry by its URL (from another entry or an external Web page). However, it is easy enough to achieve the same result with "<I>search URLs</I>" : use the "<I>Search</I>" form to compose a query that will result in exactly what you want (either a single entry or a list of entries). Copy the URL for that result page from your browser, and use that as the target for your link.
<p>
<li>right now you cannot search entries for attachments by their file name.
<p>
<li>right now attributes that consist of just a checkbox ("<I>boolean</I>") can only be searched by "<I>checked</I>" state in the "<I>Search</I>" form. However, if you start from an entry where that attribute is unchecked, you can use "<I>filtered browsing</I>" to flip through all other entries where it is also unchecked.
<p>
<li>as mentioned above, the "<I>Reply</I>" command only provides a basic comment/chat facility - a full-blown discussion board is not <b>ELOG</b>'s purpose. If a logbook has a very specific purpose and format (picture gallery, event log, file library etc.) it might be a good idea to disable that command there and move all chat/comments/discussions to a separate, dedicated logbook to avoid "<I>visual pollution</I>".
<p>
<li>it is important to understand that currently the <b>ELOG</b> server application is "<I>single-process</I>" and "<I>non-streaming</I>". In normal terms this means that :
<p>
<ul>
<li>only one request is processed at any one time by the server.
<p>
<li>uploading or downloading an attachement file is a single request, and causes the entire file to be loaded in server memory while the request is being processed.
<p>
This is not normally a problem for the sort of short, text-mode entries <b>ELOG</b> is designed to support. However, if a user starts to upload or download a large attachment file (or image) over a slow link, all other users on that <b>ELOG</b> server will have to wait for that transfert to finish before they can access any logbook on that server. This is why there is a low limit on the size of attachments, and why <b>ELOG</b> should not be used to distribute large files under intensive multi-user conditions.
</ul>
<p>
<li>It is possible to use bookmarks to pre-populate various attributes when submitting an <b>ELOG</b> entry.
This can be useful if the same person often creates similar entries from the same PC. For example, with a bookmark of the form:
<p>
<pre>http://your.host/your_logbook/?cmd=New&pauthor=joe&ptype=Info
</pre>
...a new entry is created, with the "<I>author</I>" field pre-populated with "<I>joe</I>" and the "<I>Info</I>" value preselected for the "<I>type</I>" field. The same is possible for any attribute defined in the logbook (note the leading "p"). Thus you can define a set of bookmarks for various types of logbook entries.
<p>
<li>In addition to submission of logbook entries through the Web interface, the
standalone "<I>client</I>" program <b><code>elog</code></b> can be used. The parameters
are:
<p>
<ul><pre>
elog -h hostname [-p port] [-l logbook]
[-w password]
[-u username password]
-a &lt;attribute1&gt;=&lt;value1&gt;
-a &lt;attribute2&gt;=&lt;value2&gt;
...
-f attachment1
-f attachment2
...
-m textfile | text
</pre></ul>
The password must match the write password defined on the server. If
user level access is defined on the server (via the "<I>password file </I>=" option),
a valid user name / password pair must be specified with the <b><code>-u</code></b> option.
<p>
Multiple attributes can be specified as well as several attachments.
The message text can be supplied directly at the command line or submitted
from a file with the <b><code>-m</code></b> flag.
<p>
The <b><code>elog</code></b> program makes it possible to submit logbook
entries automatically by the system or from scripts. In some shift logbooks
this feature is used to enter alarm messages automatically into the logbook.
<p>
</ul>
<p>
<HR>
<div class=footer>&nbsp;
Content by <a class=nav href="mailto:Stefan.Ritt@psi.ch">Stefan Ritt</a>,
Web pages by <a class=nav href="mailto:fredp@mygale.org">Fred Pacquier</a>
- last modified on 19/12/2001
&nbsp;</div>
</body>
</html>

533
elog.c Executable file
View File

@ -0,0 +1,533 @@
/********************************************************************\
Name: elog.c
Created by: Stefan Ritt
Contents: Electronic logbook utility
$Log$
Revision 1.1 2001/12/21 15:14:04 midas
Initial revision
Revision 1.23 2001/12/21 12:33:04 midas
Fixed bug with single logbook and user authentication, thanks to Glenn Horton-Smith
Revision 1.22 2001/12/05 10:02:50 midas
Fixed -Wall compiler warning
Revision 1.21 2001/12/05 09:58:57 midas
Fixed small bug
Revision 1.20 2001/11/15 11:49:46 midas
Added -u flag for user name/password
Revision 1.19 2001/11/14 15:35:37 midas
Fix error under Cygwin with O_BINARY
Revision 1.18 2001/11/06 15:52:17 midas
Added general attributes
Revision 1.17 2001/10/12 08:40:02 midas
Fixed bug when submitting text files and an additional (garbage) lines was
added
Revision 1.16 2001/06/19 10:55:40 midas
Variable number of attachments, revised attachment editing
Revision 1.15 2001/05/23 13:15:34 midas
Fixed bug with category
Revision 1.14 2001/05/23 13:04:19 midas
Added password functionality
Revision 1.13 2001/05/23 10:48:21 midas
elog can be used with elogd now
Revision 1.12 2000/09/01 15:49:26 midas
Elog is now submitted via mhttpd
Revision 1.1 1999/09/14 15:15:27 midas
Initial revision
\********************************************************************/
#include <stdio.h>
#include <sys/types.h>
#include <fcntl.h>
#include <stdarg.h>
#include <string.h>
#include <stdlib.h>
#ifdef _MSC_VER
#include <windows.h>
#include <io.h>
#else
#include <netdb.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <unistd.h>
#include <signal.h>
#define closesocket(s) close(s)
#ifndef O_BINARY
#define O_BINARY 0
#endif
#endif
typedef int INT;
#define MAX_ATTACHMENTS 10
#define NAME_LENGTH 100
#define MAX_N_ATTR 20
int verbose;
/*------------------------------------------------------------------*/
char *map= "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
void base64_encode(char *s, char *d)
{
unsigned int t, pad;
pad = 3 - strlen(s) % 3;
while (*s)
{
t = (*s++) << 16;
if (*s)
t |= (*s++) << 8;
if (*s)
t |= (*s++) << 0;
*(d+3) = map[t & 63];
t >>= 6;
*(d+2) = map[t & 63];
t >>= 6;
*(d+1) = map[t & 63];
t >>= 6;
*(d+0) = map[t & 63];
d += 4;
}
*d = 0;
while (pad--)
*(--d) = '=';
}
/*------------------------------------------------------------------*/
void sgets(char *string, int size)
{
char *p;
do
{
p = fgets(string, size, stdin);
} while (p == NULL);
if (strlen(p) > 0 && p[strlen(p)-1] == '\n')
p[strlen(p)-1] = 0;
}
/*------------------------------------------------------------------*/
char request[600000], response[10000], content[600000];
INT submit_elog(char *host, int port, char *experiment, char *passwd,
char *uname, char *upwd,
char attrib_name[MAX_N_ATTR][NAME_LENGTH],
char attrib[MAX_N_ATTR][NAME_LENGTH],
int n_attr,
char *text,
char afilename[MAX_ATTACHMENTS][256],
char *buffer[MAX_ATTACHMENTS],
INT buffer_size[MAX_ATTACHMENTS])
/********************************************************************\
Routine: submit_elog
Purpose: Submit an ELog entry
Input:
char *host Host name where ELog server runs
in port ELog server port number
char *passwd Write password
char *uname User name
char *upwd User password
int run Run number
char *attrib_name Attribute names
char *attrib Attribute values
char *text Message text
char afilename[] File names of attachments
char *buffer[] Attachment contents
INT buffer_size[] Size of buffer in bytes
Function value:
EL_SUCCESS Successful completion
\********************************************************************/
{
int status, sock, i, n, header_length, content_length;
struct hostent *phe;
struct sockaddr_in bind_addr;
char host_name[256], boundary[80], str[80], *p;
#if defined( _MSC_VER )
{
WSADATA WSAData;
/* Start windows sockets */
if ( WSAStartup(MAKEWORD(1,1), &WSAData) != 0)
return -1;
}
#endif
/* get local host name */
gethostname(host_name, sizeof(host_name));
phe = gethostbyname(host_name);
if (phe == NULL)
{
perror("Cannot retrieve host name");
return -1;
}
phe = gethostbyaddr(phe->h_addr, sizeof(int), AF_INET);
if (phe == NULL)
{
perror("Cannot retrieve host name");
return -1;
}
/* if domain name is not in host name, hope to get it from phe */
if (strchr(host_name, '.') == NULL)
strcpy(host_name, phe->h_name);
/* create socket */
if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
perror("cannot create socket");
return -1;
}
/* compose remote address */
memset(&bind_addr, 0, sizeof(bind_addr));
bind_addr.sin_family = AF_INET;
bind_addr.sin_addr.s_addr = 0;
bind_addr.sin_port = htons((unsigned short)port);
phe = gethostbyname(host);
if (phe == NULL)
{
perror("cannot get host name");
return -1;
}
memcpy((char *)&(bind_addr.sin_addr), phe->h_addr, phe->h_length);
/* connect to server */
status = connect(sock, (void *) &bind_addr, sizeof(bind_addr));
if (status != 0)
{
printf("Cannot connect to host %s, port %d\n", host, port);
return -1;
}
if (verbose)
printf("Successfully connected to host %s, port %d\n", host, port);
/* compose content */
strcpy(boundary, "---------------------------7d0bf1a60904bc");
strcpy(content, boundary);
strcat(content, "\r\nContent-Disposition: form-data; name=\"cmd\"\r\n\r\nSubmit\r\n");
if (uname[0])
sprintf(content+strlen(content),
"%s\r\nContent-Disposition: form-data; name=\"unm\"\r\n\r\n%s\r\n", boundary, uname);
if (upwd[0])
{
base64_encode(upwd, str);
sprintf(content+strlen(content),
"%s\r\nContent-Disposition: form-data; name=\"upwd\"\r\n\r\n%s\r\n", boundary, str);
}
if (experiment[0])
sprintf(content+strlen(content),
"%s\r\nContent-Disposition: form-data; name=\"exp\"\r\n\r\n%s\r\n", boundary, experiment);
for (i=0 ; i<n_attr ; i++)
sprintf(content+strlen(content),
"%s\r\nContent-Disposition: form-data; name=\"%s\"\r\n\r\n%s\r\n", boundary, attrib_name[i], attrib[i]);
sprintf(content+strlen(content),
"%s\r\nContent-Disposition: form-data; name=\"Text\"\r\n\r\n%s\r\n%s\r\n", boundary, text, boundary);
content_length = strlen(content);
p = content+content_length;
for (i=0 ; i<MAX_ATTACHMENTS ; i++)
if (afilename[i][0])
{
sprintf(p, "Content-Disposition: form-data; name=\"attfile%d\"; filename=\"%s\"\r\n\r\n",
i+1, afilename[i]);
content_length += strlen(p);
p += strlen(p);
memcpy(p, buffer[i], buffer_size[i]);
p += buffer_size[i];
strcpy(p, boundary);
strcat(p, "\r\n");
content_length += buffer_size[i] + strlen(p);
p += strlen(p);
}
/* compose request */
sprintf(request, "POST /%s/ HTTP/1.0\r\n", experiment);
sprintf(request+strlen(request), "Content-Type: multipart/form-data; boundary=%s\r\n", boundary);
sprintf(request+strlen(request), "Host: %s\r\n", host_name);
sprintf(request+strlen(request), "User-Agent: ELOG\r\n");
sprintf(request+strlen(request), "Content-Length: %d\r\n", content_length);
if (passwd[0])
{
base64_encode(passwd, str);
sprintf(request+strlen(request), "Cookie: elog_wpwd=%s\r\n", str);
}
strcat(request, "\r\n");
header_length = strlen(request);
memcpy(request+header_length, content, content_length);
/*
{
FILE *f;
f = fopen("elog.log", "w");
fwrite(request, header_length+content_length, 1, f);
fclose(f);
}
*/
/* send request */
if (verbose)
{
printf("Request sent to host:\n");
puts(request);
}
send(sock, request, header_length+content_length, 0);
/* receive response */
i = recv(sock, response, 10000, 0);
if (i < 0)
{
perror("Cannot receive response");
return -1;
}
/* discard remainder of response */
n = i;
while (i > 0)
{
i = recv(sock, response+n, 10000, 0);
if (i > 0)
n += i;
}
response[n] = 0;
closesocket(sock);
if (verbose)
{
printf("Response received:\n");
puts(response);
}
/* check response status */
if (strstr(response, "302 Found"))
printf("Message successfully transmitted\n");
else if (strstr(response, "Logbook Selection"))
printf("No logbook specified\n\n");
else if (strstr(response, "Enter password"))
printf("Missing or invalid password\n");
else if (strstr(response, "login"))
printf("Missing or invalid user name/password\n");
else
printf("Error transmitting message\n");
return 1;
}
/*------------------------------------------------------------------*/
int main(int argc, char *argv[])
{
char str[1000], text[10000], uname[80], upwd[80];
char host_name[256], logbook[32], textfile[256], password[80];
char *buffer[MAX_ATTACHMENTS], attachment[MAX_ATTACHMENTS][256];
INT att_size[MAX_ATTACHMENTS];
INT i, n, fh, n_att, n_attr, size, port;
char attr_name[MAX_N_ATTR][NAME_LENGTH], attrib[MAX_N_ATTR][NAME_LENGTH];
text[0] = textfile[0] = uname[0] = upwd[0] = 0;
host_name[0] = logbook[0] = password[0] = n_att = n_attr = 0;
port = 80;
for (i=0 ; i<MAX_ATTACHMENTS ; i++)
{
attachment[i][0] = 0;
buffer[i] = NULL;
att_size[i] = 0;
}
/* parse command line parameters */
for (i=1 ; i<argc ; i++)
{
if (argv[i][0] == '-' && argv[i][1] == 'v')
verbose = 1;
else
{
if (argv[i][0] == '-')
{
if (i+1 >= argc || argv[i+1][0] == '-')
goto usage;
if (argv[i][1] == 'h')
strcpy(host_name, argv[++i]);
else if (argv[i][1] == 'p')
port = atoi(argv[++i]);
else if (argv[i][1] == 'l')
strcpy(logbook, argv[++i]);
else if (argv[i][1] == 'w')
strcpy(password, argv[++i]);
else if (argv[i][1] == 'u')
{
strcpy(uname, argv[++i]);
strcpy(upwd, argv[++i]);
}
else if (argv[i][1] == 'a')
{
strcpy(str, argv[++i]);
if (strchr(str, '='))
{
strcpy(attrib[n_attr], strchr(str, '=')+1);
*strchr(str, '=') = 0;
strcpy(attr_name[n_attr], str);
n_attr++;
}
else
{
printf("Error: Attributes must be supplied in the form \"-a <attribute>=<value>\".\n");
return 0;
}
}
else if (argv[i][1] == 'f')
strcpy(attachment[n_att++], argv[++i]);
else if (argv[i][1] == 'm')
strcpy(textfile, argv[++i]);
else
{
usage:
printf("\nusage: elog -h <hostname> [-p port]\n");
printf(" [-l logbook/experiment]\n");
printf(" [-v] for verbose output\n");
printf(" [-w password] write password defined on server\n");
printf(" [-u username password] user name and password\n");
printf(" [-f <attachment>] (up to %d times)\n", MAX_ATTACHMENTS);
printf(" -a <attribute>=<value> (up to %d times)\n", MAX_N_ATTR);
printf(" -m <textfile>] | <text>\n");
printf("\nArguments with blanks must be enclosed in quotes\n");
printf("The elog message can either be submitted on the command line\n");
printf("or in a file with the -m flag. Multiple attributes and attachments\n");
printf("can be supplied\n");
return 0;
}
}
else
strcpy(text, argv[i]);
}
}
if (host_name[0] == 0 ||
n_attr == 0 ||
(text[0] == 0 && textfile[0] == 0))
goto usage;
/*---- open text file ----*/
if (textfile[0])
{
fh = open(textfile, O_RDONLY | O_BINARY);
if (fh < 0)
{
printf("Message file \"%s\" does not exist.\n", textfile);
return 0;
}
size = lseek(fh, 0, SEEK_END);
lseek(fh, 0, SEEK_SET);
if (size > sizeof(text)-1)
{
printf("Message file \"%s\" is too long (%d bytes max).\n", textfile, sizeof(text));
return 0;
}
memset(text, 0, sizeof(text));
i = read(fh, text, size);
if (i < size)
{
printf("Cannot fully read message file \"%s\".\n", textfile);
return 0;
}
close(fh);
}
/*---- open attachment file ----*/
for (i = 0 ; i<MAX_ATTACHMENTS ; i++)
{
if (!attachment[i][0])
break;
fh = open(attachment[i], O_RDONLY | O_BINARY);
if (fh < 0)
{
printf("Attachment file \"%s\" does not exist.\n", attachment[i]);
return 0;
}
att_size[i] = lseek(fh, 0, SEEK_END);
lseek(fh, 0, SEEK_SET);
buffer[i] = malloc(att_size[i]+1);
if (buffer[i] == NULL || att_size[i] > 500*1024)
{
printf("Attachment file \"%s\" is too long (500k max).\n", attachment[i]);
return 0;
}
n = read(fh, buffer[i], att_size[i]);
if (n < att_size[i])
{
printf("Cannot fully read attachment file \"%s\".\n", attachment[i]);
return 0;
}
buffer[i][n] = 0;
close(fh);
}
/* now submit message */
submit_elog(host_name, port, logbook, password,
uname, upwd,
attr_name, attrib, n_attr, text,
attachment, buffer, att_size);
for (i=0 ; i<MAX_ATTACHMENTS ; i++)
if (buffer[i])
free(buffer[i]);
return 1;
}

152
elog.nsi Executable file
View File

@ -0,0 +1,152 @@
; elog.nsi
;
; This script will install the elog system
;
; The name of the installer
Name "ELOG"
; The file to write
OutFile "elog${VERSION}.exe"
; Overwrite setting
SetOverwrite on
; The default installation directory
InstallDir $PROGRAMFILES\ELOG
; Registry key to check for directory (so if you install again, it will
; overwrite the old one automatically)
InstallDirRegKey HKLM SOFTWARE\ELOG "Install_Dir"
; The text to prompt the user to enter a directory
ComponentText "This will install the ELOG electronic logbook server on your computer. Select which optional things you want installed."
; The text to prompt the user to enter a directory
DirText "Choose a directory to install in to:"
; Main system
Section "ELOG system (required)"
; root directory
SetOutPath $INSTDIR
File COPYING
File README.txt
File elog*.c
File nt\release\elog*.exe
File elogd.cfg
File eloghelp_en.html
; doc directory
SetOutPath $INSTDIR\doc
File doc\*.*
; themes and demo logbook
SetOutPath $INSTDIR\themes\default
File themes\default\*.cfg
File themes\default\*.gif
SetOutPath $INSTDIR\logbooks\demo
File logbooks\demo\*
SetOutPath $INSTDIR
; Write the installation path into the registry
WriteRegStr HKLM SOFTWARE\ELOG "Install_Dir" "$INSTDIR"
; Write the uninstall keys for Windows
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\ELOG" "DisplayName" "ELOG electronic logbook (remove only)"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\ELOG" "UninstallString" '"$INSTDIR\uninst_elog.exe"'
SectionEnd
; optional section
Section "Multi-language support"
SetOutPath $INSTDIR
File eloghelp_ge.html
File eloghelp_fr.html
File eloglang.german
File eloglang.french
SectionEnd
; optional section
Section "Start Menu Shortcuts"
CreateDirectory "$SMPROGRAMS\ELOG"
CreateShortCut "$SMPROGRAMS\ELOG\ELOG server.lnk" "$INSTDIR\elogd.exe" "" "$INSTDIR\elogd.exe" 0
Delete "$SMPROGRAMS\ELOG\Demo Logbook (start server first!).lnk"
WriteINIStr "$SMPROGRAMS\ELOG\Demo Logbook (start server first!).url" \
"InternetShortcut" "URL" "http://localhost/demo/"
CreateShortCut "$SMPROGRAMS\ELOG\ELOG Documentation.lnk" "$INSTDIR\doc\index.html"
CreateShortCut "$SMPROGRAMS\ELOG\Uninstall ELOG.lnk" "$INSTDIR\uninst_elog.exe" "" "$INSTDIR\uninst_elog.exe" 0
SectionEnd
; display readme file
Function .onInstSuccess
MessageBox MB_YESNO|MB_ICONQUESTION \
"Setup has completed. View readme file now?" \
IDNO NoReadme
ExecShell open '$INSTDIR\doc\index.html'
NoReadme:
FunctionEnd
; uninstall stuff
UninstallText "This will uninstall ELOG."
UninstallExeName "uninst_elog.exe"
; special uninstall section.
Section "Uninstall"
; remove registry keys
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\ELOG"
DeleteRegKey HKLM SOFTWARE\ELOG
; remove files
Delete $INSTDIR\COPYING
Delete $INSTDIR\README.txt
Delete $INSTDIR\elog.c
Delete $INSTDIR\elogd.c
Delete $INSTDIR\elog.exe
Delete $INSTDIR\elogd.exe
Delete $INSTDIR\elogd.cfg
Delete $INSTDIR\eloghelp_en.html
Delete $INSTDIR\eloghelp_fr.html
Delete $INSTDIR\eloghelp_ge.html
Delete $INSTDIR\eloglang.french
Delete $INSTDIR\eloglang.german
Delete $INSTDIR\doc\*
RMDir $INSTDIR\doc
Delete $INSTDIR\themes\default\*.*
RMDir $INSTDIR\themes\default
RMDir $INSTDIR\themes
Delete $INSTDIR\logbooks\demo\*.*
RMDir $INSTDIR\logbooks\demo
RMDir $INSTDIR\logbooks
; MUST REMOVE UNINSTALLER, too
Delete $INSTDIR\uninst_elog.exe
; remove shortcuts, if any.
Delete "$SMPROGRAMS\ELOG\*.*"
; remove directories used.
RMDir "$SMPROGRAMS\ELOG"
RMDir "$INSTDIR"
; if $INSTDIR was removed, skip these next ones
IfFileExists $INSTDIR 0 Removed
MessageBox MB_YESNO|MB_ICONQUESTION \
"Remove all files in your ELOG directory? (If you have anything\
you created that you want to keep, click No)" IDNO Removed
Delete $INSTDIR\*.* ; this would be skipped if the user hits no
RMDir /r $INSTDIR
IfFileExists $INSTDIR 0 Removed
MessageBox MB_OK|MB_ICONEXCLAMATION \
"Note: $INSTDIR could not be removed."
Removed:
SectionEnd
; eof

8273
elogd.c Executable file

File diff suppressed because it is too large Load Diff

13
elogd.cfg Executable file
View File

@ -0,0 +1,13 @@
[global]
logbook tabs = 0
tab cellpadding = 2
[demo]
Theme = default
Comment = General linux tips & tricks
Data dir = logbooks/demo
Attributes = Author, Type, Category, Subject
Options Type = Routine, Software Installation, Problem Fixed, Configuration, Other
Options Category = General, Hardware, Software, Network, Other
Required Attributes = Author, Type
Page Title = ELOG - $subject

56
eloghelp_en.html Executable file
View File

@ -0,0 +1,56 @@
<!--
$Revision$
-->
<html><head>
<title>ELOG Electronic Logbook Help</title>
</head>
<body>
<table border=0 width=100%% bgcolor=#486090 cellpadding=1 cellspacing=0 align=center>
<tr><td><table cellpadding=5 cellspacing=0 border=0 width=100%% bgcolor=#486090>
<tr><td align=center bgcolor=#486090>
<font face=verdana,arial,helvetica,sans-serif size=5 color=#FFFFFF>
ELOG Electronic Logbook Help<br></font></td></tr>
<tr><td bgcolor=#FFFFFF><br>The Electronic Logbook (<i>ELog</i>) can be used to store and retrieve
messages through a Web interface. Depending on the configuration, the ELog system can host one or
more <i>logbooks</i> which are stored in separate sections on the server.<p></td></tr>
<tr><td bgcolor=#486090><font color=#FFFFFF><b>Quick overview</b></font></td></tr>
<tr><td bgcolor=#FFFFFF><br>Per default, the last entry in a logbook is displayed. One can use the
browse buttons to display the first, previous, next and last message.<p>
If one of the checkboxes next to one of the attribute fields is checked, only messages of that
attribute are displayed with the browse buttons. This can be used as a quick filter to display only
pages from a certain author or category.<p>
The <b>New</b> button creates a new entry. With the <b>Edit</b> button one can edit an existing
message, if this is allowed in the configuration file. The <b>Reply</b> button creates a reply to an
existing message, similar like a reply to an email.<p>
The <b>Find</b> button opens a query page, where messages from a logbook can be displayed based on
filter rules. Each non-empty field works like an additional filter, which is and-ed with the other
rules. If no filter is selected, all messages from a logbook are displayed. The <b>Last day</b> and
<b>Last 10</b> buttons display all messages from the last 24 hours and the last ten messages,
respectively.<p>
</td></tr>
<tr><td bgcolor=#486090><font color=#FFFFF><b>More information</b></font></td></tr>
<tr><td bgcolor=#FFFFFF><br>For more information, especially about the configuration of ELog, refer
to the <A HREF="http://midas.psi.ch/elog">ELOG home page</A>.<P>
</td></tr></table></td></tr></table>
<hr>
<address>
<a href="http://midas.psi.ch/~stefan">S. Ritt</a>, 28 August 2001
</address>
</body></html>

66
eloghelp_fr.html Executable file
View File

@ -0,0 +1,66 @@
<!--
$Revision$
-->
<html><head>
<title>Aide sur la main-courante &eacute;lectronique ELOG</title>
</head>
<body>
<table border=0 width=100%% bgcolor=#486090 cellpadding=1 cellspacing=0 align=center>
<tr><td><table cellpadding=5 cellspacing=0 border=0 width=100%% bgcolor=#486090>
<tr><td align=center bgcolor=#486090>
<font face=verdana,arial,helvetica,sans-serif size=5 color=#FFFFFF>
Aide sur la main-courante &eacute;lectronique ELOG<br></font></td></tr>
<tr><td bgcolor=#FFFFFF><br>La "<b>main-courante &eacute;lectronique</b>" (<i>ELog</i>) peut &ecirc;tre utilis&eacute;e pour
cr&eacute;er des messages et y acc&eacute;der &agrave; travers une interface Web. Suivant le param&eacute;trage, un serveur ELog
peut h&eacute;berger un ou plusieurs "<b>registres</b>" (</i>logbooks</i>) qui sont enregistr&eacute;s s&eacute;par&eacute;ment.
<p>
</td></tr>
<tr><td bgcolor=#486090><font color=#FFFFFF><b>Aper&ccedil;u rapide</b></font></td></tr>
<tr><td bgcolor=#FFFFFF><br>
Par d&eacute;faut, la derni&egrave;re entr&eacute;e en date est affich&eacute;e. On peut utiliser les boutons de navigation
pour afficher l'entr&eacute;e pr&eacute;c&eacute;dente ou suivante, ou aller directement &agrave; la premi&egrave;re ou &agrave; la derni&egrave;re.
<p>
Si l'une des cases &agrave; c&ocirc;t&eacute; des intitul&eacute;s de champs est coch&eacute;e, seuls les messages ayant la m&ecirc;me
valeur pour cet attribut seront affich&eacute;s par les boutons de navigation : ceci peut &ecirc;tre utilis&eacute;
comme un filtre rapide, pour parcourir toutes les entr&eacute;es d'un m&ecirc;me auteur ou d'une
cat&eacute;gorie donn&eacute;e.
<p>
La commande <b>Cr&eacute;er</b> permet d'ajouter une nouvelle entr&eacute;e. La commande <b>Modifier</b>,
si le param&eacute;trage l'autorise, permet l'&eacute;dition d'une entr&eacute;e existante. La commande <b>R&eacute;pondre</b>
cr&eacute;e une entr&eacute;e en r&eacute;f&eacute;rence &agrave; une entr&eacute;e existante, comme lorsqu'on r&eacute;pond &agrave; un m&eacute;l.
<p>
La commande <b>Chercher</b> affiche un formulaire de recherche, qui permet de filtrer
les entr&eacute;es suivant divers crit&egrave;res. Chaque crit&egrave;re non-vide ajoute un filtre, et les filtres
sont cumul&eacute;s ("ET" logique). Si aucun crit&egrave;re n'est renseign&eacute;, toutes les entr&eacute;es du journal
sont affich&eacute;es.
<p>
Les commandes <b>Dernier jour</b> et <b>10 Derni&egrave;res entr&eacute;es</b> agissent comme des
recherches simplifi&eacute;es, affichant respectivement les entr&eacute;es des derni&egrave;res 24 heures, et les 10 derni&egrave;res
entr&eacute;es cr&eacute;&eacute;es.
<p>
</td></tr>
<tr><td bgcolor=#486090><font color=#FFFFF><b>Plus d'informations</b></font></td></tr>
<tr><td bgcolor=#FFFFFF><br>Pour plus de pr&eacute;cisions, notamment sur le param&eacute;trage d'un serveur ELog, r&eacute;f&eacute;rez-vous
&agrave; la <A HREF="http://midas.psi.ch/elog">page d'accueil ELOG</A> (en anglais).<P>
</td></tr></table></td></tr></table>
<hr>
<address>
<a href="http://midas.psi.ch/~stefan">S. Ritt</a>, 28 August 2001
<br>Traduit en fran&ccedil;ais par <a href="mailto:fredp@multimania.com">Fred Pacquier</a>, d&eacute;cembre 2001
</address>
</body></html>

63
eloghelp_ge.html Executable file
View File

@ -0,0 +1,63 @@
<!--
$Revision$
-->
<html><head>
<title>ELOG Electronisches Logbuch Hilfe</title>
</head>
<body>
<table border=0 width=100%% bgcolor=#486090 cellpadding=1 cellspacing=0 align=center>
<tr><td><table cellpadding=5 cellspacing=0 border=0 width=100%% bgcolor=#486090>
<tr><td align=center bgcolor=#486090>
<font face=verdana,arial,helvetica,sans-serif size=5 color=#FFFFFF>
ELOG Electronisches Logbuch Hilfe<br></font></td></tr>
<tr><td bgcolor=#FFFFFF><br>Das elektronische Logbuch (<i>ELog</i>) kann dazu benutzt
werden, Eintr&auml;ge &uuml;becopyr eine Web Schnittstelle zu speichern und abzurufen.
Abh&auml;ngig von der Konfiguration, kann das ELog System ine oder mehere <i>
Logb&uuml;cher</i> beherbergen, die in verschiedenen Bereichen auf dem Server
gespeicher sind.<p></td></tr>
<tr><td bgcolor=#486090><font color=#FFFFFF><b>Schnell&uuml;berblich</b></font></td></tr>
<tr><td bgcolor=#FFFFFF><br>Standardm&auml;&szlig;ig wird der letzte Eintrag eines
Logbuches dargestellt. Man kann die Pfeiltasten verwenden, um den ersten,
vorhergenden, n&auml;chsten oder letzten Eintrag darzustellen.<p>
Falls einer der Schalter bei den Attributen angekreuzt ist, werden nur Eintr&auml;ge
mit diesem Attribut gezeigt. Diese Eigenschaft kann schnell dazu verwendet werden,
nur Seiten mit einem bestimmten Auto oder Kategorie darzustellen.<p>
Die <b>Neu</b> Schaltfl&auml;che erzeugt einen neuen Eintrag. Mit der <b>&Auml;ndern
</b> Schaltfl&auml;che kann man existierende Eintr&auml;ge &auml;ndern, falls dieses
in der Konfigurationsdatei erlaubt ist. Die <b>Antworten</b> Schaltfl&auml;che
erzeugt eine Antwort auf eine existierenden Eintrag, &auml;hnlich wie bei einem Email
System.<p>
Die <b>Finden</b> Schaltfl&auml;che öffnet ein Formular, das die Suche von
Eintr&auml;gen aus einem Logbuch &uuml;ber Filterregeln erlaubt. Jedes ausgef&uuml;
llte Feld wirkt wie ein zus&auml;tzlicher Filter, das UND-verkn&uuml;pft wird mit den
anderen Regeln. Falls kein Filter ausgew&auml;hlt ist werden alle Eintr&auml;ge eines
Logbuches ausgew&auml;hlt. Die <b>Letzter Tag</b > und <b>Letzte 10</b>
Schaltfl&auml;chen zeigen alle Eintr&auml;ge der letzten 24 Stunden bzw. die letzten
zehn Eintr&auml;ge.<p>
</td></tr>
<tr><td bgcolor=#486090><font color=#FFFFF><b>More information</b></font></td></tr>
<tr><td bgcolor=#FFFFFF><br>Mehr Informationen, insbesondere &uuml;ber die Konfiguration von ELog,
gibt es auf der <A HREF="http://midas.psi.ch/elog">ELOG home page</A>.<P>
</td></tr></table></td></tr></table>
<hr>
<address>
<a href="http://midas.psi.ch/~stefan">S. Ritt</a>, 28 August 2001
</address>
</body></html>

139
eloglang.french Executable file
View File

@ -0,0 +1,139 @@
#
# $Revision$
#
# ElogLang.French - French interface file for ELOG 1.2.7+
# version 1.2 - 13/12/01 by Fred Pacquier <fredp@mygale.org>
#
#
# Menu commands
#
New = Créer
Edit = Modifier
Delete = Supprimer
Reply = Répondre
Find = Chercher
Last day = Dernier jour
Last 10 = 10 Dernières entrées
Config = Configuration
Change Password = Changer le mot de passe
Logout = Se déconnecter
Help = Aide
Back = Retour
Submit = Valider
First = Première
First entry = Première Entrée
Last = Dernière
Last entry = Dernière Entrée
Previous = Précédente
Previous entry = Entrée Précédente
Next = Suivante
Next entry = Entrée Suivante
Copy to = Copier vers
Move to = Déplacer vers
Save = Enregistrer
Cancel = Annuler
Go to = Aller à
#
# Login & password screens
#
Wrong password = Mot de passe incorrect
Please login = Connexion
Username = Utilisateur
Password = Mot de passe
Old Password = Ancien mot de passe
New Password = Nouveau mot de passe
ELOG password = mot de passe ELOG
ELOG change password = Changer le mot de passe ELOG
Please enter password to obtain write access = Entrez le mot de passe pour l'accès en écriture
Please enter password to obtain administration access = Entrez le mot de passe pour l'accès administrateur
Several logbooks are defined on this host = Il y a plusieurs registres sur ce serveur
Please select the one to connect to = Choisissez celui auquel vous souhaitez vous connecter
Change password for user = Changer le mot de passe de l'utilisateur
#
# Entry display
#
Logged in as = Connecté sous
Entry date = Date de création
with = avec
This is the last entry = Ceci est la dernière entrée
This is the first entry = Ceci est la première entrée
Email sent to = Mél envoyé à
Email notification suppressed = Notification mél désactivée
please select = choisissez
Submit as HTML text = Code HTML
Suppress Email notification = Désactiver la notification mél.
Resubmit as new entry = Positionner comme une nouvelle entrée
If no attachments are resubmitted, the original ones are kept = Si un nouvel attachement n'est pas spécifié, l'ancien est conservé
To delete an old attachment, enter <code>&lt;delete&gt;</code> in the new attachment field = Pour supprimer un attachement existant, saisir comme nouvelle valeur <code>&lt;plonk&gt;</code>
<delete> = <plonk>
Attachment = Attachement
Attachments = Attachements
No message available = Aucune entrée disponible
Reply to this = Réponse
In reply to = En réponse à
#
# Submit entry
#
ELOG Error = Erreur ELOG
Fields marked with = Les champs marqués
are required = sont obligatoires
Error: Attachment file <i>%s</i> invalid, please bo back and enter a proper file name = Erreur : le fichier <i>%s</i> est invalide, revenez en arrière et spécifiez un nom de fichier correct
New message cannot be written to directory "%s" = Le nouveau message ne peut pas être écrit dans le répertoire "%s"
Please check that it exists and elogd has write access = Vérifier qu'il existe bien et qu'elogd a le droit d'y écrire
Error: Attribute <b>%s</b> not supplied = Erreur : l'attribut <b>%s</b> n'est pas spécifié
Please go back and enter the <b>%s</b> field = Revenez en arrière et renseignez le champ <b>%s</b>
Original attachment = Ancien attachement
New attachment = Nouvel attachement
#
# Find display
#
ELOG search result = ELOG - résultat de la recherche
ELOG find = Recherche ELOG
Find = Chercher
Search = Lancer la recherche
Reset Form = Réinitaliser le formulaire
Summary only = Résumé seulement
Show attachments = Montrer les attachements
Printable output = Sortie pour impression
Sort in reverse order = Tri inversé
Start date = Date de début
End date = Date de fin
Year = Année
Text = Texte
(case insensitive substring) = (casse non prise en compte)
Search all logbooks = Chercher dans tous les registres
Last %d days = %d Derniers jours
Last %d entries = %d Dernières entrées
No entries found = Aucune entrée trouvée
#
# Email, Copy/Move, Delete
#
A new entry has been submitted on %s = Une nouvelle entrée a été créée le %s
Logbook = Registre
Copy ELog entry = Copier l'entrée ELog
Message moved successfully from "%s" to "%s" = Entrée déplacée de "%s" vers "%s"
Message copied successfully from "%s" to "%s" = Entrée copiée de "%s" vers "%s"
Are you sure to delete this message? = Confirmez-vous la suppression de cette entrée ?
Yes = Oui
No = Non
Message successfully deleted = Entrée supprimée
Error deleting message: status = Erreur lors de la suppression de l'entrée : Status
Goto last message = Aller à la dernière entrée
#
# Error messages
#
Error: Command "<b>%s</b>" not allowed = Erreur : commande "<b>%s</b>" non autorisée
Error: Command "<b>%s</b>" is not allowed for user "<b>%s</b>" = Erreur: commande "<b>%s</b>" non autorisée pour l'utilisateur "<b>%s</b>"
Cannot open file <b>%s</b> = Erreur d'ouverture du fichier <b>%s</b>
Cannot write to <b>%s</b> = Erreur d'écriture dans le fichier <b>%s</b>
No SMTP host defined in [global] section of configuration file = Aucun serveur SMTP n'est défini dans la section [global] du fichier de configuration
Message %s cannot be read from logbook "%s" = L'entrée %s ne peut pas être lue dans le registre "%s"
New message cannot be written to directory "%s" = La nouvelle entrée %s ne peut pas être créée dans le registre "%s"

135
eloglang.german Executable file
View File

@ -0,0 +1,135 @@
#
# $Revision$
#
#
# Menu commands
#
New = Neu
Edit = Ändern
Delete = Löschen
Reply = Antworten
Find = Finden
Last day = Letzter Tag
Last 10 = Letzte 10
Config = Konfigurieren
Change Password = Passwort ändern
Logout = Abmelden
Help = Hilfe
Back = Zurück
Submit = Abschicken
First = Erster
First entry = Erster Eintrag
Last = Letzter
Last entry = Letzter Eintrag
Previous = Vorheriger
Previous entry = Vorheriger Eintrag
Next = Nächster
Next entry = Nächster Eintrag
Copy to = Kopieren nach
Move to = Verschieben nach
Save = Speichern
Cancel = Abbrechen
Go to = Nach
#
# Login & password screens
#
Wrong password = Falsches Kennwort
Please login = Bitte Anmelden
Username = Benutzername
Password = Kennwort
Old Password = Altes Kennwort
New Password = Neues Kennwort
ELOG password = ELOG Kennwort
ELOG change password = ELOG Kennwort ändern
Please enter password to obtain write access = Bitte Kennwort eingeben für Schreibzugriff
Please enter password to obtain administration access = Bitte Kennwort eingeben für Administrationszugriff
Several logbooks are defined on this host = Mehrere Logbücher sind auf diesem Computer eingerichtet
Please select the one to connect to = Bitte wählen Sie eines aus
Change password for user = Kennwort ändern für Benutzer
#
# Entry display
#
Logged in as = Angemeldet als
Entry date = Eingabedatum
with = mit
This is the last entry = Dies ist der letzte Eintrag
This is the first entry = Dies ist der erste Eintrag
Email sent to = Email gesendet an
Email notification suppressed = Email Benachrichtigung untedrückt
please select = bitte auswählen
Submit as HTML text = Als HTML Text abschicken
Suppress Email notification = Email Benachrichtigung unterdrücken
Resubmit as new entry = Als neuen Eintrag abschicken
If no attachments are resubmitted, the original ones are kept = Falls keine neuen Anhänge abgeschickt werden, werden die Originale behalten
To delete an old attachment, enter <code>&lt;delete&gt;</code> in the new attachment field = Um einen alten Anhang zu löschen, bitte <code>&lt;entfernen&gt;</code> eingeban
<delete> = <entfernen>
Attachment = Anhang
Attachments = Anhänge
No message available = Kein Entrag vorhanden
Reply to this = Antwort hierzu
In reply to = Als Antwort auf
#
# Submit entry
#
ELOG Error = ELOG Fehler
Fields marked with = Felder markiert mit
are required = sind Pflichteinträge
Error: Attachment file <i>%s</i> invalid, please bo back and enter a proper file name = Fehler: Datei <i>%s</i> ist ungültig, bitte zurück und korrekten Dateinamen eingeben
New message cannot be written to directory "%s" = Neuer Entrag kann nicht ins Verzeichnig "%s" geschrieben werden
Please check that it exists and elogd has write access = Bitte überprüfen, ob es existiert und ob elogd Schreibzugriff hat
Error: Attribute <b>%s</b> not supplied = Fehler: Attribut <b>%s</b> nicht ausgefüllt
Please go back and enter the <b>%s</b> field = Bitte zurückgehen und das Feld <b>%s</b> ausfüllen
Original attachment = Alter Anhang
New attachment = Neuer Anhang
#
# Find display
#
ELOG search result = ELOG Suchergebnis
ELOG find = ELOG suchen
Find = Finden
Search = Suchen
Reset Form = Eingabe zurücksetzen
Summary only = Nur Zusammenfassung
Show attachments = Anhänge anzeigen
Printable output = Druckfähige Anzeige
Sort in reverse order = Sortieren in umgekehrter Reihenfolge
Start date = Anfangsdatum
End date = Enddatum
Year = Jahr
Text = Text
(case insensitive substring) = (Teilzeichenkette Großschreibung ignorieren)
Search all logbooks = Alle Logbücher durchsuchen
Last %d days = Letzte %d Tage
Last %d entries = Letzte %d Einträge
No entries found = Keine Einträge gefunden
#
# Email, Copy/Move, Delete
#
A new entry has been submitted on %s = Ein neuer Eintrag wurde an %s geschickt
Logbook = Logbuch
Copy ELog entry = ELog Eintrag Kopieren
Message moved successfully from "%s" to "%s" = Eintrag erfolgreich von "%s" nach "%s" verschoben
Message copied successfully from "%s" to "%s" = Eintrag erfolgreich von "%s" nach "%s" kopiert
Are you sure to delete this message? = Diesen Eintrag wirklich löschen?
Yes = Ja
No = Nein
Message successfully deleted = Eintrag erfolgreich gelöscht
Error deleting message: status = Fehler beim Löschen: Status
Goto last message = Zum letzten Eintrag
#
# Error messages
#
Error: Command "<b>%s</b>" not allowed = Fehler: Kommando "<b>%s</b>" nicht erlaubt
Error: Command "<b>%s</b>" is not allowed for user "<b>%s</b>" = Fehler: Kommando "<b>%s</b>" nicht erlaubt für Benutzer "<b>%s</b>"
Cannot open file <b>%s</b> = Datei <b>%s</b> kann nicht geöffnet werden
Cannot write to <b>%s</b> = Datei <b>%s</b> kann nicht geschrieben werden
No SMTP host defined in [global] section of configuration file = Kein SMTP Host im [global] Bereich der Konfigurationsdatei definiert
Messags %s cannot be read from logook "%s" = Eintrag %s kann nicht aus dem Logbuch "%s" gelesen werden
New message cannot be written to directory "%s" = Neuer Eintrag kann nicht ins Verzeichnis "%s" geschrieben werden

15
logbooks/demo/011108.log Executable file
View File

@ -0,0 +1,15 @@
$Start$: 419
Date: Thu Nov 08 18:37:57 2001
Thread: 0 0
Author: Stefan Ritt
Type: Routine
Category: General
Subject: Welcome
Encoding: plain
========================================
Congratulations for installing ELOG sucessfully!
This is a demo entry to ensure the elogd server is working correctly.
Click "New" to add new pages and "Delete" to delete this page.$End$: 419

BIN
themes/default/elog.gif Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

BIN
themes/default/first.gif Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 941 B

BIN
themes/default/first.psp Executable file

Binary file not shown.

BIN
themes/default/last.gif Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 935 B

BIN
themes/default/last.psp Executable file

Binary file not shown.

BIN
themes/default/next.gif Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 890 B

BIN
themes/default/next.psp Executable file

Binary file not shown.

37
themes/default/oldtheme.cfg Executable file
View File

@ -0,0 +1,37 @@
; General attributes of displayed tables
Table width = 700
Frame color = #FFFFFF
Cell bgcolor = #FFFFFF
Border width = 3
; Look of Title Row
Title bgcolor = #A0A0FF
Title fontcolor = #000000
Title cellpadding = 5
Title image =
; Look of Menus
Merge menus = 0
Use buttons = 1
Menu1 bgcolor = #C0C0C0
Menu1 Align = left
Menu1 cellpadding = 3
Menu2 bgcolor = #E0E0E0
Menu2 Align = left
Menu2 cellpadding = 3
Menu2 use images = 0
; Categories
Categories cellpadding = 3
Categories border = 0
Categories bgcolor1 = #CCCCFF
Categories bgcolor2 = #A0FFA0
; Text
Text bgcolor = #FFFFFF
; Search results
List bgcolor1 = #FFFFFF
List bgcolor2 = #FFFFFF

BIN
themes/default/previous.gif Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 893 B

BIN
themes/default/previous.psp Executable file

Binary file not shown.

37
themes/default/theme.cfg Executable file
View File

@ -0,0 +1,37 @@
; General attributes of displayed tables
Table width = 100%
Frame color = #486090
Cell bgcolor = #E6E6E6
Border width = 0
; Look of Title Row
Title bgcolor = #486090
Title fontcolor = #FFFFFF
Title cellpadding = 0
Title image = elog.gif
; Look of Menus
Merge menus = 1
Use buttons = 0
Menu1 bgcolor = #E0E0E0
Menu1 Align = left
Menu1 cellpadding = 5
Menu2 bgcolor = #FFFFB0
Menu2 Align = center
Menu2 cellpadding = 0
Menu2 use images = 1
; Categories
Categories cellpadding = 3
Categories border = 0
Categories bgcolor1 = #CCCCFF
Categories bgcolor2 = #DDEEBB
; Text
Text bgcolor = #FFFFFF
; Search results
List bgcolor1 = #DDEEBB
List bgcolor2 = #FFFFB0