Demo Discussion
Forum Config Examples Contributions Vulnerabilities
  Discussion forum about ELOG, Page 354 of 806  Not logged in ELOG logo
New entries since:Thu Jan 1 01:00:00 1970
ID Date Icon Author Author Email Category OS ELOG Version Subject
  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.

 

  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;
}
  66976   Wed Dec 15 08:49:30 2010 Reply Stefan Rittstefan.ritt@psi.chQuestionLinux2.8Re: how to retrieve attachment on execute new

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.

  66975   Tue Dec 14 20:16:46 2010 Reply Arno TeunisseA.teeling3@chello.nlQuestionWindows280-5Re: How can Elog start automatically on Windows Server 2008 on startup ?

Stefan Ritt wrote:

Philipp W. wrote:

 Hi all,

i have a question... How can i manage it that elog starts automatically on windows startup ? I  always need to type "elogd -p 85" in the console that it starts ...

Can anyone help me ? =)

 

Thanks

 

SenoX

If you install elog with the installer from the distribution, it installs elog as a windows service, which is started automatically when windows starts. 

 Hello
When the install did not work properly  ( I've never had that problem ) you can start the elog service with the SC.EXE command like this :

sc.exe create Elog binpath= "\"c:\program files\elog\elogd.exe\" -D -c \"c:\program files\elog\elogd.cfg\"" displayname= "Elogbook services" start= auto type= own

Please notice the spaces after the ( they are required )

You can now use :
net start elog
and
net stop elog

to start the service without a reboot.

Maybe this helps.

 

  66974   Tue Dec 14 18:43:38 2010 Reply Zbigniew Reszelazreszela@cells.esQuestionLinux2.8Re: how to retrieve attachment on execute new

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.

  66973   Tue Dec 14 10:37:41 2010 Question Zbigniew Reszelazreszela@cells.esQuestionLinux2.8how to retrieve attachment on execute new

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.

 

  66972   Mon Dec 13 20:59:07 2010 Question Diego Obradors Camposdiego.obradors.campos@cern.chQuestionWindows2.8elog as a service in windows not detect Imagemagick

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!

 

  66971   Tue Dec 7 09:40:19 2010 Reply Stefan Rittstefan.ritt@psi.chQuestionLinux2.8.0Re: Adding attachment to an existing entry

Stefan Ritt wrote:

 

there is however now the problem that one has to click Submit twice to make it work

I fixed this problem in the current SVN revision, so now a single click to the Submit button is enough again. 

ELOG V3.1.5-3fb85fa6