Demo Discussion
Forum Config Examples Contributions Vulnerabilities
  Discussion forum about ELOG, Page 322 of 807  Not logged in ELOG logo
ID Date Icondown Author Author Email Category OS ELOG Version Subject
  66977   Wed Dec 15 16:42:32 2010 Reply Stefan Rittstefan.ritt@psi.chQuestionWindows2.8Re: elog as a service in windows not detect Imagemagick

Diego Obradors Campos wrote:

I have installed elog 2.8 in a windows pc with the installer from the distribution, it installs elog as a windows service, which is started automatically when windows starts.

It is done as:

"C:\Archivos de programa\ELOG\elogd.exe" -D -c "C:\Archivos de programa\ELOG\elogd.cfg"

Moreover Imagemagick and GhostScript are in the path:

Version: ImageMagick 6.6.4-6 2010-09-21 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2010 ImageMagick Studio LLC
Features: OpenMP 

However the indexing loogbooks are only working  fine when elog is started interactively.  Is there any posiblity to start elog as a service and use thumbnails for quick preview?

Thank you in advance!

 

This is a know problem. I did not achieve to create the imagemagic subprocess and read its output when elogd is started as a service. Attached is the code doing that, I found it as an example from Microsoft. But even after hours of work, I could not get it running inside the service. If anybody has any idea, please let me know. 

Attachment 1: my_shell.c
int my_shell(char *cmd, char *result, int size)
{
   HANDLE hChildStdinRd, hChildStdinWr, hChildStdinWrDup,
       hChildStdoutRd, hChildStdoutWr, hChildStderrRd, hChildStderrWr, hSaveStdin, hSaveStdout, hSaveStderr;

   SECURITY_ATTRIBUTES saAttr;
   PROCESS_INFORMATION piProcInfo;
   STARTUPINFO siStartInfo;
   char buffer[10000];
   DWORD dwRead, dwAvail, i;

   /* Set the bInheritHandle flag so pipe handles are inherited. */
   saAttr.nLength = sizeof(SECURITY_ATTRIBUTES);
   saAttr.bInheritHandle = TRUE;
   saAttr.lpSecurityDescriptor = NULL;

   /* Save the handle to the current STDOUT. */
   hSaveStdout = GetStdHandle(STD_OUTPUT_HANDLE);

   /* Create a pipe for the child's STDOUT. */
   if (!CreatePipe(&hChildStdoutRd, &hChildStdoutWr, &saAttr, 0))
      return 0;

   /* Set a write handle to the pipe to be STDOUT. */
   if (!SetStdHandle(STD_OUTPUT_HANDLE, hChildStdoutWr))
      return 0;

   /* Save the handle to the current STDERR. */
   hSaveStderr = GetStdHandle(STD_ERROR_HANDLE);

   /* Create a pipe for the child's STDERR. */
   if (!CreatePipe(&hChildStderrRd, &hChildStderrWr, &saAttr, 0))
      return 0;

   /* Set a read handle to the pipe to be STDERR. */
   if (!SetStdHandle(STD_ERROR_HANDLE, hChildStderrWr))
      return 0;

   /* Save the handle to the current STDIN. */
   hSaveStdin = GetStdHandle(STD_INPUT_HANDLE);

   /* Create a pipe for the child's STDIN. */
   if (!CreatePipe(&hChildStdinRd, &hChildStdinWr, &saAttr, 0))
      return 0;

   /* Set a read handle to the pipe to be STDIN. */
   if (!SetStdHandle(STD_INPUT_HANDLE, hChildStdinRd))
      return 0;

   /* Duplicate the write handle to the pipe so it is not inherited. */
   if (!DuplicateHandle(GetCurrentProcess(), hChildStdinWr, GetCurrentProcess(), &hChildStdinWrDup, 0, FALSE,   /* not inherited */
                        DUPLICATE_SAME_ACCESS))
      return 0;

   CloseHandle(hChildStdinWr);

   /* Now create the child process. */
   memset(&siStartInfo, 0, sizeof(siStartInfo));
   siStartInfo.cb = sizeof(STARTUPINFO);
   siStartInfo.lpReserved = NULL;
   siStartInfo.lpReserved2 = NULL;
   siStartInfo.cbReserved2 = 0;
   siStartInfo.lpDesktop = NULL;
   siStartInfo.dwFlags = 0;

   /* command to execute */
   sprintf(buffer, "cmd /q /c %s", cmd);

   if (!CreateProcess(NULL, buffer,     /* command line */
                      NULL,     /* process security attributes */
                      NULL,     /* primary thread security attributes */
                      TRUE,     /* handles are inherited */
                      0,        /* creation flags */
                      NULL,     /* use parent's environment */
                      NULL,     /* use parent's current directory */
                      &siStartInfo,     /* STARTUPINFO pointer */
                      &piProcInfo))     /* receives PROCESS_INFORMATION */
      return 0;

   /* After process creation, restore the saved STDIN and STDOUT. */
   SetStdHandle(STD_INPUT_HANDLE, hSaveStdin);
   SetStdHandle(STD_OUTPUT_HANDLE, hSaveStdout);
   SetStdHandle(STD_ERROR_HANDLE, hSaveStderr);

   memset(result, 0, size);

   do {
      /* query stdout */
      do {
         if (!PeekNamedPipe(hChildStdoutRd, buffer, 256, &dwRead, &dwAvail, NULL))
            break;
         if (dwRead > 0) {
            ReadFile(hChildStdoutRd, buffer, 256, &dwRead, NULL);
            buffer[dwRead] = 0;
            strlcat(result, buffer, size);
         }
      } while (dwAvail > 0);

      /* query stderr */
      do {
         if (!PeekNamedPipe(hChildStderrRd, buffer, 256, &dwRead, &dwAvail, NULL))
            break;
         if (dwRead > 0) {
            ReadFile(hChildStderrRd, buffer, 256, &dwRead, NULL);
            buffer[dwRead] = 0;
            strlcat(result, buffer, size);
         }
      } while (dwAvail > 0);

      /* check if subprocess still alive */
      if (!GetExitCodeProcess(piProcInfo.hProcess, &i))
         break;
      if (i != STILL_ACTIVE)
         break;

      /* give some CPU to subprocess */
      Sleep(10);

   } while (TRUE);

   CloseHandle(hChildStdinWrDup);
   CloseHandle(hChildStdinRd);
   CloseHandle(hChildStderrRd);
   CloseHandle(hChildStdoutRd);

   /* strip trailing CR/LF */
   while (strlen(result) > 0 && (result[strlen(result) - 1] == '\r' || result[strlen(result) - 1] == '\n'))
      result[strlen(result) - 1] = 0;

   return 1;
}
  66978   Thu Dec 16 19:20:20 2010 Reply Zbigniew Reszelazreszela@cells.esQuestionLinux2.8Re: how to retrieve attachment on execute new

Stefan Ritt wrote:

Zbigniew Reszela wrote:

Zbigniew Reszela wrote:

Hello all,

I have a problem with retrieving attachments of an entry on "Execute new" command. In the syntax of elodg.cfg it is: In addition the list of all attachments can be referred to via $<attachment>. Could anyone explain it a little bit more explicit, or attach an example?

Thank you in advance.

 

Hello again,

I have managed with problem by using $attachments. This provides me a list o paths to attachments. If it's the correct way to use it please change elogd.cfg syntax page.

Thanks a lot.

Yes, indeed there was a typo in the documentation, $attachments is the correct one. I changed that in the syntax page.

Hello Stefan,

first of all thanks for quick response.

However I encountered another problem, but to explain it well I need to tell you more what actually I want to do with these substitutions. 

So I would like to have a python script which on add new entry will create a new entry in another logbook with the same data (Only for certain attributes' values). That's why I need attachments.

These substitutions will be used as command line arguments of the script.

Since I started using $attachments, all the substitutions used before it, are passed twice? Without using $attachments substitution, it works fine - they are passed only once.

Furthermore I tested it without script, just passing them to a text file, and it seems that it really doesn't work well. Could you check that?

-------------------

Execute new = echo $message id '$long_name' '$System' '$Equipment' '$Subject' '$text' > /tmp/zzz_elog.log             WORKS GOOD

Execute new = echo $message id '$long_name' '$System' '$Equipment' '$Subject' '$text'  $attachments> /tmp/zzz_elog.log            DOESN'T WORK GOOD

------------------

Thank you a lot in advance.

 

  66979   Thu Dec 23 10:42:05 2010 Reply Stefan Rittstefan.ritt@psi.chQuestionLinux2.8Re: how to retrieve attachment on execute new

Zbigniew Reszela wrote:


Hello Stefan,

first of all thanks for quick response.

However I encountered another problem, but to explain it well I need to tell you more what actually I want to do with these substitutions. 

So I would like to have a python script which on add new entry will create a new entry in another logbook with the same data (Only for certain attributes' values). That's why I need attachments.

These substitutions will be used as command line arguments of the script.

Since I started using $attachments, all the substitutions used before it, are passed twice? Without using $attachments substitution, it works fine - they are passed only once.

Furthermore I tested it without script, just passing them to a text file, and it seems that it really doesn't work well. Could you check that?

-------------------

Execute new = echo $message id '$long_name' '$System' '$Equipment' '$Subject' '$text' > /tmp/zzz_elog.log             WORKS GOOD

Execute new = echo $message id '$long_name' '$System' '$Equipment' '$Subject' '$text'  $attachments> /tmp/zzz_elog.log            DOESN'T WORK GOOD

------------------

Thank you a lot in advance.

 

Thanks for reporting this bug. I fixed this in SVN revision  2348.

  66981   Fri Jan 7 08:37:49 2011 Reply Stefan Rittstefan.ritt@psi.chQuestionWindows2.8Re: Multiple Insances of eLog on the same machine

Behdad D wrote:

Hello,

Is it possible to run multiple instance of elog on the same windows box where each instance listens on a different port?

Thanks.

Behdad.

Sure. Just start with one subdirectory for each instance with a separate elogd.cfg file, where you specify a different port. Note however that there is also the concept of "top groups" (see documentation) which lets a single instance of elog look like several independent installations. 

  66986   Wed Jan 19 08:44:28 2011 Reply Stefan Rittstefan.ritt@psi.chQuestionWindows2.7.8-2280Re: Quick Filter does not work

Michael Dannmeyer wrote:

Hello,

i have a logbook with the following parameters for the Attribute "Typ":

[TEST1]
Options Typ = SDB{2}, Qualifizierung B.12.S227{4}, Qualifizierung PRO/REP{3}, Dokument zur Qualifizierung{2}, Prüf- und Wartungsvorschrift{2}, SOP ohne Change Request{2}, SOP mit Change Request{1}, Validierung PRO/REP{3}, Dokument zur Verifizierung{2}, Überprüfung und Verlängerung{2}, Spec.Sheet{2}, CoA (sofern nicht LIMS){2}, Änderungen Tg4.B07{5}, OOS (Plan/Bericht){3}, Transfer PRO/REP{3}, Studie PRO/REP{3}, Studie ohne Plan{2}, Anderes{2}
Quick filter = Date, Typ

If i choose an Entry from the "Typ" Quick Filter it shows me that there are no entries in the logbook but I'm shure that there are entries. 

Can you please help? I cannot see what's wrong.

Best Regards

Michael

 

I tried your configuration and it worked fine:

Capture001.png 

So can you try version 2.8.1 if that makes any difference. If not, can you send me your complete elogd.cfg, so that I can reproduce your problem.

- Stefan

  66987   Wed Jan 19 09:19:53 2011 Reply Michael Dannmeyermichael.dannmeyer@solvias.comQuestionWindows2.7.8-2280Re: Quick Filter does not work

Stefan Ritt wrote:

Michael Dannmeyer wrote:

Hello,

i have a logbook with the following parameters for the Attribute "Typ":

[TEST1]
Options Typ = SDB{2}, Qualifizierung B.12.S227{4}, Qualifizierung PRO/REP{3}, Dokument zur Qualifizierung{2}, Prüf- und Wartungsvorschrift{2}, SOP ohne Change Request{2}, SOP mit Change Request{1}, Validierung PRO/REP{3}, Dokument zur Verifizierung{2}, Überprüfung und Verlängerung{2}, Spec.Sheet{2}, CoA (sofern nicht LIMS){2}, Änderungen Tg4.B07{5}, OOS (Plan/Bericht){3}, Transfer PRO/REP{3}, Studie PRO/REP{3}, Studie ohne Plan{2}, Anderes{2}
Quick filter = Date, Typ

If i choose an Entry from the "Typ" Quick Filter it shows me that there are no entries in the logbook but I'm shure that there are entries. 

Can you please help? I cannot see what's wrong.

Best Regards

Michael

 

I tried your configuration and it worked fine:

Capture001.png 

So can you try version 2.8.1 if that makes any difference. If not, can you send me your complete elogd.cfg, so that I can reproduce your problem.

- Stefan

 I installed 2.81 (Elog-latest) but this Version did not work. I got Error 193: %1 is not a valid Win32 Application as I tried to start the service. So i will sent you the complete elogd.cfg via Mail.

Best regards

Michael 

  66989   Wed Jan 19 14:47:15 2011 Reply Stefan Rittstefan.ritt@psi.chBug reportLinux2.8.0-2313Re: elog command creates always UTF-8 encoded entries
> If I create an entry via the web-interface, the defined encoding of the browser is used.
> If I create an entry via "elog", it is always stored in UTF-8 encoding.
> For the text I can overcome that with HTML encoding, but for attribute values the encoding does not show properly.
> The only solution I found was to convert the whole logbook to UTF-8 encoding:
> 
>  define "charset=UTF-8" in elogd.cfg
>  iconv --from-code=ISO-8859-1 --to-code=UTF-8 elogd.cfg >tmp;mv tmp elogd.cfg
>  iconv --from-code=ISO-8859-1 --to-code=UTF-8 resources/eloglang.german >tmp;mv tmp resources/eloglang.german
> 
> Has anyone any idea why ISO8859-1 does not work for me?
> 
> Or can anyone advice me of an editor similar to NEdit that is capable to display UTF-8? :-)

I just tried it submitting to the Demo logbook:

https://midas.psi.ch/elogs/Linux+Demo/15

using some German Umlauts, and saw that it works fine. "elog" does not do any conversion, just submits the text as is. 
If your text is ISO-8859-1 encoded, it will be submitted as such, and your browser will correctly display it. Have you 
tried removing the "charset=UTF-8" from your elogd.cfg?
  66991   Wed Jan 19 16:10:58 2011 Reply Stefan Rittstefan.ritt@psi.chQuestionWindowsV2.8.Re: Modification aren't accepted

bob wrote:

hello,

At home, when I change the config *. cfg, the modifications are not taken in consideration

Have you got a idea ?

Thanks a lot !

Bob

Not really, you are the first one reporting this issue. Just some thoughts:

- Can you see the changes if you look at elogd.cfg with a text editor such as notepad?

- Some write protection of elogd.cfg

- Do you have more than one server running at the same time and changing the wrong one's config?

 

- Stefan 

ELOG V3.1.5-3fb85fa6