From: <ps...@us...> - 2008-08-24 10:40:50
|
Revision: 1167 http://znc.svn.sourceforge.net/znc/?rev=1167&view=rev Author: psychon Date: 2008-08-24 10:41:01 +0000 (Sun, 24 Aug 2008) Log Message: ----------- Move some common code in main() in front of all those if()s Modified Paths: -------------- trunk/main.cpp Modified: trunk/main.cpp =================================================================== --- trunk/main.cpp 2008-08-24 06:25:11 UTC (rev 1166) +++ trunk/main.cpp 2008-08-24 10:41:01 UTC (rev 1167) @@ -132,10 +132,11 @@ sConfig = "znc.conf"; } + CZNC* pZNC = &CZNC::Get(); + pZNC->InitDirs(((argc) ? argv[0] : ""), sDataDir); + if (bMakeConf) { - CZNC& ZNC = CZNC::Get(); - ZNC.InitDirs("", sDataDir); - if (ZNC.WriteNewConfig(sConfig)) { + if (pZNC->WriteNewConfig(sConfig)) { char const* args[5]; if (argc > 2) { @@ -163,7 +164,7 @@ return 1; } - if ((chdir(ZNC.GetCurPath().c_str()) == -1) + if ((chdir(pZNC->GetCurPath().c_str()) == -1) || (execv(*argv, (char *const*)args) == -1)) { CUtils::PrintError("Unable to launch znc [" + CString(strerror(errno)) + "]"); return 1; @@ -175,8 +176,6 @@ #ifdef HAVE_LIBSSL if (bMakePem) { - CZNC* pZNC = &CZNC::Get(); - pZNC->InitDirs("", sDataDir); pZNC->WritePemFile(bEncPem); delete pZNC; @@ -197,9 +196,6 @@ return 0; } - CZNC* pZNC = &CZNC::Get(); - pZNC->InitDirs(((argc) ? argv[0] : ""), sDataDir); - if (!pZNC->ParseConfig(sConfig)) { CUtils::PrintError("Unrecoverable config error."); delete pZNC; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-08-25 14:39:00
|
Revision: 1170 http://znc.svn.sourceforge.net/znc/?rev=1170&view=rev Author: psychon Date: 2008-08-25 14:39:06 +0000 (Mon, 25 Aug 2008) Log Message: ----------- Move some code around No actual changes in here, just some preparation. Modified Paths: -------------- trunk/main.cpp Modified: trunk/main.cpp =================================================================== --- trunk/main.cpp 2008-08-24 12:51:04 UTC (rev 1169) +++ trunk/main.cpp 2008-08-25 14:39:06 UTC (rev 1170) @@ -135,6 +135,28 @@ CZNC* pZNC = &CZNC::Get(); pZNC->InitDirs(((argc) ? argv[0] : ""), sDataDir); +#ifdef HAVE_LIBSSL + if (bMakePem) { + pZNC->WritePemFile(bEncPem); + + delete pZNC; + return 0; + } + if (bEncPem && !bMakePem) { + CUtils::PrintError("--encrypt-pem should be used along with --makepem."); + return 1; + } + +#endif /* HAVE_LIBSSL */ + if (bMakePass) { + CString sSalt; + CString sHash = CUtils::GetSaltedHashPass(sSalt); + CUtils::PrintMessage("Use this in the <User> section of your config:"); + CUtils::PrintMessage("Pass = md5#" + sHash + "#" + sSalt + "#"); + + return 0; + } + if (bMakeConf) { if (pZNC->WriteNewConfig(sConfig)) { char const* args[5]; @@ -174,28 +196,6 @@ return 0; } -#ifdef HAVE_LIBSSL - if (bMakePem) { - pZNC->WritePemFile(bEncPem); - - delete pZNC; - return 0; - } - if (bEncPem && !bMakePem) { - CUtils::PrintError("--encrypt-pem should be used along with --makepem."); - return 1; - } - -#endif /* HAVE_LIBSSL */ - if (bMakePass) { - CString sSalt; - CString sHash = CUtils::GetSaltedHashPass(sSalt); - CUtils::PrintMessage("Use this in the <User> section of your config:"); - CUtils::PrintMessage("Pass = md5#" + sHash + "#" + sSalt + "#"); - - return 0; - } - if (!pZNC->ParseConfig(sConfig)) { CUtils::PrintError("Unrecoverable config error."); delete pZNC; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-08-25 14:42:06
|
Revision: 1171 http://znc.svn.sourceforge.net/znc/?rev=1171&view=rev Author: psychon Date: 2008-08-25 14:42:11 +0000 (Mon, 25 Aug 2008) Log Message: ----------- Don't start a new process for starting znc after --makeconf The code now just falls through to the normal bootup code. Thanks to kroimon for this idea and also for writing this patch. Modified Paths: -------------- trunk/main.cpp Modified: trunk/main.cpp =================================================================== --- trunk/main.cpp 2008-08-25 14:39:06 UTC (rev 1170) +++ trunk/main.cpp 2008-08-25 14:42:11 UTC (rev 1171) @@ -158,42 +158,11 @@ } if (bMakeConf) { - if (pZNC->WriteNewConfig(sConfig)) { - char const* args[5]; - - if (argc > 2) { - args[0] = argv[0]; - if (!sDataDir.empty()) { - args[1] = "--datadir"; - args[2] = strdup(sDataDir.c_str()); - args[3] = argv[optind]; - args[4] = NULL; - } else { - args[1] = argv[optind]; - args[2] = NULL; - } - } else if (argc > 1) { - args[0] = argv[0]; - if (!sDataDir.empty()) { - args[1] = "--datadir"; - args[2] = strdup(sDataDir.c_str()); - args[3] = NULL; - } else { - args[1] = NULL; - } - } else { - CUtils::PrintError("Unable to launch znc [Try manually restarting]"); - return 1; - } - - if ((chdir(pZNC->GetCurPath().c_str()) == -1) - || (execv(*argv, (char *const*)args) == -1)) { - CUtils::PrintError("Unable to launch znc [" + CString(strerror(errno)) + "]"); - return 1; - } + if (!pZNC->WriteNewConfig(sConfig)) { + delete pZNC; + return 0; } - - return 0; + /* Fall through to normal bootup */ } if (!pZNC->ParseConfig(sConfig)) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-08-25 14:46:22
|
Revision: 1172 http://znc.svn.sourceforge.net/znc/?rev=1172&view=rev Author: psychon Date: 2008-08-25 14:46:22 +0000 (Mon, 25 Aug 2008) Log Message: ----------- Add some proper cleanup to some places in main() This adds a bunch of 'delete pZNC', turns some exit()s into returns and does some whitespace fun. kroimon (partly) gets the kudos for this, too. Modified Paths: -------------- trunk/main.cpp Modified: trunk/main.cpp =================================================================== --- trunk/main.cpp 2008-08-25 14:42:11 UTC (rev 1171) +++ trunk/main.cpp 2008-08-25 14:46:22 UTC (rev 1172) @@ -142,18 +142,21 @@ delete pZNC; return 0; } + if (bEncPem && !bMakePem) { CUtils::PrintError("--encrypt-pem should be used along with --makepem."); + delete pZNC; return 1; } +#endif /* HAVE_LIBSSL */ -#endif /* HAVE_LIBSSL */ if (bMakePass) { CString sSalt; CString sHash = CUtils::GetSaltedHashPass(sSalt); CUtils::PrintMessage("Use this in the <User> section of your config:"); CUtils::PrintMessage("Pass = md5#" + sHash + "#" + sSalt + "#"); + delete pZNC; return 0; } @@ -181,7 +184,8 @@ CUtils::PrintError("You are running ZNC as root! Don't do that! There are not many valid"); CUtils::PrintError("reasons for this and it can, in theory, cause great damage!"); if (!bAllowRoot) { - exit(1); + delete pZNC; + return 1; } CUtils::PrintError("You have been warned."); CUtils::PrintError("Hit CTRL+C now if you don't want to run ZNC as root."); @@ -203,7 +207,7 @@ if (iPid == -1) { CUtils::PrintStatus(false, strerror(errno)); delete pZNC; - exit(1); + return 1; } if (iPid > 0) { @@ -212,7 +216,8 @@ pZNC->WritePidFile(iPid); CUtils::PrintMessage(CZNC::GetTag()); - exit(0); + /* Don't destroy pZNC here or it will delete the pid file. */ + return 0; } // Redirect std in/out/err to /dev/null This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-09-12 15:35:36
|
Revision: 1197 http://znc.svn.sourceforge.net/znc/?rev=1197&view=rev Author: psychon Date: 2008-09-12 15:35:46 +0000 (Fri, 12 Sep 2008) Log Message: ----------- Print a message when SIGHUP is caught This is SilverLeo's idea, not mine! ;) Modified Paths: -------------- trunk/main.cpp Modified: trunk/main.cpp =================================================================== --- trunk/main.cpp 2008-09-12 12:55:03 UTC (rev 1196) +++ trunk/main.cpp 2008-09-12 15:35:46 UTC (rev 1197) @@ -55,6 +55,7 @@ } static void rehash(int sig) { + CUtils::PrintMessage("Caught SIGHUP"); CZNC::Get().SetNeedRehash(true); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2009-03-24 12:04:03
|
Revision: 1441 http://znc.svn.sourceforge.net/znc/?rev=1441&view=rev Author: psychon Date: 2009-03-24 12:03:51 +0000 (Tue, 24 Mar 2009) Log Message: ----------- Add znc -f / --foreground This argument makes znc not fork into the background. It has no effect if configure is called with --enable-debug, znc will always stay in the foreground in this case. The hunk at the end of main.cpp is just whitespace stuff. The only difference in there is that #ifdef _DEBUG #else #endif is changed into if (bForeground) { } else { } (which makes this whitespace stuff necessary). Modified Paths: -------------- trunk/main.cpp Modified: trunk/main.cpp =================================================================== --- trunk/main.cpp 2009-03-23 20:43:11 UTC (rev 1440) +++ trunk/main.cpp 2009-03-24 12:03:51 UTC (rev 1441) @@ -12,6 +12,7 @@ static struct option g_LongOpts[] = { { "help", no_argument, 0, 'h' }, { "version", no_argument, 0, 'v' }, + { "foreground", no_argument, 0, 'f' }, { "no-color", no_argument, 0, 'n' }, { "allow-root", no_argument, 0, 'r' }, { "makeconf", no_argument, 0, 'c' }, @@ -29,6 +30,7 @@ CUtils::PrintMessage("Options are:"); CUtils::PrintMessage("\t-h, --help List available command line options (this page)"); CUtils::PrintMessage("\t-v, --version Output version information and exit"); + CUtils::PrintMessage("\t-f, --foreground Don't fork into the background"); CUtils::PrintMessage("\t-n, --no-color Don't use escape sequences in the output"); CUtils::PrintMessage("\t-r, --allow-root Don't complain if ZNC is run as root"); CUtils::PrintMessage("\t-c, --makeconf Interactively create a new config"); @@ -43,8 +45,8 @@ static void die(int sig) { signal(SIGPIPE, SIG_DFL); + CUtils::PrintMessage("Exiting on SIG [" + CString(sig) + "]"); #ifdef _DEBUG - CUtils::PrintMessage("Exiting on SIG [" + CString(sig) + "]"); if ((sig == SIGABRT) || (sig == SIGSEGV)) { abort(); } @@ -78,13 +80,19 @@ bool bMakeConf = false; bool bMakePass = false; bool bAllowRoot = false; + bool bForeground = +#ifdef _DEBUG + true; +#else + false; +#endif #ifdef HAVE_LIBSSL bool bMakePem = false; bool bEncPem = false; - while ((iArg = getopt_long(argc, argv, "hvnrcsped:", g_LongOpts, &iOptIndex)) != -1) { + while ((iArg = getopt_long(argc, argv, "hvnrcsped:f", g_LongOpts, &iOptIndex)) != -1) { #else - while ((iArg = getopt_long(argc, argv, "hvnrcsd:", g_LongOpts, &iOptIndex)) != -1) { + while ((iArg = getopt_long(argc, argv, "hvnrcsd:f", g_LongOpts, &iOptIndex)) != -1) { #endif /* HAVE_LIBSSL */ switch (iArg) { case 'h': @@ -116,6 +124,9 @@ case 'd': sDataDir = CString(optarg); break; + case 'f': + bForeground = true; + break; case '?': default: GenerateHelp(argv[0]); @@ -190,46 +201,46 @@ sleep(30); } -#ifdef _DEBUG - int iPid = getpid(); - CUtils::PrintMessage("Staying open for debugging [pid: " + CString(iPid) + "]"); + if (bForeground) { + int iPid = getpid(); + CUtils::PrintMessage("Staying open for debugging [pid: " + CString(iPid) + "]"); - pZNC->WritePidFile(iPid); - CUtils::PrintMessage(CZNC::GetTag()); -#else - CUtils::PrintAction("Forking into the background"); + pZNC->WritePidFile(iPid); + CUtils::PrintMessage(CZNC::GetTag()); + } else { + CUtils::PrintAction("Forking into the background"); - int iPid = fork(); + int iPid = fork(); - if (iPid == -1) { - CUtils::PrintStatus(false, strerror(errno)); - delete pZNC; - return 1; - } + if (iPid == -1) { + CUtils::PrintStatus(false, strerror(errno)); + delete pZNC; + return 1; + } - if (iPid > 0) { - // We are the parent. We are done and will go to bed. - CUtils::PrintStatus(true, "[pid: " + CString(iPid) + "]"); + if (iPid > 0) { + // We are the parent. We are done and will go to bed. + CUtils::PrintStatus(true, "[pid: " + CString(iPid) + "]"); - pZNC->WritePidFile(iPid); - CUtils::PrintMessage(CZNC::GetTag()); - /* Don't destroy pZNC here or it will delete the pid file. */ - return 0; - } + pZNC->WritePidFile(iPid); + CUtils::PrintMessage(CZNC::GetTag()); + /* Don't destroy pZNC here or it will delete the pid file. */ + return 0; + } - // Redirect std in/out/err to /dev/null - close(0); open("/dev/null", O_RDONLY); - close(1); open("/dev/null", O_WRONLY); - close(2); open("/dev/null", O_WRONLY); + // Redirect std in/out/err to /dev/null + close(0); open("/dev/null", O_RDONLY); + close(1); open("/dev/null", O_WRONLY); + close(2); open("/dev/null", O_WRONLY); - CUtils::SetStdoutIsTTY(false); + CUtils::SetStdoutIsTTY(false); - // We are the child. There is no way we can be a process group - // leader, thus setsid() must succeed. - setsid(); - // Now we are in our own process group and session (no controlling - // terminal). We are independent! -#endif + // We are the child. There is no way we can be a process group + // leader, thus setsid() must succeed. + setsid(); + // Now we are in our own process group and session (no controlling + // terminal). We are independent! + } struct sigaction sa; sa.sa_flags = 0; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2009-03-24 18:50:32
|
Revision: 1443 http://znc.svn.sourceforge.net/znc/?rev=1443&view=rev Author: psychon Date: 2009-03-24 18:50:11 +0000 (Tue, 24 Mar 2009) Log Message: ----------- Use -D instead of -g as a short form for --debug This also cleans up some minor #ifdef for the initial value for bForeground. Modified Paths: -------------- trunk/main.cpp Modified: trunk/main.cpp =================================================================== --- trunk/main.cpp 2009-03-24 18:45:03 UTC (rev 1442) +++ trunk/main.cpp 2009-03-24 18:50:11 UTC (rev 1443) @@ -12,7 +12,7 @@ static struct option g_LongOpts[] = { { "help", no_argument, 0, 'h' }, { "version", no_argument, 0, 'v' }, - { "debug", no_argument, 0, 'g' }, + { "debug", no_argument, 0, 'D' }, { "foreground", no_argument, 0, 'f' }, { "no-color", no_argument, 0, 'n' }, { "allow-root", no_argument, 0, 'r' }, @@ -32,7 +32,7 @@ CUtils::PrintMessage("\t-h, --help List available command line options (this page)"); CUtils::PrintMessage("\t-v, --version Output version information and exit"); CUtils::PrintMessage("\t-f, --foreground Don't fork into the background"); - CUtils::PrintMessage("\t-g, --debug Output debugging information (Implies -f)"); + CUtils::PrintMessage("\t-D, --debug Output debugging information (Implies -f)"); CUtils::PrintMessage("\t-n, --no-color Don't use escape sequences in the output"); CUtils::PrintMessage("\t-r, --allow-root Don't complain if ZNC is run as root"); CUtils::PrintMessage("\t-c, --makeconf Interactively create a new config"); @@ -82,19 +82,17 @@ bool bMakeConf = false; bool bMakePass = false; bool bAllowRoot = false; - bool bForeground = + bool bForeground = false; #ifdef _DEBUG - true; -#else - false; + bForeground = true; #endif #ifdef HAVE_LIBSSL bool bMakePem = false; bool bEncPem = false; - while ((iArg = getopt_long(argc, argv, "hvnrcsped:gf", g_LongOpts, &iOptIndex)) != -1) { + while ((iArg = getopt_long(argc, argv, "hvnrcsped:Df", g_LongOpts, &iOptIndex)) != -1) { #else - while ((iArg = getopt_long(argc, argv, "hvnrcsd:gf", g_LongOpts, &iOptIndex)) != -1) { + while ((iArg = getopt_long(argc, argv, "hvnrcsd:Df", g_LongOpts, &iOptIndex)) != -1) { #endif /* HAVE_LIBSSL */ switch (iArg) { case 'h': This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2009-03-31 11:44:32
|
Revision: 1466 http://znc.svn.sourceforge.net/znc/?rev=1466&view=rev Author: psychon Date: 2009-03-31 11:44:22 +0000 (Tue, 31 Mar 2009) Log Message: ----------- Fix some brown paper bag bug (I hope nobody notices...) Modified Paths: -------------- trunk/main.cpp Modified: trunk/main.cpp =================================================================== --- trunk/main.cpp 2009-03-31 09:32:16 UTC (rev 1465) +++ trunk/main.cpp 2009-03-31 11:44:22 UTC (rev 1466) @@ -127,7 +127,7 @@ case 'f': bForeground = true; break; - case 'g': + case 'D': bForeground = true; CUtils::SetDebug(true); break; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2009-03-31 12:38:11
|
Revision: 1470 http://znc.svn.sourceforge.net/znc/?rev=1470&view=rev Author: psychon Date: 2009-03-31 12:38:02 +0000 (Tue, 31 Mar 2009) Log Message: ----------- Mark g_LongOpts in main.cpp as const Modified Paths: -------------- trunk/main.cpp Modified: trunk/main.cpp =================================================================== --- trunk/main.cpp 2009-03-31 12:34:07 UTC (rev 1469) +++ trunk/main.cpp 2009-03-31 12:38:02 UTC (rev 1470) @@ -9,7 +9,7 @@ #include "znc.h" #include <getopt.h> -static struct option g_LongOpts[] = { +static const struct option g_LongOpts[] = { { "help", no_argument, 0, 'h' }, { "version", no_argument, 0, 'v' }, { "debug", no_argument, 0, 'D' }, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2009-05-30 18:49:18
|
Revision: 1531 http://znc.svn.sourceforge.net/znc/?rev=1531&view=rev Author: psychon Date: 2009-05-30 18:49:00 +0000 (Sat, 30 May 2009) Log Message: ----------- Handle e.g. --allow-root in /msg *status restart When ZNC is restarted we have to pass on most of ZNC's arguments. Until now we only handled --datadir. Now we also handle --debug, --foreground, --no-color and --allow-root. Thanks to kopn3ft0r for finding this. Modified Paths: -------------- trunk/main.cpp Modified: trunk/main.cpp =================================================================== --- trunk/main.cpp 2009-05-30 11:04:17 UTC (rev 1530) +++ trunk/main.cpp 2009-05-30 18:49:00 UTC (rev 1531) @@ -269,9 +269,25 @@ strdup(argv[0]), strdup("--datadir"), strdup(pZNC->GetZNCPath().c_str()), - strdup(pZNC->GetConfigFile().c_str()), + NULL, + NULL, + NULL, + NULL, NULL }; + int pos = 3; + if (CUtils::Debug()) + args[pos++] = strdup("--debug"); + else if (bForeground) + args[pos++] = strdup("--foreground"); + if (CUtils::StdoutIsTTY()) + args[pos++] = strdup("--no-color"); + if (bAllowRoot) + args[pos++] = strdup("--allow-root"); + args[pos++] = strdup(pZNC->GetConfigFile().c_str()); + // The above code adds 4 entries to args tops + // which means the array should be big enough + execvp(args[0], args); CUtils::PrintError("Unable to restart znc [" + CString(strerror(errno)) + "]"); } /* Fall through */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2009-05-30 20:19:12
|
Revision: 1533 http://znc.svn.sourceforge.net/znc/?rev=1533&view=rev Author: psychon Date: 2009-05-30 20:18:29 +0000 (Sat, 30 May 2009) Log Message: ----------- Fix a small bug from r1531 Modified Paths: -------------- trunk/main.cpp Modified: trunk/main.cpp =================================================================== --- trunk/main.cpp 2009-05-30 19:43:32 UTC (rev 1532) +++ trunk/main.cpp 2009-05-30 20:18:29 UTC (rev 1533) @@ -280,7 +280,7 @@ args[pos++] = strdup("--debug"); else if (bForeground) args[pos++] = strdup("--foreground"); - if (CUtils::StdoutIsTTY()) + if (!CUtils::StdoutIsTTY()) args[pos++] = strdup("--no-color"); if (bAllowRoot) args[pos++] = strdup("--allow-root"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2009-12-18 17:04:57
|
Revision: 1680 http://znc.svn.sourceforge.net/znc/?rev=1680&view=rev Author: psychon Date: 2009-12-18 17:04:50 +0000 (Fri, 18 Dec 2009) Log Message: ----------- Don't try to catch SIGILL, SIGBUS or SIGSEGV The signal handler didn't really do anything useful for these signals and if znc gets one of these signals, something is really fishy and we shouldn't even try to do a clean shutdown. The default behavior for these signals is now used instead which means you can get core dumps. Modified Paths: -------------- trunk/main.cpp Modified: trunk/main.cpp =================================================================== --- trunk/main.cpp 2009-12-18 16:59:28 UTC (rev 1679) +++ trunk/main.cpp 2009-12-18 17:04:50 UTC (rev 1680) @@ -47,11 +47,6 @@ signal(SIGPIPE, SIG_DFL); CUtils::PrintMessage("Exiting on SIG [" + CString(sig) + "]"); -#ifdef _DEBUG - if ((sig == SIGABRT) || (sig == SIGSEGV)) { - abort(); - } -#endif /* _DEBUG */ delete &CZNC::Get(); exit(sig); @@ -259,10 +254,7 @@ sa.sa_flags = SA_RESETHAND; sa.sa_handler = die; sigaction(SIGINT, &sa, (struct sigaction*) NULL); - sigaction(SIGILL, &sa, (struct sigaction*) NULL); sigaction(SIGQUIT, &sa, (struct sigaction*) NULL); - sigaction(SIGBUS, &sa, (struct sigaction*) NULL); - sigaction(SIGSEGV, &sa, (struct sigaction*) NULL); sigaction(SIGTERM, &sa, (struct sigaction*) NULL); int iRet = 0; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2009-12-18 17:06:54
|
Revision: 1681 http://znc.svn.sourceforge.net/znc/?rev=1681&view=rev Author: psychon Date: 2009-12-18 17:06:47 +0000 (Fri, 18 Dec 2009) Log Message: ----------- Before restarting ZNC, do a clean shutdown That way e.g. the ISpoofFile's content is restored and the pid file deleted. Modified Paths: -------------- trunk/main.cpp Modified: trunk/main.cpp =================================================================== --- trunk/main.cpp 2009-12-18 17:04:50 UTC (rev 1680) +++ trunk/main.cpp 2009-12-18 17:06:47 UTC (rev 1681) @@ -291,6 +291,7 @@ // The above code adds 4 entries to args tops // which means the array should be big enough + delete pZNC; execvp(args[0], args); CUtils::PrintError("Unable to restart znc [" + CString(strerror(errno)) + "]"); } /* Fall through */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2010-03-07 14:55:33
|
Revision: 1813 http://znc.svn.sourceforge.net/znc/?rev=1813&view=rev Author: psychon Date: 2010-03-07 14:55:20 +0000 (Sun, 07 Mar 2010) Log Message: ----------- Use a better seed for srand() Instead of just time() (which can be easily guessed by an attacker when he gets a couple of samples of rand() results), this now also uses the current microseconds, znc's pid and the old PRNG state for computing a seed. Modified Paths: -------------- trunk/main.cpp Modified: trunk/main.cpp =================================================================== --- trunk/main.cpp 2010-03-07 13:44:56 UTC (rev 1812) +++ trunk/main.cpp 2010-03-07 14:55:20 UTC (rev 1813) @@ -75,11 +75,32 @@ return false; } +static void seedPRNG() { + struct timeval tv; + unsigned int seed; + + // Try to find a seed which can't be as easily guessed as only time() + + if (gettimeofday(&tv, NULL) == 0) { + seed = tv.tv_sec; + + // This is in [0:1e6], which means that roughly 20 bits are + // actually used, let's try to shuffle the high bits. + seed ^= (tv.tv_usec << 10) | tv.tv_usec; + } else + seed = time(NULL); + + seed ^= rand(); + seed ^= getpid(); + + srand(seed); +} + int main(int argc, char** argv) { CString sConfig; CString sDataDir = ""; - srand(time(NULL)); + seedPRNG(); CUtils::SetStdoutIsTTY(isatty(1)); int iArg, iOptIndex = -1; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cf...@us...> - 2010-05-15 18:00:40
|
Revision: 1988 http://znc.svn.sourceforge.net/znc/?rev=1988&view=rev Author: cflakes Date: 2010-05-15 18:00:34 +0000 (Sat, 15 May 2010) Log Message: ----------- Moved isRoot check to a place before the code for --makeconf. Keeps users from doing --makeconf as root and then wondering why ZNC complains when they try to start it up. --makepass and --makepem still work as root. Modified Paths: -------------- trunk/main.cpp Modified: trunk/main.cpp =================================================================== --- trunk/main.cpp 2010-05-14 09:00:46 UTC (rev 1987) +++ trunk/main.cpp 2010-05-15 18:00:34 UTC (rev 1988) @@ -185,6 +185,19 @@ return 0; } + if (isRoot()) { + CUtils::PrintError("You are running ZNC as root! Don't do that! There are not many valid"); + CUtils::PrintError("reasons for this and it can, in theory, cause great damage!"); + if (!bAllowRoot) { + delete pZNC; + return 1; + } + CUtils::PrintError("You have been warned."); + CUtils::PrintError("Hit CTRL+C now if you don't want to run ZNC as root."); + CUtils::PrintError("ZNC will start in 30 seconds."); + sleep(30); + } + if (bMakeConf) { if (!pZNC->WriteNewConfig(sConfig)) { delete pZNC; @@ -205,19 +218,6 @@ return 1; } - if (isRoot()) { - CUtils::PrintError("You are running ZNC as root! Don't do that! There are not many valid"); - CUtils::PrintError("reasons for this and it can, in theory, cause great damage!"); - if (!bAllowRoot) { - delete pZNC; - return 1; - } - CUtils::PrintError("You have been warned."); - CUtils::PrintError("Hit CTRL+C now if you don't want to run ZNC as root."); - CUtils::PrintError("ZNC will start in 30 seconds."); - sleep(30); - } - if (bForeground) { int iPid = getpid(); CUtils::PrintMessage("Staying open for debugging [pid: " + CString(iPid) + "]"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2010-05-20 20:24:36
|
Revision: 2001 http://znc.svn.sourceforge.net/znc/?rev=2001&view=rev Author: psychon Date: 2010-05-20 20:24:30 +0000 (Thu, 20 May 2010) Log Message: ----------- Print a warning if --enable-run-from-source is missing If znc was compiled with "--disable-run-from-source" it will check if a file called "znc-uninstalled.pc" exists in the directory the znc binary is in. If there is such a file, it will print a warning that "--enable-run-from-source" is most likely missing. Idea partly by SilverLeo, thanks. Modified Paths: -------------- trunk/main.cpp Modified: trunk/main.cpp =================================================================== --- trunk/main.cpp 2010-05-18 16:16:04 UTC (rev 2000) +++ trunk/main.cpp 2010-05-20 20:24:30 UTC (rev 2001) @@ -185,6 +185,13 @@ return 0; } +#ifndef RUN_FROM_SOURCE + if (CFile::Exists(pZNC->GetCurPath() + "/znc-uninstalled.pc")) { + CUtils::PrintError("It looks like you are running znc without installing it first."); + CUtils::PrintError("Recompile with --enable-run-from-source if you intend to do that."); + } +#endif + if (isRoot()) { CUtils::PrintError("You are running ZNC as root! Don't do that! There are not many valid"); CUtils::PrintError("reasons for this and it can, in theory, cause great damage!"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2010-06-22 14:35:20
|
Revision: 2037 http://znc.svn.sourceforge.net/znc/?rev=2037&view=rev Author: psychon Date: 2010-06-22 14:35:10 +0000 (Tue, 22 Jun 2010) Log Message: ----------- Don't accept extra arguments to znc as a config file name It's much wiser to specify a whole --datadir because two znc instances running on the same datadir but different configs just calls for problems. Patch by DarthGandalf, some messing by me, idea by various. Modified Paths: -------------- trunk/main.cpp Modified: trunk/main.cpp =================================================================== --- trunk/main.cpp 2010-06-21 12:51:37 UTC (rev 2036) +++ trunk/main.cpp 2010-06-22 14:35:10 UTC (rev 2037) @@ -27,7 +27,7 @@ }; static void GenerateHelp(const char *appname) { - CUtils::PrintMessage("USAGE: " + CString(appname) + " [options] [config]"); + CUtils::PrintMessage("USAGE: " + CString(appname) + " [options]"); CUtils::PrintMessage("Options are:"); CUtils::PrintMessage("\t-h, --help List available command line options (this page)"); CUtils::PrintMessage("\t-v, --version Output version information and exit"); @@ -160,7 +160,9 @@ } if (optind < argc) { - sConfig = argv[optind]; + CUtils::PrintError("Specifying a config file as an argument isn't supported anymore."); + CUtils::PrintError("Use --datadir instead."); + return 1; } CZNC* pZNC = &CZNC::Get(); @@ -303,7 +305,6 @@ NULL, NULL, NULL, - NULL, NULL }; int pos = 3; @@ -315,7 +316,6 @@ args[pos++] = strdup("--no-color"); if (bAllowRoot) args[pos++] = strdup("--allow-root"); - args[pos++] = strdup(pZNC->GetConfigFile().c_str()); // The above code adds 4 entries to args tops // which means the array should be big enough This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2010-07-07 20:44:00
|
Revision: 2072 http://znc.svn.sourceforge.net/znc/?rev=2072&view=rev Author: psychon Date: 2010-07-07 20:43:54 +0000 (Wed, 07 Jul 2010) Log Message: ----------- Fix a comment which was broken since r2037 Modified Paths: -------------- trunk/main.cpp Modified: trunk/main.cpp =================================================================== --- trunk/main.cpp 2010-07-07 16:01:15 UTC (rev 2071) +++ trunk/main.cpp 2010-07-07 20:43:54 UTC (rev 2072) @@ -326,7 +326,7 @@ args[pos++] = strdup("--no-color"); if (bAllowRoot) args[pos++] = strdup("--allow-root"); - // The above code adds 4 entries to args tops + // The above code adds 3 entries to args tops // which means the array should be big enough delete pZNC; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |