Demo Discussion
Forum Config Examples Contributions Vulnerabilities
  Discussion forum about ELOG, Page 383 of 808  Not logged in ELOG logo
ID Date Icon Author Author Email Category OS ELOG Versiondown Subject
  66918   Mon Oct 11 10:27:26 2010 Entry Jianglai Liujianglai.liu@sjtu.edu.cnQuestionLinux2.8.0automated email notification did not work for me

Hi,

I am setting up an elog to organize my lab activities. I installed elog 2.8.0 on the latest CentOS 5.5, 32 bit. I got into trouble setting up the automated email notification.

According to the elog manual, I setup the smtp setting in the elogd.cfg as follows:

SMTP host = smtp.gmail.com
SMTP username = jianglai.liu
 

I then used "elogd -t" to encode the password into the configuration file.

But when I submit an entry, I always received: "Error sending Email via "smtp.gmail.com": 5.7.0 Must issue a STARTTLS command first. y17sm867489wfd.15"

If I switched to use my university email servers, similar things happened.

SMTP host = smtp.sjtu.edu.cn
SMTP username = jianglai.liu

I got "Error sending Email via "smtp.sjtu.edu.cn": 5.7.8 Error: authentication failed: another step is needed in authentication"

I also switched to use one of my old work server

SMTP host = smtp-server.its.caltech.edu
SMTP username = jliu

and ended up with the same error message.

I did a google search on this without much progress. I would appreciate it very much if someone could shed light on how do I fix this.

Thanks much!

  66921   Wed Oct 27 23:43:37 2010 Question Morion Blackmorion.estariol@gmail.comQuestionOther2.8.0Can anyone help compile ELog 2.8.0 on SunOS 5.11?

 I have server with SunOS 5.11:

uname -a

SunOS *** 5.11 snv_134 i86pc i386 i86pc

 

when I try to compile ELog I get error:

gmake

gcc  -DHAVE_SSL -w -c -o crypt.o src/crypt.c

gcc  -DHAVE_SSL -I../mxml -o elog src/elog.c crypt.o -lsocket -lnsl -lssl

Undefined                       first referenced

 symbol                             in file

MAX                                 crypt.o

MIN                                 crypt.o

mempcpy                             crypt.o

_ast_strtoul                        crypt.o

_ast_realloc                        crypt.o

ld: fatal: symbol referencing errors. No output written to elog

collect2: ld returned 1 exit status

gmake: *** [elog] Error 1

 
 
Can anyone help to compile Elog?

  66938   Tue Nov 16 10:00:48 2010 Reply Stefan Rittstefan.ritt@psi.chQuestionOther2.8.0Re: Can anyone help compile ELog 2.8.0 on SunOS 5.11?

Morion Black wrote:

 I have server with SunOS 5.11:

 

uname -a

SunOS *** 5.11 snv_134 i86pc i386 i86pc

 

when I try to compile ELog I get error:

 

gmake

gcc  -DHAVE_SSL -w -c -o crypt.o src/crypt.c

gcc  -DHAVE_SSL -I../mxml -o elog src/elog.c crypt.o -lsocket -lnsl -lssl

Undefined                       first referenced

 symbol                             in file

MAX                                 crypt.o

MIN                                 crypt.o

mempcpy                             crypt.o

_ast_strtoul                        crypt.o

_ast_realloc                        crypt.o

ld: fatal: symbol referencing errors. No output written to elog

collect2: ld returned 1 exit status

gmake: *** [elog] Error 1

 
 
Can anyone help to compile Elog?

 

 

The crypt.c file is not from me, so there might be some issues on other OSes. I defined now at least MIN/MAX by hand, and also removed mempcpy. The new version is attached. Can you try again to compile it? The strtoul and realloc are nomal C functions, maybe you have to add some other libraries for linking, but I'm not an expert for SunOS. 

Attachment 1: crypt.c
/* SHA256-based Unix crypt implementation.
   Released into the Public Domain by Ulrich Drepper <drepper@redhat.com>.
   Adapted for MS Windows by Stefan Ritt <stefan.ritt@psi.ch> 
   $Id: crypt.c 2334 2010-11-16 08:59:45Z ritt $ */

#ifdef _MSC_VER
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define __alignof__(x) sizeof(x)
#define alloca(x) malloc(x)
#define ERANGE 34

typedef unsigned int uint32_t;
#else
#include <errno.h>
#include <limits.h>
#include <stdint.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/param.h>
#include <sys/types.h>
#endif

#ifndef MAX
#define MAX(x,y) ((x)>(y)?(x):(y))
#define MIN(x,y) ((x)<(y)?(x):(y))
#endif
      
/* Structure to save state of computation between the single steps.  */
struct sha256_ctx {
   uint32_t H[8];

   uint32_t total[2];
   uint32_t buflen;
   char buffer[128];            /* NB: always correctly aligned for uint32_t.  */
};


#if __BYTE_ORDER == __LITTLE_ENDIAN
# define SWAP(n) \
    (((n) << 24) | (((n) & 0xff00) << 8) | (((n) >> 8) & 0xff00) | ((n) >> 24))
#else
# define SWAP(n) (n)
#endif


/* This array contains the bytes used to pad the buffer to the next
   64-byte boundary.  (FIPS 180-2:5.1.1)  */
static const unsigned char fillbuf[64] = { 0x80, 0 /* , 0, 0, ...  */  };


/* Constants for SHA256 from FIPS 180-2:4.2.2.  */
static const uint32_t K[64] = {
   0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
   0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
   0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
   0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
   0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
   0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
   0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
   0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
   0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
   0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
   0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
   0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
   0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
   0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
   0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
   0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
};


/* Process LEN bytes of BUFFER, accumulating context into CTX.
   It is assumed that LEN % 64 == 0.  */
static void sha256_process_block(const void *buffer, size_t len, struct sha256_ctx *ctx)
{
   const uint32_t *words = buffer;
   size_t nwords = len / sizeof(uint32_t);
   uint32_t a = ctx->H[0];
   uint32_t b = ctx->H[1];
   uint32_t c = ctx->H[2];
   uint32_t d = ctx->H[3];
   uint32_t e = ctx->H[4];
   uint32_t f = ctx->H[5];
   uint32_t g = ctx->H[6];
   uint32_t h = ctx->H[7];

   /* First increment the byte count.  FIPS 180-2 specifies the possible
      length of the file up to 2^64 bits.  Here we only compute the
      number of bytes.  Do a double word increment.  */
   ctx->total[0] += len;
   if (ctx->total[0] < (int) len)
      ++ctx->total[1];

   /* Process all bytes in the buffer with 64 bytes in each round of
      the loop.  */
   while (nwords > 0) {
      uint32_t W[64];
      unsigned int t;
      uint32_t a_save = a;
      uint32_t b_save = b;
      uint32_t c_save = c;
      uint32_t d_save = d;
      uint32_t e_save = e;
      uint32_t f_save = f;
      uint32_t g_save = g;
      uint32_t h_save = h;

      /* Operators defined in FIPS 180-2:4.1.2.  */
#define Ch(x, y, z) ((x & y) ^ (~x & z))
#define Maj(x, y, z) ((x & y) ^ (x & z) ^ (y & z))
#define S0(x) (CYCLIC (x, 2) ^ CYCLIC (x, 13) ^ CYCLIC (x, 22))
#define S1(x) (CYCLIC (x, 6) ^ CYCLIC (x, 11) ^ CYCLIC (x, 25))
#define R0(x) (CYCLIC (x, 7) ^ CYCLIC (x, 18) ^ (x >> 3))
#define R1(x) (CYCLIC (x, 17) ^ CYCLIC (x, 19) ^ (x >> 10))

      /* It is unfortunate that C does not provide an operator for
         cyclic rotation.  Hope the C compiler is smart enough.  */
#define CYCLIC(w, s) ((w >> s) | (w << (32 - s)))

      /* Compute the message schedule according to FIPS 180-2:6.2.2 step 2.  */
      for (t = 0; t < 16; ++t) {
         W[t] = SWAP(*words);
         ++words;
      }
      for (t = 16; t < 64; ++t)
         W[t] = R1(W[t - 2]) + W[t - 7] + R0(W[t - 15]) + W[t - 16];

      /* The actual computation according to FIPS 180-2:6.2.2 step 3.  */
      for (t = 0; t < 64; ++t) {
         uint32_t T1 = h + S1(e) + Ch(e, f, g) + K[t] + W[t];
         uint32_t T2 = S0(a) + Maj(a, b, c);
         h = g;
         g = f;
         f = e;
         e = d + T1;
         d = c;
         c = b;
         b = a;
         a = T1 + T2;
      }

      /* Add the starting values of the context according to FIPS 180-2:6.2.2
         step 4.  */
      a += a_save;
      b += b_save;
      c += c_save;
      d += d_save;
      e += e_save;
      f += f_save;
      g += g_save;
      h += h_save;

      /* Prepare for the next round.  */
      nwords -= 16;
   }

   /* Put checksum in context given as argument.  */
   ctx->H[0] = a;
   ctx->H[1] = b;
   ctx->H[2] = c;
   ctx->H[3] = d;
   ctx->H[4] = e;
   ctx->H[5] = f;
   ctx->H[6] = g;
   ctx->H[7] = h;
}


/* Initialize structure containing state of computation.
   (FIPS 180-2:5.3.2)  */
static void sha256_init_ctx(struct sha256_ctx *ctx)
{
   ctx->H[0] = 0x6a09e667;
   ctx->H[1] = 0xbb67ae85;
   ctx->H[2] = 0x3c6ef372;
   ctx->H[3] = 0xa54ff53a;
   ctx->H[4] = 0x510e527f;
   ctx->H[5] = 0x9b05688c;
   ctx->H[6] = 0x1f83d9ab;
   ctx->H[7] = 0x5be0cd19;

   ctx->total[0] = ctx->total[1] = 0;
   ctx->buflen = 0;
}


/* Process the remaining bytes in the internal buffer and the usual
   prolog according to the standard and write the result to RESBUF.

   IMPORTANT: On some systems it is required that RESBUF is correctly
   aligned for a 32 bits value.  */
static void *sha256_finish_ctx(struct sha256_ctx *ctx, void *resbuf)
{
   /* Take yet unprocessed bytes into account.  */
   uint32_t bytes = ctx->buflen;
   size_t pad;
   unsigned int i;

   /* Now count remaining bytes.  */
   ctx->total[0] += bytes;
   if (ctx->total[0] < bytes)
      ++ctx->total[1];

   pad = bytes >= 56 ? 64 + 56 - bytes : 56 - bytes;
   memcpy(&ctx->buffer[bytes], fillbuf, pad);

   /* Put the 64-bit file length in *bits* at the end of the buffer.  */
   *(uint32_t *) & ctx->buffer[bytes + pad + 4] = SWAP(ctx->total[0] << 3);
   *(uint32_t *) & ctx->buffer[bytes + pad] = SWAP((ctx->total[1] << 3) | (ctx->total[0] >> 29));

   /* Process last bytes.  */
   sha256_process_block(ctx->buffer, bytes + pad + 8, ctx);

   /* Put result from CTX in first 32 bytes following RESBUF.  */
   for (i = 0; i < 8; ++i)
      ((uint32_t *) resbuf)[i] = SWAP(ctx->H[i]);

   return resbuf;
}


static void sha256_process_bytes(const void *buffer, size_t len, struct sha256_ctx *ctx)
{
   /* When we already have some bits in our internal buffer concatenate
      both inputs first.  */
   if (ctx->buflen != 0) {
      size_t left_over = ctx->buflen;
      size_t add = 128 - left_over > len ? len : 128 - left_over;

      memcpy(&ctx->buffer[left_over], buffer, add);
      ctx->buflen += add;

      if (ctx->buflen > 64) {
         sha256_process_block(ctx->buffer, ctx->buflen & ~63, ctx);

         ctx->buflen &= 63;
         /* The regions in the following copy operation cannot overlap.  */
         memcpy(ctx->buffer, &ctx->buffer[(left_over + add) & ~63], ctx->buflen);
      }

      buffer = (const char *) buffer + add;
      len -= add;
   }

   /* Process available complete blocks.  */
   if (len >= 64) {
/* To check alignment gcc has an appropriate operator.  Other
   compilers don't.  */
#if __GNUC__ >= 2
# define UNALIGNED_P(p) (((uintptr_t) p) % __alignof__ (uint32_t) != 0)
#else
# define UNALIGNED_P(p) (((uintptr_t) p) % sizeof (uint32_t) != 0)
#endif
      if (UNALIGNED_P(buffer))
         while (len > 64) {
            sha256_process_block(memcpy(ctx->buffer, buffer, 64), 64, ctx);
            buffer = (const char *) buffer + 64;
            len -= 64;
      } else {
         sha256_process_block(buffer, len & ~63, ctx);
         buffer = (const char *) buffer + (len & ~63);
         len &= 63;
      }
   }

   /* Move remaining bytes into internal buffer.  */
   if (len > 0) {
      size_t left_over = ctx->buflen;

      memcpy(&ctx->buffer[left_over], buffer, len);
      left_over += len;
      if (left_over >= 64) {
         sha256_process_block(ctx->buffer, 64, ctx);
         left_over -= 64;
         memcpy(ctx->buffer, &ctx->buffer[64], left_over);
      }
      ctx->buflen = left_over;
   }
}


/* Define our magic string to mark salt for SHA256 "encryption"
   replacement.  */
static const char sha256_salt_prefix[] = "$5$";

/* Prefix for optional rounds specification.  */
static const char sha256_rounds_prefix[] = "rounds=";

/* Maximum salt string length.  */
#define SALT_LEN_MAX 16
/* Default number of rounds if not explicitly specified.  */
#define ROUNDS_DEFAULT 5000
/* Minimum number of rounds.  */
#define ROUNDS_MIN 1000
/* Maximum number of rounds.  */
... 275 more lines ...
  66942   Tue Nov 16 16:33:52 2010 Reply Stefan Rittstefan.ritt@psi.chQuestionLinux2.8.0Re: automated email notification did not work for me

Jianglai Liu wrote:

Hi,

I am setting up an elog to organize my lab activities. I installed elog 2.8.0 on the latest CentOS 5.5, 32 bit. I got into trouble setting up the automated email notification.

According to the elog manual, I setup the smtp setting in the elogd.cfg as follows:

SMTP host = smtp.gmail.com
SMTP username = jianglai.liu
 

I then used "elogd -t" to encode the password into the configuration file.

But when I submit an entry, I always received: "Error sending Email via "smtp.gmail.com": 5.7.0 Must issue a STARTTLS command first. y17sm867489wfd.15"

If I switched to use my university email servers, similar things happened.

SMTP host = smtp.sjtu.edu.cn
SMTP username = jianglai.liu

I got "Error sending Email via "smtp.sjtu.edu.cn": 5.7.8 Error: authentication failed: another step is needed in authentication"

I also switched to use one of my old work server

SMTP host = smtp-server.its.caltech.edu
SMTP username = jliu

and ended up with the same error message.

I did a google search on this without much progress. I would appreciate it very much if someone could shed light on how do I fix this.

Thanks much!

elog only supports basic authentication, not TLS or SSL. These days more and more SMTP servers require this however. I will put this on my to-do list. In meantime you can maybe configure your CentOS machine acting as an SMTP server, and then not using TLS or SSL there. That's what most people do.

  66946   Wed Nov 24 11:55:57 2010 Angy Christoph Kukulieskukulies@physik.rwth-aachen.deCommentLinux2.8.0Forum quirks

I just got a Proxy error from your site: When I clicked on the change password link that was sent to my email, I entered my new password (which was the same that I believed to have used before) and after submitting this form, I got the Proxy error. Also I find that I can never login with my once set password. Is it the Email or username on gives in the login field? Other quirk: I never can preview my post. When I click preview, nothing happens. Submitting worked today but yesterday I was unable to submit a post. I clicked several times on the submit button and nothing happened. -- Christoph

  66949   Wed Nov 24 15:06:31 2010 Question Mariusz StakowskiMariusz.Stakowski@asseco.plQuestionLinux2.8.0New password file problem

Hello,

I'm new to elog. I've installed it under Slackware 11. Everything worked smoothly until I wanted to establish access control. I followed the steps described under Access control heading in Syntax of elog.cfg chapter. I specified a new password file name and the following steps with no problem. After having created a new user I stopped elogd  and added  Admin user to config file. And here is my problem - each time I want to login to elog, I get "Invalid user name or password!" message. The meaning of it is obvious. So I have repeated all the steps several times. Of course I paid attention to enter user name and password correctly but I can't get rid of this message. For sure I making something wrong, but what it is ?

Here is part of my elogd.cfg:

[global]
Port=8080
Logfile = elogd.log
Logging level = 3
Password file = passwd
Self register = 1
Admin user = eloga
charset = utf-8
 

Here is what happens after elog restart:

elogd 2.8.0 built Oct 22 2010, 11:04:31 revision 2313
Falling back to default group "elog"
Falling back to default user "elog"
Falling back to default group "elog"
Falling back to default user "elog"
ImageMagick detected
Indexing logbooks ... Converting password file for logbook "Demo" to new encoding ... ok
done
Server listening on port 8080 ...

 

Here is the password file :

<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- created by MXML on Wed Nov 24 13:13:43 2010 -->
<list>
  <user>
    <name>eloga</name>
    <password encoding="SHA256">vnpfrWa8wmxFsLFjlY/poXdz3wh6RLt9BT.D1O52Xl9</password>
    <full_name>Mariusz Stakowski</full_name>
    <last_logout>0</last_logout>
    <last_activity>Wed Nov 24 13:13:43 2010</last_activity>
    <email>Mariusz.Stakowski@asseco.pl</email>
    <email_notify/>
  </user>
</list>

And here is what I found in elogd.log file:

 

24-Nov-2010 13:50:06 [] Server listening on port 8080 ...
24-Nov-2010 13:50:53 [eloga@xx.xx.xx.xx] {Demo} LOGIN user "eloga" (attempt)

 

Could somebody help me please ?

Best regards

Mariusz Stakowski


 

 

  66950   Wed Nov 24 15:14:29 2010 Reply Stefan Rittstefan.ritt@psi.chQuestionLinux2.8.0Re: New password file problem

Mariusz Stakowski wrote:

Hello,

I'm new to elog. I've installed it under Slackware 11. Everything worked smoothly until I wanted to establish access control. I followed the steps described under Access control heading in Syntax of elog.cfg chapter. I specified a new password file name and the following steps with no problem. After having created a new user I stopped elogd  and added  Admin user to config file. And here is my problem - each time I want to login to elog, I get "Invalid user name or password!" message. The meaning of it is obvious. So I have repeated all the steps several times. Of course I paid attention to enter user name and password correctly but I can't get rid of this message. For sure I making something wrong, but what it is ? 

Can you try the current SVN version?

http://savannah.psi.ch/websvn/filedetails.php?repname=elog&path=/trunk/src/elogd.c&rev=0&sc=0

 

There has been some issues with the password encoding, maybe this is fixed now. 

  66951   Wed Nov 24 16:30:31 2010 Reply Christoph Kukulieskukulies@physik.rwth-aachen.deCommentLinux2.8.0Re: Forum quirks

Christoph Kukulies wrote:

I just got a Proxy error from your site: When I clicked on the change password link that was sent to my email, I entered my new password (which was the same that I believed to have used before) and after submitting this form, I got the Proxy error. Also I find that I can never login with my once set password. Is it the Email or username on gives in the login field? Other quirk: I never can preview my post. When I click preview, nothing happens. Submitting worked today but yesterday I was unable to submit a post. I clicked several times on the submit button and nothing happened. -- Christoph

 It seems that the submit/preview problem is solved. Submit/Preview buttons at the bottom of the page seem to work on the attachments only.

Sorry for the oversight on my side.

 

--

Christoph

 

ELOG V3.1.5-3fb85fa6