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 */
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;
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;
}