Make default server name based on hostname, fixing #111

This commit is contained in:
Ron Pedde 2006-05-24 03:53:22 +00:00
parent 510fbde5b8
commit 80f7c87567
5 changed files with 53 additions and 6 deletions

View File

@ -37,6 +37,10 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
#ifdef HAVE_SYS_PARAM_H #ifdef HAVE_SYS_PARAM_H
# include <sys/param.h> # include <sys/param.h>
#endif #endif
@ -51,6 +55,11 @@
#include "webserver.h" #include "webserver.h"
#include "xml-rpc.h" #include "xml-rpc.h"
#ifndef HOST_NAME_MAX
# define HOST_NAME_MAX 255
#endif
/** Globals */ /** Globals */
//static int ecode; //static int ecode;
static LL_HANDLE conf_main=NULL; static LL_HANDLE conf_main=NULL;
@ -99,7 +108,7 @@ static CONF_ELEMENTS conf_elements[] = {
{ 0, 0, CONF_T_STRING,"general","db_type" }, { 0, 0, CONF_T_STRING,"general","db_type" },
{ 0, 0, CONF_T_EXISTPATH,"general","db_parms" }, /* this isn't right */ { 0, 0, CONF_T_EXISTPATH,"general","db_parms" }, /* this isn't right */
{ 0, 0, CONF_T_INT,"general","debuglevel" }, { 0, 0, CONF_T_INT,"general","debuglevel" },
{ 1, 0, CONF_T_STRING,"general","servername" }, { 0, 0, CONF_T_STRING,"general","servername" },
{ 0, 0, CONF_T_INT,"general","rescan_interval" }, { 0, 0, CONF_T_INT,"general","rescan_interval" },
{ 0, 0, CONF_T_INT,"general","always_scan" }, { 0, 0, CONF_T_INT,"general","always_scan" },
{ 0, 1, CONF_T_INT,"general","latin1_tags" }, { 0, 1, CONF_T_INT,"general","latin1_tags" },
@ -1445,3 +1454,27 @@ int _conf_xml_dump(XMLSTRUCT *pxml, LL *pll, int sublevel, char *parent) {
char *conf_get_filename(void) { char *conf_get_filename(void) {
return conf_main_file; return conf_main_file;
} }
/**
* this is an ugly block of crap to carry around every
* time one wants the servername.
*/
char *conf_get_servername(void) {
char *retval;
char newname[HOST_NAME_MAX + 1 + 16]; /* " Firefly Server" */
gethostname(newname,HOST_NAME_MAX);
retval = strchr(newname,'.');
if(retval) *retval = '\0';
retval = newname;
while(*retval) {
*retval = tolower(*retval);
retval++;
}
strcat(newname," Firefly Server");
return conf_alloc_string("general","servername",newname);
}

View File

@ -59,4 +59,8 @@ extern char *conf_get_filename(void);
#include "webserver.h" #include "webserver.h"
extern int conf_xml_dump(WS_CONNINFO *pwsc); extern int conf_xml_dump(WS_CONNINFO *pwsc);
/* FIXME: well used config reading stuff... */
extern char *conf_get_servername(void);
#endif /* _CONF_H_ */ #endif /* _CONF_H_ */

View File

@ -1480,7 +1480,7 @@ void dispatch_dbinfo(WS_CONNINFO *pwsc, DBQUERYINFO *pqi) {
int count; int count;
char *servername; char *servername;
servername = conf_alloc_string("general","servername","mt-daapd"); servername = conf_get_servername();
namelen=(int) strlen(servername); namelen=(int) strlen(servername);
current += db_dmap_add_container(current,"avdb",105 + namelen); current += db_dmap_add_container(current,"avdb",105 + namelen);
@ -1574,7 +1574,7 @@ void dispatch_server_info(WS_CONNINFO *pwsc, DBQUERYINFO *pqi) {
int actual_length; int actual_length;
int supports_update; int supports_update;
servername = conf_alloc_string("general","servername","mt-daapd"); servername = conf_get_servername();
supports_update = conf_get_int("daap","supports_update",1); supports_update = conf_get_int("daap","supports_update",1);
actual_length=130 + (int) strlen(servername); actual_length=130 + (int) strlen(servername);

View File

@ -429,8 +429,7 @@ int main(int argc, char *argv[]) {
#ifndef WITHOUT_MDNS #ifndef WITHOUT_MDNS
if(config.use_mdns) { /* register services */ if(config.use_mdns) { /* register services */
/* FIXME: get default name from hostname (os_hostname()?) */ servername = conf_get_servername();
servername = conf_alloc_string("general","servername","mt-daapd");
memset(txtrecord,0,sizeof(txtrecord)); memset(txtrecord,0,sizeof(txtrecord));
txt_add(txtrecord,"txtvers=1"); txt_add(txtrecord,"txtvers=1");

View File

@ -556,7 +556,18 @@ char *pi_server_ver(void) {
} }
int pi_server_name(char *name, int *len) { int pi_server_name(char *name, int *len) {
return conf_get_string("general","servername","unknown",name, len); char *servername;
servername = conf_get_servername();
if((servername) && (strlen(servername) < (size_t)len)) {
strcpy(name,servername);
} else {
if((size_t)len > strlen("Firefly Media Server"))
strcpy(name,"Firefly Media Server");
}
free(servername);
return CONF_E_SUCCESS;
} }
int pi_db_count(void) { int pi_db_count(void) {