Demo Discussion
Forum Config Examples Contributions Vulnerabilities
  Discussion forum about ELOG, Page 322 of 808  Not logged in ELOG logo
New entries since:Thu Jan 1 01:00:00 1970
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