Demo Discussion
Forum Config Examples Contributions Vulnerabilities
  Discussion forum about ELOG, Page 354 of 806  Not logged in ELOG logo
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