You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by zw...@apache.org on 2009/12/16 01:57:30 UTC
svn commit: r891090 - in /incubator/trafficserver/traffic/trunk/proxy: ./
mgmt2/ mgmt2/cli/ mgmt2/cli2/ mgmt2/web2/
Author: zwoop
Date: Wed Dec 16 00:57:28 2009
New Revision: 891090
URL: http://svn.apache.org/viewvc?rev=891090&view=rev
Log:
TS-6: traffic_manager does not start.
Author: George Paul
Review + suggestions: Leif
Modified:
incubator/trafficserver/traffic/trunk/proxy/Makefile.am
incubator/trafficserver/traffic/trunk/proxy/example_alarm_bin.sh
incubator/trafficserver/traffic/trunk/proxy/mgmt2/FileManager.cc
incubator/trafficserver/traffic/trunk/proxy/mgmt2/LocalManager.cc
incubator/trafficserver/traffic/trunk/proxy/mgmt2/Main.cc
incubator/trafficserver/traffic/trunk/proxy/mgmt2/Main.h
incubator/trafficserver/traffic/trunk/proxy/mgmt2/Makefile.am
incubator/trafficserver/traffic/trunk/proxy/mgmt2/ProcessManager.cc
incubator/trafficserver/traffic/trunk/proxy/mgmt2/RecordsConfig.cc
incubator/trafficserver/traffic/trunk/proxy/mgmt2/Rollback.cc
incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/CliMain.cc
incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/CliUtils.cc
incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/CliUtils.h
incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/Makefile.am
incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/clientCLI.cc
incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/clientCLI.h
incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/CliMgmtUtils.cc
incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/CliMgmtUtils.h
incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/Makefile.am
incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/cliMain.cc
incubator/trafficserver/traffic/trunk/proxy/mgmt2/web2/WebIntrMain.cc
incubator/trafficserver/traffic/trunk/proxy/mgmt2/web2/WebReconfig.cc
Modified: incubator/trafficserver/traffic/trunk/proxy/Makefile.am
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/Makefile.am?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/Makefile.am (original)
+++ incubator/trafficserver/traffic/trunk/proxy/Makefile.am Wed Dec 16 00:57:28 2009
@@ -367,8 +367,8 @@
dist_version_DATA = TS_version
install-exec-local:
- $(INSTALL) -d -o nobody -g nobody $(pkglocalstatedir) $(pkglogdir)
- $(INSTALL) -d $(pkgsysconfdir) $(pkglibexecdir)
+ $(INSTALL) -d -o nobody -g nobody $(pkglocalstatedir) $(pkglogdir) $(pkgsysconfdir) $(pkgsysconfdir)/internal
+ $(INSTALL) -d $(pkglibexecdir)
uninstall-local:
-rm -rf $(pkglocalstatedir) $(pkglogdir) $(pkgsysconfdir) $(pkglibexecdir)
Modified: incubator/trafficserver/traffic/trunk/proxy/example_alarm_bin.sh
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/example_alarm_bin.sh?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/example_alarm_bin.sh (original)
+++ incubator/trafficserver/traffic/trunk/proxy/example_alarm_bin.sh Wed Dec 16 00:57:28 2009
@@ -30,6 +30,11 @@
SENDMAIL="/usr/lib/sendmail"
fi
+if [ ! -x $SENDMAIL ]; then
+ echo "$0: Could not find $SENDMAIL program"
+ exit 1
+fi
+
if [ $# -eq 1 ]; then
# if only one parameter, then no email information was provided
msg="`hostname` $1"
Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/FileManager.cc
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/FileManager.cc?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/FileManager.cc (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/FileManager.cc Wed Dec 16 00:57:28 2009
@@ -89,7 +89,7 @@
pathLen = strlen(configTmp) + strlen(snapDir) + 3;
const size_t snapshotDir_size = pathLen + 1;
snapshotDir = new char[snapshotDir_size];
- snprintf(snapshotDir, snapshotDir_size, ".%s%s%s%s", DIR_SEP, configTmp, DIR_SEP, snapDir);
+ snprintf(snapshotDir, snapshotDir_size, "%s%s%s", configTmp, DIR_SEP, snapDir);
// Set up info for MultiFile
managedDir = snapshotDir;
@@ -104,7 +104,7 @@
if (mkdir(snapshotDir) < 0) {
#endif
// Failed to create the snapshot directory
- mgmt_fatal(stderr, "[FileManager::FileManager] Failed to create the snapshot directory: %s\n", strerror(errno));
+ mgmt_fatal(stderr, "[FileManager::FileManager] Failed to create the snapshot directory %s: %s\n", snapshotDir, strerror(errno));
}
}
}
Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/LocalManager.cc
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/LocalManager.cc?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/LocalManager.cc (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/LocalManager.cc Wed Dec 16 00:57:28 2009
@@ -139,11 +139,25 @@
return;
}
+char snap_filename[FILE_NAME_MAX+1] = "stats.snap";
+
void
LocalManager::clearStats()
{
char *statsPath;
- const char statsFile[] = "/internal/stats.snap";
+ char local_state_dir[FILE_NAME_MAX];
+ char snap_file[FILE_NAME_MAX];
+ struct stat s;
+ int err;
+
+ REC_ReadConfigString(local_state_dir, "proxy.config.local_state_dir", FILE_NAME_MAX);
+ if ((err = stat(local_state_dir, &s)) < 0) {
+ Warning("Unable to stat() local state directory '%s': %d %d, %s", local_state_dir, err, errno, strerror(errno));
+ Warning(" Please set 'proxy.config.local_state_dir' to allow statistics collection");
+ }
+ REC_ReadConfigString(snap_file, "proxy.config.stats.snap_file", FILE_NAME_MAX);
+ snprintf(snap_filename, sizeof(snap_filename), "%s%s%s", local_state_dir,
+ DIR_SEP, snap_file);
// Clear our records and then send the signal. There is a race condition
// here where our stats could get re-updated from the proxy
@@ -154,7 +168,7 @@
// stats getting cleared by progation of clearing the
// cluster stats
//
- NOWARN_UNUSED(statsFile);
+ NOWARN_UNUSED(snap_filename);
RecResetStatRecord();
@@ -239,7 +253,7 @@
mgmt_log("Bad or missing proxy.config.lm.sem_id value; using default id %d\n", MGMT_SEMID_DEFAULT);
mgmt_sync_key = MGMT_SEMID_DEFAULT;
}
- ink_strncpy(pserver_path, mpath, sizeof(pserver_path));
+ ink_strncpy(pserver_path, system_local_state_dir, sizeof(pserver_path));
virt_map = NULL;
Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/Main.cc
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/Main.cc?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/Main.cc (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/Main.cc Wed Dec 16 00:57:28 2009
@@ -113,7 +113,12 @@
bool xml_on = false;
char *xml_path = NULL;
-char *mgmt_path = "./conf/yts/";
+char system_root_dir[PATH_NAME_MAX + 1] = DEFAULT_ROOT_DIRECTORY;
+char system_local_state_dir[PATH_NAME_MAX + 1] = DEFAULT_LOCAL_STATE_DIRECTORY;
+char system_config_directory[PATH_NAME_MAX + 1] = DEFAULT_SYSTEM_CONFIG_DIRECTORY;
+char system_log_dir[PATH_NAME_MAX + 1] = DEFAULT_LOG_DIRECTORY;
+
+char mgmt_path[PATH_NAME_MAX + 1] = DEFAULT_SYSTEM_CONFIG_DIRECTORY;
// By default, set the current directory as base
char *ts_base_dir = ".";
@@ -142,7 +147,7 @@
//////////////////////////////////////
// test for presence of server lock //
//////////////////////////////////////
- ink_snprintf(lockfile, PATH_MAX, "%sinternal/%s", mgmt_path, SERVER_LOCK);
+ ink_snprintf(lockfile, PATH_MAX, "%s%s%s", system_local_state_dir, DIR_SEP, SERVER_LOCK);
Lockfile server_lockfile(lockfile);
err = server_lockfile.Open(&holding_pid);
if (err == 1) {
@@ -163,7 +168,7 @@
///////////////////////////////////////////
// try to get the exclusive manager lock //
///////////////////////////////////////////
- ink_snprintf(lockfile, sizeof(lockfile), "%sinternal/%s", mgmt_path, MANAGER_LOCK);
+ ink_snprintf(lockfile, sizeof(lockfile), "%s%s%s", system_local_state_dir, DIR_SEP, MANAGER_LOCK);
Lockfile manager_lockfile(lockfile);
err = manager_lockfile.Get(&holding_pid);
if (err != 1) {
@@ -287,35 +292,104 @@
return 0;
}
+static void
+init_dirs(void)
+{
+ struct stat s;
+ int err;
+
+ if ((err = stat(mgmt_path, &s)) < 0) {
+ REC_ReadConfigString(mgmt_path, "proxy.config.config_dir", PATH_NAME_MAX);
+ if ((err = stat(mgmt_path, &s)) < 0) {
+ // Try 'system_root_dir/etc/trafficserver' directory
+ snprintf(mgmt_path, sizeof(mgmt_path),
+ "%s%s%s%s%s",system_root_dir, DIR_SEP,"etc",DIR_SEP,"trafficserver");
+ if ((err = stat(mgmt_path, &s)) < 0) {
+ mgmt_elog("unable to stat() mgmt path '%s': %d %d, %s\n",
+ mgmt_path, err, errno, strerror(errno));
+ mgmt_elog("please set config path via command line '-path <path>' or 'proxy.config.config_dir' \n");
+ _exit(1);
+ }
+ }
+ }
+
+ if ((err = stat(system_config_directory, &s)) < 0) {
+ ink_strncpy(system_config_directory,mgmt_path,PATH_NAME_MAX);
+ if ((err = stat(system_config_directory, &s)) < 0) {
+ REC_ReadConfigString(system_config_directory, "proxy.config.config_dir", PATH_NAME_MAX);
+ if ((err = stat(system_config_directory, &s)) < 0) {
+ // Try 'system_root_dir/etc/trafficserver' directory
+ snprintf(system_config_directory, sizeof(system_config_directory),
+ "%s%s%s%s%s",system_root_dir, DIR_SEP,"etc",DIR_SEP,"trafficserver");
+ if ((err = stat(system_config_directory, &s)) < 0) {
+ mgmt_elog("unable to stat() config dir '%s': %d %d, %s\n",
+ system_config_directory, err, errno, strerror(errno));
+ mgmt_elog("please set config path via command line '-path <path>' or 'proxy.config.config_dir' \n");
+ _exit(1);
+ }
+ }
+ }
+ }
+
+ if ((err = stat(system_local_state_dir, &s)) < 0) {
+ REC_ReadConfigString(system_local_state_dir, "proxy.config.local_state_dir", PATH_NAME_MAX);
+ if ((err = stat(system_local_state_dir, &s)) < 0) {
+ // Try 'system_root_dir/var/trafficserver' directory
+ snprintf(system_local_state_dir, sizeof(system_local_state_dir),
+ "%s%s%s%s%s",system_root_dir, DIR_SEP,"var",DIR_SEP,"trafficserver");
+ if ((err = stat(system_local_state_dir, &s)) < 0) {
+ mgmt_elog("unable to stat() local state dir '%s': %d %d, %s\n",
+ system_local_state_dir, err, errno, strerror(errno));
+ mgmt_elog("please set 'proxy.config.local_state_dir'\n");
+ _exit(1);
+ }
+ }
+ }
+
+ if ((err = stat(system_log_dir, &s)) < 0) {
+ REC_ReadConfigString(system_log_dir, "proxy.config.log2.logfile_dir", PATH_NAME_MAX);
+ if ((err = stat(system_log_dir, &s)) < 0) {
+ // Try 'system_root_dir/var/log/trafficserver' directory
+ snprintf(system_log_dir, sizeof(system_log_dir), "%s%s%s%s%s%s%s",
+ system_root_dir, DIR_SEP,"var",DIR_SEP,"log",DIR_SEP,"trafficserver");
+ if ((err = stat(system_log_dir, &s)) < 0) {
+ mgmt_elog("unable to stat() log dir'%s': %d %d, %s\n",
+ system_log_dir, err, errno, strerror(errno));
+ mgmt_elog("please set 'proxy.config.log2.logfile_dir'\n");
+ _exit(1);
+ }
+ }
+ }
+
+}
void
chdir_root()
{
- char root_dir[PATH_MAX];
char buffer[1024];
char *env_path;
FILE *ts_file;
int i = 0;
- root_dir[0] = '\0';
- if ((env_path = getenv("ROOT")) || (env_path = getenv("INST_ROOT"))) {
- strncpy(root_dir, env_path, PATH_MAX);
+ if ((env_path = getenv("TS_ROOT"))) {
+ strncpy(system_root_dir, env_path, PATH_NAME_MAX);
} else {
if ((ts_file = fopen("/etc/traffic_server", "r")) != NULL) {
NOWARN_UNUSED_RETURN(fgets(buffer, 1024, ts_file));
fclose(ts_file);
while (!isspace(buffer[i])) {
- root_dir[i] = buffer[i];
+ system_root_dir[i] = buffer[i];
i++;
}
- root_dir[i] = '\0';
+ system_root_dir[i] = '\0';
} else {
- ink_strncpy(root_dir, "/home/trafficserver", PATH_MAX);
+ ink_strncpy(system_root_dir, PREFIX, PATH_NAME_MAX);
}
}
- if (root_dir[0] && (chdir(root_dir) < 0)) {
- mgmt_elog("unable to change to root directory \"%s\" [%d '%s']\n", root_dir, errno, strerror(errno));
+ if (system_root_dir[0] && (chdir(system_root_dir) < 0)) {
+ mgmt_elog("unable to change to root directory \"%s\" [%d '%s']\n", system_root_dir, errno, strerror(errno));
+ mgmt_elog(" please set correct path in env variable TS_ROOT \n");
exit(1);
}
}
@@ -420,12 +494,12 @@
} else if (strcmp(argv[i], "-path") == 0) {
++i;
//bugfixed by YTS Team, yamsat(id-59703)
- if ((strlen(argv[i]) > 600)) {
+ if ((strlen(argv[i]) > PATH_NAME_MAX)) {
fprintf(stderr, "\n Path exceeded the maximum allowed characters.\n");
exit(1);
}
- mgmt_path = argv[i];
+ ink_strncpy(mgmt_path, argv[i], PATH_NAME_MAX);
/*
} else if(strcmp(argv[i], "-lmConf") == 0) {
++i;
@@ -519,6 +593,8 @@
icmp_ping = new MgmtPing(); */
icmp_ping = NULL;
+ init_dirs();// setup directories
+
// Get the config info we need while we are still root
extractConfigInfo(mgmt_path, recs_conf, userToRunAs);
@@ -528,7 +604,8 @@
check_lockfile();
- ink_snprintf(config_internal_dir, sizeof(config_internal_dir), "%s%sinternal", mgmt_path, DIR_SEP);
+ ink_snprintf(config_internal_dir, sizeof(config_internal_dir),
+ "%s%sinternal", mgmt_path, DIR_SEP);
url_init(config_internal_dir);
mime_init(config_internal_dir);
http_init(config_internal_dir);
@@ -1369,10 +1446,10 @@
if (mgmt_path && recs_conf) {
FILE *fin;
- ink_snprintf(file, sizeof(file), "%s%s.shadow", mgmt_path, recs_conf);
+ ink_snprintf(file, sizeof(file), "%s%s%s.shadow", mgmt_path, DIR_SEP, recs_conf);
if (!(fin = fopen(file, "r"))) {
- ink_snprintf(file, sizeof(file), "%s%s", mgmt_path, recs_conf);
+ ink_snprintf(file, sizeof(file), "%s%s%s", mgmt_path, DIR_SEP, recs_conf);
if (!(fin = fopen(file, "r"))) {
mgmt_elog(stderr, "[extractConfigInfo] Unable to open config file(%s)\n", file);
_exit(1);
Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/Main.h
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/Main.h?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/Main.h (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/Main.h Wed Dec 16 00:57:28 2009
@@ -31,6 +31,15 @@
#include "WebOverview.h"
#include "I_Version.h"
+#define PATH_NAME_MAX 511 // instead of PATH_MAX which is inconsistent
+ // on various OSs (linux-4096,osx/bsd-1024,
+ // windows-260,etc)
+
+#define DEFAULT_ROOT_DIRECTORY PREFIX
+#define DEFAULT_LOCAL_STATE_DIRECTORY PKGLOCALSTATEDIR
+#define DEFAULT_SYSTEM_CONFIG_DIRECTORY PKGSYSCONFDIR
+#define DEFAULT_LOG_DIRECTORY PKGLOGDIR
+
void MgmtShutdown(int status);
void fileUpdated(char *fname);
void runAsUser(char *userName);
@@ -43,13 +52,18 @@
extern overviewPage *overviewGenerator;
extern AppVersionInfo appVersionInfo;
-// Global string constants
-extern char *mgmt_path;
+// Global strings
+extern char mgmt_path[];
extern char *recs_conf;
//extern char *lm_conf;
// Root of Traffic Server
extern char *ts_base_dir;
+extern char system_root_dir[];
+extern char system_local_state_dir[];
+extern char system_config_directory[];
+extern char system_log_dir[];
+
// Global variable to replace ifdef MGMT_LAUNCH_PROXY so that
// we can turn on/off proxy launch at runtime to facilitate
Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/Makefile.am
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/Makefile.am?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/Makefile.am (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/Makefile.am Wed Dec 16 00:57:28 2009
@@ -20,6 +20,7 @@
$(iocore_include_dirs) \
-I$(top_srcdir)/proxy \
-I$(top_srcdir)/proxy/hdrs \
+ -DPREFIX=\"$(prefix)\" \
-DPKGLIBEXECDIR=\"$(pkglibexecdir)\" \
-DPKGLOCALSTATEDIR=\"$(pkglocalstatedir)\" \
-DPKGLOGDIR=\"$(pkglogdir)\" \
Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/ProcessManager.cc
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/ProcessManager.cc?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/ProcessManager.cc (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/ProcessManager.cc Wed Dec 16 00:57:28 2009
@@ -84,7 +84,7 @@
ProcessManager::ProcessManager(bool rlm, char *mpath, ProcessRecords * rd):
BaseManager(), require_lm(rlm), mgmt_sync_key(0), record_data(rd), local_manager_sockfd(0)
{
- ink_strncpy(pserver_path, mpath, sizeof(pserver_path));
+ ink_strncpy(pserver_path, PKGLOCALSTATEDIR, sizeof(pserver_path));
mgmt_signal_queue = create_queue();
// Set temp. process/manager timeout. Will be reconfigure later.
Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/RecordsConfig.cc
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/RecordsConfig.cc?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/RecordsConfig.cc (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/RecordsConfig.cc Wed Dec 16 00:57:28 2009
@@ -58,7 +58,7 @@
{CONFIG, "proxy.config.proxy_name", "", INK_STRING, "<proxy_name>", RU_REREAD, RR_REQUIRED, RC_STR, ".+", RA_NULL}
,
- {CONFIG, "proxy.config.bin_path", "", INK_STRING, "<bin_path>", RU_NULL, RR_REQUIRED, RC_NULL, NULL, RA_NULL}
+ {CONFIG, "proxy.config.bin_path", "", INK_STRING, PREFIX "/bin", RU_NULL, RR_REQUIRED, RC_NULL, NULL, RA_NULL}
,
{CONFIG, "proxy.config.proxy_binary", "", INK_STRING, "traffic_server", RU_NULL, RR_REQUIRED, RC_NULL, NULL, RA_NULL}
,
@@ -369,7 +369,7 @@
,
{CONFIG, "proxy.config.admin.cli_enabled", "", INK_INT, "1", RU_NULL, RR_NULL, RC_NULL, NULL, RA_NULL}
,
- {CONFIG, "proxy.config.admin.cli_path", "", INK_STRING, PKGSYSCONFDIR "/cli", RU_NULL, RR_NULL, RC_NULL, NULL, RA_NULL}
+ {CONFIG, "proxy.config.admin.cli_path", "", INK_STRING, PKGLOCALSTATEDIR "/cli", RU_NULL, RR_NULL, RC_NULL, NULL, RA_NULL}
,
{CONFIG, "proxy.config.admin.cli_port", "", INK_INT, "9000", RU_NULL, RR_NULL, RC_NULL, NULL, RA_NULL}
,
Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/Rollback.cc
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/Rollback.cc?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/Rollback.cc (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/Rollback.cc Wed Dec 16 00:57:28 2009
@@ -100,7 +100,7 @@
}
int configDirLen = strlen(configTmp) + 4;
configDir = new char[configDirLen];
- ink_snprintf(configDir, configDirLen, ".%s%s%s", DIR_SEP, configTmp, DIR_SEP);
+ ink_snprintf(configDir, configDirLen, "%s%s", configTmp, DIR_SEP);
#ifdef OEM
// since these plugin files are not in the config directory,
Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/CliMain.cc
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/CliMain.cc?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/CliMain.cc (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/CliMain.cc Wed Dec 16 00:57:28 2009
@@ -34,6 +34,7 @@
#include "ink_args.h"
#include "Tokenizer.h"
#include "TextBuffer.h"
+#include "CliUtils.h"
#include "clientCLI.h"
#ifdef _WIN32
Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/CliUtils.cc
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/CliUtils.cc?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/CliUtils.cc (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/CliUtils.cc Wed Dec 16 00:57:28 2009
@@ -304,34 +304,42 @@
{
FILE *fp;
const char *env_path;
+ struct stat s;
+ int err;
- // INST will set ROOT and INST_ROOT properly, try ROOT first
- if ((env_path = getenv("ROOT")) || (env_path = getenv("INST_ROOT"))) {
- ink_strncpy(ts_path, env_path, 256);
- return 0;
+ if ((env_path = getenv("TS_ROOT"))) {
+ ink_strncpy(ts_path, env_path, PATH_NAME_MAX);
+ } else {
+ if ((fp = fopen("/etc/traffic_server", "r")) != NULL) {
+ if (fgets(ts_path, PATH_NAME_MAX, fp) == NULL) {
+ fclose(fp);
+ printf("\nInvalid contents in /etc/traffic_server\n");
+ printf(" Please set correct path in env variable TS_ROOT \n");
+ return -1;
+ }
+ // strip newline if it exists
+ int len = strlen(ts_path);
+ if (ts_path[len - 1] == '\n') {
+ ts_path[len - 1] = '\0';
+ }
+ // strip trailing "/" if it exists
+ len = strlen(ts_path);
+ if (ts_path[len - 1] == '/') {
+ ts_path[len - 1] = '\0';
+ }
+
+ fclose(fp);
+ } else {
+ ink_strncpy(ts_path, PREFIX, PATH_NAME_MAX);
+ }
}
- if ((fp = fopen("/etc/traffic_server", "r")) == NULL) {
- ink_strncpy(ts_path, "/home/trafficserver", 256);
- return 0;
- }
-
- if (fgets(ts_path, 256, fp) == NULL) {
- fclose(fp);
- printf("\nInvalid contents in /etc/traffic_server\n");
+ if ((err = stat(ts_path, &s)) < 0) {
+ printf("unable to stat() TS PATH '%s': %d %d, %s\n",
+ ts_path, err, errno, strerror(errno));
+ printf(" Please set correct path in env variable TS_ROOT \n");
return -1;
}
- // strip newline if it exists
- int len = strlen(ts_path);
- if (ts_path[len - 1] == '\n') {
- ts_path[len - 1] = '\0';
- }
- // strip trailing "/" if it exists
- len = strlen(ts_path);
- if (ts_path[len - 1] == '/') {
- ts_path[len - 1] = '\0';
- }
- fclose(fp);
return 0;
}
Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/CliUtils.h
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/CliUtils.h?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/CliUtils.h (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/CliUtils.h Wed Dec 16 00:57:28 2009
@@ -34,6 +34,10 @@
#include "ink_hrtime.h"
#include "ink_port.h"
+#define PATH_NAME_MAX 511 // instead of PATH_MAX which is inconsistent
+ // on various OSs (linux-4096,osx/bsd-1024,
+ // windows-260,etc)
+
// Server side functions (blocking I/O)
int cli_read(int fd, char *buf, int maxlen);
int cli_write(int fd, const char *data, int nbytes);
Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/Makefile.am
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/Makefile.am?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/Makefile.am (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/Makefile.am Wed Dec 16 00:57:28 2009
@@ -12,7 +12,10 @@
-I$(top_srcdir)/proxy/mgmt2/preparse \
-I$(top_srcdir)/proxy/mgmt2/utils \
-I$(top_srcdir)/proxy/mgmt2/web2 \
- -I$(top_srcdir)/proxy
+ -I$(top_srcdir)/proxy \
+ -DPREFIX=\"$(prefix)\" \
+ -DPKGSYSCONFDIR=\"$(pkgsysconfdir)\" \
+ -DPKGLOCALSTATEDIR=\"$(pkglocalstatedir)\"
MGMT_DEFS = @MGMT_DEFS@
DEFS += $(MGMT_DEFS)
Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/clientCLI.cc
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/clientCLI.cc?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/clientCLI.cc (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/clientCLI.cc Wed Dec 16 00:57:28 2009
@@ -49,7 +49,7 @@
#ifndef _WIN32
const char *
- clientCLI::defaultSockPath = "./conf/yts/cli";
+ clientCLI::defaultSockPath = PKGLOCALSTATEDIR "/cli";
#else
const int
clientCLI::defaultCliPort = 9000;
@@ -78,11 +78,11 @@
void
clientCLI::readTSdir()
{
- char sPath[512];
+ char sPath[PATH_NAME_MAX + 1];
if (GetTSDirectory(sPath)) {
ink_strncpy(sockPath, clientCLI::defaultSockPath, sizeof(sockPath));
} else {
- ink_snprintf(sockPath, sizeof(sockPath), "%s/conf/yts/cli", sPath);
+ ink_snprintf(sockPath, sizeof(sockPath), "%s/cli", sPath);
}
}
void
Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/clientCLI.h
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/clientCLI.h?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/clientCLI.h (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/clientCLI.h Wed Dec 16 00:57:28 2009
@@ -95,7 +95,7 @@
CliResult getVariable(const char *name, char **value);
#ifndef _WIN32
- char sockPath[PATH_MAX];
+ char sockPath[PATH_NAME_MAX + 1];
static const char *defaultSockPath;
#else
int cliPort;
Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/CliMgmtUtils.cc
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/CliMgmtUtils.cc?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/CliMgmtUtils.cc (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/CliMgmtUtils.cc Wed Dec 16 00:57:28 2009
@@ -554,34 +554,43 @@
FILE *fp;
char *env_path;
- // INST will set ROOT and INST_ROOT properly, try ROOT first
- if ((env_path = getenv("ROOT")) || (env_path = getenv("INST_ROOT"))) {
- ink_strncpy(ts_path, env_path, 256);
- return 0;
- }
+ struct stat s;
+ int err;
- if ((fp = fopen("/etc/traffic_server", "r")) == NULL) {
- ink_strncpy(ts_path, "/home/trafficserver", 256);
- return 0;
+ if ((env_path = getenv("TS_ROOT"))) {
+ ink_strncpy(ts_path, env_path, PATH_NAME_MAX);
+ } else {
+ if ((fp = fopen("/etc/traffic_server", "r")) != NULL) {
+ if (fgets(ts_path, PATH_NAME_MAX, fp) == NULL) {
+ fclose(fp);
+ Cli_Error("\nInvalid contents in /etc/traffic_server\n");
+ Cli_Error(" Please set correct path in env variable TS_ROOT \n");
+ return -1;
+ }
+ // strip newline if it exists
+ int len = strlen(ts_path);
+ if (ts_path[len - 1] == '\n') {
+ ts_path[len - 1] = '\0';
+ }
+ // strip trailing "/" if it exists
+ len = strlen(ts_path);
+ if (ts_path[len - 1] == '/') {
+ ts_path[len - 1] = '\0';
+ }
+
+ fclose(fp);
+ } else {
+ ink_strncpy(ts_path, PREFIX, PATH_NAME_MAX);
+ }
}
- if (fgets(ts_path, 256, fp) == NULL) {
- Cli_Error("\nInvalid contents in /etc/traffic_server\n");
- fclose(fp);
+ if ((err = stat(ts_path, &s)) < 0) {
+ Cli_Error("unable to stat() TS PATH '%s': %d %d, %s\n",
+ ts_path, err, errno, strerror(errno));
+ Cli_Error(" Please set correct path in env variable TS_ROOT \n");
return -1;
}
- // strip newline if it exists
- int len = strlen(ts_path);
- if (ts_path[len - 1] == '\n') {
- ts_path[len - 1] = '\0';
- }
- // strip trailing "/" if it exists
- len = strlen(ts_path);
- if (ts_path[len - 1] == '/') {
- ts_path[len - 1] = '\0';
- }
- fclose(fp);
return 0;
}
Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/CliMgmtUtils.h
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/CliMgmtUtils.h?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/CliMgmtUtils.h (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/CliMgmtUtils.h Wed Dec 16 00:57:28 2009
@@ -31,6 +31,10 @@
#include "../api2/include/INKMgmtAPI.h"
+#define PATH_NAME_MAX 511 // instead of PATH_MAX which is inconsistent
+ // on various OSs (linux-4096,osx/bsd-1024,
+ // windows-260,etc)
+
#define RECORD_GET 0
#define RECORD_SET 1
Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/Makefile.am
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/Makefile.am?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/Makefile.am (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/Makefile.am Wed Dec 16 00:57:28 2009
@@ -8,7 +8,10 @@
-I$(top_srcdir)/proxy/mgmt2/utils \
-I$(top_srcdir)/libinktomi++ \
-I$(top_srcdir)/proxy \
- -I$(top_srcdir)/proxy/mgmt2/tools
+ -I$(top_srcdir)/proxy/mgmt2/tools \
+ -DPREFIX=\"$(prefix)\" \
+ -DPKGSYSCONFDIR=\"$(pkgsysconfdir)\" \
+ -DPKGLOCALSTATEDIR=\"$(pkglocalstatedir)\"
dist_bin_SCRIPTS = \
cli_setdomain.tcl \
Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/cliMain.cc
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/cliMain.cc?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/cliMain.cc (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/cliMain.cc Wed Dec 16 00:57:28 2009
@@ -49,20 +49,18 @@
CliDisplayPrintf = 1;
// initialize MgmtAPI using TS directory specified in /etc/traffic_server
- // or ../conf/yts/ if /etc/traffic_server does not exist
+ // or PKGLOCALSTATEDIR if /etc/traffic_server does not exist
if (GetTSDirectory(ts_path)) {
- status = INKInit("../conf/yts/");
+ status = INKInit(PKGLOCALSTATEDIR);
if (status) {
- printf("INKInit %d: Failed to initialize MgmtAPI in ../conf/yts/\n", status);
+ printf("INKInit %d: Failed to initialize MgmtAPI in %s\n", status, PKGLOCALSTATEDIR);
} else {
- printf("Successfully Initialized MgmtAPI in ../conf/yts/\n");
+ printf("Successfully Initialized MgmtAPI in %s \n", PKGLOCALSTATEDIR);
}
} else {
- snprintf(config_path, sizeof(config_path), "%s/conf/yts/", ts_path);
-
+ snprintf(config_path, sizeof(config_path), "%s/var/trafficserver/", ts_path);
// initialize MgmtAPI
-
INKError status = INKInit(config_path);
if (status) {
printf("INKInit %d: Failed to initialize MgmtAPI in %s\n", status, config_path);
Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/web2/WebIntrMain.cc
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/web2/WebIntrMain.cc?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/web2/WebIntrMain.cc (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/web2/WebIntrMain.cc Wed Dec 16 00:57:28 2009
@@ -791,29 +791,28 @@
// INKqa09866
// fire up interface for ts configuration through API; use absolute path from root to
- // set up socket paths; if can't get root path, assume running TM from bin directory
- char config_path[1024];
+ // set up socket paths;
+ char local_state_path[1024];
char api_sock_path[1024];
char event_sock_path[1024];
- bzero(config_path, 1024);
+ bzero(local_state_path, 1024);
bzero(api_sock_path, 1024);
bzero(event_sock_path, 1024);
- char *config_dir;
- found = (RecGetRecordString_Xmalloc("proxy.config.config_dir", &config_dir) == REC_ERR_OKAY);
+ char *local_state_dir;
+ found = (RecGetRecordString_Xmalloc("proxy.config.local_state_dir", &local_state_dir) == REC_ERR_OKAY);
if (found == true) {
- ink_snprintf(config_path, sizeof(config_path), "%s", config_dir);
- ink_snprintf(config_path, sizeof(config_path), "%s", config_dir);
- xfree(config_dir);
+ ink_snprintf(local_state_path, sizeof(local_state_path), "%s", local_state_dir);
+ ink_snprintf(local_state_path, sizeof(local_state_path), "%s", local_state_dir);
+ xfree(local_state_dir);
} else {
- // else assume we're in the bin directory...
- ink_snprintf(config_path, sizeof(config_path), "..%sconfig", DIR_SEP);
- ink_snprintf(config_path, sizeof(config_path), "..%sconfig", DIR_SEP);
+ mgmt_elog("please set 'proxy.config.local_state_dir'\n");
+ _exit(1);
}
- ink_snprintf(api_sock_path, sizeof(api_sock_path), "%s%smgmtapisocket", config_path, DIR_SEP);
- ink_snprintf(event_sock_path, sizeof(event_sock_path), "%s%seventapisocket", config_path, DIR_SEP);
+ ink_snprintf(api_sock_path, sizeof(api_sock_path), "%s%smgmtapisocket", local_state_path, DIR_SEP);
+ ink_snprintf(event_sock_path, sizeof(event_sock_path), "%s%seventapisocket", local_state_path, DIR_SEP);
// INKqa12562: MgmtAPI sockets should be created with 775 permission
mode_t oldmask = umask(S_IWOTH);
Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/web2/WebReconfig.cc
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/web2/WebReconfig.cc?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/web2/WebReconfig.cc (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/web2/WebReconfig.cc Wed Dec 16 00:57:28 2009
@@ -292,7 +292,7 @@
int rec_err = RecGetRecordString_Xmalloc("proxy.config.admin.access_control_file", &file);
if (rec_err != REC_ERR_OKAY)
return;
- ink_snprintf(fpath, sizeof(fpath), "%s%s", mgmt_path, file);
+ ink_snprintf(fpath, sizeof(fpath), "%s%s%s", mgmt_path, DIR_SEP, file);
#if !defined (_WIN32)
if ((fd =::mgmt_open(fpath, O_RDONLY)) < 0) {
@@ -445,7 +445,7 @@
int rec_err = RecGetRecordString_Xmalloc("proxy.config.admin.lang_dict", &file);
if (rec_err != REC_ERR_OKAY)
return;
- ink_snprintf(fpath, FILE_NAME_MAX, "%s%s", mgmt_path, file);
+ ink_snprintf(fpath, FILE_NAME_MAX, "%s%s%s", mgmt_path, DIR_SEP, file);
fbuf = 0;
if (WebFileImport_Xmalloc(fpath, &file_buf, &file_size) != WEB_HTTP_ERR_OKAY) {
mgmt_log(stderr, "[configLangDict] could not find language dictionary "