mirror of
https://github.com/SuperBFG7/ympd
synced 2024-12-23 01:20:27 +00:00
Merge pull request #3 from SuperBFG7/digest
added option for htdigest authentication
This commit is contained in:
commit
2dc771b9c4
@ -28,6 +28,8 @@ Run flags
|
||||
```
|
||||
Usage: ./ympd [OPTION]...
|
||||
|
||||
-d, --digest <htdigest> path to htdigest file for authorization
|
||||
(realm ympd) [no authorization]
|
||||
-h, --host <host> connect to mpd at host [localhost]
|
||||
-p, --port <port> connect to mpd at port [6600]
|
||||
-w, --webport [ip:]<port> listen interface/port for webserver [8080]
|
||||
|
24
src/ympd.c
24
src/ympd.c
@ -38,7 +38,12 @@ void bye()
|
||||
force_exit = 1;
|
||||
}
|
||||
|
||||
char *gpass = NULL;
|
||||
|
||||
static int server_callback(struct mg_connection *c, enum mg_event ev) {
|
||||
int result = MG_FALSE;
|
||||
FILE *fp = NULL;
|
||||
|
||||
switch(ev) {
|
||||
case MG_CLOSE:
|
||||
mpd_close_handler(c);
|
||||
@ -57,7 +62,15 @@ static int server_callback(struct mg_connection *c, enum mg_event ev) {
|
||||
return callback_http(c);
|
||||
#endif
|
||||
case MG_AUTH:
|
||||
return MG_TRUE;
|
||||
if ( gpass == NULL )
|
||||
return MG_TRUE;
|
||||
else {
|
||||
if ( (fp = fopen(gpass, "r")) != NULL ) {
|
||||
result = mg_authorize_digest(c, fp);
|
||||
fclose(fp);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
default:
|
||||
return MG_FALSE;
|
||||
}
|
||||
@ -77,10 +90,12 @@ int main(int argc, char **argv)
|
||||
mg_set_option(server, "document_root", SRC_PATH);
|
||||
#endif
|
||||
|
||||
mg_set_option(server, "auth_domain", "ympd");
|
||||
mpd.port = 6600;
|
||||
strcpy(mpd.host, "127.0.0.1");
|
||||
|
||||
static struct option long_options[] = {
|
||||
{"digest", optional_argument, 0, 'd'},
|
||||
{"host", required_argument, 0, 'h'},
|
||||
{"port", required_argument, 0, 'p'},
|
||||
{"webport", required_argument, 0, 'w'},
|
||||
@ -90,9 +105,12 @@ int main(int argc, char **argv)
|
||||
{0, 0, 0, 0 }
|
||||
};
|
||||
|
||||
while((n = getopt_long(argc, argv, "h:p:w:u:v",
|
||||
while((n = getopt_long(argc, argv, "d:h:p:w:u:v",
|
||||
long_options, &option_index)) != -1) {
|
||||
switch (n) {
|
||||
case 'd':
|
||||
gpass = strdup(optarg);
|
||||
break;
|
||||
case 'h':
|
||||
strncpy(mpd.host, optarg, sizeof(mpd.host));
|
||||
break;
|
||||
@ -114,6 +132,8 @@ int main(int argc, char **argv)
|
||||
break;
|
||||
default:
|
||||
fprintf(stderr, "Usage: %s [OPTION]...\n\n"
|
||||
" -d, --digest <htdigest>\tpath to htdigest file for authorization\n"
|
||||
" \t(realm ympd) [no authorization]\n"
|
||||
" -h, --host <host>\t\tconnect to mpd at host [localhost]\n"
|
||||
" -p, --port <port>\t\tconnect to mpd at port [6600]\n"
|
||||
" -w, --webport [ip:]<port>\tlisten interface/port for webserver [8080]\n"
|
||||
|
Loading…
Reference in New Issue
Block a user