00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #include "rods.h"
00014
00015 #include "readServerConfig.h"
00016 #include "initServer.h"
00017
00018 #define BUF_LEN 500
00019
00020 char *
00021 getServerConfigDir()
00022 {
00023 char *myDir;
00024
00025 if ((myDir = (char *) getenv("irodsConfigDir")) != (char *) NULL) {
00026 return (myDir);
00027 }
00028 return (DEF_CONFIG_DIR);
00029 }
00030
00031 int
00032 readServerConfig(rodsServerConfig_t *rodsServerConfig) {
00033 FILE *fptr;
00034 char buf[BUF_LEN];
00035 char *fchar;
00036 int len;
00037 char *key;
00038 char *serverConfigFile;
00039
00040 serverConfigFile = (char *) malloc((strlen (getServerConfigDir()) +
00041 strlen(SERVER_CONFIG_FILE) + 24));
00042
00043 sprintf (serverConfigFile, "%s/%s", getServerConfigDir(),
00044 SERVER_CONFIG_FILE);
00045
00046 fptr = fopen (serverConfigFile, "r");
00047
00048 if (fptr == NULL) {
00049 rodsLog (LOG_NOTICE,
00050 "Cannot open SERVER_CONFIG_FILE file %s. errno = %d\n",
00051 serverConfigFile, errno);
00052 free (serverConfigFile);
00053 return (SYS_CONFIG_FILE_ERR);
00054 }
00055 free (serverConfigFile);
00056
00057 buf[BUF_LEN-1]='\0';
00058 fchar = fgets(buf, BUF_LEN-1, fptr);
00059 for(;fchar!='\0';) {
00060 if (buf[0]=='#' || buf[0]=='/') {
00061 buf[0]='\0';
00062 }
00063 key=strstr(buf, DB_PASSWORD_KW);
00064 if (key != NULL) {
00065 len = strlen(DB_PASSWORD_KW);
00066 rstrcpy(rodsServerConfig->DBPassword,
00067 findNextTokenAndTerm(key+len), MAX_PASSWORD_LEN);
00068 rodsLog(LOG_DEBUG1, "DBPassword=%s", rodsServerConfig->DBPassword);
00069 }
00070 key=strstr(buf, DB_KEY_KW);
00071 if (key != NULL) {
00072 len = strlen(DB_KEY_KW);
00073 rstrcpy(rodsServerConfig->DBKey,
00074 findNextTokenAndTerm(key+len), MAX_PASSWORD_LEN);
00075 rodsLog(LOG_DEBUG1, "DBKey=%s",
00076 rodsServerConfig->DBKey);
00077 }
00078 key=strstr(buf, DB_USERNAME_KW);
00079 if (key != NULL) {
00080 len = strlen(DB_USERNAME_KW);
00081 rstrcpy(rodsServerConfig->DBUsername,
00082 findNextTokenAndTerm(key+len), NAME_LEN);
00083 rodsLog(LOG_DEBUG1, "DBUsername=%s", rodsServerConfig->DBUsername);
00084 }
00085 fchar = fgets(buf, BUF_LEN-1, fptr);
00086 }
00087 fclose (fptr);
00088
00089 if (strlen(rodsServerConfig->DBKey) > 0 &&
00090 strlen(rodsServerConfig->DBPassword) > 0) {
00091 char sPassword[MAX_PASSWORD_LEN+10];
00092 strncpy(sPassword, rodsServerConfig->DBPassword, MAX_PASSWORD_LEN);
00093 obfDecodeByKey(sPassword,
00094 rodsServerConfig->DBKey,
00095 rodsServerConfig->DBPassword);
00096 memset(sPassword, 0, MAX_PASSWORD_LEN);
00097 }
00098
00099 return(0);
00100 }
00101