Demo Discussion
Forum Config Examples Contributions Vulnerabilities
  Discussion forum about ELOG, Page 561 of 808  Not logged in ELOG logo
ID Date Icon Author Author Email Categorydown OS ELOG Version Subject
  68830   Tue Aug 7 10:53:45 2018 Warning Andreas Luedekeandreas.luedeke@psi.chInfoLinuxelog-3.1.3Problem with eloglang.german_UTF8

I had a problem with restarting ELOG since about a year, and finally I found the culprit. I just want to share it here, to prevent anyone else to make the same mistake,

Apparently the files resources/eloglang.* are rather sensitive to the syntax. But it doesn't tell you: no warning or error message comes up.
The file eloglang.german_UTF8 contains some "missing translations" at the end - and it looks like they produce some problems.
If you don't follow the instructions to create eloglang.german_UTF8 from eloglang.german, but use the file as it is, then the language handling will be corrupted:
some (very few) language strings will point into some void and display garbage strings.
In very rare cases this will even crash "elogd", in all other cases it will confuse your users.
Sometimes ELOG commands like "?Cmd=New" were affected, which makes ELOG unusable.
What made it very hard to debug was the fact that with every restart a different string was affected.
Everything looked fine, and later you see a string in the configuration page is wrong. Restarting fixed that string, but then some other string is gone.
 
So if you see such a behaviour, check your language file for "unusual syntax".
I haven't checked if the problem is limited to UTF8 - I only saw the problem with the eloglang.german_UTF8 file.
 
Cheers, Andreas
  69019   Sat Sep 28 09:07:05 2019 Reply Qisheng Wangwangqisheng@zjlab.org.cnInfoWindows3.1.1Re: Custom input forms implementation

Dear Andreas,

The same problem by using the shiftchecklist and the cfg in Stefan's mail. It report the no password file, even the absolute path wroten in cfg file.  The author field also failed to be read, it is shown as "?" in the page . Did there miss some other files?

Any suggestion is welcome. Thank you very much.

Qisheng

Andreas Luedeke wrote:

You might try to specify an absolute path to the password file in the configuration.

I would need a complete minimal configuration that creates that problem.

 

JD wrote:

Hello Stefan,

I created a custom form with the example you provided. When I enter the Data and Submit the Form I get the error message "Datei passwordfile.xml kann nicht geöffnet werden: No such file or directory".  Posting stuff works in all other logbooks.  Only in the "logbook with the form" there seems to be an error. (or misconfiguration on my side)

sections from my conf. File:

[global]
Password file = passwordfile.xml

(...)

[ShiftCheck]
Comment = Shift Check List

Attributes = Hardware, Raith-Mitarbeiter, Rechnername, Rechnername-alt, Details, SN, AV-Nummer, System, Key, IT-Mitarbeiter, Erledigt_datum, Ausgemustert_datum
Quick filter = Shift, Author
Options Shift = Morning, Evening, Night

Enable attachments = 0
Show text = 0
Custom new form =forms\shiftcheck.html
Custom edit form = forms\shiftcheck.html
Custom display form = forms\shiftcheck.html
List after submit = 1

I tried copying the password file to the forms directory, the logbook directory, the ShiftCheck logbook directory and the elog root folder.  I always get the same error.  I tried entering the absolute path, there was no difference in the result.

When I disable the password file I am able to post without any problems.  Can you help me out? 

Jonathan

 

Stefan Ritt wrote:

Dear ELOG users,

starting with SVN revision 2328, custom input forms are implemented. This allows application specific formats for check lists etc. In our specific case we had to implement a shift check list, which was quite long. Furthermore the check list should be optimized for an iPad, which we take in the field and record various checks and readings (in our case some gas pressure gauges at the PSI particle accelerator). Since the standard ELOG interface was too inflexible, a completely hand-written form was needed. The form can be activated by the new configuration options Custom New Form, Custom Edit Form and Custom Display Form, one for a new entry, an entry to edit and and entry to display. In our case we used the same form for all three cases. This is how the shift check list looks under the Safari Browser on a PC:

Capture.png

And here is how it looks on the iPad:

IMAG0036.jpg

Each section can be collapsed and expanded (blue arrows at the left), and various internal checks are made before the check list can be submitted.

Implementing such forms is however more something for the advanced user, since you have to hand-write HTML with CSS and JavaScript code. It can then however be a powerful method for check lists. Please find in the attachments the elogd.cfg configuration for that logbook and the shiftcheck.html source code file. It is a bit complicated since the page is a static page, elogd just serves it from the file. This requires all the dynamic functions to be implemented inside the HTML file with JavaScript. To display an entry for example, the JavaScript loads the raw data with the "?cmd=Download" command and the populates the form fields. The collapsing and expanding is done by using CSS properties. The integrated style sheet was optimized for the rendering on an iPad. Rather large fonts were chosen so that the items can be checked easily with your finger tips. Various parameters are sent between the browser and the elogd program via hidden fields and cookies. So only something for experts! But if you go through the effort and hand-write the form, it can be very handy. Note that you have to upgrade to SVN revision 2328 for the three new options.

 

 

 

 

  69060   Mon Nov 18 16:58:21 2019 Idea Roger Kaltroger.kalt@psi.chInfoLinux3.1.4Example scripts how to migrate or combine logbooks

Attached the shell scripts using awk and sed how I have migrated two separated logbooks into one single and how I re-adjusted certain attributes.

Attachment 1: run_modif.sh
#!/bin/bash
# KR84, 28.10.2019

# the input files are the exported XML files from ELOG -> Finden


# search in XML for sring between <DATE> and </DATE>
# and replace with: <DATE> and </DATE><When> and </When>
echo "converting export_rf.xml ..."
cat ./export_rf.xml | 
    sed 's/<Personnel\(.*\)Personnel>/<Author\1Author>/g' |
    sed 's/<DATE\(.*\)DATE>/<DATE\1DATE>\n\t\t<When\1When>/g'   |
    sed 's/<Subject>\(.*\)<\/Subject>/<Title>\1<\/Title><Entry_Type><\/Entry_Type>/g' |
    sed '/<Machine>SwissFEL<\/Machine>/ {N;N; s/<Machine>SwissFEL<\/Machine>.*<Domain>OBLA<\/Domain>.*<Section>TRFCB/<Machine>OBLA<\/Machine>\n\t\t<Domain>All<\/Domain>\n\t\t<Section>TRFCB/g}'  |
    sed 's/<When>Mon, /<When>/g'                          |
    sed 's/<When>Tue, /<When>/g'                          |
    sed 's/<When>Wed, /<When>/g'                          |
    sed 's/<When>Thu, /<When>/g'                          |
    sed 's/<When>Fri, /<When>/g'                          |
    sed 's/<When>Sat, /<When>/g'                          |
    sed 's/<When>Sun, /<When>/g'                          |
    sed '/<When>.*<\/When>/{s/ Jan 20/.01./g}'                    |
    sed '/<When>.*<\/When>/{s/ Feb 20/.02./g}'                    |
    sed '/<When>.*<\/When>/{s/ Mar 20/.03./g}'                    |
    sed '/<When>.*<\/When>/{s/ Apr 20/.04./g}'                    |
    sed '/<When>.*<\/When>/{s/ May 20/.05./g}'                    |
    sed '/<When>.*<\/When>/{s/ Jun 20/.06./g}'                    |
    sed '/<When>.*<\/When>/{s/ Jul 20/.07./g}'                    |
    sed '/<When>.*<\/When>/{s/ Aug 20/.08./g}'                    |
    sed '/<When>.*<\/When>/{s/ Sep 20/.09./g}'                    |
    sed '/<When>.*<\/When>/{s/ Oct 20/.10./g}'                    |
    sed '/<When>.*<\/When>/{s/ Nov 20/.11./g}'                    |
    sed '/<When>.*<\/When>/{s/ Dec 20/.12./g}'                    |
    sed 's/ +0100<\/When>/<\/When>/g'                                     |
    sed 's/ +0200<\/When>/<\/When>/g'                                     > export_rf_modified.xml



#    sed 's/ Jan 20/.01./g'                              |
#    sed 's/ Feb 20/.02./g'                              |
#    sed 's/ Mar 20/.03./g'                              |
#    sed 's/ Apr 20/.04./g'                              |
#    sed 's/ May 20/.05./g'                              |
#    sed 's/ Jun 20/.06./g'                              |
#    sed 's/ Jul 20/.07./g'                              |
#    sed 's/ Aug 20/.08./g'                              |
#    sed 's/ Sep 20/.09./g'                              |
#    sed 's/ Oct 20/.10./g'                              |
#    sed 's/ Nov 20/.11./g'                              |
#    sed 's/ Dec 20/.12./g'                              |




# search in XML and add offset to all IDs because they shall not overlap when merged.
echo "converting export_llrf.xml ..."
cat ./export_llrf.xml           | sed 's/<Subject>\(.*\)<\/Subject>/<Entry_Type><\/Entry_Type>\n\t\t<Status><\/Status>\n\t\t<Title>\1<\/Title>\n\t\t<Inv_ID><\/Inv_ID>/g' > export_llrf_modified1.xml
cat ./export_llrf_modified1.xml | awk -F'\t\t<MID>|</MID>||' '{ if ($2!="") {print "\t\t<MID>"$2+2016"</MID>"} else { print $1} }' > export_llrf_modified2.xml
cat ./export_llrf_modified2.xml | awk -F'\t\t<REPLY_TO>|</REPLY_TO>||' '{ if ($2!="") {print "\t\t<REPLY_TO>"$2+2016"</REPLY_TO>"} else { print $1} }' > export_llrf_modified3.xml
cat ./export_llrf_modified3.xml | awk -F'\t\t<IN_REPLY_TO>|</IN_REPLY_TO>||' '{ if ($2!="") {print "\t\t<IN_REPLY_TO>"$2+2016"</IN_REPLY_TO>"} else { print $1} }' > export_llrf_modified.xml

rm -rf ./export_llrf_modified1.xml ./export_llrf_modified2.xml ./export_llrf_modified3.xml 

cat ./export_llrf_modified.xml | 
    sed '/<Machine>SwissFEL<\/Machine>/ {N;N; s/<Machine>SwissFEL<\/Machine>.*<Domain>Test Systems<\/Domain>.*<Section>TRFCB/<Machine>OBLA<\/Machine>\n\t\t<Domain>All<\/Domain>\n\t\t<Section>TRFCB/g}'  |
    sed 's/<When>Mon /<When>/g'                           |
    sed 's/<When>Tue /<When>/g'                           |
    sed 's/<When>Wed /<When>/g'                           |
    sed 's/<When>Thu /<When>/g'                           |
    sed 's/<When>Fri /<When>/g'                           |
    sed 's/<When>Sat /<When>/g'                           |
    sed 's/<When>Sun /<When>/g'                           |
    sed 's/-Jan-/.01./g'                              |
    sed 's/-Feb-/.02./g'                              |
    sed 's/-Mar-/.03./g'                              |
    sed 's/-Apr-/.04./g'                              |
    sed 's/-May-/.05./g'                              |
    sed 's/-Jun-/.06./g'                              |
    sed 's/-Jul-/.07./g'                              |
    sed 's/-Aug-/.08./g'                              |
    sed 's/-Sep-/.09./g'                              |
    sed 's/-Oct-/.10./g'                              |
    sed 's/-Nov-/.11./g'                              |
    sed 's/-Dec-/.12./g'                              |
    sed 's/ +0100<\/When>//g'                                     |
    sed 's/ +0200<\/When>//g'                                     |
    sed 's/<\/When>/:00<\/When>/g'                      |
    sed 's/<When>-:00<\/When>/<When><\/When>/g'                    > export_llrf_modified_datetime.xml

echo "export_llrf_modified_datetime.xml need manual edit for empty <When></When>"
Attachment 2: generate_import_llrf_fwd.sh
#!/bin/bash
# KR84, 28.10.2019

# generate emtpy auto-fwd text for LLRF for 3100 entries and offset of 2000
echo "generated import_llrf_fwd.xml"
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" > import_llrf_fwd.xml
echo "<ELOG_LIST>" >> import_llrf_fwd.xml

declare -i ID
declare -i IDNEW

for ID in {1..3013}
do
    IDNEW=$ID+2016

    echo -e "\t<ENTRY>" >> import_llrf_fwd.xml
    echo -e "\t\t<MID>${ID}</MID>" >> import_llrf_fwd.xml
    echo -e "\t\t<DATE>Mon, 28 Oct 2019 20:00:00 +0200</DATE>" >> import_llrf_fwd.xml
#    echo -e "\t\t<DATE>28.10.2019 20:00:00</DATE>" >> import_llrf_fwd.xml
    echo -e "\t\t<ATTACHMENT></ATTACHMENT>" >> import_llrf_fwd.xml
    echo -e "\t\t<ENCODING>HTML</ENCODING>" >> import_llrf_fwd.xml
    echo -e "\t\t<When>28.10.2019 20:00:00</When>" >> import_llrf_fwd.xml
#    echo -e "\t\t<When>1572289200</When>" >> import_llrf_fwd.xml
    echo -e "\t\t<Author>Kalt Roger (KR84)</Author>" >> import_llrf_fwd.xml
    echo -e "\t\t<Machine>SwissFEL</Machine>" >> import_llrf_fwd.xml
    echo -e "\t\t<Domain></Domain>" >> import_llrf_fwd.xml
    echo -e "\t\t<Section></Section>" >> import_llrf_fwd.xml
    echo -e "\t\t<System></System>" >> import_llrf_fwd.xml
    echo -e "\t\t<Subsystem></Subsystem>" >> import_llrf_fwd.xml
    echo -e "\t\t<Subject>Automatic forward</Subject>" >> import_llrf_fwd.xml
    echo -e "\t\t<TEXT>&lt;meta http-equiv=&quot;refresh&quot; content=&quot;0; URL=&apos;https://elog-gfa.psi.ch/SwissFEL+RF/${IDNEW}&apos;&quot; /&gt;</TEXT>" >> import_llrf_fwd.xml
    echo -e "\t</ENTRY>" >> import_llrf_fwd.xml
done

echo "</ELOG_LIST>" >> import_llrf_fwd.xml

  69071   Wed Dec 4 03:06:50 2019 Question Johnsecondcomingtechnologies@fastmail.comInfoLinux | WindowsELOG V3.1.4-eadHow to selectively use Top/Bottom Text JavaScript.

I think I know what the answer(s) will be already.. that I will need to address this in JS. I don't want each screen to run/show the same code, other than the ones I want to.  AND I do not want to have to create a custom form for each 'menu option' to achieve this (if possible).

Thanx,

John

  69072   Wed Dec 4 10:15:56 2019 Reply Stefan Rittstefan.ritt@psi.chInfoLinux | WindowsELOG V3.1.4-eadRe: How to selectively use Top/Bottom Text JavaScript.

In JS, you have access to the browser URL via window.location. So you can write conditional code depending on the actual elog command.

Stefan

John wrote:

I think I know what the answer(s) will be already.. that I will need to address this in JS. I don't want each screen to run/show the same code, other than the ones I want to.  AND I do not want to have to create a custom form for each 'menu option' to achieve this (if possible).

Thanx,

John

 

  69074   Wed Dec 4 20:39:41 2019 Reply Johnsecondcomingtechnologies@fastmail.comInfoLinux | WindowsELOG V3.1.4-eadRe: How to selectively use Top/Bottom Text JavaScript.

Wow thanks again Stefan for your kind and prompt responses!!

John

Stefan Ritt wrote:

In JS, you have access to the browser URL via window.location. So you can write conditional code depending on the actual elog command.

Stefan

John wrote:

I think I know what the answer(s) will be already.. that I will need to address this in JS. I don't want each screen to run/show the same code, other than the ones I want to.  AND I do not want to have to create a custom form for each 'menu option' to achieve this (if possible).

Thanx,

John

 

 

  69114   Wed Feb 12 13:19:31 2020 Idea Stefan Rittstefan.ritt@psi.chInfoAll3.1.4ELOG Null Pointer Dereference Denial-of-Service Vulnerability

An ELOG vulnerability has been reported, thanks to Asif Akbar of Trend Micro Security Researchworking with Trend Micro's Zero Day Initiative:

https://www.zerodayinitiative.com/advisories/ZDI-20-252/

The issue has been fixed in the current release 3.1.4-033e292 and in the RPM http://elog.psi.ch/elog/download/RPMS/elog-latest.x86_64.rpm

Best,
Stefan

 

  69278   Thu Dec 3 19:11:38 2020 Question Illam Pakkirisamyillam@senseeker.comInfoWindowsELOG V3.1.4-a04How to increase TEXT_SIZE to address entry text limit

Hi,

I'm trying to increase the entry text constraint but not sure how to do this.  Couldn't find it in the documentation or may be I missed it.  Appreciate your help.

Thanks.
Illam

 

ELOG V3.1.5-3fb85fa6