mirror of
https://github.com/owntone/owntone-server.git
synced 2025-04-15 00:35:55 -04:00
fix web page merges
This commit is contained in:
parent
cf2c6b02c8
commit
b30c63a44b
@ -38,8 +38,9 @@
|
|||||||
/*
|
/*
|
||||||
* Forwards
|
* Forwards
|
||||||
*/
|
*/
|
||||||
void config_emit_string(void *value,WS_CONNINFO *pwsc);
|
void config_emit_string(WS_CONNINFO *pwsc, void *value);
|
||||||
void config_emit_int(void *value,WS_CONNINFO *pwsc);
|
void config_emit_literal(WS_CONNINFO *pwsc, void *value);
|
||||||
|
void config_emit_int(WS_CONNINFO *pwsc, void *value);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Defines
|
* Defines
|
||||||
@ -54,7 +55,7 @@ typedef struct tag_configelement {
|
|||||||
int type;
|
int type;
|
||||||
char *name;
|
char *name;
|
||||||
void *var;
|
void *var;
|
||||||
void (*emit)(void *,WS_CONNINFO *);
|
void (*emit)(WS_CONNINFO *, void *);
|
||||||
} CONFIGELEMENT;
|
} CONFIGELEMENT;
|
||||||
|
|
||||||
CONFIGELEMENT config_elements[] = {
|
CONFIGELEMENT config_elements[] = {
|
||||||
@ -62,6 +63,8 @@ CONFIGELEMENT config_elements[] = {
|
|||||||
{ 1,1,0,CONFIG_TYPE_INT,"port",(void*)&config.port,config_emit_int },
|
{ 1,1,0,CONFIG_TYPE_INT,"port",(void*)&config.port,config_emit_int },
|
||||||
{ 1,1,0,CONFIG_TYPE_STRING,"admin_pw",(void*)&config.adminpassword,config_emit_string },
|
{ 1,1,0,CONFIG_TYPE_STRING,"admin_pw",(void*)&config.adminpassword,config_emit_string },
|
||||||
{ 1,1,0,CONFIG_TYPE_STRING,"mp3_dir",(void*)&config.mp3dir,config_emit_string },
|
{ 1,1,0,CONFIG_TYPE_STRING,"mp3_dir",(void*)&config.mp3dir,config_emit_string },
|
||||||
|
{ 0,0,0,CONFIG_TYPE_STRING,"release",(void*)VERSION,config_emit_literal },
|
||||||
|
{ 0,0,0,CONFIG_TYPE_STRING,"package",(void*)PACKAGE,config_emit_literal },
|
||||||
{ -1,1,0,CONFIG_TYPE_STRING,NULL,NULL,NULL }
|
{ -1,1,0,CONFIG_TYPE_STRING,NULL,NULL,NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -127,7 +130,7 @@ int config_read(char *file) {
|
|||||||
|
|
||||||
switch(pce->type) {
|
switch(pce->type) {
|
||||||
case CONFIG_TYPE_STRING:
|
case CONFIG_TYPE_STRING:
|
||||||
pce->var = (void*)strdup(value);
|
*((char **)(pce->var)) = (void*)strdup(value);
|
||||||
break;
|
break;
|
||||||
case CONFIG_TYPE_INT:
|
case CONFIG_TYPE_INT:
|
||||||
*((int*)(pce->var)) = atoi(value);
|
*((int*)(pce->var)) = atoi(value);
|
||||||
@ -148,6 +151,11 @@ int config_read(char *file) {
|
|||||||
|
|
||||||
fclose(fin);
|
fclose(fin);
|
||||||
|
|
||||||
|
/* fix the fullpath of the web root */
|
||||||
|
realpath(config.web_root,path_buffer);
|
||||||
|
free(config.web_root);
|
||||||
|
config.web_root=strdup(path_buffer);
|
||||||
|
|
||||||
/* check to see if all required elements are satisfied */
|
/* check to see if all required elements are satisfied */
|
||||||
pce=config_elements;
|
pce=config_elements;
|
||||||
err=0;
|
err=0;
|
||||||
@ -156,6 +164,17 @@ int config_read(char *file) {
|
|||||||
fprintf(stderr,"Required config entry '%s' not specified\n",pce->name);
|
fprintf(stderr,"Required config entry '%s' not specified\n",pce->name);
|
||||||
err=-1;
|
err=-1;
|
||||||
}
|
}
|
||||||
|
if((pce->config_element) && (pce->changed)) {
|
||||||
|
switch(pce->type) {
|
||||||
|
case CONFIG_TYPE_STRING:
|
||||||
|
DPRINTF(ERR_INFO,"%s: %s\n",pce->name,*((char**)pce->var));
|
||||||
|
break;
|
||||||
|
case CONFIG_TYPE_INT:
|
||||||
|
DPRINTF(ERR_INFO,"%s: %d\n",pce->name,*((int*)pce->var));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pce->changed=0;
|
pce->changed=0;
|
||||||
pce++;
|
pce++;
|
||||||
}
|
}
|
||||||
@ -187,6 +206,9 @@ void config_handler(WS_CONNINFO *pwsc) {
|
|||||||
int in_arg;
|
int in_arg;
|
||||||
char *argptr;
|
char *argptr;
|
||||||
char next;
|
char next;
|
||||||
|
CONFIGELEMENT *pce;
|
||||||
|
|
||||||
|
DPRINTF(ERR_DEBUG,"Entereing config_handler\n");
|
||||||
|
|
||||||
pwsc->close=1;
|
pwsc->close=1;
|
||||||
ws_addresponseheader(pwsc,"Connection","close");
|
ws_addresponseheader(pwsc,"Connection","close");
|
||||||
@ -249,18 +271,20 @@ void config_handler(WS_CONNINFO *pwsc) {
|
|||||||
if(in_arg) {
|
if(in_arg) {
|
||||||
if(next == '@') {
|
if(next == '@') {
|
||||||
in_arg=0;
|
in_arg=0;
|
||||||
if(strcasecmp(argbuffer,"WEB_ROOT") == 0) {
|
|
||||||
ws_writefd(pwsc,"%s",config.web_root);
|
DPRINTF(ERR_DEBUG,"Got directive %s\n",argbuffer);
|
||||||
} else if (strcasecmp(argbuffer,"PORT") == 0) {
|
|
||||||
ws_writefd(pwsc,"%d",config.port);
|
pce=config_elements;
|
||||||
} else if (strcasecmp(argbuffer,"ADMINPW") == 0) {
|
while(pce->config_element != -1) {
|
||||||
ws_writefd(pwsc,"%s",config.adminpassword);
|
if(strcasecmp(argbuffer,pce->name) == 0) {
|
||||||
} else if (strcasecmp(argbuffer,"RELEASE") == 0) {
|
pce->emit(pwsc, pce->var);
|
||||||
ws_writefd(pwsc,"mt-daapd %s\n",VERSION);
|
break;
|
||||||
} else if (strcasecmp(argbuffer,"MP3DIR") == 0) {
|
}
|
||||||
ws_writefd(pwsc,"%s",config.mp3dir);
|
pce++;
|
||||||
} else {
|
}
|
||||||
ws_writefd(pwsc,"@ERR@");
|
|
||||||
|
if(pce->config_element == -1) { /* bad subst */
|
||||||
|
ws_writefd(pwsc,"@%s@",argbuffer);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if((argptr - argbuffer) < (sizeof(argbuffer)-1))
|
if((argptr - argbuffer) < (sizeof(argbuffer)-1))
|
||||||
@ -284,6 +308,8 @@ void config_handler(WS_CONNINFO *pwsc) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int config_auth(char *user, char *password) {
|
int config_auth(char *user, char *password) {
|
||||||
|
if((!password)||(!config.adminpassword))
|
||||||
|
return 0;
|
||||||
return !strcmp(password,config.adminpassword);
|
return !strcmp(password,config.adminpassword);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -293,8 +319,17 @@ int config_auth(char *user, char *password) {
|
|||||||
*
|
*
|
||||||
* write a simple string value to the connection
|
* write a simple string value to the connection
|
||||||
*/
|
*/
|
||||||
void config_emit_string(void *value,WS_CONNINFO *pwsc) {
|
void config_emit_string(WS_CONNINFO *pwsc, void *value) {
|
||||||
ws_writefd(pwsc,"%s",value);
|
ws_writefd(pwsc,"%s",*((char**)value));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* config_emit_literal
|
||||||
|
*
|
||||||
|
* Emit a regular char *
|
||||||
|
*/
|
||||||
|
void config_emit_literal(WS_CONNINFO *pwsc, void *value) {
|
||||||
|
ws_writefd(pwsc,"%s",(char*)value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -303,7 +338,7 @@ void config_emit_string(void *value,WS_CONNINFO *pwsc) {
|
|||||||
*
|
*
|
||||||
* write a simple int value to the connection
|
* write a simple int value to the connection
|
||||||
*/
|
*/
|
||||||
void config_emit_int(void *value,WS_CONNINFO *pwsc) {
|
void config_emit_int(WS_CONNINFO *pwsc, void *value) {
|
||||||
ws_writefd(pwsc,"%d",value);
|
ws_writefd(pwsc,"%d",*((int*)value));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user