chiark / gitweb /
relax config file checking for non-server programs
[disorder] / server / server.c
index cb7714e16b2ac82ef5d496fd7d508bb7f1133d8a..6ee11c962c221daa067e0fa53563fa62a547a6cb 100644 (file)
@@ -391,7 +391,8 @@ static int c_user(struct conn *c,
     sink_writes(ev_writer_sink(c->w), "530 authentication failed\n");
     return 1;
   }
-  res = authhash(c->nonce, sizeof c->nonce, config->allow.s[n].s[1]);
+  res = authhash(c->nonce, sizeof c->nonce, config->allow.s[n].s[1],
+                config->authorization_algorithm);
   if(wideopen || (res && !strcmp(res, vec[1]))) {
     c->who = vec[0];
     /* currently we only bother logging remote connections */
@@ -759,6 +760,12 @@ static int c_log(struct conn *c,
   sink_printf(ev_writer_sink(c->w), "%"PRIxMAX" state %s\n",
              (uintmax_t)now, 
              paused ? "pause" : "resume");
+  if(playing)
+    sink_printf(ev_writer_sink(c->w), "%"PRIxMAX" state playing\n",
+               (uintmax_t)now);
+  /* Initial volume */
+  sink_printf(ev_writer_sink(c->w), "%"PRIxMAX" volume %d %d\n",
+             (uintmax_t)now, volume_left, volume_right);
   c->lo = xmalloc(sizeof *c->lo);
   c->lo->fn = logclient;
   c->lo->user = c;
@@ -1078,7 +1085,15 @@ static int listen_callback(ev_source *ev,
   c->reader = reader_callback;
   c->l = l;
   gcry_randomize(c->nonce, sizeof c->nonce, GCRY_STRONG_RANDOM);
-  sink_printf(ev_writer_sink(c->w), "231 %s\n", hex(c->nonce, sizeof c->nonce));
+  if(!strcmp(config->authorization_algorithm, "sha1")
+     || !strcmp(config->authorization_algorithm, "SHA1")) {
+    sink_printf(ev_writer_sink(c->w), "231 %s\n",
+               hex(c->nonce, sizeof c->nonce));
+  } else {
+    sink_printf(ev_writer_sink(c->w), "231 %s %s\n",
+               config->authorization_algorithm,
+               hex(c->nonce, sizeof c->nonce));
+  }
   return 0;
 }